📄 air.c
字号:
if(strcmp(input,"yes")==0) {
printf("请输入用户名:");
scanf("%s",&name);
while((strcmp(name,p->name)!=0)&&(p!=NULL)) {
q=p;
p=p->next;
}
if(strcmp(name,p->name)==0) {
for(i=0;i<m;i++)
{
if((strcmp(s[i].linenum,p->linenum)==0)&&(strcmp(s[i].num,p->num)==0)&&(s[i].year==p->year)
&&(s[i].month==p->month)&&(s[i].day==p->day)&&(s[i].hour==p->hour)&&(s[i].minute==p->minute))
{
if((strcmp(p->seatlevel,"a")==0)||(strcmp(p->seatlevel,"A")==0))
s[i].remainA+=p->ticketnum;
if((strcmp(p->seatlevel,"b")==0)||(strcmp(p->seatlevel,"B")==0))
s[i].remainB+=p->ticketnum;
if((strcmp(p->seatlevel,"c")==0)||(strcmp(p->seatlevel,"C")==0))
s[i].remainC+=p->ticketnum; break;
}
}
if(p==h)
h=p->next;
else
q->next=p->next;
free(p);
printf("退票成功!\n");
printf("按任意键回车返回\n");
scanf("%s",&input);
}
else {
printf("没有你的用户名");
scanf("%s",&input);
}
}
return(h);
}
void print(struct guest *h)
{
struct guest *p;
char ch[10];
p=h;
if(h!=NULL)
do {
printf(Print3);
p=p->next;
}
while(p!=NULL);
scanf("%s",&ch);
}
int InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=(QNode*)malloc(sizeof(QNode));
if(!Q->front)
exit(0);
Q->front->next=NULL;
return(1);
}
int EnQueue(LinkQueue *Q,struct guest *c)
{
QNode *p;
p=(QNode*)malloc(sizeof(QNode));
if(!p)
exit(0);
strcpy(p->name,c->name);
strcpy(p->linenum,c->linenum);
strcpy(p->num,c->num);
strcpy(p->seatlevel,c->seatlevel);
p->hour=c->hour;
p->minute=c->minute;
p->year=c->year;
p->month=c->month;
p->day=c->day;
p->ticketnum=c->ticketnum;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
return(1);
}
int DeQueue(LinkQueue *Q)
{
QNode *p;
if(Q->front==Q->rear) return(0);
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return(1);
}
int PrintQueue(LinkQueue *Q)
{
QNode *p;
if(Q->front==Q->rear) return 0;
p=Q->front->next;
for(;p!=NULL;p=p->next)
printf(Print3);
return 1;
}
int GettopQueue(LinkQueue *Q,int remainA,int remainB,int remainC)
{
int leap=0;
char input[20];
if((strcmp(Q->front->next->seatlevel,"A")==0)||(strcmp(Q->front->next->seatlevel,"a")==0)) {
if(Q->front->next->ticketnum<=remainA)
leap=1;
else {
printf("票数不够");
scanf("%s",&input);
}
}
if((strcmp(Q->front->next->seatlevel,"B")==0)||(strcmp(Q->front->next->seatlevel,"b")==0)) {
if(Q->front->next->ticketnum<=remainB)
leap=1;
else {
printf("票数不够");
scanf("%s",&input);
}
}
if((strcmp(Q->front->next->seatlevel,"c")==0)||(strcmp(Q->front->next->seatlevel,"C")==0)) {
if(Q->front->next->ticketnum<=remainC)
leap=1;
else {
printf("票数不够");
scanf("%s",&input);
}
}
return(leap);
}
struct guest *manage(struct guest *h,LinkQueue Q[N])
{
char key[]="hh";
struct guest *c;
char input[20];
char linenum[20];
char num[20];
int year,month,day;
int hour,minute;
int i;
printf("输入密码:");
scanf("%s",&input);
if(strcmp(input,key)!=0)
printf("密码错误!\n");
else {
printf("请选择进行以下操作:\n");
printf("1.候补\n");
printf("2.预订\n");
printf("0.退出\n");
printf("请输入:");
scanf("%d",&i);
switch(i) {
case 0:break;
case 1:printf("是否进行候补操作(yes/no):");
scanf("%s",&input);
if(strcmp(input,"yes")==0) {
printf("请输入你要进行候补的信息:\n");
printf("请输入你的航线号:");
scanf("%s",&linenum);
printf("请输入你的航班号:");
scanf("%s",&num);
printf("请输入航班时间:\n");
printf("航班时间 年份:");
scanf("%d",&year);
year=checkyear(year);
printf("航班时间 月份:");
scanf("%d",&month);
month=checkmonth(month);
printf("航班时间 日份:");
scanf("%d",&day);
day=checkdata(day,month,year);
printf("请输入起飞时间:\n");
printf("起飞的小时(以24小时制):");
scanf("%d",&hour);
hour=checkhour(hour);
printf("起飞的分钟:");
scanf("%d",&minute);
minute=checkminute(minute);
for(i=0;i<m;i++)
{
if((strcmp(s[i].linenum,linenum)==0)&&(strcmp(s[i].num,num)==0)&&(s[i].year==year)
&&(s[i].month==month)&&(s[i].day==day)&&(s[i].hour==hour)&&(s[i].minute==minute))
break;
}
PrintQueue(&Q[i]);
scanf("%s",&input);
if(GettopQueue(&Q[i],s[i].remainA,s[i].remainB,s[i].remainC)==1) {
if((strcmp(Q[i].front->next->seatlevel,"a")==0)||(strcmp(Q[i].front->next->seatlevel,"A")==0))
s[i].remainA-=Q[i].front->next->ticketnum;
if((strcmp(Q[i].front->next->seatlevel,"b")==0)||(strcmp(Q[i].front->next->seatlevel,"B")==0))
s[i].remainB-=Q[i].front->next->ticketnum;
if((strcmp(Q[i].front->next->seatlevel,"c")==0)||(strcmp(Q[i].front->next->seatlevel,"C")==0))
s[i].remainC-=Q[i].front->next->ticketnum;
c=(struct guest *)malloc(Len);
strcpy(c->name,Q[i].front->next->name);
strcpy(c->linenum,linenum);
strcpy(c->num,num);
strcpy(c->seatlevel,Q[i].front->next->seatlevel);
c->hour=hour;
c->minute=minute;
c->year=year;
c->month=month;
c->day=day;
c->ticketnum=Q[i].front->next->ticketnum;
c->next=h;
h=c;
DeQueue(&Q[i]);
}
else {
printf("候补失败!");
scanf("%s",&input);
}
} break;
case 2:
printf("是否进行预订操作(yes/no):");
scanf("%s",&input);
if(strcmp(input,"yes")==0) {
printf("请输入你要进行预订的信息:\n");
printf("请输入你的航线号:");
scanf("%s",&linenum);
printf("请输入你的航班号:");
scanf("%s",&num);
printf("请输入航班时间:\n");
printf("航班时间 年份:");
scanf("%d",&year);
year=checkyear(year);
printf("航班时间 月份:");
scanf("%d",&month);
month=checkmonth(month);
printf("航班时间 日期:");
scanf("%d",&day);
day=checkdata(day,month,year);
printf("请输入起飞时间:\n");
printf("起飞的小时(以24小时制)");
scanf("%d",&hour);
hour=checkhour(hour);
printf("起飞的分钟");
scanf("%d",&minute);
minute=checkminute(minute);
for(i=0;i<m;i++)
{
if((strcmp(s[i].linenum,linenum)==0)&&(strcmp(s[i].num,num)==0)&&(s[i].year==year)
&&(s[i].month==month)&&(s[i].day==day)&&(s[i].hour==hour)&&(s[i].minute==minute))
break;
}
PrintQueue(&Q[i]);
getch();
} break;
}
}
return(h);
}
main()
{
FILE *fp,*fp1;
int i;
struct guest *h;
LinkQueue Q[N];
system("cls");
for(i=0;i<N;i++)
InitQueue(&Q[i]);
h=create();
if((fp=fopen("flight.txt","a+"))==NULL) {
printf("创建文件失败!\n\n");
getch();
return;
}
rewind(fp);
if((fp1=fopen("f1.txt","a+"))==NULL) {
printf("创建文件失败!\n\n");
getch();
return;
}
fscanf(fp1,"%d",&m);
for(i=0;i<m;i++)
{
fscanf(fp,"%s",s[i].linenum);
fscanf(fp,"%s",s[i].num);
fscanf(fp,"%d",&s[i].seatA);
fscanf(fp,"%d",&s[i].remainA);
fscanf(fp,"%d",&s[i].seatB);
fscanf(fp,"%d",&s[i].remainB);
fscanf(fp,"%d",&s[i].seatC);
fscanf(fp,"%d",&s[i].remainC);
fscanf(fp,"%d",&s[i].year);
fscanf(fp,"%d",&s[i].month);
fscanf(fp,"%d",&s[i].day);
fscanf(fp,"%d",&s[i].hour);
fscanf(fp,"%d",&s[i].minute);
fscanf(fp,"%d",&s[i].start);
fscanf(fp,"%d",&s[i].end);
}
fclose(fp);
fclose(fp1);
printf("请输入当前时间\n(格式:年份 月份 日期):");
scanf("%d%d%d",&Ye,&Mo,&Da);
do {
system("cls");
printf("\n");
printf("民航航班信息查询与客票发售服务系统\n\n");
printf("1.输入各航班的信息\n");
printf("2.查询\n");
printf("3.订票\n");
printf("4.打印买票的用户信息\n");
printf("5.退票\n");
printf("6.管理员操作\n");
printf("0.退出\n");
scanf("%d",&i);
switch(i) {
case 1:printf("你选择了输入各航班信息的操作\n");
input(); break;
case 2:printf("你选择了查询信息的操作\n");
search(); break;
case 3:printf("你选择了订票的操作\n");
h=book(h,&Q[m]); break;
case 4:printf("用户名--航线号--航班号--航班时间--机舱等级--买票数目\n");
print(h); break;
case 5:h=refund(h); break;
case 6:h=manage(h,&Q[m]); break;
case 0:exit(1);
}
}while((i==1)||(i==2)||(i==3)||(i==4)||(i==5)||(i==6));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -