标题:有大佬能不能帮忙修改一下不,Dev C++过不了
只看楼主
Hepeiyun
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-1-1
结帖率:0
已结贴  问题点数:20 回复次数:1 
有大佬能不能帮忙修改一下不,Dev C++过不了
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
//自定义结构体程序
struct student
{
 char acad[10],name[20],sex;  //客户账户,姓名,性别
 int age;                     //客户年龄
 char addr[30];               //客户住址
 long int num;                //存取款数目
};
void intputing(student *p);    //声明输入函数中的输数据部分并保存的函数
void input(student *p,int i);  //声明输入函数
void insert(student *p,int i); //声明插入函数
void output(student *p,int i); //声明输出函数
void sort(student *p,int n);   //声明排序函数
void find(student *p,int n);   //声明查找函数
void del(student *p,int n);    //声明删除函数
int main(void)
{
 system("color 34");
 student *q=NULL;   //自定义类型指针
 int i=0,j,k,b=0;
 do
 {
     printf("\t\t|-----------------------------------------------------|\n");
     printf("\t\t|-----------------银行存取款管理系统------------------|\n");
    printf("\t\t|                                                     |\n");
    printf("\t\t|-----------------------------------------------------|\n");
    printf("\t\t|------1.输入客户信息------------2.添加客户信息-------|\n");
    printf("\t\t|------3.排序客户信息------------4.查找客户信息-------|\n");
    printf("\t\t|------5.删除客户信息------------6.显示客户信息-------|\n");
    printf("\t\t|------7.退出系统-------------------------------------|\n");
    printf("\t\t|-----------------------------------------------------|\n");
    printf("\t\t\t\t请选择菜单:");
    scanf("%d",&j);
    switch(j)
    {
        case 1:
            b++;
            if(b!=1)
            {
                printf("您已经输入过一次,无法继续选择该项,您可选择<2.添加客户信息>\n");
                break;
            }
            else
            {
                printf("请输入所需客户人数:");
                scanf("%d",&i);
                while(b<=0)
                {
                    printf("输入错误,请重新输入所需客户人数:");
                    scanf("%d",&i);
                }
                q=(student *)malloc(i*sizeof(student));
                input(q,i);       //调用输入函数
                break;
            }
        case 2:
            i++;
            q=(student *)realloc(q,i*sizeof(student));
            insert(q,i-1);       //调用插入函数
            break;
        case 3:
            sort(q,i);           //调用排序函数
            break;     
        case 4:
            find(q,i);           //调用查找函数
            break;
        case 5:
            k=del(q,i);          //调用删除函数
            if(k==1)
            {
                i--;
                q=(student *)realloc(q,i*sizeof(student));
             }
            break;
        case 6:   
            output(q,i);          //调用输出函数
            break;
        case 7:
            printf("程序即将退出...\n");
            break;
        default:
            printf("菜单选择错误!");
    }
 }while(j!=7);
 free(q);
}
//输入函数中的输数据部分并保存的函数
 void inputing(student *p)
 {
     printf("请输入客户账号:");
     scanf("%s",p->acad);
     printf("请输入客户姓名:");
     scanf("%s",p->name);
     printf("请输入客户住址:");
     scanf("%s",&(p->addr));
     do
     {
         printf("输入客户性别<m:男/f:女>:");
         fflush(stdin);           //清空输入缓冲区
         scanf("%c",&(p->sex));
         if(p->sex!='m'&&p->sex!='f')
         {
             printf("输入错误!重新");
         }
     }while(p->sex!='m'&&p->sex!='f');
     do
    {
         printf("输入客户年龄:");
         scanf("%d",&(p->age));
         if(p->age<1||p->age>100)
         {
             printf("输入错误!重新");
         }
     }while(p->age<1||p->age>100);
     do
     {
         printf("输入客户存取款数目:");
         scanf("%ld",&(p->num));
         if(p->num<0||p->num>1000000)
         {
             printf("输入错误!重新");   
         }
     }while(p->num<0||p->num>1000000);
 }
 //输入函数
 void input(student *p,int i)
 {
     int x;
     for(x=0;x<i;x++,p++)
     {
         printf("请输入第%d名客户存取款信息:\n",x+1);
         intputing(p);          //调用输入函数中的输数据部分并保存的函数
         printf("\n");
    }
  }
  //输出函数
  void output(student *p,int i)
  {
      printf("账号\t姓名\t年龄\t住址\t存取款数目");
      int x=0;
      for(x=0;x<i;x++,p++)
      {
          printf("%s\t%s\t%c\t%d\t%s\t%ld\n",p->acad,p->name,p->sex,p->age,p->addr,p->num);
      }
      printf("\n");
   }
   //插入函数
   void insert(student *p,int i)
   {
       p=p+i;
       printf("请输入要插入的客户存取款信息:\n");
       intputing(p);              //调用输入函数中的输数据部分并保存的函数
       printf("\n");
    }
    //排序函数
    void sort(student *p,int n)
    {
        student t;
        int j,i;
        {
            printf("要求按账号从小到大排序.\n");
            for(i=0;i<n-1;i++)
            {
                for(j=0;j<n-i-1;j++)
                {
                    if(strcmp((p+j)->acad,(p+j+1)->acad)==1)
                    {
                        t=*(p+j);
                        *(p+j)=*(p+j+1);
                        *(p+j+1)=t;
                    }
                }
            }
        }
        output(p,n);
     }
     //查找函数
     void find(student *p,int n)
     {
         student t;
         int i=0;
         printf("要求按客户姓名查找:");
         printf("请输入要查找的姓名:");
         scanf("%s",t.name);
         for(i=0;i<n;i++)
         {
             if(strcmp(t.name,(p+i)->name)==0)
             {
                 break;
             }
         }
         if(i>=n)
         {
             printf("查找的姓名是%s的客户,没有找到!\n",t.name);
         }
         else
         {
             printf("查找的姓名是%s的客户,是所输入的客户中的第%d个客户.\n",t.name,i+1);
             printf("账号\t姓名\t性别\t年龄\t住址\t存取款数目");
             printf("%s\t%s\t%c\t%d\t%s\t%ld\n",p->acad,p->name,p->sex,p->age,p->addr,p->num);
         }
      }
      //删除函数
      void del(student *p,int n)
      {
          student t;
          int i=0,j;
          char ch;
          printf("要求按客户姓名删除:");
         
              printf("输入要删除的客户的姓名:");
              scanf("%s",t.name);
              for(i=0;i<n;i++)
              {
                  if(strcmp(t.name,(p+i)->name)==0)
                  {
                      break;
                  }
              }
              if(i>=n)
              {
                  printf("删除的姓名是%s的客户,没有找到.\n",t.name);
                  return 0;
              }
              else
              {
                  printf("删除的姓名是%s的客户,是所输入的客户中的第%d个客户.\n",t.name,i+1);
                  printf("要删除的客户存取款信息:\n");
                  printf("账号\t姓名\t性别\t年龄\t住址\t存取款数目");
                  printf("%s\t%s\t%c\t%d\t%s\t%ld\n",p->acad,p->name,p->sex,p->age,p->addr,p->num);
                  printf("是否确定删除<y:删除/n:不删除>:");
                  fflush(stdin);
                  scanf("%c",&ch);
                  if(ch!='y')
                  {
                      printf("您选择不删除%s客户存取款信息,未删除\n",(p+i)->name);
                  return 0;
                  }
                  else
                  {
                      printf("您选择删除%s客户存取款信息,已删除\n",(p+i)->name);
                      for(j=i;j<n;j++)
                      {
                          *(p+j)=*(p+j+1);
                      }
                     return 1;
                  }
              }
         
       }
搜索更多相关主题的帖子: 输入 客户 函数 student printf 
2020-01-01 15:24
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:20 
1、student是个结构体,声明结构体变量时需要在结构体类型名前加struct,如果不想加,就用typedef。
2、del()函数是void类型的,72行怎么会从del函数中获取返回值呢?
大概看了一下,先找到这两个问题,你先自己改改吧。
2020-01-01 20:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498766-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044306 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved