在接触并学习C语言之后,往往需要做一个简单的课设系统完成对C语言的学习。当然,这可能是我们接触代码以来写过的最长的代码,不排除对新手有一定难度。由于之前笔者划水了一段时间,导致一些知识遗忘了,所以只得花一些时间去复习知识,这也直接导致后期笔者写课设的时间不足(好像花了三天),只写了一些必要的功能,算是一次遗憾了。(课设提交之后,笔者出于懒惰,就不想继续完善了,哈哈)
不过笔者虽然没有完善代码,但骨干不缺,对新手比较友好,上手不难,可直接避免一些冗长且不懂的部分,完成任务。重剑无锋,大巧不工
系统基本要求:
1.数据录入:用数组或链表。
2.数据存储:用文件的形式操作。
3.数据读写:对文件中的数据进行读写。
4.数据修改:对旧数据进行修改。
5.数据插入:将新数据插入到数组或链表中。
6.数据删除:对旧数据进行删除。
7.数据查询:两个简单查询和一个组合查询。
8.数据统计:含简单统计和综合统计。
9.数据排序:升序和降序。
10.数据报表:依据规定的格式报表输出。
11.界面:设计总体菜单界面。
附加:
注册,登录部分(设置密码的隐式输出,简单的加密解密)
下面这是笔者的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<io.h>
#include<ctype.h>
#include<windows.h>
#define change 3
typedef struct node
{
int id; //影片的id,(方便录入)
char name[20]; //影片名称
int time; //影片上映时间,仅年,如:2021
char country[20]; //影片发行国家
double earning; //该影片的票房收入,精确到百分位,单位亿
struct node *next; //next指针指向本结构体
}Node,*linklist;
//用于存储影片信息的节点
typedef struct accout
{
char pass[20];
char name[20];
struct accout *next;
}Accout,*pAccout;
//用于登录的结构体
linklist init()
{
linklist head = (linklist)malloc(sizeof(Node));
head->next = NULL;
return head;
}
//初始化链表的函数
void save_inf(linklist head)
{
FILE *fp;
//char filename[30];
linklist user;
//printf("\n请输入要保存的文件名:\n");
//scanf("%s",filename);
fp=fopen("C:\\Users\\Desktop\\C语言课设\\000.txt","wt"); //完整的文件路径名,或者用上方注释的方法创立文件
if(fp==NULL)
{
printf("写文件出错,按任意键退出!\n");
getch();
exit(1);
}
for(user=head->next;user!=NULL;user=user->next)
{
fprintf(fp,"%d %s %d %s %lf\n",user->id,user->name,user->time,user->country,user->earning);
}
printf("\n文件已成功保存,按任意键返回!\n");
getch();
fclose(fp);
}
//将链表中的信息保存到指定文件中
linklist read_inf()
{
linklist head,r,user;
FILE *fp;
//char filename[30];
//printf("\n请输入要打开的文件名:");
//scanf("%s",filename);
fp=fopen("C:\\Users\\Desktop\\C语言课设\\000.txt","rt");
if(fp==NULL)
{
printf("读文件出错,按任意键退出!\n");
getch();
exit(1);
}
head=(linklist)malloc(sizeof(Node));
head->next=NULL;
r=head;
while(!feof(fp)) //文件未结束
{
//开辟空间,以存放读取的信息
user=(linklist)malloc(sizeof(Node));
//存放读取信息
fscanf(fp,"%d %s %d %s %lf\n",&user->id,user->name,&user->time,user->country,&user->earning);
r->next=user; //链接节点
r=r->next;
}
r->next=NULL;
fclose(fp);
printf("\n文件中信息已正确读出,按任意键返回!\n");
getch();
return head;
}
//从指定文件中读取信息并存入链表中
void print_inf(linklist head)
{
linklist pnode;
pnode=(linklist)malloc(sizeof(Node));
printf("\n所有影片信息为:\n");
printf("影片id\t\t\t名称\t\t\t上映时间\t\t发行国\t\t票房收入\n");
for(pnode=head->next;pnode!=NULL;pnode=pnode->next)
{
printf("----------------------------------------------------------------------------------------------------\n");
printf("%d\t\t\t%-12s\t\t%d\t\t\t%s\t\t%lf\n",pnode->id,pnode->name,pnode->time,pnode->country,pnode->earning);
}
}
//将链表中的信息打印输出
void type_in(linklist head)
{
system("cls");
linklist p=NULL; //p指针用于遍历
linklist temp;
printf("\n\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆添 加 影 片 信 息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\n");
printf("\t请输入影片整数编号(输入-1退出):\n\n");
int ID;
while(1)
{
scanf("%d",&ID);
if(ID!=-1)
{
temp = (linklist)malloc(sizeof(Node));
temp->id = ID;
printf("\t分配给该影片的编号为:\t%d \n",ID);
printf("\t输入影片名称:\t\t");
scanf("%s",temp->name);
printf("\t%s","输入影片发行国家:\t");
scanf("%s",temp->country);
printf("\t%s","输入影片上映时间:\t");
scanf("%d",&temp->time);
printf("\t输入影片票房收入:\t");
scanf("\t%lf",&temp->earning);
printf("\n\t-----------------------------------------------------------------------------------------\n");
temp->next = NULL; //新节点置空
p=head;
while(p->next)
p=p->next;
//遍历到链表尾处,将临时节点存放到链表尾
p->next=temp;
//temp->next=NULL;
}
else
{
break;
}
}
save_inf(head); //将链表存入文件中
if(ID==-1)
{
system("cls");
menu(head);
}
}
//录入信息函数
void Find_1(linklist head)
{
system("cls");
printf("\n\n\n\t+++++++++++++++++++++++++++++++++++请 输 入 影 片 名:++++++++++++++++++++++++++++++++++++\n");
printf("\n\t影片名:\t\t");
char newname[20];
scanf("%s",newname);
linklist temp;
int flag=0;
printf("\n\n\n");
printf("影片id\t\t\t名称\t\t\t上映时间\t\t发行国\t\t票房收入\n");
for(temp=head->next;temp!=NULL;temp=temp->next)
{
if(strcmp(temp->name,newname)==0)
{
flag=1;
printf("----------------------------------------------------------------------------------------------------\n");
printf("%d\t\t\t%-12s\t\t%d\t\t\t%s\t\t%lf\n",temp->id,temp->name,temp->time,temp->country,temp->earning);
}
}
if(flag==0)
{
printf("\n\n未找到该影片!\n");
}
}
//查询影片信息(按影名查询)
void Find_2(linklist head)
{
system("cls");
printf("\n\n\n\t+++++++++++++++++++++++++++++请 输 入 影 片 发 行 时 间:+++++++++++++++++++++++++++++++\n");
printf("\n发行时间:\t\t");
int newtime;
scanf("%d",&newtime);
linklist temp;
int flag=0;
printf("\n\n\n");
printf("影片id\t\t\t名称\t\t\t上映时间\t\t发行国\t\t票房收入\n");
for(temp=head->next;temp!=NULL;temp=temp->next)
{
if(temp->time==newtime)
{
flag=1;
printf("----------------------------------------------------------------------------------------------------\n");
printf("%d\t\t\t%-12s\t\t%d\t\t\t%s\t\t%lf\n",temp->id,temp->name,temp->time,temp->country,temp->earning);
}
}
if(flag==0)
printf("\n\n未找到该影片!\n");
}
//查询影片信息(按上映时间查询)
void Find_3(linklist head)
{
system("cls");
int newtime;
char newcountry[20];
printf("\n\n\n\t+++++++++++++++++++++++++++++请 输 入 影 片 发 行 时 间:+++++++++++++++++++++++++++++++\n");
printf("\t发行时间:\t");
scanf("%d",&newtime);
printf("\n\n\n\t+++++++++++++++++++++++++++++请 输 入 影 片 发 行 国 家:+++++++++++++++++++++++++++++++\n");
printf("\t影片发行国家:\t");
scanf("%s",newcountry);
linklist temp;
printf("\n\n\n");
printf("影片id\t\t\t名称\t\t\t上映时间\t\t发行国\t\t票房收入\n");
int flag=0;
for(temp=head->next;temp!=NULL;temp=temp->next)
{
if(temp->time==newtime)
{
if(strcmp(temp->country,newcountry)==0)
{
flag=1;
printf("----------------------------------------------------------------------------------------------------\n");
printf("%d\t\t\t%-12s\t\t%d\t\t\t%s\t\t%lf\n",temp->id,temp->name,temp->time,temp->country,temp->earning);
}
}
}
if(flag==0)
printf("\n\n未找到该影片!\n");
}
//查询影片信息(组合查询--时间,国家)
void CFind(linklist head)
{
head=read_inf();
system("cls");
printf("\n\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆查 询 影 片 信 息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\n");
printf("\t\t\t\t\t1-->按影名查询.\n");
printf("\t-----------------------------------------------------------------------------------------\n");
printf("\t\t\t\t\t2-->按上映时间查询.\n");
printf("\t-----------------------------------------------------------------------------------------\n");
printf("\t\t\t\t\t3-->按时间,国家查询.\n");
printf("\t-----------------------------------------------------------------------------------------\n");
printf("\t请输入(1~3):\n");
int num;
scanf("%d",&num);
switch(num)
{
case 1:
Find_1(head); break;
case 2:
Find_2(head); break;
case 3:
Find_3(head); break;
}
system("pause");
menu(head);
}
//查询后返回主菜单,保证能连续执行操作
void Change(linklist head)
{
head=read_inf();
system("cls");
print_inf(head);
printf("\n====================================================================================================\n");
printf("\t请输入要修改的影片id:\n\n");
int newid;
scanf("%d",&newid);
linklist temp;
temp=(linklist)malloc(sizeof(Node));
int flag=0;
for(temp=head->next;temp!=NULL;temp=temp->next)
{
if(newid==temp->id)
{
flag=1;
printf("\t影片名:\t\t%s\n",temp->name);
printf("\t影片id:\t\t%d\n",temp->id);
printf("\t影片上映时间:\t%d\n",temp->time);
printf("\t影片发行国家:\t%s\n",temp->country);
printf("\t影片票房:\t%lf\n",temp->earning);
break;
}
}
if(flag==0)
printf("\n\n\t未找到该影片!\n");
else
{
printf("----------------------------------------------------------------------------------------------------\n");
printf("\t新影片名:\t");
scanf("%s",temp->name);
printf("\t新影片id:\t");
scanf("%d",&temp->id);
printf("\t新影片上映时间:");
scanf("%d",&temp->time);
printf("\t新影片发行国家:");
scanf("%s",temp->country);
printf("\t新影片票房:\t");
scanf("%lf",&temp->earning);
save_inf(head); //更新修改后的数据并保存到文件中
}
menu(head); //返回主菜单
}
//需要先用文件显示出所有影片的信息,再修改对应的影片
void Insert(linklist head)
{
head=read_inf();
system("cls");
linklist ptr,pnode; //ptr指针用于移动到链表尾,插入新节点
ptr=head->next;
while(ptr->next)
{
ptr=ptr->next;
} //移动到链表尾部
pnode=(linklist)malloc(sizeof(Node));
printf("\n\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆增 加 影 片 信 息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\n");
printf("\t影片名:\t");
scanf("%s",pnode->name);
printf("\t影片id:\t");
scanf("%d",&pnode->id);
printf("\t影片上映时间:\t");
scanf("%d",&pnode->time);
printf("\t影片发行国家:\t");
scanf("%s",pnode->country);
printf("\t影片票房:\t");
scanf("%lf",&pnode->earning);
pnode->next=NULL;
ptr->next=pnode;
getch();
save_inf(head);
menu(head);
}
//插入影片信息,从链表尾部插入
void Deletem(linklist head)
{
head=read_inf();
system("cls");
print_inf(head);
printf("\n\n==========请输入待删除的影片id:\n");
int ID;
scanf("%d",&ID);
linklist p,q;
p=head->next;
q=NULL; //用于标记待删除的节点的前后2个指针先全指向head
while(p) //当p非空时
{
//若p->id为ID
if(p->id==ID)
{
// 1:中间节点或尾节点是ID,此时q!=NULL
if(q)
q->next=p->next;
// 2:首节点是ID,此时q=NULL
else
head->next=p->next; //直接将首节点后移
}
else
q=p; //若ID不为p->id,则q移动到p当前位置,相当于记录p前一个节点
p=p->next; //p指针移动到下一个节点
}
save_inf(head); //保存删除后的链表
menu(head);
}
//删除影片信息,先找到再删除
void Print(linklist head)
{
head=read_inf();
system("cls");
print_inf(head);
getch();
menu(head);
}
//显示影片信息
void Statistics_1(linklist head)
{
system("cls");
printf("\n\n====================================================================================================\n");
printf("\t\t影库中所有影片总数为:\n\n");
int number=0;
linklist pnode;
for(pnode=head->next;pnode!=NULL;pnode=pnode->next)
number++;
printf("\t\t----->\t%d\n\n\n",number);
}
//对影片信息进行统计(对影片总数进行统计)
void Statistics_2(linklist head)
{
system("cls");
printf("\n\n====================================================================================================\n");
printf("\t\t请输入待统计的国家:\n\n\t\t");
char country[20];
scanf("%s",country);
int num=0;
double price=0.0;
linklist temp;
temp=head->next;
printf("\n\n\n");
printf("影片id\t\t\t名称\t\t\t上映时间\t\t发行国\t\t票房收入\n");
for(temp;temp!=NULL;temp=temp->next)
{
if(strcmp(temp->country,country)==0)
{
num++;
price+=temp->earning;
printf("----------------------------------------------------------------------------------------------------\n");
printf("%d\t\t\t%-12s\t\t%d\t\t\t%s\t\t%lf\n",temp->id,temp->name,temp->time,temp->country,temp->earning);
}
}
printf("====================================================================================================\n\n");
printf("\t国家\t\t\t片数\t\t\t票房收入\n");
printf("----------------------------------------------------------------------------------------------------\n");
printf("\t%s\t\t\t%4d\t\t\t%4lf\n\n",country,num,price);
}
//对影片信息进行统计(统计单个国家的影片信息,数量及票房;总票房)
void Statistics(linklist head)
{
head=read_inf();
system("cls");
printf("\t========请输入统计的类型:\n\n");
printf("\t\t1-->统计影片总数\n\n");
printf("\t\t2-->统计单个国家的影片信息,数量及票房;总票房\n\n");
printf("\t\t请输入选项(1或2):\n");
int figure;
scanf("%d",&figure);
switch(figure)
{
case 1: Statistics_1(head);
break;
case 2: Statistics_2(head);
break;
}
printf("\n\n\t按任意键返回主菜单\n");
getch();
menu(head);
}
//统计信息的二级菜单
linklist DescendSort(linklist head)
{
system("cls");
linklist tempi=head->next;
linklist tempj=NULL;
Node temp;
while(tempi)
{
tempj=tempi->next;
while(tempj)
{
if(tempi->earning < tempj->earning)
{
temp=*tempi;
*tempi=*tempj;
*tempj=temp;
temp.next=tempi->next;
tempi->next=tempj->next;
tempj->next=temp.next;
}
tempj = tempj->next;
}
tempi = tempi->next;
}
return head;
}
//按票房降序排列
linklist AscendSort(linklist head)
{
system("cls");
linklist tempi=head->next;
linklist tempj=NULL;
Node temp;
while(tempi)
{
tempj=tempi->next;
while(tempj)
{
if(tempi->time > tempj->time)
{
temp=*tempi;
*tempi=*tempj;
*tempj=temp;
temp.next=tempi->next;
tempi->next=tempj->next;
tempj->next=temp.next;
}
tempj =tempj->next;
}
tempi=tempi->next;
}
return head;
}
//按上映时间升序排列
void Sort(linklist head)
{
head=read_inf();
system("cls");
printf("\n\n\n====================================================================================================\n\n");
printf("◆◆◆◆请选择排序类别:\n\n");
printf("\t\t1-->按票房降序排列.\n\n");
printf("\t\t2-->按上映时间升序排列.\n\n");
printf("\t\t请选择序号(1~2):\n\n");
int number;
scanf("%d",&number);
switch(number)
{
case 1: DescendSort(head);
print_inf(head);
break;
case 2: AscendSort(head);
print_inf(head);
break;
}
printf("====================================================================================================\n\n\n");
printf("\t按任意键返回主菜单!\n");
getch();
menu(head);
}
//排序的二级菜单
void Exit()
{
system("cls");
printf("谢谢使用!\n\n");
printf("-------------------------------by CX.\n");
getch();
}
//退出函数
void menu(linklist head)
{
loop:
system("cls");
int figure;
printf("\n\n\n"
"\t■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"
"\t■**************************************************************************************■\n"
"\t■\t\t\t 影 片 管 理 系 统 V1.2 ■\n"
"\t■**************************************************************************************■\n"
"\t■\t\t\t 1->录入影片信息 ■\n"
"\t■\t\t\t 2->查询影片信息 ■\n"
"\t■\t\t\t 3->插入影片信息 ■\n"
"\t■\t\t\t 4->修改影片信息 ■\n"
"\t■\t\t\t 5->删除影片信息 ■\n"
"\t■\t\t\t 6->显示影片信息 ■\n"
"\t■\t\t\t 7->统计影片信息 ■\n"
"\t■\t\t\t 8->排序影片信息 ■\n"
"\t■\t\t\t 0->退出管理系统 ■\n"
"\t■**************************************************************************************■\n"
"\t■\t 请输入选择的功能(0~8): ■\n");
printf("\t■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
scanf("%d",&figure);
switch(figure)
{
case 1: type_in(head);
break;
case 2: CFind(head);
break;
case 3: Insert(head);
break;
case 4: Change(head);
break;
case 5: Deletem(head);
break;
case 6: Print(head);
break;
case 7: Statistics(head);
break;
case 8: Sort(head);
break;
case 0: Exit();
break;
default: {
printf("\n\n\n\t输入选项错误,请重新输入!\n");
system("pause");
goto loop;
}
break;
}
}
//主菜单的显示
void router_registe(pAccout ahead)
{
system("cls");
char username[20];
char password[13];
char pass[13];
char q;
int i;
FILE *fp;
loop2:
printf("\n\n\n\n");
printf("\t\t\t\t账号:");
scanf("%s",username);
getchar();
printf("\t\t\t\t密码:");
i=0;
while (1)
{
q = getch();
if (q != 13)
{
printf("*");
password[i++] = q;
}
else {
password[i] = '\0';
printf("\n");
break;
}
}
printf("\t\t\t\t请确认密码:");
i=0;
while (1)
{
q = getch();
if (q != 13) //13是回车的ANSCII码
{
printf("*");
pass[i++] = q;
}
else
{
pass[i] = '\0';
printf("\n");
break;
}
}
if(strcmp(pass,password)==0)
{
fp=fopen("C:\\Users\\曦\\Desktop\\C语言课设\\Accout.txt", "at+");
fprintf(fp," %s %s\n",username,password); //把内存中的文件输入到硬盘中
fclose(fp);
system("cls");
printf("\n\n\n\n注册成功\n");
}
else goto loop2;
}
//*****************登录*****************//
pAccout router_acc(pAccout ahead)
{
pAccout p1,p2;
FILE *fp;
int m=0;
if((fp=fopen("C:\\Users\\曦\\Desktop\\C语言课设\\Accout.txt", "rw"))==NULL)
{
printf("读取失败!");
return ahead;
}
ahead==NULL;
p1=(pAccout)malloc(sizeof(Accout));
while(fscanf(fp,"%s %s",p1->name,p1->pass)==2)
{
//printf("%s\n",p1->name); //读进去了
m=m+1;
if(m==1)
{
ahead->next=p1;
p2=p1;
p2->next = NULL;
}
else
{
p2->next=p1;
p2=p1;
p2->next=NULL;
}
p1=(pAccout)malloc(sizeof(Accout));
}
fclose(fp);
return ahead;
}
pAccout router_acc1(pAccout ahead)
{
pAccout p1,p2;
FILE *fp;
int m=0;
if((fp=fopen("C:\\Users\\曦\\Desktop\\C语言课设\\Accout.txt", "rw"))==NULL)
{
printf("读取失败!");
return ahead;
}
ahead==NULL;
p1=(pAccout)malloc(sizeof(Accout));
while(fscanf(fp,"%s %s",p1->name,p1->pass)==2)
{
//printf("%s\n",p1->name); //由于文件没有读入换行,读出的时候将先一个人的密码和
//printf("%s",p1->pass); //后一个人的名称
m=m+1;
if(m==1)
{
ahead->next=p1;
p2=p1;
p2->next = NULL;
}
else
{
p2->next=p1;
p2=p1;
p2->next=NULL;
}
p1=(pAccout)malloc(sizeof(Accout));
}
fclose(fp);
return ahead;
}
void login_printf()
{
system("cls");
printf("\n\n\n\n");
printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("\t\t\t☆ ★\n");
printf("\t\t\t☆ 1.登录 ★\n");
printf("\t\t\t☆ 2.注册 ★\n");
printf("\t\t\t★ 0.退出 ☆\n");
printf("\t\t\t☆ ★\n");
printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");
}
void login_printf1()
{
system("cls");
printf("\n\n\n\n");
printf("\t\t\t********************************\n");
printf("\t\t\t|| ||\n");
printf("\t\t\t|| 1.管理员登录 ||\n");
printf("\t\t\t|| 2.用户登录 ||\n");
printf("\t\t\t|| 0.退出 ||\n");
printf("\t\t\t|| ||\n");
printf("\t\t\t********************************\n");
}
void print2()
{
system("cls");
printf("\n\n\n\n");
printf("\t\t\t|******************************|\n");
printf("\t\t\t||****************************||\n");
printf("\t\t\t||| |||\n");
printf("\t\t\t||| 谢谢使用 |||\n");
printf("\t\t\t||| |||\n");
printf("\t\t\t||****************************||\n");
printf("\t\t\t|******************************|\n");
Sleep(2000);
}
pAccout login_panduan(pAccout ahead)
{
char name1[20],pass1[20];
char q;
pAccout p1;
int i=0,j=0;
system("cls");
printf("\n\n\n\n");
loop1:
while(1)
{
j++;
p1=ahead->next;
printf("\t\t\t\t账号:");
scanf("%s",name1);
getchar();
printf("\t\t\t\t密码:");
i=0;
while (1)
{
j++;
q = getch();
if (q != 13)
{
printf("*");
pass1[i++] = q;
}
else {
pass1[i] = '\0';
printf("\n");
break;
}
}
//printf("%s",pass1);密码正确(加密最初出现问题)
while(p1!=NULL)
{
if(strcmp(name1,p1->name)==0)
{
if(strcmp(pass1,p1->pass)==0)
{
printf("\n\n\t\t\t\t登录成功!");
Sleep(2000);
return ahead;
}
else
{
p1=p1->next;
}
}
else
{
p1=p1->next;
}
if(p1==NULL)
{
printf("\n\n\n\n\t\t\t\t输入有误");
system("cls");
printf("\n\n\n\n\t\t\t\t请重新输入\n");
Sleep(2000);
goto loop1;
break;
}
}
if(j>=change)
{
system("cls");
printf("\n\n\n\n");
printf("\t\t\t\t***************\n");
printf("\t\t\t\t你完蛋了!!!!!\n");
printf("\t\t\t\t***************\n");
Sleep(2000);
print2();
exit (0);
}
}
return ahead;
}//登录成功
int panduan(char choice)
{
while(1)
{
fflush(stdin);
choice=getchar();
if(choice == 'y'|| choice =='Y')
return 1;
else if(choice == 'n'||choice == 'N')
return 0;
while(getchar() != '\n')
continue;
printf("输入错误!请重新输入您的选择:\n");
}
}
int back(char *a)
{
if(strlen(a)==1)
{
if(a[0]>='0'&&a[0]<='9')
return ((int)a[0]-48);
}
else
return 10;
}
void login_acc()
{
system("cls");
int bk;
int bb;
pAccout ahead,p1;
ahead=(pAccout)malloc(sizeof(Accout));
ahead->next=NULL;
while(1)
{
char a[200];
char b[200];
loop:
login_printf();
printf("请输入:");
scanf("%s",a);
bk=back(a);
switch(bk)
{
case 1:{
login_printf1();
printf("请输入:");
scanf("%s",b);
bb=back(b);
switch(bb)
{
case 1:{
router_acc(ahead);
ahead=login_panduan(ahead);//管理员登录
//meun();
break;
}
case 2:{
router_acc1(ahead);
ahead=login_panduan(ahead);//用户登陆
//menu1();
break;
}
case 0:
{
print2();
exit(0);
break;
}
default:printf("输入错误!");
Sleep(1000);
system("cls");
break;
}
if(bb!=0)//丢失此处则会无法跳出循环
break;
}
case 2:{
router_registe(ahead);
goto loop;
break;
}
case 0:{
// printf("BUG!!!!\n");测试bug!!!!!
print2();
exit(0);
break;
}
default:printf("输入错误!");
Sleep(1000);
system("cls");
break;
}
if(bk!=0)
break;
}
}
int main()
{
login_acc();
linklist head = init();
menu(head);
return 0;
}
这串代码可能还有些小的bug,如果有改进的方法,可以在下方评论。(代码较简陋,包含一下。)