📄 air.c
字号:
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)) {
day+=31;
return(day-Da);
}
else {
if(month==2) {
if(year%400==0)
leap=1;
else {
if((year%100!=0)&&(year%4==0))
leap=1;
else
leap=0;
}
if(leap==1)
return(day+29-Da);
else
return(day+28-Da);
}
else
return(day+30-Da);
}
}
}
}
/*检查客户信息*/
checkguestonly(struct guest *h,char name[20])
{
struct guest *p;
int i;
char input[20];
p=h;
strcpy(input,name);
for(i=0;(i<5)&&(p!=NULL);i++)
{
p=h;
while(p!=NULL) {
if(strcmp(input,p->name)==0) {
printf("已经有该用户了,请输入另外的用户名:");
scanf("%s",&input); break;
}
else p=p->next;
}
}
if(i<5)
strcpy(name,input);
else {
printf("错误输入太多,系统自动退出!");
exit(0);
}
}
/*查找函数*/
void search()
{
int i;
char input[20];
char linenum[20];
char num[20];
do {
system("cls");
printf("请输入查询的方式:\n");
printf("1.查询各航线的航班情况\n");
printf("2.查询各航班的座位情况\n");
printf("3.查询各航班的机票发售情况及余额\n");
printf("0.退出\n");
scanf("%d",&i);
if(i==0) break;
else {
switch(i) {
case 1:printf("请输入要查询的航线号:");
scanf("%s",&linenum);
xiansearch(linenum); break;
case 2:printf("请输入你要查询的航班:");
scanf("%s",&num);
weisearch(num); break;
case 3:printf("要查询的航班号:\n");
piaosearch(); break;
}
printf("是否继续查询?(yes/no)");
scanf("%s",&input);
}
}
while(strcmp(input,"yes")==0);
}
/*航线查找*/
xiansearch(char linenum[20])
{
int i;
printf("航线号 航班号 A等舱 B等舱 C等舱 起飞日期 起飞时间 起飞地点 终点\n");
for(i=0;i<m;i++)
{
if(strcmp(s[i].linenum,linenum)==0)
printf(Print1);
}
}
/*位置查找*/
weisearch(char num[20])
{
int i;
printf("航线号 航班号 A等舱 B等舱 C等舱 起飞日期 起飞时间 起飞地点 终点\n");
for(i=0;i<m;i++)
{
if(strcmp(s[i].num,num)==0)
printf(Print1);
}
}
/*查找票数*/
piaosearch()
{
int i;
printf("航线号 航班号 A等舱售出 剩余 B等舱售出 剩余 C等舱售出 剩余\n");
for(i=0;i<m;i++)
{
if(checkday(s[i].year,s[i].month,s[i].day,Ye,Mo,Da)<=7)
printf(Print2);
}
}
struct guest *create()
{
struct guest *h;
h=NULL;
return(h);
}
struct guest *book(struct guest *h,LinkQueue Q[N])
{
struct guest *c;
char input[10];
int ch,i;
int leap=0;
c=(struct guest *)malloc(Len);
printf("请输入你的用户名:");
scanf("%s",&c->name);
checkguestonly(h,c->name);
printf("请输入你的航线号:");
scanf("%s",&c->linenum);
printf("请输入你的航班号:");
scanf("%s",&c->num);
printf("请输入航班时间:\n");
printf("航班时间 年份:");
scanf("%d",&c->year);
c->year=checkyear(c->year);
printf("航班时间 月份:");
scanf("%d",&c->month);
c->month=checkmonth(c->month);
printf("航班时间 日期:");
scanf("%d",&c->day);
c->day=checkdata(c->day,c->month,c->year);
printf("请输入起飞时间:\n");
printf("起飞时间 hour(以24小时制)");
scanf("%d",&c->hour);
c->hour=checkhour(c->hour);
printf("起飞时间 minutes");
scanf("%d",&c->minute);
c->minute=checkminute(c->minute);
printf("请输入你要买的座位等级(A,B,C):");
scanf("%s",&c->seatlevel);
printf("请输入你要购买的票数:");
scanf("%d",&c->ticketnum);
for(i=0;i<m;i++)
{
if((strcmp(s[i].linenum,c->linenum)==0)&&(strcmp(s[i].num,c->num)==0)&&(s[i].year==c->year)
&&(s[i].month==c->month)&&(s[i].day==c->day)&&(s[i].hour==c->hour)&&(s[i].minute==c->minute))
break;
}
if(i==m) {
printf("没有该航班信息,请重新检查!\n");
}
else {
if(checkday(s[i].year,s[i].month,s[i].day,Ye,Mo,Da)<=7) {
if((strcmp(c->seatlevel,"A")==0)||(strcmp(c->seatlevel,"a")==0)) {
if(c->ticketnum<s[i].remainA) {
s[i].remainA-=c->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input);
}
else {
printf("你要订的票数不够!\n");
printf("你可以选择以下方式解决:\n");
printf("1.购买其他等级的机票 \n");
printf("2.候补\n");
printf("0.退出\n");
printf("请输入:\n");
scanf("%d",&ch);
switch(ch) {
case 1:printf("剩下的机舱票数情况\n");
printf("A等舱剩下票数--B等舱剩下票数--C等舱剩下票数\n");
printf("%d %d %d\n",s[i].remainA,s[i].remainB,s[i].remainC);
leap=book2(c,s[i].remainA,s[i].remainB,s[i].remainC); break;
case 2:EnQueue(&Q[i],c);
printf("候补完成!\n");
PrintQueue(&Q[i]);
scanf("%s",&input); break;
}
}
}
if((strcmp(c->seatlevel,"B")==0)||(strcmp(c->seatlevel,"b")==0)) {
if(c->ticketnum<s[i].remainB) {
s[i].remainB-=c->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input);
}
else {
printf("你要订的票数不够!\n");
printf("你可以选择以下方式解决:\n");
printf("1.购买其他等级的机票\n");
printf("2.候补\n");
printf("0.退出\n");
printf("请选择:\n");
scanf("%d",&ch);
switch(ch) {
case 1:printf("剩下的机舱票数情况\n");
printf("A等舱剩下票数--B等舱剩下票数--C等舱剩下票数\n");
printf("%d %d %d\n",s[i].remainA,s[i].remainB,s[i].remainC);
leap=book2(c,s[i].remainA,s[i].remainB,s[i].remainC); break;
case 2:EnQueue(&Q[i],c);
printf("候补完成!\n");
PrintQueue(&Q[i]);
scanf("%s",&input); break;
}
}
}
if((strcmp(c->seatlevel,"c")==0)||(strcmp(c->seatlevel,"C")==0)) {
if(c->ticketnum<s[i].remainC) {
s[i].remainC-=c->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input);
}
else {
printf("你要订的票数不够!\n");
printf("你可以选择以下方式解决:\n");
printf("1.购买其他等级的机票\n");
printf("2.候补\n");
printf("0.退出\n");
printf("请选择:\n");
scanf("%d",&ch);
switch(ch) {
case 1:printf("剩下的机舱票数情况\n");
printf("A等舱剩下票数--B等舱剩下票数--C等舱剩下票数\n");
printf("%d %d %d\n",s[i].remainA,s[i].remainB,s[i].remainC);
leap=book2(c,s[i].remainA,s[i].remainB,s[i].remainC); break;
case 2:EnQueue(&Q[i],c);
printf("候补完成!\n");
PrintQueue(&Q[i]);
scanf("%s",&input); break;
}
}
}
}
else {
printf("你想购买的机票时间比当前时间早8天,现在不能进行买票!\n");
printf("你是否选择预定你想要的机票(yes/no):");
scanf("%s",&input);
if(strcmp(input,"yes")==0) {
EnQueue(&Q[i],c);
printf("预订完成!");
scanf("%s",&input);
}
}
}
if(leap==1) {
c->next=h;
h=c;
}
return(h);
}
int book2(struct guest *p,int remainA,int remainB,int remainC)
{
int leap=0;
char input[10];
do {
printf("请输入你想要的机票等级:");
scanf("%s",&p->seatlevel);
printf("请输入你要购买的票数:");
scanf("%d",&p->ticketnum);
if((strcmp(p->seatlevel,"A")==0)||(strcmp(p->seatlevel,"a")==0)) {
if(p->ticketnum<=remainA) {
remainA-=p->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input); break;
}
else {
printf("票数不够,是否继续(yes/no):");
scanf("%s",&input);
}
}
if((strcmp(p->seatlevel,"B")==0)||(strcmp(p->seatlevel,"b")==0)) {
if(p->ticketnum<remainB) {
remainB-=p->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input); break;
}
else {
printf("票数不够,是否继续(yes/no):");
scanf("%s",&input);
}
}
if((strcmp(p->seatlevel,"c")==0)||(strcmp(p->seatlevel,"C")==0)) {
if(p->ticketnum<remainC) {
remainC-=p->ticketnum;
leap=1;
printf("订票成功!\n");
scanf("%s",&input); break;
}
else {
printf("票数不够,是否继续(yes/no):");
scanf("%s",&input);
}
}
}
while(strcmp(input,"yes")==0);
return(leap);
}
struct guest *refund(struct guest *h)
{
int i;
struct guest *p,*q;
char input[20];
char name[20];
p=h;
printf("是否进行退票(yes/no):");
scanf("%s",&input);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -