ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:254.84KB ,
资源ID:3820959      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3820959.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航空售票系统设计报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

航空售票系统设计报告.docx

1、航空售票系统设计报告算法与数据结构课程设计报告设计题目:航空客运订票系统专 业 计科院 网络工程 班 级 11102 学 生 学 号 指导教师 2013年 第 二 学期 一、 设计目的.2二、 需求分析.2三、 概要分析.2四、 源程序清单.3五、 详细设计和源代码.3六、 算法分析.6七、 调试分析11八、 用测试数据去验证算法及程序的正确性.11九、 课程设计总结.14十、指导老师意见.15一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。2、提高程序设计和调试能力。学生通

2、过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二、需求分析1、系统名称:航空客运订票系统 航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、 飞行日期(星

3、期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。(2)作为模拟系统,全部数据可以只存放在内存中。(3)通过此系统可以实现如下功能:录入功能:可以录入航班情况查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。也可以根据航班号,查询飞机某个航线的情况。订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。退票功能:根据客户提供的情况(姓名、日期、航

4、班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。三、概要分析1、分析问题,给出数学模型,设计相应的数据结构。 (1)己订票的客户名单可以用线性表来实现。为查找方便,线性表应按照客户姓名有序,并且为了插入和删除的方便,应以链表作为存储结构。(2)等候替补的客户名单也有可能出现退票的情况,故用链表来实现。(3)需将输入的航班情况登录到一张线性表上(用顺序存储结构或链表存储结构)。为了查询的方便,可以将航班情况按照航班有序或按照终点站名有序建立线性表。每条航线是这张线性表的一个记录,包含上述8个域,其中已订票的客户名单域是指向己订票的客户名单

5、链表的头指针,等候替补的客户名单域是指向队头和队尾的指针。2、算法设计在已经选择好数据结构的前提下,为解决问题设计算法。(1)确定所需模块对于稍复杂的程序设计,要充分利用模块化程序设计方法,自顶向下,逐步细化,在整体思路确定的情况下,考虑所需模块数,各模块完成功能以及模块之间的数据联系和调用关系。(2)各子模块功能描述给出主要模块的算法描述,用流程图或伪代码表示。(3)模块之间的调用关系给出算法各模块之间的关系图示3、源程序清单为了提高工作效率,充分利用上机调试程序的时间,要求学生在上机之前给出源程序清单。4、用测试数据去验证算法及程序的正确性5、算法分析经过上机调试,源程序运行正确,并且实现

6、算法要求的功能,解决课程设计题目中给出的问题后,分析算法的时间复杂度和空间复杂度。四、源程序清单: int main (); /主菜单int Entering (); /录入航线int Search (); /查询信息int Reserve (); /订票int Refund (); /退票五、详细设计和源代码定义:typedef struct Yidingkehu/单链表 char name15;/已订票的客户姓名 int dingpiaoshu;/已订票数量 struct Yidingkehu *next1;/Yidingkehu,*Link;typedef struct Weidingk

7、ehu/单链队 char name15;/预订票的客户姓名 int yudingpiao;/ 要订票数量 struct Weidingkehu *next2;/下一个链队结点指针Weidingkehu,*Qptr;typedef struct yuding Qptr front;/单链队头结点 Qptr rear;/单链队尾结点linkQueue; typedef struct Hangxian/创建一个含有六个信息的结构体 char hangbanhao15;/航班号- char feijihao15;/飞机号 int feixingriqi;/起飞时间 int chenkerenshu;/

8、座位数 int yupiao;/余票 char zhongdianzhai15;/降落城市 struct Hangxian *next;/指向下一个链结点的指针 struct Yidingkehu *yiding;/定义一个指向已订票客户的头结点指针 struct Weidingkehu *yudingqueue; /或struct yuding yudingqueue;Hangxian,*Linklist; 1.main六、算法设计模块图:2. Entering3. Search4. Reserve5. Refund模块说明:(1) 显示主菜单并根据输入调用相应函数。(2) 将航班信息存入程

9、序。(3) 根据航班号或终点站查询信息,浏览所有航班信息。(4) 输入姓名、订票数订票,若余票不足提示是否预订。(5) 显示退票主菜单并根据输入调用相应函数。选择退订票或预订票,输入姓名、退票数退票。若退订票,退票成功后然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。模块算法描述(伪代码):主要函数int Entering(Hangxian &first) /录入航线 Hangxian *last; last=first.next; Hangxian *p=(Hangxian *)malloc(sizeof(Hangxian); coutp-hangbanhao;

10、 coutp-feijihao; coutp-feixingriqi; coutp-chenkerenshu; coutp-zhongdianzhai; p-yupiao=p-chenkerenshu; p-next=NULL; p-yiding=NULL; p-yudingqueue=NULL; if(last=NULL) first.next=p; else while(last-next!=NULL) last=last-next; last-next=p; return 0;int Search(Hangxian &first) /查询航线 Hangxian *s; s=first.n

11、ext; char a10; int n; int i=1; do cout*n;cout* 1:终点站查询 2:航班号查询 3:退出 *n; coutn; switch(n) case 1: couta; while(s!=NULL) if(strcmp(s-zhongdianzhai,a)=0) cout到达该终点站航班信息:n; cout航班号:hangbanhao ; cout飞机号:feijihao ; cout起飞时间:feixingriqi ; cout终点站:zhongdianzhai ; cout余票量:yupiaonext; if(i=1) cout到达该终点站的航班不存在

12、,请重新输入n; return 0; break; case 2: couta; while(s!=NULL) if(strcmp(s-hangbanhao,a)=0) cout该航班号信息:n; cout航班号:hangbanhao ; cout飞机号:feijihao ; cout起飞时间:feixingriqi ; cout终点站:zhongdianzhai ; cout余票量:yupiaonext; if(i=1) cout该航班不存在,请重新输入n; return 0; case 3: break; default: cout错误,请重新输入n; while(n!=3); retur

13、n 0;int Reserve(Hangxian &first) /订票 Hangxian *s; s=first.next; char a10; int i=1; int num; couta; while(s!=NULL) if(strcmp(s-zhongdianzhai,a)=0) cout航班号:; couthangbanhao ; cout飞机号:; coutfeijihao ; cout起飞时间:; coutfeixingriqi ; cout余票量:; coutyupiaonext; if(i=1) cout您选择的航班不存在,请重新操作n; return 0; couta;

14、coutnum; s=first.next; while(s!=NULL) if(strcmp(s-hangbanhao,a)=0) break; if(s-yupiao=num) Yidingkehu *p=(Yidingkehu *)malloc(sizeof(Yidingkehu); Yidingkehu *q; q=s-yiding; coutp-name; p-next1=NULL; p-dingpiaoshu=num; if(q=NULL) s-yiding=p; while(q!=NULL) if(strcmp(q-name,p-name)=0) coutnext1; q=p;

15、s-yupiao-=num; q-dingpiaoshu=num; cout订票成功!n; return 0; else char n; coutn; if(n=e) Weidingkehu *p=(Weidingkehu *)malloc(sizeof(Weidingkehu); Weidingkehu *q; q=s-yudingqueue; coutp-name; p-next2=NULL; p-yudingpiao=num; if(q=NULL) s-yudingqueue=p; while(q!=NULL) if(strcmp(q-name,p-name)=0) coutnext2;

16、 q=p; q-yudingpiao=num; cout预定票成功!n; return 0; int YDRefund(Hangxian &first) /退已订的票 Hangxian *s; Yidingkehu *p=(Yidingkehu *)malloc(sizeof(Yidingkehu); char name10,hangbanhao10; couthangbanhao; coutname; s=first.next; while(s!=NULL) if(strcmp(s-hangbanhao,hangbanhao)=0) break; s=s-next; if(s=NULL) c

17、outyiding; if(p=NULL) coutnext1=NULL) if(strcmp(p-name,name)=0) s-yupiao+=s-yiding-dingpiaoshu; free(s-yiding); s-yiding=NULL; cout退票成功n; else coutnext1!=NULL) if(strcmp(p-next1-name,name)=0) break; p=p-next1; p=p-next1; if(p!=NULL) s-yupiao+=p-dingpiaoshu; free(p); p=p-next1; cout退票成功n; else coutyu

18、dingqueue!=NULL) /查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续 yuding q; q.front=q.rear=(Weidingkehu *)malloc(sizeof(Weidingkehu); q.front=s-yudingqueue; Yidingkehu *m; while(s-yupiao=q.front-yudingpiao) /查询余票量是否满足客户订票数量 if(s-yiding=NULL) Yidingkehu *n=(Yidingkehu *)malloc(sizeof(Yidingkehu); n-dingpiaoshu=

19、q.front-yudingpiao; strcpy(n-name,q.front-name); n-next1=NULL; s-yiding=n; s-yupiao-=n-dingpiaoshu; cout该乘客name预定的机票已到,dingpiaoshuyiding; while(m-next1!=NULL) m=m-next1; Yidingkehu *n=(Yidingkehu *)malloc(sizeof(Yidingkehu); n-dingpiaoshu=q.front-yudingpiao; strcpy(n-name,q.front-name); n-next1=NULL

20、; m-next1=n; s-yupiao-=n-dingpiaoshu; cout该乘客name预定的机票已到,dingpiaoshunext2; s-yudingqueue=q.front; if(q.front=NULL) break; return 0;int WDRefund(Hangxian &first) /退预订票 Hangxian *s; Weidingkehu *p=(Weidingkehu *)malloc(sizeof(Weidingkehu); char name10,hangbanhao10; couthangbanhao; coutname; s=first.ne

21、xt; while(s!=NULL) if(strcmp(s-hangbanhao,hangbanhao)=0) break; s=s-next; if(s=NULL) coutyudingqueue; if(p=NULL) coutnext2=NULL) if(strcmp(p-name,name)=0) free(s-yudingqueue); s-yudingqueue=NULL; cout退预订票成功!n; return 0; else coutnext2!=NULL) if(strcmp(p-next2-name,name)=0) break; p=p-next2; if(p-next2=NULL) coutnext2); p-next2=p-next2-next2; return 0;int Refund(Hangxian &first) /退票界面 int n; do cout*n;cout* 1:退订票 2:退预定票 3.退出 *n;coutn; switch(n) case 1: YDRefund(first); break; case 2: WDRefund(first); break; case 3: break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1