📄 11.c
字号:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
#define LEN 50
int n,m;
char choicen1,choicen2,choicen3;
struct data /*利用结构体数组临时储存车辆信息*/
{
int number;
int time;
char strat_position[50];
char end_position[50];
int long1;
int capacity;
int sell_ticket;
struct data *next;
}*head,datas,*p;
void mmenu()
{
void judge1(int y,char x[5]);
void judge2(int y,char x[5]);
int d;
char f,e[5];
system("cls"); /*清屏*/
printf("\n******欢迎来到汽车票管理系统******\n"); /*登陆界面*/
printf("**********************************\n");
printf("** **\n");
printf("** 1.管理员登陆 **\n");
printf("** 2.售票员登陆 **\n");
printf("** 3.退出 **\n");
printf("** **\n");
printf("**********************************\n");
printf("**********************************\n");
printf("请选择:");
scanf("%c",&f); /*根据提示输入f值,判断进入子菜单。*/
if(f=='1') /*进入管理员登录的密码保护系统*/
{
printf("\n请输入您的帐号:");
scanf("%s",e);
printf("请输入您的密码:");
scanf("%d",&d);
judge1(d,e);
}
else if(f=='2') /*进入售票员登录的密码保护系统*/
{
printf("\n请输入您的帐号:");
scanf("%s",e);
printf("请输入您的密码:");
scanf("%d",&d);
judge2(d,e);
}
else if(f=='3') exit(0); /*退出*/
else /*防错处理,若输入错误则返回至mmenu()函数*/
{
printf("没有这个选项,请重新选择");
mmenu();
}
}
void judge1(int y,char x[5]) /*确定是否登录正确*/
{
void manager();
int d;
char e[5];
if(y==131&&strcmp(x,"sj")==0) /*若登录信息正确则进入管理员界面*/
manager();
else /*若登录信息不正确则返回judge1函数重新输入*/
{
fflush stdin; /*由于会出现帐号与密码在同一行出现的bug,所以清内存解决*/
printf("您输入的帐号或密码貌似有误~好好想想,再试试?");
printf("\n请输入您的帐号:");
scanf("%s",&e);
fflush stdin;
printf("请输入您的密码:");
scanf("%d",&d);
fflush stdin;
judge1(d,e);
}
}
void manager()
{
char choicen=0;
void mmenu();
void print(struct data *head);
char menu();
FILE *fp;
struct data *a();
struct data *b(struct data *head);
struct data *c(struct data *head);
struct data *insert(struct data *head);
while(choicen!='F')
{
choicen=menu();
if (choicen=='A')
head=a(head);
else if(choicen=='B')
head=b(head);
else if (choicen=='C')
head=c(head);
else if (choicen=='D')
head=insert(head);
else if (choicen=='E')
print(head);
}
fp=fopen("c:\\bus.txt","w");
p=head;
printf("信息:\n");
if(head!=NULL)
do
{
fprintf(fp,"%d %d %s %s %d %d %d\n",p->number,p->time,p->strat_position,p->end_position,p->long1,p->capacity,p->sell_ticket);
p=p->next;
m++;
}
while(p!=NULL);
fclose(fp);
mmenu();
}
void judge2(int y,char x[5]) /*确定登陆是否正确*/
{
void solder();
int d;
char e[5];
if(y==181&&strcmp(x,"xbf")==0) /*若登录信息正确则进入售票员界面*/
solder();
else /*若登录信息不正确则返回judge2函数重新输入*/
{
fflush stdin;
printf("您输入的帐号或密码貌似有误~好好想想,再试试?");
printf("\n请输入您的帐号:");
scanf("%s",e);
fflush stdin;
printf("请输入您的密码:");
scanf("%d",&d);
judge2(d,e);
fflush stdin;
}
}
void solder()
{
void mmenu();
void search();
void tickets();
char menu2();
choicen2=menu2(); /*将menu2()值赋给choicen2*/
if (choicen2=='A') /*进入查询系统函数*/
search();
else if(choicen2=='B') /*进入售票系统函数*/
tickets();
else if(choicen2=='C') /*返回主菜单函数*/
mmenu();
else /*防错处理,若输入错误则返回至售票员系统函数*/
{
printf("没有这个选项,请重新选择");
solder();
}
}
char menu()
{
printf("\n*******欢迎来到车次管理中心*******\n"); /*子菜单*/
printf("**********************************\n");
printf("** **\n");
printf("** A---登录车次信息 **\n");
printf("** B---删除车次信息 **\n");
printf("** C---更改车次信息 **\n");
printf("** D---添加车次信息 **\n");
printf("** E---显示车次信息 **\n");
printf("** F---返回主菜单 **\n");
printf("** **\n");
printf("**********************************\n");
printf("**********************************\n");
printf("请选择:");
fflush stdin;
scanf("%c",&choicen1);
return (choicen1);
}
char menu2()
{
system("cls");
printf("\n*********欢迎来到售票中心*********\n"); /*售票中心子菜单*/
printf("**********************************\n");
printf("** **\n");
printf("** A---线路查询 **\n");
printf("** B---售出车票 **\n");
printf("** C---返回主菜单 **\n");
printf("** **\n");
printf("**********************************\n");
printf("**********************************\n");
printf("请选择:");
fflush stdin;
scanf("%s",&choicen2);
return(choicen2);
}
char smenu()
{
system("cls");
printf("\n*******欢迎来到线路查询中心*******\n"); /*线路查询子菜单*/
printf("**********************************\n");
printf("** **\n");
printf("** a---按车号查询 **\n");
printf("** b---按始发站查询 **\n");
printf("** c---按终点站查询 **\n");
printf("** d---返回上级菜单 **\n");
printf("** **\n");
printf("**********************************\n");
printf("**********************************\n");
printf("请选择:");
scanf("%s",&choicen3);
return(choicen3);
}
void search() /*查找车次信息*/
{
char smenu();
char menu2();
void solder();
void return1();
FILE *fp;
int x,i,e1[20],e2[20],e5[20],e6[20],e7[20];
char y[50],y0[50],f3[20][50],f4[20][50];
choicen3=smenu();
if (choicen3=='a') /*通过车号查找*/
{
printf("\n请输入车号:");
scanf("%d",&x);
fp=fopen("c:\\bus.txt","r");
printf("\n**********车次信息**********\n");
for(i=0;i<m+1;i++)
{
fscanf(fp,"%d %d %s %s %d %d %d",&e1[i],&e2[i],&f3[i],&f4[i],&e5[i],&e6[i],&e7[i]); /*从文件读入车次信息*/
if (x==e1[i])
{ /*若查找到则输出相应车次信息*/
printf("班次:");
printf("%d\n",e1[i]);
printf("发车时间:");
printf("%d\n",e2[i]);
printf("始发站:");
printf("%s\n",f3[i]);
printf("终点站:");
printf("%s\n",f4[i]);
printf("行车时间:");
printf("%d\n",e5[i]);
printf("额定载客数:");
printf("%d\n",e6[i]);
printf("已售出票数:");
printf("%d\n",e7[i]);
}
}
fclose(fp);
return1();
}
else if(choicen3=='b') /*通过始发站查找*/
{
printf("\n请输入始发站:");
scanf("%s",&y0);
fp=fopen("c:\\bus.txt","r");
printf("\n**********车次信息**********\n");
for(i=0;i<m+1;i++)
{
fscanf(fp,"%d %d %s %s %d %d %d",&e1[i],&e2[i],&f3[i],&f4[i],&e5[i],&e6[i],&e7[i]);
if (strcmp(y0,f3[i])==0)
{
printf("班次:");
printf("%d\n",e1[i]);
printf("发车时间:");
printf("%d\n",e2[i]);
printf("始发站:");
printf("%s\n",f3[i]);
printf("终点站:");
printf("%s\n",f4[i]);
printf("行车时间:");
printf("%d\n",e5[i]);
printf("额定载客数:");
printf("%d\n",e6[i]);
printf("已售出票数:");
printf("%d\n",e7[i]);
}
}
fclose(fp);
return1();
}
else if(choicen3=='c') /*通过终点站查找*/
{
printf("\n请输入终点站:");
scanf("%s",&y);
fp=fopen("c:\\bus.txt","r");
printf("\n**********车次信息**********\n");
for(i=0;i<m+1;i++)
{
fscanf(fp,"%d %d %s %s %d %d %d",&e1[i],&e2[i],&f3[i],&f4[i],&e5[i],&e6[i],&e7[i]);
if (strcmp(y,f4[i])==0)
{
printf("班次:");
printf("%d\n",e1[i]);
printf("发车时间:");
printf("%d\n",e2[i]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -