|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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');
- }
复制代码
|
|