源代码.docx
- 文档编号:10555296
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:14
- 大小:17.45KB
源代码.docx
《源代码.docx》由会员分享,可在线阅读,更多相关《源代码.docx(14页珍藏版)》请在冰豆网上搜索。
源代码
#include
#include
#include
#defineN20
#defineQ40
//定义数据结构
typedefstruct//乘客信息
{charnumber[10];//编号
charid[20];//证件号
charname[10];//姓名
intcount;//订票数
charflightname[10];//乘坐航班号
}Guest;
typedefstructFLY//航班信息
{charplanenumber[10];//航班号
charTake_off_city[20];//起飞城市
charArrived_in_city[20];//抵达城市
chartakeoff_time[20];//起飞时间
charLanding_time[20];//降落时间
intshipping;//舱位数
charprice[5];//票价
chardiscount[5];//折扣
Guestguest[20];
intsit;//座位号
};
menu_select()//菜单函数,函数返回值为整数,代表所选的菜单项
{intc;
printf("按任意键返回主菜单\n");//提示按压任意继续键
getchar();//读入任意字符
printf("Welcometo\n\n");
printf("TicketsBookingSystem\n\n");
printf("***************MENU***************\n\n");
printf("0.输入航班信\n");
printf("1.列出航班信息\n");
printf("2.按照航班号排序\n");
printf("3.按航班号查询航班信息\n");
printf("4.按城市来查询航班\n");
printf("5.订票系统\n");
printf("6.退票系统\n");
printf("7.修改飞机航班的信息\n");
printf("8.保存文件\n");
printf("9.读取和下载文件\n");
printf("10.退出\n");
printf("**********************************\n\n");
do{printf("\n输入您的选择项(0~10):
");//提示输入选择项
scanf("%d",&c);//输入选择项}
while(c<0||c>10);//选择项不在0~9之间重新输入
returnc;//返回选择项,主程序根据该数调用相应函数}
intenter(FLYt[])//输入函数
{inti,k,n,m,w,j;
char*s;
printf("输入航线总数(n<=40):
");//输入航线总数
scanf("%d",&n);
while(n>40||n<0)
{printf("输入出错!
!
再次输入(0 ");//输入航线总数 scanf("%d",&n);} printf("输入航班信息\n\n"); printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); printf("...............................................................\n"); for(i=0;i {scanf("%s",t[i].planenumber);//请输入姓名 scanf("%s",t[i].Take_off_city);//请输入起飞城市 scanf("%s",t[i].Arrived_in_city);//请输入降落城市 scanf("%s",t[i].takeoff_time);//请输入起飞时间 scanf("%s",t[i].Landing_time);//请输入降落时间 scanf("%d",&t[i].shipping);//请输入舱位数 scanf("%s",t[i].price);//请输入票价 scanf("%s",t[i].discount);//请输入优惠折扣} printf("..................................................................\n"); for(i=0;i t[i].sit=0; returnn;//返回记录条数} voidorder(FLYt[],intn)//排序函数 {inti,j; structFLYs; for(i=0;i {for(j=i+1;j if(strcmp(t[i].planenumber,t[j].planenumber)>0) {s=t[i]; t[i]=t[j]; t[j]=s;} } printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); printf(".........................end.......................................\n"); for(i=0;i printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s%\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city, t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); printf("**********************************");} voidlist(FLYt[],intn)//显示记录,参数为记录数组和记录条数 {inti; printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); printf(".........................end.......................................\n"); for(i=0;i printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s%\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city, t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); printf("**********************************");} voidsearch1(FLYt[],intn)//按航班号查找记录 {chars[20];//保存等待查找航班名字符串 inti; printf("输入您想查找的航班号: "); scanf("%s",s);//输入待查找航班名 for(i=0;i {if(strcmp(s,t[i].planenumber)==0)//记录中的航班名和待比较的是否相等 break;//相等,则返回该记录的下标号,程序提前结束 } if(i>n-1)//如果整数i的值大于n-1,说明没有找到 printf("没有找到此航班\n"); else {printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n");//显示记录 printf("--------------------------------------------------------------------------------\n"); printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city, t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); } } voidsearch2(FLYt[],intn)//按起飞降落城市查找记录 {chars1[20]; chars2[20]; inti,flag=1; printf("输入起飞城市名称: "); scanf("%s",s1);//输入起飞城市名称 printf("输入降落城市名称: "); scanf("%s",s2);//输入降落城市名称 for(i=0;i {if(strcmp(s1,t[i].Take_off_city)==0&&strcmp(s2,t[i].Arrived_in_city)==0)//记录中的城市和待比较的是否相等//相等,则返回该记录的下标号,程序提前结束 {printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n");//找到,显示记录 printf("-------------------------------------------------------------------------------\n"); printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city, t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); flag=0;} } if(flag) printf("没有找到此航班! \n");} voidbook(FLYt[],intn)//订票 {chars[20],number1[10],name1[10],id1[20],flightname1[10]; inti,j=0,m,k,count1; printf("输入您想订的票数: "); scanf("%d",&m); printf("号码姓名证件号订的票数航班号\n");//提示信息 printf("..................................................................\n"); for(k=0;k {scanf("%s",number1); scanf("%s",name1);//输入订票客户姓名 scanf("%s",id1);//输入证件号 scanf("%d",&count1);//输入订票票数 scanf("%s",flightname1);//输入航班号 for(i=0;i {if(strcmp(flightname1,t[i].planenumber)==0)//记录中的航班名和待比较的是否相等 if(t[i].shipping==0) {printf("抱歉,此航班已满,请您选择别的航班! \n"); k--; break;} else {j=t[i].sit; strcpy(t[i].guest[j].number,number1); strcpy(t[i].guest[j].name,name1); strcpy(t[i].guest[j].id,id1); t[i].guest[j].count=count1; strcpy(t[i].guest[j].flightname,flightname1); t[i].shipping=t[i].shipping-count1; t[i].sit++; printf("恭喜您,订票成功! \n"); break;//相等,则返回该记录的下标号,程序提前结束 } } if(i>n-1)//如果整数i的值大于n-1,说明没有找到 { printf("抱歉! ! 没有此航班\n"); m=m+2; k++; } } } voidquit(FLYt[],intn)//退票 {chars1[20],s2[20];//保存待查航班名和证件号字符串 inti,k,j,h,l,ch; printf("请输入你想退订的航班号: "); scanf("%s",s1);//输入待查找航班名 printf("请输入你的证件号: "); scanf("%s",s2);//输入待查找证件号 printf("号码姓名证件号订的票数航班号\n");//显示提示 printf("----------------------------------------\n"); for(i=0;i {for(j=0;j if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)==0)) {printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest[j].flightname); t[i].shipping=t[i].shipping+t[i].guest[j].count; l=j; h=i; break;} } i=h; if(i>n-1)//如果整数i值大于n-1,说明没找到 printf("没有找到: "); else {printf("你是否确认删除(1/0)\n");//确认是否要删除 scanf("%d,&ch");//输入一个整数 if(ch=1)//如果确认要删除整数 {for(k=l+1;k {strcpy(t[i].guest[k-1].number,t[i].guest[k].number);//将后一条记录的姓名拷贝到前一条 strcpy(t[i].guest[k-1].name,t[i].guest[k].name); strcpy(t[i].guest[k-1].id,t[i].guest[k].id); t[i].guest[k-1].count=t[i].guest[k].count; strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname); } t[i].sit--; printf("退票成功! ! \n");//提示退票成功} } } voidchange(FLYt[],intn)//修改航班的信息 {chars[20]; inti=0,j=0; printf("输入你要修改的航班号: ");//提示信息 scanf("%s",s);//输入航班名 for(i=0;i { if(strcmp(s,t[i].planenumber)==0)//记录中的航班名和待比较的是否相等 break;//相等,则返回该记录的下标号 } if(i>n-1)//如果整数i值大于n-1,说明没找到 printf("没有找到: "); else {printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n");//找到,显示原先记录 printf("------------------------------------------------------------------------------\n"); printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); printf("pleaseinputthenewinformation: \n"); scanf("%s",t[i].planenumber);//输入航班名 scanf("%s",t[i].Take_off_city);//输入起始城市 scanf("%s",t[i].Arrived_in_city);//输入中点城市 scanf("%s",t[i].takeoff_time);//输入起飞时间 scanf("%s",t[i].Landing_time);//输入降落时间 scanf("%d",&t[i].shipping);//输入座位号 scanf("%s",t[i].price);//输入票价 scanf("%s",t[i].discount);//输入折扣 } } voidsave(FLYt[],intn)//保存资料 {inti,j; FILE*fp;//指向文件的指针 if((fp=fopen("record1.txt","wb"))==NULL)//打开文件 { printf("cannotopenfile\n");//没打开 exit (1);//退出 } printf("保存文件\n");//输出提示信息 fprintf(fp,"%d",n);//将记录数写入文件 fprintf(fp,"\r\n");//将换行符号写入文件 for(i=0;i fprintf(fp,"%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time, t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); fprintf(fp,"\r\n");//将换行符号写入文件 fprintf(fp,"%d",t[i].sit);//将记录数写入文件 fprintf(fp,"\r\n");//将换行符号写入文件 for(j=0;j {fprintf(fp,"%-11s%-16s%-16s%-14d%-10s",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].id, t[i].guest[j].count,t[i].guest[j].flightname);//格式写入记录 fprintf(fp,"\r\n");//将换行符号写入文件} fclose(fp);//关闭文件 printf("保存成功\n");//显示保存成功 } //输入函数,参数为结构体数组 intload(FLYt[]) {inti,n,j; FILE*fp;//指向文件的指针 if((fp=fopen("record1.txt","rb"))==NULL)//打开文件 {printf("不能打开\n");//不能打开 exit (1);//退出} fscanf(fp,"%d",&n);//读入记录数 for(i=0;i { fscanf(fp,"%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time, t[i].Landing_time,&t[i].shipping,t[i].price,t[i].discount); fscanf(fp,"%d",&t[i].sit);//读入记录 for(j=0;j fscanf(fp,"%-11s%-16s%-16s%-14d%-10s",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].id, &t[i].guest[j].count,t[i].guest[j].flightname);//格式写入记录} fclose(fp);//关闭文件 printf("你已经成功从文件读取数据! \n");//显示读取成功 returnn;//返回记录数 } voidmain()//主函数 {inti=0; FLYflight[Q]; intlength;//保存记录长度 for(;;)//无限循环 {switch(menu_select())//调用主菜单函数,返回值整数做开关语句的条件 { case0: length=enter(flight);break;//输入记录 case1: list(flight,length);break;//显示全部记录 case2: order(flight,length);break;//排序 case3: search1(flight,length);break;//查找记录 case4: search2(flight,length);break;//查找记录 case5: book(flight,length);break;//订票 case6: quit(flight,length);break;//退票 case7: change(flight,length);break;//修改航班信息 case8: save(flight,length);break;//保存文件 case9: length=load(flight);break;//读文件 case10: exit(0);//如返回值为0则程序结束} } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 源代码