鱼C论坛

 找回密码
 立即注册
查看: 1186|回复: 5

[已解决]购买电动车用户信息管理系统

[复制链接]
发表于 2021-12-7 20:36:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. char adminname[20] = "admin1";
  5. char adminpassword[20] = "a123456";

  6. struct Date
  7. {
  8.         int year;
  9.         int month;
  10.         int day;
  11. };

  12. typedef struct Infor
  13. {
  14.         char name[10];
  15.         char gender[10];
  16.         int age;
  17.         char address[30];
  18.         char buytype[50];
  19.         char color[20];
  20.         double price;
  21.         struct Date date;
  22.         struct Infor *next;
  23. }INFOR,*Pointer;

  24. INFOR infor;

  25. int login(void);
  26. void Menushow(void);
  27. void Add(Pointer infor);
  28. void Modify(Pointer infor);
  29. void Show(Pointer infor);
  30. void Search(Pointer infor);
  31. void Print(Pointer infor);
  32. void Del(Pointer infor);
  33. //void Sort(Pointer infor);
  34. //void Loadfromfile(Pointer infor);
  35. void Xuigai(char adminname[],char adminpassword[]);

  36. int login(void)
  37. {
  38.         char username[20];
  39.         char userpassword[20];
  40.         printf("请输入用户名:");
  41.         gets(username);
  42.         printf("请输入密码:");
  43.         gets(userpassword);
  44.        
  45.         if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
  46.         {
  47.                 return 1;
  48.         }
  49.         else
  50.         {
  51.                 return 0;
  52.         }
  53. }
  54. void Menushow(void)
  55. {
  56.         int i;
  57.         printf("\n");
  58.         printf("  |----1.增加购买电瓶车用户信息-----|\n");
  59.         printf("  |----2.修改购买电瓶车用户信息-----|\n");
  60.         printf("  |----3.显示购买电瓶车用户信息-----|\n");
  61.         printf("  |----4.查询用户信息---------------|\n");
  62.         printf("  |----5.删除用户信息---------------|\n");
  63.         printf("  |----6.按购买日期进行排序---------|\n");
  64.         printf("  |----7.从文件中读取用户信息-------|\n");
  65.         printf("  |----8.将购买用户信息保存到文件---|\n");
  66.         printf("  |----9.修改密码-------------------|\n");
  67.         printf("  |----10.退出系统------------------|\n");
  68.         printf("\n");
  69.         printf("请输入你选择的编号:");
  70.         scanf("%d",&i);
  71.         do
  72.         {
  73.                 switch(i)
  74.                 {
  75.                         case 1:Add(&infor);break;
  76.                         case 2:Modify(&infor);break;
  77.                         case 3:Show(&infor);break;
  78.                         case 4:Search(&infor);break;
  79.                         case 5:Del(&infor);break;
  80.                         //case 6:Sort(&infor);break;
  81.                         //case 7:Loadfromfile(&infor);break;
  82.                         //case 8:Save();break;
  83.                         //case 9:Xuigai(adminname,adminpassword);break;
  84.                         //case 10:Quit();break;
  85.                 }
  86.         }while(i < 1 || i > 10);
  87. }
  88. void Add(Pointer infor)
  89. {
  90.         Pointer p;
  91.         static Pointer tail;
  92.         do{
  93.        
  94.         p = (Pointer)malloc(sizeof(INFOR));
  95.        
  96.         if(p == NULL)
  97.         {
  98.                 printf("内存分配失败\n");
  99.                 exit(1);
  100.         }
  101.         printf("请输入姓名:");
  102.         scanf("%s",p->name );
  103.         printf("请输入性别(男/女):");
  104.         scanf("%s",p->gender );
  105.         printf("请输入年龄:");
  106.         scanf("%d",&p->age);
  107.         printf("请输入地址:");
  108.         scanf("%s",p->address );
  109.         printf("请输入购品牌和型号:");
  110.         scanf("%s",p->buytype );
  111.         printf("请输入购买的颜色:");
  112.         scanf("%s",p->color );
  113.         printf("请输入价格:");
  114.         scanf("%f",&p->price );
  115.         printf("请输入购买时间:(yyyy-mm-dd):");
  116.         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
  117.        
  118.        
  119.         if(infor != NULL)
  120.         {
  121.                 tail->next = p;
  122.                 p->next = NULL;
  123.         }
  124.         else
  125.         {
  126.                 infor = p;
  127.                 p->next = NULL;
  128.         }
  129.         tail = p;
  130. }
  131.         while(p->name != '0');
  132.        
  133.        
  134. }
  135. void Modify(Pointer infor)
  136. {
  137.         Pointer p = infor;
  138.         int flag = 0;
  139.         char sename[20];
  140.         printf("请输入你要修改的用户名字:");
  141.         gets(sename);
  142.         while(p != NULL)
  143.         {
  144.                 if(!strcmp(p->name,sename))
  145.                 {
  146.                         flag = 0;
  147.                         break;
  148.                  }
  149.                  else
  150.                  {
  151.                          flag = 1;
  152.                          p = p->next;
  153.                  }
  154.        
  155.         }
  156.         if(flag)
  157.         {
  158.                 printf("并未查询到该用户的信息T_T\n");
  159.         }
  160.         else
  161.         {
  162.                 printf("请输入修改后的信息:\n");
  163.                 printf("请输入姓名:");
  164.                 scanf("%s",p->name );
  165.                 printf("请输入性别(男/女):");
  166.                 scanf("%s",p->age );
  167.                 printf("请输入年龄:");
  168.                 scanf("%d",&p->age);
  169.                 printf("请输入地址:");
  170.                 scanf("%s",p->address );
  171.                 printf("请输入购品牌和型号:");
  172.                 scanf("%s",p->buytype );
  173.                 printf("请输入购买的颜色:");
  174.                 scanf("%s",p->color );
  175.                 printf("请输入价格:");
  176.                 scanf("%f",p->price );
  177.                 printf("请输入购买时间:(yyyy-mm-dd):");
  178.                 scanf("%d-%d-%d",&p->date.year,&p->date.month,&p->date.day);
  179.         }
  180. }
  181. void Show(Pointer infor)
  182. {
  183.         Pointer p = infor;
  184.         if(p == NULL)
  185.         {
  186.                 printf("暂时还未存入数据!!\n");
  187.                 printf("显示失败!!");
  188.         }
  189.         else
  190.         {
  191.                 while(p != NULL)
  192.                 {
  193.                         printf("姓名:%s",p->name);
  194.                         printf("性别:%s",p->gender );
  195.                         printf("年龄:%d",p->age );
  196.                         printf("地址:%s",p->address );
  197.                         printf("购买品牌型号:%s",p->buytype );
  198.                         printf("颜色:%s",p->color );
  199.                         printf("价格:%.2f",p->price );
  200.                         printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
  201.                 }
  202. }
  203. }
  204. void Print(Pointer infor)
  205. {
  206.                 Pointer p = infor;
  207.                 printf("姓名:%s",p->name );
  208.                 printf("性别:%s",p->gender );
  209.                 printf("年龄:%d",p->age );
  210.                 printf("地址:%s",p->address );
  211.                 printf("购买品牌型号:%s",p->buytype );
  212.                 printf("颜色:%s",p->color );
  213.                 printf("价格:%.2f",p->price );
  214.                 printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
  215. }
  216. void Search(Pointer infor)
  217. {
  218.         Pointer p = infor;
  219.         int flag = 0;
  220.         char sename[20];
  221.         printf("请输入你要修改的用户名字:");
  222.         scanf("%s",sename);
  223.         while(p != NULL)
  224.         {
  225.                 if(!strcmp(p->name,sename))
  226.                 {
  227.                         printf("已找到相关信息!!\n");
  228.                         Print(&infor);
  229.                  }
  230.                  else
  231.                  {       
  232.                          p = p->next;
  233.                  }
  234.        
  235.         }
  236.         if(flag)
  237.         {
  238.                 printf("并未查询到该用户的信息T_T\n");
  239.         }
  240.         else
  241.         {
  242.                 char choi;
  243.                 printf("是否显示该用户信息(Y/N):");
  244.                 scanf("%c",choi);
  245.                 if(choi == 'Y')
  246.                 {
  247.                         printf("姓名:%s",p->name);
  248.                         printf("性别:%s",p->gender );
  249.                         printf("年龄:%d",p->age );
  250.                         printf("地址:%s",p->address );
  251.                         printf("购买品牌型号:%s",p->buytype );
  252.                         printf("颜色:%s",p->color );
  253.                         printf("价格:%.2f",p->price );
  254.                         printf("购买时间:%d-%d-%d",p->date.year ,p->date.month ,p->date.day);
  255.                  }
  256.                  else
  257.                  {
  258.                          printf("请按任意键继续\n");
  259.                          getchar();
  260.                  }
  261.         }
  262. }
  263. void Del(Pointer infor)
  264. {
  265.         Pointer previous,current,new;
  266.        
  267.         current = infor;
  268.         previous = NULL;
  269.        
  270.         char delname[20];
  271.         printf("请输入你要删除的用户姓名:");
  272.         gets(delname);
  273.        
  274.         while(strcmp(delname,current->name) && current != NULL)
  275.         {
  276.                 previous = current;
  277.                 current = current->next ;
  278.         }
  279.         if(current == NULL)
  280.         {
  281.                 printf("并未找到该用户的信息");
  282.                 return ;
  283.         }
  284.         else
  285.         {
  286.                 if(previous == NULL)
  287.                 {
  288.                         infor = current->next ;
  289.                 }
  290.                 else
  291.                 {
  292.                         previous->next = current->next ;
  293.                 }
  294.                 printf("删除成功");
  295.                 free(current);
  296.         }
  297. }

  298. void Sort(Pointer infor)
  299. {
  300.         ;
  301. }
  302. void Loadfromfile(Pointer infor)
  303. {
  304.         ;
  305. }
  306. void Xuigai(char adminname[],char adminpassword[])
  307. {
  308.         char username[20];
  309.         char userpassword[20];
  310.         do{
  311.                 printf("请输入用户名:");
  312.                 gets(username);
  313.                 printf("请输入密码:");
  314.                 gets(userpassword);       
  315.                 if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
  316.                 {
  317.                         do{
  318.                                
  319.                                 printf("请输入修改后的用户名:");
  320.                                 gets(adminname);
  321.                                 printf("请输入密码:");
  322.                                 gets(adminpassword);
  323.                                 printf("请再次输入密码:");
  324.                                 gets(userpassword);
  325.                                
  326.                         }while(strcmp(userpassword,adminpassword));       
  327.                 }
  328.         }while(strcmp(adminname,username) || strcmp(adminpassword,userpassword));
  329.         printf("修改完毕");

  330. }


  331. int main(void)
  332. {
  333.         int count = 3;
  334.         while(1)
  335.         {
  336.                 if(login())
  337.                 {
  338.                         printf("\n欢迎使用电瓶车信息管理系统^_^");
  339.                         printf("\n登陆成功\n");
  340.                        
  341.                         while(1)
  342.                         {
  343.                                 Menushow();
  344.                         }
  345.                        
  346.                 }
  347.                 else
  348.                 {
  349.                         count -= 1;
  350.                         printf("用户或密码输入错误\n请重新输入");
  351.                         if (count  == 0)
  352.                         {
  353.                                 printf("用户名或密码输入错误超过3次\n系统退出\n");
  354.                         }
  355.                         else
  356.                         {
  357.                                 printf("你还有%d次机会\n",count);
  358.                         }
  359.                 }
  360.         }
  361.        
  362.        
  363.         return 0;
  364. }
复制代码





快到期末了,做了一个课设,但是第一个函数就出错了,增加信息都不行,哪里出问题了

求解答
最佳答案
2021-12-8 07:05:34
本帖最后由 jhq999 于 2021-12-8 16:20 编辑
林江楠 发表于 2021-12-7 21:48
还是不行输入完就自动结束了

只改到Add函数
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. char adminname[20] = "admin1";
  5. char adminpassword[20] = "a123456";

  6. struct Date
  7. {
  8.         int year;
  9.         int month;
  10.         int day;
  11. };

  12. typedef struct Infor
  13. {
  14.         char name[10];
  15.         char gender[10];
  16.         int age;
  17.         char address[30];
  18.         char buytype[50];
  19.         char color[20];
  20.         double price;
  21.         struct Date date;
  22.         struct Infor *next;
  23. }INFOR,*Pointer;

  24. Pointer infor=NULL;////////////

  25. int login(void);
  26. void Menushow(void);
  27. void Add(Pointer *infor);/////////////////形参改变,实参并不会随之改变,如果infor参数只是指针,在函数里它的值改变了,
  28.                                                     //并不影响代入的实参,所以必须用指针的指针,这样才可以代入的指针类型的实参,
  29.                                                     //如果是c++,就不用这么麻烦,直接用引用声明形参
  30. void Modify(Pointer infor);
  31. void Show(Pointer infor);
  32. void Search(Pointer infor);
  33. void Print(Pointer infor);
  34. void Del(Pointer infor);
  35. //void Sort(Pointer infor);
  36. //void Loadfromfile(Pointer infor);
  37. void Xuigai(char adminname[],char adminpassword[]);

  38. int login(void)
  39. {
  40.         char username[20];
  41.         char userpassword[20];
  42.         printf("请输入用户名:");
  43.         gets(username);
  44.         printf("请输入密码:");
  45.         gets(userpassword);
  46.         
  47.         if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
  48.         {
  49.                 return 1;
  50.         }
  51.         else
  52.         {
  53.                 return 0;
  54.         }
  55. }
  56. void Menushow(void)
  57. {
  58.         int i;
  59.                 do
  60.        {
  61.         printf("\n");
  62.         printf("  |----1.增加购买电瓶车用户信息-----|\n");
  63.         printf("  |----2.修改购买电瓶车用户信息-----|\n");
  64.         printf("  |----3.显示购买电瓶车用户信息-----|\n");
  65.         printf("  |----4.查询用户信息---------------|\n");
  66.         printf("  |----5.删除用户信息---------------|\n");
  67.         printf("  |----6.按购买日期进行排序---------|\n");
  68.         printf("  |----7.从文件中读取用户信息-------|\n");
  69.         printf("  |----8.将购买用户信息保存到文件---|\n");
  70.         printf("  |----9.修改密码-------------------|\n");
  71.         printf("  |----10.退出系统------------------|\n");
  72.         printf("\n");
  73.         printf("请输入你选择的编号:");
  74.         scanf("%d",&i);
  75.       
  76.                 switch(i)
  77.                 {
  78.                         case 1:Add(&infor);break;
  79.                         case 2:Modify(infor);break;
  80.                         case 3:Show(infor);break;
  81.                         case 4:Search(infor);break;
  82.                         case 5:Del(infor);break;
  83.                         //case 6:Sort(&infor);break;
  84.                         //case 7:Loadfromfile(&infor);break;
  85.                         //case 8:Save();break;
  86.                         //case 9:Xuigai(adminname,adminpassword);break;
  87.                         //case 10:Quit();break;
  88.                 }
  89.         }while(i >0 && i < 10);///////////////
  90. }
  91. void Add(Pointer *infor)///////////
  92. {
  93.         Pointer p;
  94.         static Pointer tail=*infor;///////////
  95.        ///// do
  96.       
  97.        while(1)
  98.       {
  99.       
  100.         p = (Pointer)malloc(sizeof(INFOR));
  101.       
  102.         if(p == NULL)
  103.         {
  104.                 printf("内存分配失败\n");
  105.                 exit(1);
  106.         }
  107.         printf("请输入姓名:");
  108.         scanf("%s",p->name );
  109.         printf("请输入性别(男/女):");
  110.         scanf("%s",p->gender );
  111.         printf("请输入年龄:");
  112.         scanf("%d",&p->age);
  113.         printf("请输入地址:");
  114.         scanf("%s",p->address );
  115.         printf("请输入购品牌和型号:");
  116.         scanf("%s",p->buytype );
  117.         printf("请输入购买的颜色:");
  118.         scanf("%s",p->color );
  119.         printf("请输入价格:");
  120.         scanf("%lf",&p->price );///////////////
  121.         printf("请输入购买时间:(yyyy-mm-dd):");
  122.         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
  123.       
  124.       
  125.         if(*infor != NULL)
  126.         {
  127.                 tail->next = p;
  128.                 p->next = NULL;
  129.         }
  130.         else
  131.         {
  132.                 *infor = p;
  133.                 p->next = NULL;
  134.         }
  135.         
  136.         printf("是否继续添加(Y/N)?");
  137.         fflush(stdin);
  138.         char isbreak=getchar();
  139.         if(isbreak!='Y'&&isbreak!='y')break;////////////
  140.         fflush(stdin);
  141.                 tail = p;
  142. }
  143.       ////  while(p->name[0] != '0');
  144. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-7 21:12:05 | 显示全部楼层
本帖最后由 jhq999 于 2021-12-7 21:13 编辑

你自己试试,我就不运行了,有bug@我
  1. void Add(Pointer infor)
  2. {
  3.         Pointer p;
  4.         static Pointer tail=infor;///////////
  5.        ///// do
  6.       
  7.        while(1)
  8.       {
  9.       
  10.         p = (Pointer)malloc(sizeof(INFOR));
  11.       
  12.         if(p == NULL)
  13.         {
  14.                 printf("内存分配失败\n");
  15.                 exit(1);
  16.         }
  17.         printf("请输入姓名:");
  18.         scanf("%s",p->name );
  19.         printf("请输入性别(男/女):");
  20.         scanf("%s",p->gender );
  21.         printf("请输入年龄:");
  22.         scanf("%d",&p->age);
  23.         printf("请输入地址:");
  24.         scanf("%s",p->address );
  25.         printf("请输入购品牌和型号:");
  26.         scanf("%s",p->buytype );
  27.         printf("请输入购买的颜色:");
  28.         scanf("%s",p->color );
  29.         printf("请输入价格:");
  30.         scanf("%f",&p->price );
  31.         printf("请输入购买时间:(yyyy-mm-dd):");
  32.         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
  33.       
  34.       
  35.         if(infor != NULL)
  36.         {
  37.                 tail->next = p;
  38.                 p->next = NULL;
  39.         }
  40.         else
  41.         {
  42.                 infor = p;
  43.                 p->next = NULL;
  44.         }
  45.         tail = p;
  46.         printf("是否继续添加(Y/N)?");
  47.         fflush(stdin);
  48.         char isbreak=getchar();
  49.         if(isbreak!='Y'||isbreak!='y')break;
  50.         fflush(stdin);
  51. }
  52.       ////  while(p->name[0] != '0');
  53. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 21:48:51 | 显示全部楼层
jhq999 发表于 2021-12-7 21:12
你自己试试,我就不运行了,有bug@我

还是不行输入完就自动结束了
  1. 请输入用户名:admin1
  2. 请输入密码:a123456

  3. 欢迎使用电瓶车信息管理系统^_^
  4. 登陆成功

  5.   |----1.增加购买电瓶车用户信息-----|
  6.   |----2.修改购买电瓶车用户信息-----|
  7.   |----3.显示购买电瓶车用户信息-----|
  8.   |----4.查询用户信息---------------|
  9.   |----5.删除用户信息---------------|
  10.   |----6.按购买日期进行排序---------|
  11.   |----7.从文件中读取用户信息-------|
  12.   |----8.将购买用户信息保存到文件---|
  13.   |----9.修改密码-------------------|
  14.   |----10.退出系统------------------|

  15. 请输入你选择的编号:1
  16. 请输入姓名:12
  17. 请输入性别(男/女):男
  18. 请输入年龄:18
  19. 请输入地址:都叫我i的
  20. 请输入购品牌和型号:就安慰i都
  21. 请输入购买的颜色:白色
  22. 请输入价格:3000
  23. 请输入购买时间:(yyyy-mm-dd):2021-02-28

  24. --------------------------------
  25. Process exited after 40.31 seconds with return value 3221225477
  26. 请按任意键继续. . .
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 07:05:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2021-12-8 16:20 编辑
林江楠 发表于 2021-12-7 21:48
还是不行输入完就自动结束了

只改到Add函数
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. char adminname[20] = "admin1";
  5. char adminpassword[20] = "a123456";

  6. struct Date
  7. {
  8.         int year;
  9.         int month;
  10.         int day;
  11. };

  12. typedef struct Infor
  13. {
  14.         char name[10];
  15.         char gender[10];
  16.         int age;
  17.         char address[30];
  18.         char buytype[50];
  19.         char color[20];
  20.         double price;
  21.         struct Date date;
  22.         struct Infor *next;
  23. }INFOR,*Pointer;

  24. Pointer infor=NULL;////////////

  25. int login(void);
  26. void Menushow(void);
  27. void Add(Pointer *infor);/////////////////形参改变,实参并不会随之改变,如果infor参数只是指针,在函数里它的值改变了,
  28.                                                     //并不影响代入的实参,所以必须用指针的指针,这样才可以代入的指针类型的实参,
  29.                                                     //如果是c++,就不用这么麻烦,直接用引用声明形参
  30. void Modify(Pointer infor);
  31. void Show(Pointer infor);
  32. void Search(Pointer infor);
  33. void Print(Pointer infor);
  34. void Del(Pointer infor);
  35. //void Sort(Pointer infor);
  36. //void Loadfromfile(Pointer infor);
  37. void Xuigai(char adminname[],char adminpassword[]);

  38. int login(void)
  39. {
  40.         char username[20];
  41.         char userpassword[20];
  42.         printf("请输入用户名:");
  43.         gets(username);
  44.         printf("请输入密码:");
  45.         gets(userpassword);
  46.         
  47.         if(!strcmp(adminname,username) && !strcmp(adminpassword,userpassword))
  48.         {
  49.                 return 1;
  50.         }
  51.         else
  52.         {
  53.                 return 0;
  54.         }
  55. }
  56. void Menushow(void)
  57. {
  58.         int i;
  59.                 do
  60.        {
  61.         printf("\n");
  62.         printf("  |----1.增加购买电瓶车用户信息-----|\n");
  63.         printf("  |----2.修改购买电瓶车用户信息-----|\n");
  64.         printf("  |----3.显示购买电瓶车用户信息-----|\n");
  65.         printf("  |----4.查询用户信息---------------|\n");
  66.         printf("  |----5.删除用户信息---------------|\n");
  67.         printf("  |----6.按购买日期进行排序---------|\n");
  68.         printf("  |----7.从文件中读取用户信息-------|\n");
  69.         printf("  |----8.将购买用户信息保存到文件---|\n");
  70.         printf("  |----9.修改密码-------------------|\n");
  71.         printf("  |----10.退出系统------------------|\n");
  72.         printf("\n");
  73.         printf("请输入你选择的编号:");
  74.         scanf("%d",&i);
  75.       
  76.                 switch(i)
  77.                 {
  78.                         case 1:Add(&infor);break;
  79.                         case 2:Modify(infor);break;
  80.                         case 3:Show(infor);break;
  81.                         case 4:Search(infor);break;
  82.                         case 5:Del(infor);break;
  83.                         //case 6:Sort(&infor);break;
  84.                         //case 7:Loadfromfile(&infor);break;
  85.                         //case 8:Save();break;
  86.                         //case 9:Xuigai(adminname,adminpassword);break;
  87.                         //case 10:Quit();break;
  88.                 }
  89.         }while(i >0 && i < 10);///////////////
  90. }
  91. void Add(Pointer *infor)///////////
  92. {
  93.         Pointer p;
  94.         static Pointer tail=*infor;///////////
  95.        ///// do
  96.       
  97.        while(1)
  98.       {
  99.       
  100.         p = (Pointer)malloc(sizeof(INFOR));
  101.       
  102.         if(p == NULL)
  103.         {
  104.                 printf("内存分配失败\n");
  105.                 exit(1);
  106.         }
  107.         printf("请输入姓名:");
  108.         scanf("%s",p->name );
  109.         printf("请输入性别(男/女):");
  110.         scanf("%s",p->gender );
  111.         printf("请输入年龄:");
  112.         scanf("%d",&p->age);
  113.         printf("请输入地址:");
  114.         scanf("%s",p->address );
  115.         printf("请输入购品牌和型号:");
  116.         scanf("%s",p->buytype );
  117.         printf("请输入购买的颜色:");
  118.         scanf("%s",p->color );
  119.         printf("请输入价格:");
  120.         scanf("%lf",&p->price );///////////////
  121.         printf("请输入购买时间:(yyyy-mm-dd):");
  122.         scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);
  123.       
  124.       
  125.         if(*infor != NULL)
  126.         {
  127.                 tail->next = p;
  128.                 p->next = NULL;
  129.         }
  130.         else
  131.         {
  132.                 *infor = p;
  133.                 p->next = NULL;
  134.         }
  135.         
  136.         printf("是否继续添加(Y/N)?");
  137.         fflush(stdin);
  138.         char isbreak=getchar();
  139.         if(isbreak!='Y'&&isbreak!='y')break;////////////
  140.         fflush(stdin);
  141.                 tail = p;
  142. }
  143.       ////  while(p->name[0] != '0');
  144. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-8 15:58:44 | 显示全部楼层


为什莫需要这么改呢,我不理解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 16:21:04 | 显示全部楼层
本帖最后由 jhq999 于 2021-12-8 16:29 编辑
林江楠 发表于 2021-12-8 15:58
为什莫需要这么改呢,我不理解


void Add(Pointer *infor);/////////////////形参改变,实参并不会随之改变,如果infor参数只是指针,在函数里它的值改变了,
                                                    //并不影响代入的实参,所以必须用指针的指针,“case 1:Add(&infor);break;”这样才可以改变代入的指针的指针类型的实参“&infor”所指向的infor值,
                                                    //如果是c++,就不用这么麻烦,直接用引用声明形参。


这也是单链表常见的错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 06:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表