数据结构课程设计航空客运订票系统

上传人:无*** 文档编号:26067061 上传时间:2021-08-05 格式:DOCX 页数:27 大小:144.87KB
收藏 版权申诉 举报 下载
数据结构课程设计航空客运订票系统_第1页
第1页 / 共27页
数据结构课程设计航空客运订票系统_第2页
第2页 / 共27页
数据结构课程设计航空客运订票系统_第3页
第3页 / 共27页
资源描述:

《数据结构课程设计航空客运订票系统》由会员分享,可在线阅读,更多相关《数据结构课程设计航空客运订票系统(27页珍藏版)》请在装配图网上搜索。

1、数据结构课程设计报告设计题目航空客运订票系统专业班级学号姓名电话完成日期 2017.04.131 .问题描述 22 .系统设计23 .数据结构与算法描述44 .测试结果与分析65 .总结106 .参考文献 10附录程序源代码10第13页课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。2. 系统设计2.1 设计目标( 1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;( 2)可以浏览已订票客户信息;包括

2、客户姓名、订票数额和舱位等级;( 3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;( 4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;( 5)可以办理退票业务;提供航班号和客户姓名,即可退票;( 6)可以查看剩余票数;( 7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。2.2 设计思想( 1)运行环境(软硬件环境):DEV-C+;( 2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;( 3)输出的形式描述:通过客户的输入,输出相应内容;( 4)功能描述:用户可通过本系

3、统实现对航班的查询、 订票和退票功能。2.3系统模块划分航空客运订票系统”,融见工 杳看刺善然图3/总体结构设计框图2.3.1 主函数输出菜单界面。输入指令,显示,敲击回车开始工作。2.3.2 浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用voiddisplay。函数实现打印struct airline链表中存储的航线的基本信息的功能。2.3.3 浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find ()函数查询并以指针形式返回。2.3.4 查询航线编写void search()函数实现根据客户提出的终点站名

4、输出航线信息的 功能。用户输入终点站名,该函数会在航线信息链表中进行查询,并输 出该航线信息或提示未找到该航线。2.3.5 办理订票业务编写void order()函数实现办理订票业务的功能。根据客户提供的航班 号,调用find ()函数进行查询,如为空,退出该模块;输入客户订票额, 若客户订票额末超过余票量, 订票成功, 调用 linklist *insertlink()在订票乘员名单域中添加客户信息,并在该航线的余票量中减掉该客户的订票量,然后依次输出该订票客户的座位号;客户订票额超过余票量总额或满员, 询问客户是否需要进行排队等候; 若等候, 调用 linkqueue appendque

5、ue()在排队等候乘员名单域中添加客户信息;否则退出。2.3.6 办理退票业务编写 void return_tkt() 函数实现办理退票业务的功能。根据客户提供的航班号,调用 find ()函数进行查询,根据客户提供的姓名到订票客户名单域进行查询,若未找到,退出本模块;若信息查询成功,在订票乘员名单域中删除客户信息,并在该航线的余票量中增加该客户的订票量。检查排队等候乘员名单域,找出满足当前条件的排队候补名单域,插入到订票客户名单链表中。循环该步骤直到无满足当前条件的排队候补名单域,退出。2.3.7 查看剩余票数编写 void list() 函 数实现打印全部航 线 信息 的功能 , 调 用

6、void display() 函数实现打印每条航线的基本信息的功能。3. 数据结构与算法描述( 1) 下述单链表用来存储乘员信息, 包括客户姓名、 订票量、 舱位等级。typedef struct ord_ros char name10;/* 客户姓名 */int ord_amt;/* 订票量 */int grade;/*舱位等级 */struct ord_ros *next;linklist;( 2) 下述单链队列用来存储等候替补客户信息, 通过队列先进先出的特点,使先排队的客户先订票成功。typedef struct wat_ros /*单链队列存储等候替补客户信息*/ char name

7、10;/* 姓名 */int req_amt;/* 订票量 */struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front;/* 等候替补客户名单域的头指针 */qptr rear;/*等候替补客户名单域的属指针*/linkqueue;( 3)下述结构体存储了航班信息,终点站名、航班号、飞机号、飞行日期、乘员定额和余票量。struct airline char ter_name10;/*终点站名 */char air_num10;/* 航班号 */char plane_num10;/* 飞机号 */char date7;/

8、*飞行日期(星期几)*/int tkt_amt;/* 乘员定额 */int tkt_sur;/* 余票量 */linklist *order;/* 乘员名单域,指向乘员名单链表的头指针*/linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针 */ line;( 5)( 4)通过修改全局变量MAXSIZE 的数值即可改变航线数目,在struct airline airMAXSIZE 中可修改、增加、删除航线信息。struct airline *head; /*初始化航班信息*/struct airline airMAXSIZE=BJS,1,MU5694,JU

9、N1st”,50,50,BJS,2,MU5694,JUN2nd”,50,50,SHA,3,MU5390,JUN1st”,50,50,SHA,4,MU5390,JUN2nd”,50,50,CAN,5,CZ3364,JUN1st”,50,50,CAN,6,CZ3364,JUN2nd”,50,50;4. 测试结果与分析(可将测试过程抓图说明)4.1进入航空客运订票系统4.2浏览航线信息(输入指令 1”)C:Use六啕 De s kt o p领空客运订票系统.exeT业票统 理理看出乘员定额余票量335DJS1MU5G94JUNlstSHA2MU5390JUNlstCAN3CZ3364JUNlst航班

10、号 飞机号 飞行日期航空客运订票系统息信户息客务薪 信票业业票 线订统票西系统 航已航早驾 一理理看出 翳查办挈退12 3 4 5 6 04.3浏览已订票客户信息(输入指令 2”)C:U seD e s kt o p空客统.exe余爵犒婀舱位等翳航空客运订票系统,并根据提示进行相应操作)1 2 3 4 5 6 W12 3 4 5 6 04.4查询航线(输入指令“ 3”自心信修心客务薪 旨票业业票 北票麋统 已航鼠轲二下 理理看出 普办.d659息信户息客务畲 信票业业票 线发票西房统 航已航油驾 理理看出 符查办挈退C:Use六啕 De s kt o p领空客运订票系统.exe余票量4乘员定额

11、航空客运订票系统主:HU5t?4 JUNl&tHJS请蟠;信票12 3 4 5 6 0务薪 业业票线方票西系统 航已航早驾一 一理理看出 翳查办挈退自心信户 息客S 上s.务雷业业票K票西系统 已航 备理理看出 浏查办办年_退旭人餐点站名二B四点站名 航班号 飞机号 飞行日期4.5办理订票业务(输入指令“ 4” ,并根据提示进行相应操作)ri航空客运订票系统C:Use弓桐 De s kt o p惭空客运订票系统.exe4.6办理退票业务(输入指令“ 5” ,并根据提示进行相应操作)T_-:4% 择入入人人的 请 士旧请隹月比月余1 2 3 4 5 t 0IH1!善:1整基的票等要/雷I底1口量

12、姓票号自.JJ信户息客务索 信票业业票 线发票西房统 航已航油驾 理理看出 符查办挈退C :U ses 懒 D e s kt o p W 空客S统.exe二僚桐航空客运订票系统:5s 择人入成 选高清主所家 、IK、1P、.息信户息客务薪 三桌业业票 ,sw-i 己航鼠轲系 理理看出 普办.dBes12 3 4 5 6 0(退票客户)自心信户 息客务薪 信票业业票 线方票西系统 航已航K驾 一理理看出 翳查办挈退4.7查看剩余票数(输入指令 6”)C:U se rsfl D e s kt o p W 空客统.exe.需_系统 航葭空一 询理理看出一 查办挈退一乘员定额33342g3456SHA

13、2MU5390JUNlstCAN3CZ33&4JUNlstBJS1MU56y4JUNlst航ft号飞机号飞行日期航空客运订票系统息信户息客务畲 信票业业票 线发票西房统 航已航油空 理理看出 查办攀退123 45 & R4.8退出系统(输入指令 0”)5. 总 结通过此次的课程设计, 将课本上所学习的有关内容应用到实践当中。在调试程序时,首先对整个程序流程有全面的认识,调试过程中需要细心、耐心,在修改时要有耐心,编译出错后必须逐个错误去改正。通过此次课程设计,我感觉到自己在编写比较大的程序时,还是缺乏思路,对程序的整体构架不是很清晰明了,这是我需要攻克的一大难点!编程的过程就是不断学习和掌握的

14、过程,也是对自己学习掌握程度的一个检验过程。6. 参考文献 (包括书籍、论文、网络资料等)1刘振安等.C+附序设计课程设计.北京:机械工业出版社,2004.12.2 苏仕华 魏韦巍等 数据结构课程设计 . 北京:机械工业出版社,2010.3.3严蔚敏 吴伟民数据结构(C语言版).北京:清华大学出版社,2016.7.附录 程序源代码#include #include #include #include /getch#define MAXSIZE 6 / 定义航线量的最大值 */#define AMOUNT 50/* 定义每条航班的总座位数 */typedef struct wat_ros /*

15、单链队列存储等候替补客户信息*/第1 o页char name10;/* 姓名 */int req_amt;/* 订票量 */struct wat_ros *next;qnode,*qptr;typedef struct pqueueqptr front;/* 等候替补客户名单域的头指针 */qptr rear;/*等候替补客户名单域的属指针*/linkqueue;typedef struct ord_roschar name10;/* 客户姓名 */int ord_amt;/* 订票量 */int grade;/* 舱位等级 */struct ord_ros *next;linklist;st

16、ruct airlinechar ter_name10;/* 终点站名 */char air_num10;/* 航班号 */char plane_num10;/* 飞机号 */char date7;/* 飞行日期(星期几) */int tkt_amt;/* 乘员定额 */int tkt_sur;/* 余票量 */linklist *order;/* 乘员名单域,指向乘员名单链表的头指针*/linkqueue wait;/* 等候替补的客户名单域, 分别指向排队等候名单队头队尾的指针 */line;struct airline *head; /* 初始化航班信息 */struct airline

17、 airMAXSIZE=BJS,1,MU5694,JUN1st,50,50,BJS,2,MU5694,JUN2nd,50,50,SHA,3,MU5390,JUN1st,50,50,SHA,4,MU5390,JUN2nd,50,50,CAN,5,CZ3364,JUN1st,50,50,CAN,6,CZ3364,JUN2nd,50,50;void display(struct airline *a)/* 打印每条航线的基本信息 */printf(%8st%3st%st%4stt%3dt%10dn,a-ter_name,a-air_num,a-plane_num,a-date,a-tkt_amt,a

18、-tkt_sur);void list()/* 打印全部航线信息 */struct airline *a;int i=0;a=head;printf( 终点站名 t 航班号 t 飞机号 t 飞行日期 t 乘员定额 t 余票量 n);while(iMAXSIZE)display(a); /* 调用 dispiay 函数来输出 */ a+;i+;printf(nn);void search()/* 根据客户提出的终点站名输出航线信息*/struct airline *a,*find();char name10;int i=0;a=head;printf( 请输入终点站名 :);scanf(%s,n

19、ame);while(iter_name) break;a+;i+;if(i=MAXSIZE)printf( 对不起,该航线未找到 !n);elseprintf(终点站名t航班号t飞机号t飞行日期t乘员定额t余票量n);display(a);struct airline *find()/* 根据系统提出的航班号查询并以指针形式返回 */struct airline *a;/* 在航线信息链表中进行查询 */char number10;int i=0;a=head;printf( 请输入航班号 :);scanf(%s,number);while(iair_num)return a;a+;i+;p

20、rintf( 对不起,该航线末找到 !n);return NULL;void prtlink()/* 打印订票乘员名单域的客户名单信息 */linklist *p;struct airline *a;a=find();p=a-order;if(p!=NULL)printf( 客户姓名 订票数额 舱位等级 n);while(p)printf(%stt%dt%dn,p-name,p-ord_amt,p-grade);p=p-next;elseprintf( 该航线没有客户信息!n);增加订票乘员名linklist *insertlink(linklist *head,int amount,char

21、 name,int grade) /*单域的客户信息*/linklist *p1,*new1;p1=head;new1=(linklist *)malloc(sizeof(linklist);if(!new1) printf(nOut of memory!n);return NULL;strcpy(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;re

22、turn head;linkqueue appendqueue(linkqueue q,char name,int amount)/* 增加排队等候的客户名单域 */qptr new1;new1=(qptr)malloc(sizeof(qnode);strcpy(new1-name,name);new1-req_amt=amount;new1-next=NULL;if(q.front=NULL)/* 若原排队等候客户名单域为空*/q.front=new1;elseq.rear-next=new1;q.rear=new1;return q;void order()/* 办理订票业务*/struc

23、t airline *a;int amount,grade;char name10;a=head;if(!(a=find()return;/* 根据客户提供的航班号进行查询,如为空,退出该模块 */printf( 请输入你订票所需要的数量:);scanf(%d,&amount);if(amounta-tkt_amt)/* 若客户订票额超过余票量总额,退出 */printf(n 对不起,您输入的票的数量已经超过乘员定额!);return;if(amounttkt_sur)/* 若客户订票额末超过余票量, 订票成功并等记信息*/ int i;printf( 请输入您的姓名(订票客户) :);sca

24、nf(%s,name);printf( 请输入 %s 票的舱位等级:,name);scanf(%d,&grade);a-order=insertlink(a-order,amount,name,grade);/* 在订票乘员名单域中添加客户信息*/a-tkt_sur-=amount;/* 该航线的余票量应减掉该客户的订票量*/for(i=amount;i0;i-)/* 依次输出该订票客户的座位号*/printf(%s 的座位号是:%dn,name,AMOUNT-a-tkt_sur-i+1);printf(n 祝您乘坐愉快! n);else /*若满员或余票额少于订票额,询问客户是否需要进行排队

25、等候*/ char r;printf(n 已经没有更多的票,您需要排队等候吗 ?(Y/N);r=getch();/ 用来读取 r 字符,不显示printf(%c,r);if(r=Y|r=y)printf(n 请输入您的姓名(排队订票客户) :);scanf(%s,name);a-wait=appendqueue(a-wait,name,amount);/* 在排队等候乘员名单域中添加客户信息*/printf(n 注册成功 !n);else printf(n 欢迎您下次再次订购! n);void return_tkt()/* 退票模块 */struct airline *a;qnode *t,*

26、back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname10;if(!(a=find()return;/* 调用查询函数,根据客户提供的航线进行搜索*/head=a-order;p1=head;printf( 请输入你的姓名(退票客户) :);scanf(%s,cusname);while(p1!=NULL)/* 根据客户提供的姓名到订票客户名单域进行查询 */if(!strcmp(cusname,p1-name)break;p2=p1;p1=p1-next;if(p1=NULL)printf( 对不起,你没有订过票!n);return;

27、/* 若未找到,退出本模块 */else/* 若信息查询成功,删除订票客户名单域中的信息*/if(p1=head)head=p1-next;elsep2-next=p1-next;a-tkt_sur+=p1-ord_amt;grade=p1-grade;printf(%s 成功退票! n,p1-name);free(p1);a-order=head;/*重新将航线名单域指向订票单链表的头指针*/f=(a-wait).front;/*f 指向排队等候名单队列的头结点 */r=(a-wait).rear;/*r 指向排队等候名单队列的尾结点 */t=f;/*t 为当前满点条件的排队候补名单域*/w

28、hile(t)if(a-tkt_sur=a-wait.front-req_amt)/* 若满足条件者为头结点 */int i;a-wait.front=t-next;printf(%s 订票成功! n,t-name);for(i=0;ireq_amt;i+)/* 输出座位号*/printf(%s 的座位号是:%dn,t-name,(a-tkt_sur)-i);a-tkt_sur-=t-req_amt;a-order=insertlink(a-order,t-req_amt,t-name,grade);/* 插入到订票客户名单链表中 */free(t);break;back=t;t=t-next

29、;if(a-tkt_sur)=(t-req_amt)&t!=NULL)/* 若满足条件者不为头结点 */第1 9页int i;back-next=t-next;printf(%s 订票成功! n,t-name);for(i=0;ireq_amt;i+)/* 输出座位号*/printf(s seat number is:%dn,t-name,(a-tkt_sur)-i);a-tkt_sur-=t-req_amt;a-order=insertlink(a-order,t-req_amt,t-name,grade);/* 插入到订票客户名单链表中 */free(t);break;if(f=r) br

30、eak;void sort_tkt() /* 按剩余票数排序 */int j;struct airline t,*a,*p,*q;p=a=air;for(p=a;p-tkt_sur;p+)for(q=p+1;q-tkt_sur;q+)if(p-tkt_surtkt_sur)t=*p;*p=*q;*q=t;printf( 终点站名 t 航班号 t 飞机号 t 飞行日期 t 乘员定额 t 余票量 n);for(j=0;j=MAXSIZE;j+)display(a);a+; main()char c;head=air;doprintf(ntt 航空客运订票系统n);printf(”*n);print

31、f( 1.浏览航线信息n);printf( 2. 浏览已订票客户信息n);printf( 3. 查询航线n);printf( 4.办理订票业务n);printf( 5.办理退票业务n);printf( 6.查看剩余票数n);printf( 0. 退出系统n);printf(*n);printf( 请选择 :);scanf(%s,&c);/getchar();/ 等输入所有数据以后,显示并敲击回车开始工switch(c)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: break;default:break;while(c!=0);第2 2页

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!