《C语言航空订票系统方案》由会员分享,可在线阅读,更多相关《C语言航空订票系统方案(22页珍藏版)》请在金锄头文库上搜索。
1、航空客运订票系统姓名:xxx班级:xxxx学号: xxxxxxxxx目录一、 问题描述 .1二、 设计要求 .1三、数据结构设计 .2四、 详细设计程序 .3五、 运行与测试 .9六、收获及体会 .13一、问题描述设计一个航空客运订票系统,为乘客提供各种航空客运信息服务。二、 设计要求1 每条航线所涉及的信息有:终点站名 、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单 (包括姓名 、订票量、舱位等级 1, 2 或 3)以及等候替补的客户名单 (包括姓名 、所需票量 );2 系统能实现的操作和功能如下:a) 查询航线 :根据旅客提出的终点站名输出下列信息:航班号、飞机号、
2、星期几飞行 ,最近一天航班的日期和余票额 ;b) 承办订票业务 :.根据客户提出的要求 (航班号、订票数额 )查询该航班票额情况 ,若尚有余票 ,则为客户办理订票手续 ,输出座位号 ;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补;c) 承办退票业务 :根据客户提供的情况 (日期、航班),为客户办理退票手续 ,然后查询该航班是否有人排队候补 ,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续 ,否则依次询问其他排队候补的客户。三、 数据结构设计a)等候替补的客户名单 (包括姓名 、所需票量 )typedef struct wat_ros char
3、name10;/*姓名 */int req_amt;/*订票量 */struct wat_ros *next;qnode,*qptr;typedef struct pqueu qptr front;/*等候替补客户名单域的头指针*/qptr rear;/*等候替补客户名单域的属指针*/linkqueue;b )订票的客户名单 (包括姓名 、订票量 、舱位等级 1, 2 或 3)typedef struct ord_ros char name10;/*客户姓名 */专业技术资料.int ord_amt;/*订票量 */int grade;/*舱位等级 */struct ord_ros *next
4、;linklist;c)每条航线所涉及的信息:终点站名 、航班号 、飞机号 、飞行日 (星期几 )、乘员定额 、余票量、已订票的客户名单 、以及等候替补的客户名单struct airlinechar zong_name10;/*终点站名 */char air_num10;/*航班号 */char plane_num10;/*飞机号 */char date7;/*飞行日期 (星期几 ) */int tkt_amt;/*乘员定额 */int tkt_sur;/*余票量 */linklist *order;/*乘员名单域 ,指向乘员名单链表的头指针*/linkqueue wait;/*等候替补的客户
5、名单域,分别指向排队等候名单队头队尾的指针*/lineinfo;四、详细设计程序主函数 :int menu_select()/* 菜单界面 */ int c;char s20;printf(ntt航空客运订票系统n);专业技术资料.printf(*n);printf(1.浏览航线信息 n);printf(2.浏览已订票客户信息n);printf(3.查询航线 n);printf(4.办理订票业务 n);printf(5.办理退票业务 n);printf(6.查看剩余票数并排序n);printf(0.退出系统 n);printf(*n);doprintf( 请选择 :);scanf(%s,s);
6、c=atoi(s);while(c7);return c;void main()start=air;for(;)switch(menu_select()专业技术资料.case 1:list();break;case 2:prtlink();break;case 3:search();break;case 4:order();break;case 5:return_tkt();break;case 6:sort_tkt();break;case 0:printf(n欢迎使用本系统,再见 ! n);exit(0);printf(nPress any key to continue!n);getch
7、();航线信息 :struct airlinechar zong_name10;/*终点站名 */char air_num10;/*航班号 */char plane_num10;/*飞机号 */char date7;/*飞行日期 (星期几 ) */int tkt_amt;/*乘员定额 */int tkt_sur;/*余票量 */linklist *order;/*乘员名单域 ,指向乘员名单链表的头指针*/linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/专业技术资料.lineinfo;struct airline *start;struct airl
8、ine airMAXSIZE=aaa,1,001,SUN,30,15,bbb,2,002,MON,40,10,ccc,3,003,FRI,50,14,ddd,4,004,TUE,60,20;void display(struct airline *info)/* 打印每条航线的基本信息*/printf(%8st%3st%st%4stt%3dt%10dn,info-ter_name,info-air_num,info-plane_num,info-date,info-tkt_amt,info-tkt_sur);void list()/*打印全部航线信息*/ struct airline *inf
9、o; int i=0; info=start;printf( 终点站名 t 航班号 t 飞机号 t 飞行日期 t 乘员定额 t 余票量 n); while(iMAXSIZE)display(info);info+;i+;专业技术资料.printf(nn);查询航线 :void search()/* 根据客户提出的终点站名输出航线信息*/ struct airline *info,*find(); char name10;int i=0;info=start;printf( 请输入终点站名:);scanf(%s,name);while(izong_name) break;info+;i+;if(i=MAXSIZE)printf( 对不起 ,该航线未找到!n);elseprintf( 终点站名 t航班号 t飞机号 t飞行日期 t乘员定额 t余票量 n);专业技术资料.display(info);struct airline *find()/* 根据系统提出的航班号查询并以指针形式返回*/ struct airline *info; char number10;int i=0;info=start;printf( 请输入航班号 :);scanf(%s,number);while(iair_num) return info;info+;i+;print