




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
班级:网络软件设计与开发二班 姓名:王曼 学号:1145329750 指导老师:马飞C语言试题报告实验题目:航空客运订票系统。试题说明:本试题来源于数据结构题集(c语言版)。问题描述:航空客运订票的业务活动包括:查询航线,客票预订和办理退票等。试设计一个客运订票系统,以使上述业务可以借助计算机来完成。基本要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞行周日(星期几)、乘员定额、余票量、已订票的的客户名单(包括姓名、订票量、舱位等级1,2,或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以只放在内存中。(3)系统能实现的操作和功能如下:查询航线:根据旅客提供的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求。若需要可登记排队候补;承办退票业务:根据客户提供的情况(日期,航班)为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。小小说明:此系统设置六个文件夹,data1,data2,data3,为原始数据,data1中存放航班信息,data2中存放个航班中的乘客信息,data3中存放候补人员信息总体结构:航空订票查询订票退票退出自动查找候补为乘客退票票数够订票不够候补显示流程图解:开始1查询234订票退票结束姓名与座位号不够候补有无为乘客退票自动为候补人员订票显示姓名座位号不做操作有无查询航线信息查询个人信息12显示有无有无运行截图:1:广告界面:其中文字每隔0.5毫秒出现一个,文字将以响铃结束并清屏进入菜单界面。其中文字放置在welcome.txt文档中。(此处练习对文件的读取操作;贪吃蛇中清屏函数system(“cls”) 、_sleep(num)函数的使用)。2,菜单界面,此处对练习printf()函数的使用。3,第一项查询航线。3-1 此次查找按照航班信息查找。3-2 此次查找,按照个人信息查找,你只要输出你的身份证号码,就可查看自己订票情况。4,第二项,订票业务。当选择上面数字时,将进入填写资料界面。4-1订票成功时将会显示你的座位号和你的一系列信息,界面如下:4-2当订票不成功。4-2-1:当你不想作为候补时,她会显示4-2-2:当你选择候补时,她会做的操作此时,你的信息将会存档。5,第三项,退票业务的服务。5-1当你退票时,他不满足候补人员的要求时显示的效果如下:5-2当她满足候补人员的要求时:8,退出系统。源 程 序:#include#include#include#includeint n,b,m,i,j,flag,flag1,flag3,flag2;FILE *fp1,*fp2,*fp3,*fp;char c;char newcode20,newname20,newrank20,ch20;typedef struct data1int mark1;char code20;char river20;char week20;int sum1;int balance;int count1;Data1;typedef struct data2int mark2;char code20;char name220;int bquantity2;char rank20;int count2;Data2;typedef struct data3char code20;int mark3;char name320;int bquantity3;int count3;Data3;int menu1();void welcome();void read1(Data1 *,Data2 *,Data3 *);void inquire(Data1 *,Data2 *,Data3 *);/实现查询航线问题void book(Data1 *,Data2 *,Data3 *);void clear();void returnticket(Data1 *,Data2 *,Data3 *);void printf1(Data1 *arry1,int i);void fprintf1(Data1 *,Data2 *,Data3 *);void menu2();/主函数开始int main()Data1 arry1100;Data2 arry2100;Data3 arry3100;int select1;read1(arry1,arry2,arry3);welcome();/欢迎界面!while(1)select1=menu1();switch(select1)case 1:inquire(arry1,arry2,arry3);break;case 2:book(arry1,arry2,arry3);break;case 3:returnticket(arry1,arry2,arry3);break;return 0;/主函数结束/菜单开始int menu1()printf(*欢迎进入航空客运订票系统。*n);printf(* 这里为你提供的服务有: *n);printf(* 1查询航线 *n);printf(* 2承办订票业务 *n);printf(* 3承办退票业务 *n);printf(* 4退出系统 *n);printf(*n);printf(请选择你需要的服务!n);while(1)scanf(%d,&n);if(n0&ncount1=i;i=0;while(!feof(fp2)fscanf(fp2,%dn%sn%sn%dn%sn,&arry2i.mark2,arry2i.code,2,&arry2i.bquantity2,arry2i.rank);i+;arry2-count2=i;i=0;while(!feof(fp3)fscanf(fp3,%dn%sn%sn%dn,&arry3i.mark3,arry3i.code,3,&arry3i.bquantity3);i+;arry3-count3=i;/读取数据结构数据结束/查询航线开始void inquire(Data1 *arry1,Data2 *arry2,Data3 *arry3)int flag2,flag4;i=0;flag=0;menu2();scanf(%d,&flag2);if(flag2=1)printf(请输入你要查询的终点站!n);scanf(%s,ch);while(1)if(strcmp(ch,arry1i.river)=0)printf(此航线的记录如下所示:n);printf1(arry1,i);flag=1;break;if(i=(arry1-count1-1)printf(无此航班记录,请查询其他航班!);break;i+;if(flag=1)while(1)i+;if(strcmp(ch,arry1i.river)=0)printf(其他航班如下:n);printf1(arry1,i);flag=1;break;if(i=(arry1-count1-1)break;if(flag2=2)printf(请输入你的身份证号:t);scanf(%d,&flag4);for(i=0;icount2;i+)if(flag4=arry2i.mark2)printf(航班号姓名订票量仓等级);printf(n%s%s%d%sn,arry2i.code,2,arry2i.bquantity2,arry2i.rank);break;if(i=arry2-count2)printf(对不起,你输入的信息不存在。);clear();/查询航线结束/订票开始void book(Data1 *arry1,Data2 *arry2,Data3 *arry3)int flag5;int q150;int w1,w2;flag=0;i=0;printf(请输入你要到达的终点站!n);scanf(%s,ch);j=1;while(1)if(strcmp(ch,arry1i.river)=0)q1j=i;j+;flag=1;if(flag=0)printf(无此航班记录,请换乘其他航班!);break;i+;if(i=arry1-count1)break;w1=j-1;if(flag=1)printf(符合你条件的航班如下:n);for(j=1;jarry1i.balance)printf(对不起,余票量不够,你想作为候补吗?1,是,2,不是n);scanf(%d,&flag3);if(flag3=1)printf(请输入你的姓名:);scanf(%s,newname);printf(请输入你的身份证号!n);scanf(%d,&flag5);m=arry3-count3;arry3m.bquantity3=b;arry3m.mark3=flag5;strcpy(arry3m.code,arry1i.code);arry3-count3=m+1;strcpy(3,newname);fprintf1(arry1,arry2,arry3);elsearry1i.balance=arry1i.balance-b;n=i;printf(请输入你的姓名:);scanf(%s,newname);printf(请输入你的身份证号!n);scanf(%d,&flag5);printf(请输入你需要的仓等级!,可选1,2,3);scanf(%s,newrank);m=arry2-count2;arry2m.bquantity2=b;arry2m.mark2=flag5;strcpy(arry2m.code,arry1i.code);arry2-count2=m+1;strcpy(arry2m.rank,newrank);strcpy(2,newname);printf(你的信息如下:n);printf(航班号姓名订票量仓等级);printf(n%s%s%d%sn,arry2m.code,2,arry2m.bquantity2,arry2m.rank);printf(你的座位号为);for(i=arry1n.sum1-arry1n.balance-b+1;icount2)break;break;i+;if(i=arry1-count1)break;if(flag=1)arry1i.balance=arry2j.bquantity2+arry1i.balance;m=i;for(j;jcount2-1;j+)arry2j.bquantity2=arry2j+1.bquantity2;strcpy(arry2j.code,arry2j+1.code);strcpy(arry2j.rank,arry2j+1.rank);arry2j.mark2=arry2j+1.mark2;strcpy(2,arry2j+1.name2);arry2-count2=arry2-count2-1;i=0;while(1)if(strcmp(arry3i.code,arry1m.code)=0)if(arry3i.bquantity3=arry1m.balance)printf(我们已为一位先生找到满足机票,这位先生的信息如下!n);printf(航班号姓名订票量);printf(n%s%s%dn,arry3i.code,3,arry3i.bquantity3);printf(你的座位号为);for(j=arry1m.sum1-arry1m.balance+1;jcount2.bquantity2=arry3i.bquantity3;strcpy(arry2arry2-count2.code,arry3i.code);strcpy(arry2arry2-count2.rank,3);arry2arry2-count2.mark2=arry3i.mark3;strcpy(2,3);arry2-count2=arry2-count2+1;for(j=i;jcount3-1;j+)arry3j.bquantity3=arry3j+1.bquantity3;strcpy(arry3j.code,arry3j+1.code);arry3j.mark3=arry3j+1.mark3;strcpy(3,arry3j+1.name3);arry3-count3=arry3-count3-1;i=i-1;i+;if(iarry3-count3+1)break;fprintf1(arry1,arry2,arry3);clear();elseprintf(对不起,无此信息!n);clear();/退票系统结束void printf1(Data1 *arry1,int i)printf(航班号到达地日期总乘客余票额n);printf(%s%s%s%d%dn,arry1i.code,arry1i.river,arry1i.week,arry1i.sum1,arry1i.balance);/*没操作后对文件的修改开始void fprintf1(Data1 *arry1,Data2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论