




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 X XX XX XX XX XX XX XX XX X 计计算算机机技技术术系系 项目名称: 航空客运订票系统 学生姓名: XX 学 号: 班 级: 10801 指导教师: 年 月 日 2 目目 录录 1.1.系统需求分析系统需求分析3 1.1 问题分析3 1.2 任务意义3 2.2. 数据结构设计及用法说明数据结构设计及用法说明4 3.3. 详细设计和编码详细设计和编码5 3.1.主菜单5 3.2.录入航空信息5 3.3 输出航空信息6 3.4 订票7 3.5 退票7 4.4. 实验结果实验结果9 4.1 菜单函数的功能测试.9 4.2 录入函数的功能测试.9 4.3 查询航班函数的功能测试.11 4.4 订票功能地测试.12 致谢致谢17 参考文献参考文献18 附录:源程序清单附录:源程序清单19 3 1.1.系统需求分析系统需求分析 1.1 问题分析 这次的课程设计是设计一个航空系统。由于存储的数量较大且不固定,因此选择用链 表来保存基本信息:终点站名、航班号、飞机号、飞行时间、乘员定额、余票量、已经订 票的客户名单(包括姓名、订票量)、等候替补的客户名单(包括姓名、所需票量)等等。由 于在航线这个主链表上,每个航班上的已经订票名单这个链表和等候替补的名单这个链表 队列,所以建立一个十字交叉链表,在纵行上开辟一个链表存储所有航班的基本信息,再 在各个航班节点横向展开一个链表和一个链表队列,展开的链表存储已经订票的客户名单, 展开的链表队列存储等候替补的客户名单。同时,由于预约人数无法预计,队列也应以链 表作存储结构。系统主要实现的操作和功能是:添加航线、查询航线、订票功能、退票功 能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下, 通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。 1.2 任务意义 飞机场每天要接受大量的订票退票服务,对于这些数量巨大的数据,需要一个专门的 软件来进行管理和操作。软件至少需要具备的基本功能包括:接受订票,处理退票,查询 航班信息等等。面对这些实际问题,航空客运系统的制作无疑要全面的考察一个学生的知 识及能力。在全面理解客户的需求下面,来进行设计出最能够满足客户的程序出来,并且 能够根据不同的要求来将其进行改动,最能考察到对代码活用的程度。 4 2.2. 数据结构设计及用法说明数据结构设计及用法说明 数据结构的存储结构,中间纵列,为各个航班的基本信息,用一链表存储,其中一个 节点为一个航班,其中包括终点站名、航班号、飞机号、飞行时间、乘员定额、余票量、 已经订票的客户名单(包括姓名、订票量)、等候替补的客户名单(包括姓名、所需票量)等 等。横向是各个航班的情况,即从该指定的航班中用链表的形式横向存储这个航班的基本 信息,纵向为已经订票了的客户信息和药等候替补的客户的信息,其中包括客户姓名和相 应的需票量。相应的存储结构如下 struct Passenger char name20; int bnum; /bnum 记录某人买的票数 struct Passenger *next; ; typedef struct Air /记录飞机信息 int ticket; /飞机票数 char des20; /des 记录飞机的终点 char flight8; /flight 记录航班号 int num; /记录飞机号 Passenger *wait; Passenger *book; Time time; struct Air *next; AirPlane; 5 3.3. 详细设计和编码详细设计和编码 3.1.主菜单 进入主菜单,必须先录入航班信息,客户可以根据自己需要选择,选择自己想要的航 班,然后进行一系列自己选择的操作,具体菜单流程图如下所示 航空系统 录入信息查询信息订票退票 图 3-1 主菜单功能模块图 3.2.录入航空信息 录入航空信息包括终点站名、航班号、飞机号、飞行时间、乘员定额,根据用户的需 要选择航班,输出航班信息,如果可以再进行订票操作,录入航空信息的流程图如下 图 3-2 录入航空信息流程图 6 3.3 输出航空信息 客户可以根据自己的需要选择是按目的地查询还是按航班查询,如果按航班查询,必 须要知道航班号,如果按目的地查询,只需输入终点站,如果一个终点站有多个航班,客 户可以根据自己的需要选择一个航班进行操作,具体流程图如下。 图 3-3 按航班输出信息的流程图 7 图 3-4 按目的输出航空信息的流程图 3.4 订票 在客户订票前需要先查询航班是否存在,所以在订票的模块中会要求客户输入航班信 息,再调用航班查询的函数,查询是否存在这个航班,如果存在这个航班,则客户可以订 票,客户在订票的时候,如果所需票量超过剩余票数,则会提示客户是否需要排队候票, 如果不排队候票,则选择要么重新输入所需票量,要么退出订票。订票流程图如下 图 3-5 订票流程图 3.5 退票 客户在退票操作时,也是要先输入是否存在那个航班,如果存在,就查询这个航班是 否存在这个客户,如果不存在,就退票失败,如果存在,则可以退票,退票后,再查看是 否满足候票数,如果满足则把票补给候票人,如果不满足,就继续排队候补。退票流程图 如下 8 图 3-6 退票流程图 9 4.4. 实验结果实验结果 4.1 菜单函数的功能测试 系统运行后就会自动显示菜单 1.录入航班,2.查询航班,3.订票,4,退票,当用户 选择相应的代号就进入相应的功能模块 图 4-1 菜单函数的截图 4.2 录入函数的功能测试 进入当这个录入模块,用户需要先录入航班的信息,包括航班号,总的票数,目的地, 起飞时间,和飞机号,当录入一个航班信息,会提示是否继续录入 10 图 4-2 录入航空信息的截图 11 4.3 查询航班函数的功能测试 用户可以选择是按目的地查询信息或者是按航班查询信息,一个目的地可能有几个不 同的航班,但是一个航班只能到一个目的地 图 4-3 查询航班的截图 12 4.4 订票功能地测试 用户在订票时需要输入航班,然后再查询是否存在这个航班,如果存在,则可以订票, 否则不能订票,在订票的时候如果余票足够,则可以成功订票,否则提示用户是否需要排 队候补 如图 4-4,订票成功可以将客户信息输出,图 4-5,是余票不足,提示用户是否需要排 队候补,图 4-6,客户选择候补,则会将客户信息输出 图 4-4 订票成功的截图 13 图 4-5 余票不足的截图 图 4-6 候补成功的截图 14 4.5 退票函数的功能测试 用户在退票的时候需要输入航班,查找这个航班是否存在,如果存在,再查看退票信 息是否正确,输出客户信息,退票后查询这个航班的剩余票数是否变化,是否足够候补人 所需要的票数 图 4-7 是查询这个航班的客户信息,图 4-8 是找到要退票的客户且输出客 户信息,图 4-9 退票后查询这个航班,是否退票成功 图 4-7 查询客户的截图 15 图 4-8 找到要退票的客户的信息 图 4-9 查询是否退票成功的截图 16 5.5.体会体会 这次课程设计我用链表设计的,我之前的想法是用一个结构体存储航班信息,再用一 个结构体存储已经订票的客户信息,再用一个结构体存储候补的客户信息,然后在已经订 票的客户信息中定义一个指针存储已经订票的客户的航班,在候补的客户中定义一个指针 存储已经排队候补的客户的航班,用这个指针和航班信息联系起来,再进行操作,可是在 退票中链表就出现问题了,只要有人候补,那么已经订票的客户信息就输不出来,好不容 易把候补搞好了,可是订票模块就出现问题了,总的来说是结构的问题,所以我就重新写 了,用了十字链表的思想,不过在退票后,把退票给候补的客户有问题,就没有写这个了。 这次课程设计写完后,我发现我对于指针是越来越糊涂了,原来在写作业的时候还有点清 楚指针的指向,现在时越来越不清楚了。所以在存储空间上总是出现问题,叫同学帮我改 了指针的指向,才会好的,所以这次放假一定要把指针弄清楚,然后进一步完善这个程序。 17 致谢致谢 感谢 XX 老师的耐心指导,感谢 XXX 老师的悉心教导,感谢 XXX 同学的帮助。感谢在课 程设计中对我帮助过得同学,谢谢你们对我的帮助,让我感受到到同学的友谊和老师对我 的关爱 18 参考文献 1严蔚敏,吴伟民.数据结构(C 语言版).北京:清华大学出版社,1997. 2刘大有,唐海鹰,等.数据结构.北京:高等教育出版社,2001. 3黄扬铭.数据结构.北京:科学出版社,2001. 4黄刘生.数据结构.北京:科学经济出版社,2000. 19 附录:源程序清单 #include #include #include #include #include #include struct Time /定义飞机的起飞时间 char year8,month8,day8,hour8,minute8,second8; ; void InputDate(Time void PrintDate(const Time time) /输出飞机的起飞时间 coutname,s-name); void PrintPassenger(const Passenger *p) coutnamebnums-name; couts-bnum; void DisplayWait(Passenger *passenger) /输出要候补的乘客的信息 Passenger *q=passenger-next; if(!q) return; while(q) coutnamebnumnext; 22 int InputPassenger(Passenger * Passenger *q=new Passenger; Passenger *s=flight-wait; Passenger *w; int chioce; coutq-name; coutq-bnum; if(q-bnumflight-ticket) coutticketticket) coutchioce; if(chioce=1) w=new Passenger; q-next=p-next; 23 p-next=q; PassengerCpy(w,q); w-next=s-next; s-next=w; w-bnum=q-bnum-flight-ticket; q-bnum=flight-ticket; flight-ticket=0; else if(chioce=2) q-next=p-next; p-next=q; q-bnum=flight-ticket; flight-ticket=0; else return NULL; else q-next=s-next; s-next=q; 24 else q-next=p-next; p-next=q; flight-ticket-=q-bnum; void DisplayClient(Passenger *p) /输出已经订票的乘客信息 Passenger *q=p-next; if(!q) return; while(q) coutnamebnumnext; void CreatFlight(AirPlane * s-next=NULL; 25 flight=s; Passenger *p=new Passenger; p-next=NULL; flight-book=p; Passenger *w=new Passenger; w-next=NULL; flight-wait=w; AirPlane* Displayflight(AirPlane *flight,char f) /按航线输出航 班 AirPlane *p=flight-next; int flag=0; while(p) if(strcmp(p-flight,f)=0) system(“cls“); coutnumdes flightticket; PrintDate(p-time); 26 coutbook); coutwait); return p; p=p-next; return NULL; void Displaydes(AirPlane *flight,char d) /按目的地输出航班 AirPlane *p=new AirPlane; p=flight; int flag=0; while(p) if(strcmp(p-des,d)=0) flag=1; coutnumdes 27 flightticket; PrintDate(p-time); coutnext; if(flag=0) coutnext=NULL; w-next=NULL; p-book=b; p-wait=w; 28 system(“cls“); coutp-flight; coutp-ticket; coutp-des; InputDate(p-time); coutp-num; coutch; system(“pause“); p-next=s-next; s-next=p; while(ch=y|ch=Y); void Display(AirPlane *flight) /输出航线 int n; coutn; 29 if(n=1) char d20; coutd; Displaydes(flight,d); else if(n=2) coutf; Displayflight(flight,f); else coutnull“); void Book(AirPlane * char line20; coutline; 30 system(“cls“); f=Displayflight(flight,line); /查找乘客要订的航班是否存在 if(f) InputPassenger(f-book,f); Displayflight(flight,line); else coutline; f=Dis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抚州市中石化2025秋招面试半结构化模拟题及答案油田工程技术岗
- 国家能源济源市2025秋招半结构化面试模拟30问及答案
- 中国广电漯河市2025秋招行业常识50题速记
- 中国联通贵港市2025秋招综合管理类专业追问清单及参考回答
- 中国联通山东地区2025秋招面试无领导高频议题20例
- 2025年职高冲刺考试题及答案
- 七台河市中石化2025秋招笔试行测50题速记
- 四平市中石化2025秋招笔试模拟题含答案新材料与新能源岗
- 信阳市中石油2025秋招面试半结构化模拟题及答案新材料与新能源岗
- 中国移动白银市2025秋招面试无领导高频议题20例
- 2025年软件架构师专业技术考核试题及答案解析
- 八上语文第9课《天上有颗南仁东星》课件
- 2024年BRCGS包装材料全球标准第7版全套管理手册及程序文件(可编辑)
- 公考公共基础知识培训课件
- 2025年人保非车险考试题及答案
- 铁路工程试验检测员培训考试题土工试题及答案
- 2025年上海银行笔试题库及答案
- 学堂在线 公共管理学 章节测试答案
- 预防艾滋病、梅毒和乙肝母婴传播登记及随访表
- 医院“十五五”发展规划(2026-2030)
- 教育信息化中的数字孪生技术应用案例分析
评论
0/150
提交评论