数据结构课程设计航空客运订票系统_第1页
数据结构课程设计航空客运订票系统_第2页
数据结构课程设计航空客运订票系统_第3页
数据结构课程设计航空客运订票系统_第4页
数据结构课程设计航空客运订票系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)任务书 学院 专业 班 一、课程设计(论文)题目 航空客运订票系统 二、课程设计(论文)工作自 2010 年 12 月 27 日至 2010 年 12 月 31 日。三、课程设计(论文) 地点: 创新大楼实训中心3楼 四、课程设计(论文)内容要求:1本课程设计的目的1) 使学生增进对数据结构各理论知识的熟练程度, 2) 加强算法设计的能力,为以后的数据库原理等课程的学习打下良好基础。, 2课程设计的任务及要求 题目一:运动会分数统计 要求:(要求参考数据结构题集p79) 题目二:停车场管理要求:(要求参考数据结构题集p96) 题目三:车厢调度要求:(要求参考数据结构题集p98)

2、 题目四:算术表达式求值演示要求:(要求参考数据结构题集p99)。 题目五:银行业务模拟要求:(要求参考数据结构题集p100)。 题目六:航空客运订票系统要求:(要求参考数据结构题集p101) 题目七:电梯模拟要求:(要求参考数据结构题集p102) 题目八:迷宫问题要求:(要求参考数据结构题集p105) 题目九:火车订票系统要求:功能实现订票子系统、售票子系统、退票子系统、统计子系统、查询子系统、生成数据子系统 题目十:教学计划编制问题要求:(要求参考数据结构题集p150) 题目十一:校园导游咨询要求:(要求参考数据结构题集p151) 题目十二:表达式类型的实现要求:(要求参考数据结构题集p1

3、52) 题目十三:全国交通咨询模拟要求:(要求参考数据结构题集p153) 题目十四:超市管理系统要求:实现对超市的各业务的管理(例如:货物的管理、价目的管理等) 题目十五:职工工资管理系统要求: 实现对职工工资的管理编辑。3)课程设计论文编写要求1)详细清晰地描述个人的课程设计工作;2)要按照本模板的规格打印誊写课程报告;3)课设报告包括目录、内容提要、正文、课程设计体会、参考文献、附录等;4)课程报告装订按学校的统一要求完成4)评分标准: 1)完成原理分析:20分; 2)完成设计过程:40分; 3)完成代码分析:20分。4)个人创新工作:20分。学生签名: 2010年12月 27 日- 2

4、- 课程设计(论文)评审意见(1)原理分析 (20分):优()、良()、中()、一般()、差(); (2)设计分析(20分):优()、良()、中()、一般()、差(); (3)程序流程(20分):优()、良()、中()、一般()、差();(4)代码分析(20分):优()、良()、中()、一般()、差();(5)个人创新(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 讲师 2010年 12月 31 日- 24 - 目 录目 录- 1 -正 文- 1 -一、需求分析- 1 -1.课设题目- 1 -2.题目要求- 1 -3.课题

5、背景- 1 -4.系统分析- 1 -二、个人工作- 2 -1.基本实现- 2 -2.创新功能- 2 -三、概要设计- 3 -1.主程序流程图及其说明- 3 -2.子程序流程图及其说明- 3 -四、源程序- 5 -1.头文件代码- 5 -2.源文件代码- 15 -五、程序结果- 17 -1.调试分析- 17 -2.截图分析与相关说明- 17 -3.时间复杂程度分析- 22 -4.算法的改进设想- 22 -课程设计体会- 23 -正 文一、 需求分析1. 课设题目航空客运订票系统2. 题目要求主要功能包括:1) 查询航线:根据客户提出终点站名输出下列信息:航班号,飞机号,星期几飞行,最近一天的航班

6、日期和余票额。2) 承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若上有余票,则为客户办理订票手续,输出座位号;若以满员余票额少于定票额,则需要重新询问客户要求,若需要,可预约登记排队等候。3) 承办退票业务:根据客户提供的情况(日期,航班),为客户办理退票手续,然后查询航班是否有人预约登记,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则一次询问其他排队预约的客户。3. 课题背景随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空

7、售票系统的工作效率。因此,我选这个航空订票系统来研究,加强对其的了解,并进一步加深对数据结构各种算法的理解。4. 系统分析从课程设计的题目要求可以知道,我们需要建立的是具有能对数据的插入,删除,检索功能的软件。由于乘客的数量较大且不固定,因此选择用链表来保存乘客的基本信息:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量等等,由于预约人数无法预计,队列也应以链表作存储结构。所以我们建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。系统主要实现的操作和功能是:查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到

8、有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。二、 个人工作拿到课设题目之后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各种算法,做到学以致用,并在运用的基础之上,进一步去创新。1. 基本实现1) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,价格和剩余票额等业务。2) 承办订票业务:根据客户提出的要求(终点站)查询该航班票额情况,若尚有余票,则为客户办理订票手续输出座位号;若已满员,则需重新询问客户要求。若需要,可购买下一次航班或者等待看有没有人退票;3) 承办退票业务:根据客户

9、提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所剩票额能满足他的要求则为他办理订票手续,否则依次询问其它排队候补的客户。2. 创新功能1) 在用户实现查询、订票、退票之后,本系统另增加了一个询问的功能,询问用户是否继续操作还是返回菜单页。这样就给用户继续进行些操作时节省了很多时间,也使系统的运行时间缩短了许多。2) 本系统增加了一个增加航线的功能,这样就可以不用固定在仅有的几个航线的操作,机场可以根据自己的需求,增加或删除航线,达到了数据的方便快捷的效果。3) 此系统增加了清空系统的功能,这样可以避免若输入的信息存在很多错误的情况之下,

10、实行清空系统时,可以达到更加理想的效果。4) 系统在菜单页面和各个操作当中都加了退出功能。退出之后可以进行其他的操作,不就必在关掉程序之后再去运行程序,若是这样的话,就不符合平常的操作习惯了。为了与实际接轨,退出功能还是很有必要去增加的。5) 对程序在运行时输入错误操作的修改,提供了一定方便条件基本上能安全的运行,具备的功能符合题目的要求。程序写的还算简练,结构清晰,各个模块的分工和功能明确。三、 概要设计1. 主程序流程图及其说明主程序的流程图如下图3-1所示:航空客运订票系统1、增加航线7、清空系统8、退出系统6、退订机票5、预订机票4、删除航线3、修改航线2、查询航线 图3-1利用swi

11、tch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。例如:若需要查询航线时,则输入2;需要清空系统时,则输入7;若需要退出系统,则输入8。若用户输入1到8其他的数据时,则弹出信息:您输入的信息有误,请重新输入!2. 子程序流程图及其说明1) 增加航线的流程图及其说明:主要功能是把新航班信息写入新建的链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航线的增加。 增加航线的流程图如图3-2所示: 1.返回菜单 2.继续操作1.增加航线开始建立新的链表新增航班信息建立新链表对新链表置空,订票表头初始化返回图3-22) 查询、修改、删除航线流程图及其说明:先输入所要查找

12、、删除或修改的航班,然后判断此航班是否存在,如果存在,则输出相关的航班信息或者进行修改或删除航班信息,如果不存在,则退出。查询、修改、删除航线流程图如图3-3所示:1.返回菜单 2.继续操作输入航班信息、修改、删除该航班信息输入所要查找、修改、删除的航班2.查询航线 3.修改航线 4.删除航线上 地地在在在输入航班的信息输出航班信息返回yn判断航班是否存在图3-33) 订票、退票流程图及其说明:订票说明:先输入目的地,找到与它的位置,若找不到则提示不存在此目的地,再判断飞往目的地的航班是否有余票,若有余票输出座位信息,没余票输出剩余票数小于定票数,选择是否排队进入候补队列。退票说明:先通过对退

13、票人的基本信息进行查找,判断是否存在此航班和是否存在此人订票信息,如果存在则进行退票。订票、退票流程图如图3-4所示:订票、退票系统售票系统订票系统退票系统是否有票? ny售票图3-4四、 源程序1. 头文件代码头文件取名为:hangkong.h#include #include #include #include #include #define max 50 /定义航线量的最大值#define null 0typedef struct customer char name10; /姓名int amount; /订票量int rank; /座位级别int seat_no; /座位号char

14、flight_no6; /航班号 struct customer *next;customer;typedef struct replace char name10; int amount; int rank; char flight_no6; struct replace *next; replace; typedef struct flight char des_name10; /终点站名char flight_no6; /航班号char plane_no6; /飞机号char week_day; /飞行日期(星期几)int customer_amount; /乘客数量int free_a

15、mount; /剩余票数 int price3; /票价int replace_amount; replace *replname; customer *custname; struct flight *next; flight,*pflight;int customer_amount=0; struct flight *head; struct flight *rear; customer *cusrear;replace *reprear;void flightinsert() /增加航线flight *p;p=new flight;int i=0;while (i!=1)printf(请

16、输入终点站名:n);scanf(%s,&p-des_name);printf(请输入航班号:n);scanf(%s, &p-flight_no);printf(请输入飞机号:n);scanf(%s,&p-plane_no);printf(请输入飞行周日:n);scanf(%s,&p-week_day);printf(请输入乘员定额:n);scanf(%d,&p-customer_amount);p-free_amount=p-customer_amount;printf(请输入舱位等级的价格:n);printf(头等舱价格:n);scanf(%d,&p-price0);printf(普通舱价格

17、:n);scanf(%d,&p-price1);printf(经济舱价格:n);scanf(%d,&p-price2);p-replname=new replace;p-custname=new customer;p-custname-next=null;p-replname-next=null;p-replace_amount=0;rear-next=p;rear=p;rear-next=nul;printf(1、返回主菜单 2、继续添加n);scanf(%d,&i);void flightdelete() /删除航线flight *p,*q;char flight_no6;p=head;i

18、nt i=0;while (i!=1)printf(请输入需要删除的航班号:n);scanf(%s,&flight_no);while (p-next&strcmp(p-next-flight_no,flight_no)p=p-next; q=p-next;if (q!=null)if(q-next=null) /当删除rear所指向的结点rear=p;p-next=p-next-next;delete q;printf(删除成功!nn);elseprintf(你所要删除的航班不存在!nn);printf(1、返回主菜单 2、继续删除n);scanf(%d,&i);void flightinq

19、uiry() /查询航线flight *p,*q;char flight_no6;p=head;int i=0;while (i!=1)printf(请输入需要查询的航班号:n);scanf(%s,&flight_no); while (p-next&strcmp(p-next-flight_no,flight_no)p=p-next;q=p-next;if (q=null)printf(对不起不存在此航班!n);elseprintf(航班号:%sn,q-flight_no);printf(飞机号:%sn,q-plane_no);printf(目的地:%sn,q-des_name);print

20、f(飞行周日:%cn,q-week_day);printf(成员定额:%dn,q-customer_amount);printf(剩余票数:%dn,q-free_amount);printf(候补乘客数:%dn,q-replace_amount);printf(头等舱价格:%dn,q-price0);printf(普通舱价格:%dn,q-price1);printf(经济舱价格:%dn,q-price2);printf(1、返回主菜单 2、继续查询n);scanf(%d,&i);void flightrework() /修改航线信息int customer_number ;flight *p,

21、*q;char flight_no6;char i=0; printf(请输入需要修改的航班号:n);scanf(%s,&flight_no); p=head;while (p-next&strcmp(p-next-flight_no,flight_no)p=p-next;q=p-next;if (q=null)printf(对不起不存在此航班!n);elsewhile(i!=9)printf(*请输入需要修改的数据*nn);printf( 1、航班号 2、飞机号 n);printf( 3、目的地 4、飞行周日 n);printf( 5、成员定额 6、头等舱价格 n);printf( 7、普通

22、舱价格 8、经济舱价格 n);printf( 9、退出 nn);printf(*n);scanf(%s,&i);switch(i)case 1:printf(请输入航班号:n); scanf(%s,&q-flight_no);break;case 2:printf(请输入飞机号:n);scanf(%s,&q-plane_no);break;case 3:printf(请输入目的地:n);scanf(%s,&q-des_name);break;case 4:printf(请输入飞行周日:n); scanf(%s,&q-week_day);break;case 5:printf(请输入乘员定额:n

23、);customer_number=q-customer_amount-q-free_amount; scanf(%d,&q-customer_amount);q-free_amount=q-customer_amount-customer_number;break;case 6:printf(请输入头等舱价格:n); scanf(%d,&q-price0);break;case 7:printf(请输入普通舱价格:n); scanf(%d,&q-price1);break;case 8:printf(请输入经济舱价格:n);scanf(%d,&q-price2);break;case 9:b

24、reak;default:printf(您输入有误n);break;void flightbuyticket() /订购机票int ticket_amount;void buyticket(pflight ,int );void buyreplace(pflight ,int ,int );flight *p,*q;char des_name10;int i=2;while (i!=1)printf(请输入目的地:n);scanf(%s,&des_name);p=head;while (p-next&strcmp(p-next-des_name,des_name)p=p-next;q=p-ne

25、xt;if (q=null)printf(对不起不存在此航班!n);elsewhile(i!=1)printf(输入需要够买的票数:n);scanf(%d,&ticket_amount);while(ticket_amount=0)printf(请输入一个非零数:n);scanf(%d,&ticket_amount);if (ticket_amountfree_amount)buyticket(q,ticket_amount);elseint n;printf(剩余票数小于定票数,是否需要列入候补名单?(1、是 2、否)n);scanf(%d,&n);buyreplace(q,ticket_a

26、mount,n);printf(1、返回主菜单 2、继续购买n);scanf(%d,&i);void flightcancelticket() /退订机票void buyticket(pflight ,int );flight *p,*q;customer *h,*j;char flight_no6;char customer_name10;int replace1_amount; int i;while (i!=1)printf(请输入需要删除的航班号:n);scanf(%s,&flight_no);p=head;while (p-next&strcmp(p-next-flight_no,f

27、light_no)p=p-next;q=p-next;if(q=null) printf(对不起不存在此航班n);elsewhile (i!=2)printf(请输入姓名:n);scanf(%s,&customer_name);h=q-custname;while (h-next&strcmp(h-next-name,customer_name)h=h-next;j=h-next;if(j=null)printf(无此人信息n);elseif(j-next=null) cusrear=h; h-next=h-next-next;q-free_amount+=j-amount;delete j;

28、 printf(删除成功!n);if(q-replname-next!=null)replace1_amount=q-replname-next-amount;if (replace1_amountfree_amount)replace *rep;rep=q-replname-next;customer *cus2;cus2=new customer;cus2-seat_no=q-customer_amount-q-free_amount+1;strcpy(cus2-flight_no, q-flight_no );strcpy(cus2-name, rep-name );cus2-amoun

29、t=rep-amount;cus2-rank=rep-rank;printf(乘客%s已经成功买票n,rep-name);printf(座位号为:);for(int i=1;iamount);i+) printf(%d ,cus2-seat_no+);printf(n);if(q-custname-next=null)cusrear=q-custname;cusrear-next=cus2;cusrear=cus2;cusrear-next=null;elsecusrear-next=cus2;cusrear=cus2;cusrear-next=null;q-free_amount-=rep-

30、amount;q-replname-next=q-replname-next-next;q-replace_amount-;delete rep;printf(2、退出姓名录入n);scanf(%d,&i);printf(1、返回主菜单n);scanf(%d,&i);void flightclean() /清空系统head-next=rear-next;printf(系统已经清空!n);void buyticket(pflight q,int ticket_amount) /订票时输入客户的信息int n=ticket_amount;customer *cus2;cus2=new custom

31、er;cus2-seat_no=q-customer_amount-q-free_amount+1;strcpy(cus2-flight_no, q-flight_no );cus2-amount=ticket_amount;printf(请输入姓名:n);scanf(%s,&cus2-name);printf(请输入舱位等级:n);scanf(%d,&cus2-rank);printf(你的座位号为:n);for(int i=1;iseat_no+);printf(n);if(q-custname-next=null)cusrear=q-custname;cusrear-next=cus2;

32、cusrear=cus2;cusrear-next=null;elsecusrear-next=cus2;cusrear=cus2;cusrear-next=null;q-free_amount-=ticket_amount;void buyreplace(pflight q,int ticket_amount,int n) /退票时记录客户的信息replace *rep2;rep2=new replace;if(n=1)q-replace_amount+=ticket_amount;strcpy(rep2-flight_no,q-flight_no);rep2-amount=ticket_a

33、mount;printf(请输入姓名:n);scanf(%s,&rep2-name);printf(请输入舱位等级(1-3):n);scanf(%d,&rep2-rank);if(q-replname-next=null)reprear=q-replname;reprear-next=rep2;reprear=rep2;reprear-next=null;elsereprear-next=rep2;reprear=rep2;reprear-next=null; 2. 源文件代码#includehangkong.hvoid main() /主程序printf(nnn *n); printf( -

34、n); printf( *nnnn);cusrear=new customer;reprear=new replace;head=rear=new flight;head-next=null;void flightinsert(); /增加航线void flightdelete(); /删除航线void flightinquiry(); /查询航线void flightrework(); /修改航线void flightbuyticket(); /预定机票void flightcancelticket(); /退定机票void flightclean(); /清空系统char i=0;whil

35、e (i!=8)printf(*航空客运订票系统*nn);printf( 1、增加航线 5、预订机票n);printf( 2、查询航线 6、退订机票n);printf( 3、修改航线 7、清空系统n);printf( 4、删除航线 8、退出系统n);printf(*n);scanf(%s,&i);switch(i)case 1:flightinsert();break;case 2:flightinquiry();break;case 3:flightrework();break;case 4:flightdelete();break;case 5:flightbuyticket();brea

36、k;case 6:flightcancelticket();break;case 7:flightclean();break;case 8:;printf(谢谢使用!n);break;default:printf(您输入的信息有误,请重新输入!n);break;五、 程序结果1. 调试分析编成后出现错误经过调试检查发现switch语句中漏写了break语句,switch语句作为选择语句,在此程序中,要实现其选择执行的功能,在每个选择条件后面必须有break语句跟随,否则程序将运行错误,经检查漏洞后加以改正。在输入航班号时,应输入scanf(%s,&q-flight_no);要注意的是&符号不能漏掉,虽然漏掉后它不会提示错误,但在运行的时候还是会出现错误的。因我们输入的终点站名、航班号、飞机号、飞行日期都是以字符串的

温馨提示

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

评论

0/150

提交评论