航空客运订票系统的设计与实现_第1页
航空客运订票系统的设计与实现_第2页
航空客运订票系统的设计与实现_第3页
航空客运订票系统的设计与实现_第4页
航空客运订票系统的设计与实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书课程名称题 目航空客运订票系统的设计与实现院 系一电子信息工程学院班 级计算机科学与技术学生姓名 指导教师日 期 2021.12.19-2021.12.30 数据结构课程设计任务书课程设计题目航空客运订票系统的设计与实现姓名学号专业班级计算机科学与技术组别组长同组 成员指导教 师课程设 计目的设一个航班订票系统,提升对信息治理、信息查找和排序算法的应 用水平.课程设 计环境386以上的微机上进行,运行环境为 TurboC课程设 计任务 和要求1、承办订票业务:根据客户提出的要求飞机抵达城市、起降时间、订 票数量查新该航班信息包括票价、折扣和剩余位 置,假设满足要求,那么为客户办理

2、i票手续,输出座 位号.2、承办退票业务:根据客户提供的情况航班号、i票数量,为客户 办理退票手续.3、查询功能:a查询航线信息:根据飞机降落地点,输入卜列信息:航班号、飞机 号、起降时间、航班票价、票价折扣和剩余位置.b查询客户预订信息:根据客户证件号,输出卜列信息:航班号、飞机 号和座位号.经专 义献1、杨秀金等.数据结构C语言版.西安电子科技大学出版社20042、谭浩强.C语言程序设计.清华大学出版社.20023、李春保.数据结构教程上机实验指导.清华大学出版社.2005时间进度安排厅P起止日期工作内容12021.12.192021.12.22下达课程设计任务、查阅资料、确定方 案220

3、21.12.232021.12.28编写程序、调试、运行32021.12.29验收、撰写课程设计报告42021.12.30r验收、撰写课程设计报告、提交文档指导教师:时间:2021.12.8航空客运订票系统的设计与实现一、简介1.设计目的:1 .数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言C语言,自行实现一个较为完整的应用系统的设计与 开发2 .通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告 等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数 据结构在软件开发中的应用.3 .学会将知识应用于实际的方法,提升分析和解决问题的水

4、平,增加综合 水平.航空空订票系统:1熟练掌握链表存储结构及其建立过程和常用操作;2熟练掌握队列的建立过程和常用操作;3学会自己调试程序的方法并掌握一定的技巧.2.问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成.二、数据结构的设计:1航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折 扣、总位置和剩余位置、以言了票的客户名单.2客户信息:客户姓名、证件号、座位号.三、功能函数设计:1 .每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日星期几、载客量、余票量、票价格,折扣,已订票的客户名单包括姓名、订

5、票量、舱位等级1, 2或3以及等候替补的客户名单包括姓名、所需票量2 .全部数据可以只放在内存中;3 .系统能实现的操作和功能如下:a查询航线:根据旅客提出的终点站名输出以下信息:航班号、飞机号、星期几飞行,最 近一天航班的日期和余票额;b承办订票业务:根据客户提出的要求航班号、订票数额查询该航班票额情况,假设尚有余 票,那么为客户办理订票手续,输出座位号;假设已满员或余票额少于定票额,那么需重新询问客户要求.假设需 要,可登记排队候补;c退票业务:根据客户提供的情况日期、航班,为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,假设所退票额能满足他的要求,那么为他办理

6、订票手续,否那么依次询问其他排队候补的客户.系统结构图功能模块图功能模块说明(1)显示已初始化的全部航线信息(2)浏览已订票客户信息(3)根据客户提出的终点站名,调用find ()函数寻找航线信息,调用list ()函数输出航线信息(4)办理订票业务:根据客户提供的航班号进行查询航线信息,假设客户订票额超过乘员定票总额,退出,假设客户订票额末超过余票量,订票成功并登记信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,那么在等候队列增加该客户的订票信息.(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询.退票

7、成功后,重新将航线名单域指向订票单链表的头指针.根据队列中从出的客户信息判断是否满足要求,如果满足,那么将该客户的信息插入到乘客信息链表中.(6)退出本系统四、界面设计:界面简洁易懂,包括1.浏览航线信息;2.浏览已订票客户信 息;3.查询航线;4.办理订票业务;5.办理退票业务;6.查看剩余 票数弁排序.五、程序设计:FlowChart六、运行与测试:1、测试的数据及其结果:(1)通过按键“1浏览航线信息,结果输出五行事先输入的数据.硼空客运订票系统M心序 信排 户并 费票 订拿 已订剩 览理看 浏办查0.退出系统息务信业线等一E航肮很览询理浏查办 一 13 53 2 15 6格国 价幽 票

8、Xg.退出系统H票时票55已订剥览理看浏办查名 站 点 :3终京 择入站北 选T号罐d载客量余票量票价格折扣 18339航班号飞机号飞丘日期1fil40i星期 B2H1162星期一3L1003星期五4H103S星期三5F1100星期六ress any key to> continuef(2)通过按键“3查询航线,输入终点站名后,结果输出相 关航线信息.丽空客运订票系统件ress 五n出 key to continue!(3)通过按键“4办理订票业务,依次输入航班号,订票数量,客户姓名,证件号后,结果输出客户的座位号,订票成功响至客运I丁票系统行 厘:鼻:门鼻河河河修院院昵河疆*RIWSe

9、mtWMiMiWIX !H力厘=:鼻鼻虫修胃 NKRIW St *1.浏览航线信息J,有询航等弓一苏理Q拿业务Z.浏览己订票客户信息 4,办季订票止寻£力.45量户23 数客;1 雪答 詈订件 1 证:3 :1薯的是 5_庭罟下 班17的户位 T楣您瞿 择入人入入的 卓lfi上lH青肩甲 、r-rrl ; 1 . 1 1 J& -查看而僚票薮并排序 取退出系统祝您乘坐愉决IPress key t曲 continue!(4)通过按键“ 2浏览已定票客户信息,输入航班号后,结果显示客户信息.项空客运订票系统上XXMMXICXMJCJtJiCJCMKMiKMMXICMMMJiXiC

10、JiMJCKMKKMXICMMMMXiCMDClCJgMJCXlCWiMKMHICMMMJiM主国土13 5息务 信也 线萼示 览询理 浏杳苏.退出系统n面一正面示订亚茶已订剌览理看谢赤杳一序-1票:T 底I 择庆姓 选户客户证件号12345Gress any key to continue!(5)通过按键“ 5办理退票业务,输入航班号,客户名后,结果退票成功响空客前票系骈K M 风 M M K H! X M K H 艮 M H 民蚓,M M X 盟 X K K M K 岷 M 艮 K H X自心信9序1三-US并西®查示订西不己订利览理看浏办查嚼舞线信息5,办理退示业务.退出系统(

11、退票客户):用户SII退 择人入成 选在沼请住用用ress ny key to comtinue!(6)通过按键“ 6查看剩余票数并排序,结果正确航空客运订票系统,jSi由退出系统6 .查看靠除票户信息拼排序逑三五六日易月日.兄其图星星星星格目g白% 00 0累航班号飞机号2H11B24H1 由 S3L10B35F110O1A14H1 ress any key to cent inue t(7)通过按键“0退出系统,结果正确2、运行与测试期间遇到的问题及其解决方法.(1)因本人水平有限,在编写的时候只使用了相对较为简单的根底语 言,代替了相对较为复杂的语言,降低了运行效率.(2)程序在起初设计

12、的时候,经常出现溢出错误,而且不只一处.为了 修正这些溢出错误,消耗了大量的时间,修正解释之后再看源程序,才发现原 来只是由于开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字 符的不正确定义造成了后期大量的纠错工作,(3)由于忘记了一些c语言的标准使得在调试过程中一些错误没有发现.例如,调用函数时,数组只需要传递数组名即可;字符 0'和整形的0 是不同的文明不可以直接对其画等号.(4)测试用例具有一定的广泛性.运行程序时输入了多种不同字符信息,经过屡次修改结果到达了预期效果.说明程序具有一定的可靠性和稳定性.七、设计后的思考:经过这次课程设计,我对调试掌握的更加熟练了,改变了

13、过去只调试不知道如 何对照程序语言修改程序的坏习惯,对调试也有了新的熟悉,意识到了程序语 言的标准性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量 的注释,既增加了程序的可读性,也可以使自己在读程序时更容易.代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXSIZE 5typedef struct wat_ros char name10;int req_amt;struct wat_ros *next;qnod

14、e,*qptr;typedef struct pqueue qptr front;qptr rear;linkqueue;typedef struct ord_ros char name10;int ord_amt;int grade;struct ord_ros *next;linklist;struct airline char ter_name10;char air_num10;char plane_num10;char date7;int tkt_amt;int tkt_sur;int tkt_pri;int tkt_reb;linklist *order;linkqueue wait

15、;lineinfo;struct airline *start;struct airline airMAXSIZE=" 北京","1","A1401","星期日",3,1,800,9,"上海","2","H1102","星期一 ,2,5,600,6,"洛阳","3","L1003","星期五",1,3,100,4,"杭州","4"

16、;,"H1035","星期三,5,4,700,5,"呼和浩特 ,“5,"F1100,“ 星期六 ,6,3,800,5;void display(struct airline *info)printf("8st%3st%st%7st%7dt%10dt%5dt%3dn,info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);

17、void list() struct airline *info;int i=0;info=start;printf("终点站tt航班号t飞机号t飞行日期t载客量t余票量t票价格t折扣 n);while(i<MAXSIZE)(display(info);info+;i+;)printf("nn");)void search() struct airline *info,*find();char name10;int i=0;info=start;printf("请输入终点站名:");scanf("%s,name);while(i

18、<MAXSIZE) if(!strcmp(name,info->ter_name) break;info+;i+;)if(i>=MAXSIZE)printf("对不起,该航线未找到!n");elseprintf("终点站tt航班号t飞机号t飞行日期t载客量t余票量t票价格t折扣 n");display(info);)struct airline *find() struct airline *info;char number10;int i=0;info=start;printf("请输入航班号:");scanf(&

19、quot;%s",number);while(i<MAXSIZE)if(!strcmp(number,info->air_num) return info;info+;i+;)printf("对不起,该航线末找到!n");return NULL;)void prtlink() linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL)printf("客户姓名 订票数额 客户证件号n");while(p)printf("%stt%dt%d

20、n",p->name,p->ord_amt,p->grade);p=p->next;)elseprintf("该航线没有客户信息!!n");)linklist *insertlink(linklist *head,int amount,char name口,int grade) linklist *p1,*new1;p1=head;new1=(linklist *)malloc(sizeof(linklist);if(!new1) printf("nOut of memory!n");return NULL;strcpy

21、(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head=NULL)head=new1;new1->next=NULL;elsehead=new1;new1->next=p1; return head;linkqueue appendqueue(linkqueue q,char name口,int amount) qptr new1;new1=(qptr)malloc(sizeof(qnode);strcpy(new1->name,name);new

22、1->req_amt=amount;new1->next=NULL;if(q.front=NULL)q.front=new1;elseq.rear->next=new1;q.rear=new1;return q;)void order() struct airline *info;int amount,grade;char name10;info=start;if(!(info=find() return;printf("请输入你订票所需要的数量:);scanf("%d,&amount);if(amount>info->tkt_amt)

23、 printf("n对不起,您输入的票的数量已经超过乘员定额!);return;)if(amount<=info->tkt_sur).int i;printf("请输入您的姓名(订票客户):);scanf("%s",name);printf("请输入s票的证件号:",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);for(i=0;i<amount;i+)printf(&

24、quot;%s 的座位号是:dn",name,info->tkt_amt-info->tkt_sur+i+1);info->tkt_sur-=amount;printf("n祝您乘坐愉快!n");) else char r;printf("n已经没有更多的票,您需要排队等候吗 ?(Y/N)");r=getch();printf("%c",r);if(r='Y'|r='y') printf("n请输入您的姓名(排队订票客户):); scanf("%s&quo

25、t;,name);info->wait=appendqueue(info->wait,name,amount);printf("n 注册成功!n");)else printf("n欢送您下次再次订购!n");)void return_tkt() struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname10;if(!(info=find() return;head=info->order;p1=head;printf(&q

26、uot;请输入你的姓名(退票客户):); scanf("%s",cusname);while(p1!=NULL) if(!strcmp(cusname,p1->name) break;p2=p1;p1=p1->next;if(p1=NULL) printf("对不起,你没有订过票!n");return;elseif(p1=head) head=p1->next;else p2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf(&

27、quot;%s 成功退票! n",p1->name);free(p1);info->order=head;f=(info->wait).front;r=(info->wait).rear;t=f;while(t)if(info->tkt_sur=info->wait.front->req_amt)int i;info->wait.front=t->next;printf("%s 订票成功! n",t->name);for(i=0;i<t->req_amt;i+) printf("%s

28、 的座位号是:dn",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);free(t);break;back=t;t=t->next;if(info->tkt_sur)>=(t->req_amt)&&t!=NULL) int i;back->next=t->next;printf("%s 订票成功!

29、n",t->name);for(i=0;i<t->req_amt;i+)printf("<%s>'s seat number is:%dn",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);free(t);break; if(f=r) break;void sort_tkt().int j;struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p+)for(q=p+1;q->tkt_sur;q+)if(p->tkt_sur<q->tkt_sur) 一t=*p;*p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论