| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include <stdio.h>
 
 - #include <stdlib.h>
 
 - #include <string.h>
 
  
- char adminname[20] = "admin1";
 
 - char adminpassword[20] = "a123456";
 
  
- struct Date
 
 - {
 
 -         int year;
 
 -         int month;
 
 -         int day;
 
 - };
 
  
- typedef struct Infor
 
 - {
 
 -         char name[10];
 
 -         char gender[10];
 
 -         int age;
 
 -         char address[30];
 
 -         char buytype[50];
 
 -         char color[20];
 
 -         double price;
 
 -         struct Date date;
 
 -         struct Infor *next;
 
 - }INFOR,*Pointer;
 
  
- INFOR infor;
 
  
- int login(void);
 
 - void Menushow(void);
 
 - void Add(Pointer infor);
 
 - void Modify(Pointer infor);
 
 - void Show(Pointer infor);
 
 - void Search(Pointer infor);
 
 - void Print(Pointer infor);
 
 - void Del(Pointer infor);
 
 - //void Sort(Pointer infor);
 
 - //void Loadfromfile(Pointer infor);
 
 - void Xuigai(char adminname[],char adminpassword[]);
 
  
- int login(void)
 
 - {
 
 -         char username[20]; 
 
 -         char userpassword[20];
 
 -         printf("请输入用户名:");
 
 -         gets(username);
 
 -         printf("请输入密码:");
 
 -         gets(userpassword);
 
 -         
 
 -         if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
 
 -         {
 
 -                 return 1;
 
 -         }
 
 -         else
 
 -         {
 
 -                 return 0;
 
 -         }
 
 - }
 
 - void Menushow(void)
 
 - {
 
 -         int i;
 
 -         printf("\n");
 
 -         printf("  |----1.增加购买电瓶车用户信息-----|\n");
 
 -         printf("  |----2.修改购买电瓶车用户信息-----|\n");
 
 -         printf("  |----3.显示购买电瓶车用户信息-----|\n");
 
 -         printf("  |----4.查询用户信息---------------|\n");
 
 -         printf("  |----5.删除用户信息---------------|\n");
 
 -         printf("  |----6.按购买日期进行排序---------|\n");
 
 -         printf("  |----7.从文件中读取用户信息-------|\n");
 
 -         printf("  |----8.将购买用户信息保存到文件---|\n");
 
 -         printf("  |----9.修改密码-------------------|\n");
 
 -         printf("  |----10.退出系统------------------|\n");
 
 -         printf("\n"); 
 
 -         printf("请输入你选择的编号:");
 
 -         scanf("%d",&i);
 
 -         do
 
 -         {
 
 -                 switch(i)
 
 -                 {
 
 -                         case 1:Add(&infor);break;
 
 -                         case 2:Modify(&infor);break;
 
 -                         case 3:Show(&infor);break;
 
 -                         case 4:Search(&infor);break;
 
 -                         case 5:Del(&infor);break;
 
 -                         //case 6:Sort(&infor);break;
 
 -                         //case 7:Loadfromfile(&infor);break;
 
 -                         //case 8:Save();break;
 
 -                         //case 9:Xuigai(adminname,adminpassword);break;
 
 -                         //case 10:Quit();break;
 
 -                 }
 
 -         }while(i < 1 || i > 10);
 
 - }
 
 - void Add(Pointer infor)
 
 - {
 
 -         Pointer p;
 
 -         static Pointer tail;
 
 -         do{
 
 -         
 
 -         p = (Pointer)malloc(sizeof(INFOR)); 
 
 -         
 
 -         if(p == NULL)
 
 -         {
 
 -                 printf("内存分配失败\n");
 
 -                 exit(1);
 
 -         }
 
 -         printf("请输入姓名:");
 
 -         scanf("%s",p->name );
 
 -         printf("请输入性别(男/女):");
 
 -         scanf("%s",p->gender );
 
 -         printf("请输入年龄:");
 
 -         scanf("%d",&p->age);
 
 -         printf("请输入地址:");
 
 -         scanf("%s",p->address );
 
 -         printf("请输入购品牌和型号:");
 
 -         scanf("%s",p->buytype );
 
 -         printf("请输入购买的颜色:");
 
 -         scanf("%s",p->color );
 
 -         printf("请输入价格:");
 
 -         scanf("%f",&p->price );
 
 -         printf("请输入购买时间:(yyyy-mm-dd):");
 
 -         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
 
 -         
 
 -         
 
 -         if(infor != NULL)
 
 -         {
 
 -                 tail->next = p;
 
 -                 p->next = NULL;
 
 -         }
 
 -         else
 
 -         {
 
 -                 infor = p;
 
 -                 p->next = NULL;
 
 -         }
 
 -         tail = p;
 
 - }
 
 -         while(p->name != '0');
 
 -         
 
 -         
 
 - }
 
 - void Modify(Pointer infor)
 
 - {
 
 -         Pointer p = infor;
 
 -         int flag = 0;
 
 -         char sename[20];
 
 -         printf("请输入你要修改的用户名字:");
 
 -         gets(sename);
 
 -         while(p != NULL)
 
 -         {
 
 -                 if(!strcmp(p->name,sename))
 
 -                 {
 
 -                         flag = 0;
 
 -                         break;
 
 -                  } 
 
 -                  else
 
 -                  {
 
 -                          flag = 1; 
 
 -                          p = p->next;
 
 -                  }
 
 -         
 
 -         }
 
 -         if(flag)
 
 -         {
 
 -                 printf("并未查询到该用户的信息T_T\n");
 
 -         }
 
 -         else
 
 -         {
 
 -                 printf("请输入修改后的信息:\n");
 
 -                 printf("请输入姓名:");
 
 -                 scanf("%s",p->name );
 
 -                 printf("请输入性别(男/女):");
 
 -                 scanf("%s",p->age );
 
 -                 printf("请输入年龄:");
 
 -                 scanf("%d",&p->age);
 
 -                 printf("请输入地址:");
 
 -                 scanf("%s",p->address );
 
 -                 printf("请输入购品牌和型号:");
 
 -                 scanf("%s",p->buytype );
 
 -                 printf("请输入购买的颜色:");
 
 -                 scanf("%s",p->color );
 
 -                 printf("请输入价格:");
 
 -                 scanf("%f",p->price );
 
 -                 printf("请输入购买时间:(yyyy-mm-dd):");
 
 -                 scanf("%d-%d-%d",&p->date.year,&p->date.month,&p->date.day);
 
 -         }
 
 - }
 
 - void Show(Pointer infor)
 
 - {
 
 -         Pointer p = infor;
 
 -         if(p == NULL)
 
 -         {
 
 -                 printf("暂时还未存入数据!!\n");
 
 -                 printf("显示失败!!");
 
 -         }
 
 -         else
 
 -         {
 
 -                 while(p != NULL)
 
 -                 {
 
 -                         printf("姓名:%s",p->name);
 
 -                         printf("性别:%s",p->gender );
 
 -                         printf("年龄:%d",p->age );
 
 -                         printf("地址:%s",p->address );
 
 -                         printf("购买品牌型号:%s",p->buytype );
 
 -                         printf("颜色:%s",p->color );
 
 -                         printf("价格:%.2f",p->price );
 
 -                         printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
 
 -                 }
 
 - }
 
 - }
 
 - void Print(Pointer infor)
 
 - {
 
 -                 Pointer p = infor;
 
 -                 printf("姓名:%s",p->name );
 
 -                 printf("性别:%s",p->gender );
 
 -                 printf("年龄:%d",p->age );
 
 -                 printf("地址:%s",p->address );
 
 -                 printf("购买品牌型号:%s",p->buytype );
 
 -                 printf("颜色:%s",p->color );
 
 -                 printf("价格:%.2f",p->price );
 
 -                 printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
 
 -  } 
 
 - void Search(Pointer infor)
 
 - {
 
 -         Pointer p = infor;
 
 -         int flag = 0;
 
 -         char sename[20];
 
 -         printf("请输入你要修改的用户名字:");
 
 -         scanf("%s",sename);
 
 -         while(p != NULL)
 
 -         {
 
 -                 if(!strcmp(p->name,sename))
 
 -                 {
 
 -                         printf("已找到相关信息!!\n");
 
 -                         Print(&infor);
 
 -                  }
 
 -                  else
 
 -                  {        
 
 -                          p = p->next;
 
 -                  }
 
 -         
 
 -         }
 
 -         if(flag)
 
 -         {
 
 -                 printf("并未查询到该用户的信息T_T\n");
 
 -         }
 
 -         else
 
 -         {
 
 -                 char choi;
 
 -                 printf("是否显示该用户信息(Y/N):");
 
 -                 scanf("%c",choi);
 
 -                 if(choi == 'Y')
 
 -                 {
 
 -                         printf("姓名:%s",p->name);
 
 -                         printf("性别:%s",p->gender );
 
 -                         printf("年龄:%d",p->age );
 
 -                         printf("地址:%s",p->address );
 
 -                         printf("购买品牌型号:%s",p->buytype );
 
 -                         printf("颜色:%s",p->color );
 
 -                         printf("价格:%.2f",p->price );
 
 -                         printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
 
 -                  } 
 
 -                  else
 
 -                  {
 
 -                          printf("请按任意键继续\n");
 
 -                          getchar();
 
 -                  }
 
 -         }
 
 - }
 
 - void Del(Pointer infor)
 
 - {
 
 -         Pointer previous,current,new;
 
 -         
 
 -         current = infor;
 
 -         previous = NULL;
 
 -         
 
 -         char delname[20];
 
 -         printf("请输入你要删除的用户姓名:");
 
 -         gets(delname);
 
 -         
 
 -         while(strcmp(delname,current->name) && current != NULL)
 
 -         {
 
 -                 previous = current;
 
 -                 current = current->next ;
 
 -         }
 
 -         if(current == NULL)
 
 -         {
 
 -                 printf("并未找到该用户的信息");
 
 -                 return ;
 
 -         }
 
 -         else
 
 -         {
 
 -                 if(previous == NULL)
 
 -                 {
 
 -                         infor = current->next ;
 
 -                 }
 
 -                 else
 
 -                 {
 
 -                         previous->next = current->next ;
 
 -                 }
 
 -                 printf("删除成功");
 
 -                 free(current);
 
 -         }
 
 - }
 
  
- void Sort(Pointer infor)
 
 - {
 
 -         ;
 
 - }
 
 - void Loadfromfile(Pointer infor)
 
 - {
 
 -         ;
 
 - }
 
 - void Xuigai(char adminname[],char adminpassword[])
 
 - {
 
 -         char username[20];
 
 -         char userpassword[20];
 
 -         do{
 
 -                 printf("请输入用户名:");
 
 -                 gets(username);
 
 -                 printf("请输入密码:");
 
 -                 gets(userpassword);        
 
 -                 if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
 
 -                 {
 
 -                         do{
 
 -                                 
 
 -                                 printf("请输入修改后的用户名:");
 
 -                                 gets(adminname);
 
 -                                 printf("请输入密码:");
 
 -                                 gets(adminpassword);
 
 -                                 printf("请再次输入密码:");
 
 -                                 gets(userpassword);
 
 -                                 
 
 -                         }while(strcmp(userpassword,adminpassword));        
 
 -                 }
 
 -         }while(strcmp(adminname,username) || strcmp(adminpassword,userpassword));
 
 -         printf("修改完毕");
 
  
- }
 
  
 
- int main(void)
 
 - {
 
 -         int count = 3;
 
 -         while(1)
 
 -         {
 
 -                 if(login())
 
 -                 {
 
 -                         printf("\n欢迎使用电瓶车信息管理系统^_^");
 
 -                         printf("\n登陆成功\n");
 
 -                         
 
 -                         while(1)
 
 -                         {
 
 -                                 Menushow();
 
 -                         }
 
 -                         
 
 -                 }
 
 -                 else
 
 -                 {
 
 -                         count -= 1;
 
 -                         printf("用户或密码输入错误\n请重新输入");
 
 -                         if (count  == 0)
 
 -                         {
 
 -                                 printf("用户名或密码输入错误超过3次\n系统退出\n");
 
 -                         }
 
 -                         else
 
 -                         {
 
 -                                 printf("你还有%d次机会\n",count);
 
 -                         }
 
 -                 }
 
 -         }
 
 -         
 
 -         
 
 -         return 0;
 
 - }
 
  复制代码 
 
 
 
 
快到期末了,做了一个课设,但是第一个函数就出错了,增加信息都不行,哪里出问题了 
 
求解答
 本帖最后由 jhq999 于 2021-12-8 16:20 编辑 
只改到Add函数
- #include <stdio.h>
 
 - #include <stdlib.h>
 
 - #include <string.h>
 
  
- char adminname[20] = "admin1";
 
 - char adminpassword[20] = "a123456";
 
  
- struct Date
 
 - {
 
 -         int year;
 
 -         int month;
 
 -         int day;
 
 - };
 
  
- typedef struct Infor
 
 - {
 
 -         char name[10];
 
 -         char gender[10];
 
 -         int age;
 
 -         char address[30];
 
 -         char buytype[50];
 
 -         char color[20];
 
 -         double price;
 
 -         struct Date date;
 
 -         struct Infor *next;
 
 - }INFOR,*Pointer;
 
  
- Pointer infor=NULL;////////////
 
  
- int login(void);
 
 - void Menushow(void);
 
 - void Add(Pointer *infor);/////////////////形参改变,实参并不会随之改变,如果infor参数只是指针,在函数里它的值改变了,
 
 -                                                     //并不影响代入的实参,所以必须用指针的指针,这样才可以代入的指针类型的实参,
 
 -                                                     //如果是c++,就不用这么麻烦,直接用引用声明形参
 
 - void Modify(Pointer infor);
 
 - void Show(Pointer infor);
 
 - void Search(Pointer infor);
 
 - void Print(Pointer infor);
 
 - void Del(Pointer infor);
 
 - //void Sort(Pointer infor);
 
 - //void Loadfromfile(Pointer infor);
 
 - void Xuigai(char adminname[],char adminpassword[]);
 
  
- int login(void)
 
 - {
 
 -         char username[20]; 
 
 -         char userpassword[20];
 
 -         printf("请输入用户名:");
 
 -         gets(username);
 
 -         printf("请输入密码:");
 
 -         gets(userpassword);
 
 -         
 
 -         if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
 
 -         {
 
 -                 return 1;
 
 -         }
 
 -         else
 
 -         {
 
 -                 return 0;
 
 -         }
 
 - }
 
 - void Menushow(void)
 
 - {
 
 -         int i; 
 
 -                 do
 
 -        {
 
 -         printf("\n");
 
 -         printf("  |----1.增加购买电瓶车用户信息-----|\n");
 
 -         printf("  |----2.修改购买电瓶车用户信息-----|\n");
 
 -         printf("  |----3.显示购买电瓶车用户信息-----|\n");
 
 -         printf("  |----4.查询用户信息---------------|\n");
 
 -         printf("  |----5.删除用户信息---------------|\n");
 
 -         printf("  |----6.按购买日期进行排序---------|\n");
 
 -         printf("  |----7.从文件中读取用户信息-------|\n");
 
 -         printf("  |----8.将购买用户信息保存到文件---|\n");
 
 -         printf("  |----9.修改密码-------------------|\n");
 
 -         printf("  |----10.退出系统------------------|\n");
 
 -         printf("\n"); 
 
 -         printf("请输入你选择的编号:");
 
 -         scanf("%d",&i);
 
 -        
 
 -                 switch(i)
 
 -                 {
 
 -                         case 1:Add(&infor);break;
 
 -                         case 2:Modify(infor);break;
 
 -                         case 3:Show(infor);break;
 
 -                         case 4:Search(infor);break;
 
 -                         case 5:Del(infor);break;
 
 -                         //case 6:Sort(&infor);break;
 
 -                         //case 7:Loadfromfile(&infor);break;
 
 -                         //case 8:Save();break;
 
 -                         //case 9:Xuigai(adminname,adminpassword);break;
 
 -                         //case 10:Quit();break;
 
 -                 }
 
 -         }while(i >0 && i < 10);///////////////
 
 - }
 
 - void Add(Pointer *infor)///////////
 
 - {
 
 -         Pointer p;
 
 -         static Pointer tail=*infor;///////////
 
 -        ///// do
 
 -       
 
 -        while(1)
 
 -       {
 
 -        
 
 -         p = (Pointer)malloc(sizeof(INFOR));
 
 -        
 
 -         if(p == NULL)
 
 -         {
 
 -                 printf("内存分配失败\n");
 
 -                 exit(1);
 
 -         }
 
 -         printf("请输入姓名:");
 
 -         scanf("%s",p->name );
 
 -         printf("请输入性别(男/女):");
 
 -         scanf("%s",p->gender );
 
 -         printf("请输入年龄:");
 
 -         scanf("%d",&p->age);
 
 -         printf("请输入地址:");
 
 -         scanf("%s",p->address );
 
 -         printf("请输入购品牌和型号:");
 
 -         scanf("%s",p->buytype );
 
 -         printf("请输入购买的颜色:");
 
 -         scanf("%s",p->color );
 
 -         printf("请输入价格:");
 
 -         scanf("%lf",&p->price );///////////////
 
 -         printf("请输入购买时间:(yyyy-mm-dd):");
 
 -         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
 
 -        
 
 -        
 
 -         if(*infor != NULL)
 
 -         {
 
 -                 tail->next = p;
 
 -                 p->next = NULL;
 
 -         }
 
 -         else
 
 -         {
 
 -                 *infor = p;
 
 -                 p->next = NULL;
 
 -         }
 
 -         
 
 -         printf("是否继续添加(Y/N)?");
 
 -         fflush(stdin);
 
 -         char isbreak=getchar();
 
 -         if(isbreak!='Y'&&isbreak!='y')break;////////////
 
 -         fflush(stdin);
 
 -                 tail = p;
 
 - }
 
 -       ////  while(p->name[0] != '0'); 
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |