程序出现了令我头疼的错误!请求哪位大侠帮我改改看,谢了!
#include<stdio.h>#include<string.h>
#include<stdlib.h>
typedef struct user
{
char ID[20];/*用户名,身份证号码*/
char Password[10];/*密码*/
char Rank[20];/*用户等级*/
struct user *next;
}USE;
void displayMenu();/*显示菜单*/
int choiceItem();/*选择菜单项*/
void freeUser(USE *head);
USE *createUser(USE *head);/*创建用户菜单*/
USE *AddUserSysterm(USE *head);/*新增用户*/
USE *DelUserSysterm(USE *head);/*删减用户*/
void LogSystem();/*登陆系统*/
void RechargeSystem();/*充值系统*/
void DownSystem();/*下机系统*/
void DisPlayall(USE *head);/*显示所有用户*/
void main()
{
USE *head=NULL;
int choice;
do
{
choice=choiceItem();
switch(choice)
{
case 1:head=createUser(head);//创建用户
break;
case 2: head=AddUserSysterm(head);//新增会员
break;
case 3: head=DelUserSysterm(head);//删减会员
break;
case 4: LogSystem();//登陆系统
break;
case 5: RechargeSystem();//充值系统
break;
case 6: DownSystem();//下机系统
break;
case 7: DisPlayall(head);//显示所有用户
break;
}
}while(choice!=0);
printf("\n\nThank you!!!");
freeUser(head);
}
void displayMenu(void)
{
printf("\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("\n ***欢迎进入网吧用户管理系统***");
printf("\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("\n 1-->创建用户\n");
printf("\n 2-->新增会员\n");
printf("\n 3-->删减会员\n");
printf("\n 4-->登陆系统\n");
printf("\n 5-->充值系统\n");
printf("\n 6-->下机系统\n");
printf("\n 7-->显示所有用户\n");
printf("\n 0-->退出\n");
printf("\n 请选择:");
}
int choiceItem(void)
{
int choice;
do{
displayMenu();
scanf("%d",&choice);
}while(choice<0||choice>7);
return choice;
}
void freeUser(USE *p)/*释放链表结点*/
{
USE *q;
while(P!=NULL)
{
q=p;
p=p->next;
free(q);//一次释放各个结点
}
}
USE *AddUserSysterm(USE *P)//输入一个新的记录,添加到链表中
{
USE head,*q;
head.next=p;
p=&head;
while(p->next!=NULL)
p=p->next;//将当前指针移动到链表尾端
while(1){
char txet[80];
q=(USE*)malloc(sizeof(USE));
if(q==NULL)
return head.next;
q->next=NULL;
printf("\n\n请输入新的身份证号码和用户等级\n");
gets(text);
if(text[0]=='\0')
break;
sscanf(text,"%s%s",q->ID,q->Rank);//分解用户身份证、等级
p->next=q;
p=q;
}
return head.next;
}
USE *createUser(USE *p)//创建新用户
{
freeUser(p);//释放原链表所占空间
return Adduser(NULL);//输入一组新纪录,创建链表
}
USE *DelUserSysterm(USE *P)
{
char ID[20];
USE *q,head;//前驱结点
printf("\n请输入身份证号码:");
gets(ID);//输入要删除的用户的身份证号码
for(head.next=p,q=&head;p!=NULL;P=P->next)
{
if(strcmp(p->ID,ID)!=0)//不等于当前结点的身份证号码
q=p;//以当前结点作为前驱结点
else{
q->next=p_next;//从链表中移出当前结点
free(p);//释放当前结点
printf("\n用户%s已被删除\n",ID);
return head.next;
}
}
printf("\n没有用户%s\n",ID);
return head.next;
}
void DisPlayall(USE *p);/*显示所有用户*/
{
printf("\n用户名号\t等级等级\n");
for( ;p!=NULL;p=p->next)
{
printf("%s\t%s\n",p->ID,p->Rank);
printf("\n");
}
}
void LogSystem()
{
char ID[20],Password[10];
char ch;
int t=1;
printf(" ***欢迎进入登陆系统*** \n");
printf("请输入身份证号码:\n");
gets(ID);
printf("请输入密码:初始密码为12345\n");
gets(Password);
printf("确认登陆(y/n)\n");
ch=getchar();
if(ch=='y')
{
if(strcmp((Password),("12345"))==0)
{
printf("登入成功!\n");
}
while(strcmp((Password),("12345"))!=0)
{
printf("密码错误,登陆失败!\n");
printf("请重新输入密码:\n");
if(t==1)
{
getchar();
}
gets(Password);
if(strcmp((Password),("12345"))==0)
{
printf("登入成功!\n");
break;
}
}
void RechargeSystem()
{
char ID[20];
char ch;
char Money[10];//充值的金额
printf(" ***欢迎进入充值系统*** \n");
do{
printf("请输入身份证号码:\n");
getchar();
gets(ID);
printf("请输入充值金额:\n");
gets(Money);
printf("你充值的金额为%s元\n",Money);
printf("是否继续?(y/n)\n");
ch=getchar();
if(ch=='y')
{
printf("恭喜你!充值成功!\n");
break;
}
else if(ch=='n')
{
printf("对不起!你未充值!\n");
break;
}
else
printf("操作失败!是否继续?(y/n)\n");
getchar();
}while((getchar())!='n');*/
}
void DownSystem()
{
char ch;
printf("是否确认下机?(y/n)");
ch=getchar();
if(ch=='y')
printf("下机成功!谢谢你的使用!");
else
printf("你未下机!");
}
这是我随便写的一个网吧用户管理系统,将其模块化,设定了一系列函数,但是其中有几个错误,真的不知道怎么改!求助!!!1