数据结构课程设计飞机订票系统
数据结构课程(航空订票系统)设计报告
航空客运订票系统1、需求分析航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
【基本要求】(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以只放在内存中;(3)系统能实现的操作和功能如下:a、查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;b、承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户班里订票手续,输出作为好;若已满或者余票少于订票额,则需要重新询问客户要求。
若需要,可等级排队侯补;c、承办退票业务:根据客户提供的情况(航班),为客户办理退票手续,然后查询该航班是否有人排队侯补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队侯补的客户。
(4)开始已初始化3条航线(如下),可按操作提示选择“显示所有航线”查看,客户信息与新航线信息可根据测试需要自行添加,具体情况请见下面测试结果。
【选做内容】a、输出所有航线信息;b、管理员系统:通过密码认证后可查看所有航班的订票情况,可根据需要增加新的航线。
2、概要设计由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。
1、定义“航线”类型ADT Lairline{数据对象:D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3……,n }基本操作:Lairline search_line() //按航班号查找航班Lairline search_plant() //按飞机号查找航班Lairline search_day() //按飞行日期查找航班Lairline search_addr() //按航班终点查找航班void more() //设计者信息void guide() //主菜单界面void insert_line() //插入新航班void print_customer(airline *p) //显示航班客户信息void admin() //进入管理员操作系统void book() //订票系统void waited(airline *p) //排队订票系统void refund() //退票系统void search() //航班查询系统void InitLine() //初始化航线信息void printline() //显示所有航班信息} ADT Lairline2、主程序void main(){初始化;do{接受命令;处理命令(调用相应函数);}while(“命令”!=“退出”);}3、调用关系3、详细设计1、航线,客户的存储结构typedef struct customer{ //客户信息char name[20]; //客户姓名int num; //订票量int level; //舱位等级customer *next;}customer,*Lcustomer;typedef struct airline{ //航线信息char end_addr[20]; //航线终点char line_num[5]; //航班号char plant_num[8]; //飞机号int day; //飞行日期int total; //定员int left; //剩余票数customer *booked; //已定客户信息customer *wait; //排队等候订票信息airline *next;}airline,*Lairline;2、链表的各种操作Lairline search_line() //按航班号查找航班Lairline search_plant() //按飞机号查找航班Lairline search_day() //按飞行日期查找航班Lairline search_addr() //按航班终点查找航班void more() //设计者信息void guide() //主菜单界面void insert_line() //插入新航班void print_customer(airline *p) //显示航班客户信息void admin() //进入管理员操作系统void book() //订票系统void waited(airline *p) //排队订票系统void refund() //退票系统void search() //航班查询系统void InitLine() //初始化航线信息void printline() //显示所有航班信息部分操作的算法或伪代码Lairline search_line() //按航班号查找航班{char a[5];airline *p;p=L->next;PR("请输入航班号");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->line_num)) break;return p;}void insert_line() //插入新航班{airline *p,*q;int flag=1;for(;flag;){q=(Lairline)malloc(sizeof(airline));PR("请输入航班号:");SC("%s",q->line_num);for(p=L;p->next;p=p->next)//判断航线插入位置if(strcmp(p->next->line_num,q->line_num)>=0)break;if(p->next&&strcmp(p->next->line_num,q->line_num)==0)//航线存在的情况{PR("航班已存在,请重新输入\n");continue;}按照提示输入新航线信息;PR("增加航班成功,是否继续增加\n继续(1)\n返回(0)");SC("%d",&flag);}}void admin() //进入管理员操作系统void admin() //进入管理员操作系统{int i,flag,tag;char a[20];airline *p;设置身份验证,只有密码正确才能进入,否则返回主程序;for(tag=1;tag;){PR("请选择操作\n查询航班订票情况(1)\n增加新航班(2)\n");SC("%d",&flag);if(flag==1){航线存在则显示航线客户信息,否则显示航线不存在;}else if(flag==2)insert_line();//增加新航线elsePR("操作错误,请按提示操作\n");PR("请选择操作\n继续(1)\n退回主菜单(0)\n");SC("%d",&tag);}guide();}void book() //订票系统{int i;int flag=0;airline *p;customer *cst,*c;PR("请输入查询航班的方式:\n");选择航线查找方式查找航线;if(p){航线存在,输入订票信息(包括客户姓名,订票量,票等级);if(cst->num<=p->left){票数满足,将客户信息添加到已定票客户名单;}else{余票不足,询问客户是否进行排队等候,若是,则将客户名单添加到排队订票名单;}}elsePR("没有该航班\n");guide();}void waited(airline *p) //排队订票系统{int flag;customer *q,*q0,*h;if(!p->wait) return;q=(customer *)malloc(sizeof(customer));q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;){if(q->next->num<p->left){PR("%s,您正在排队定%d张票,现有票,是否定\n是(1)\n否(0)\n",q->next->name,q->next->num);SC("%d",&flag);if(flag){q0=q->next;q->next=q->next->next;q0->next=p->booked;p->booked=q0;p->left=p->left-q0->num;PR("排队订票成功\n\n");}}elseq=q->next;}p->wait=h->next;}void refund() //退票系统{int flag;char a[20];airline *p;customer *c,*c1;根据客户提供信息先找到航班(search_line())查找客户信息所在结点,若没有则返回主程序,若找到则删除节点,并询问排队客户是否订票(waited(p));}void search() //航班查询系统{int i;int flag=0;airline *p;PR("请输入查询航班的方式:\n");PR("航班号---->1\n");PR("飞机号---->2\n");PR("飞行日期-->3\n");PR("航班终点-->4\n");SC("%d",&i);for(;!flag;)switch(i){case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=search_addr();flag-=1;break;default:PR("操作错误,请重新输入\n");break;}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p-> plant_num,p->day,p->left);PR("是否订票(确定请按1)");SC("%d",&i);if(i==1)book();}elsePR("没有该航班\n");}void InitLine() //初始化航线信息{初始化航线,先建立3条航线方便测试;}3、主程序void main() //主函数{int flag=1;more();guide(); //操作指引界面InitLine(); //初始化航班信息do{switch(getchar()){case '1':printline();break;//显示所有航班case '2':search();break; //查找航班case '3':book();break; //订票case '4':refund();break; //退票case '5':admin();break; //管理员系统case '6':more();break; //设计者信息case '9':system("cls");guide();break;case '0':flag=0;break;}}while(flag);}4、函数调用关系4、调试分析1、在编程过程中,起先使用的是局部变量,每次调用函数都需要进行参数的传递,很麻烦,而且还容易出现错误;后意识到航线的链表只有一条,很多函数都需要对其数据进行修改,故航线信息采用了全局变量,方便数据的修改,减少了参数的传递。
C++数据结构课程设计订票系统
XXXXXXXXXX项目名称:航空信息管理系统学生姓名:XXXXXX 学号:XXXXXXXXX 班级:XXXXXX 指导教师:XXX目录1.系统需求分析 (1)2.数据结构设计及用法说明 (2)3.详细设计和编码 (3)3.1订票模块 (3)3.2退票模块 (6)3.3录入模块 (7)3.4查询模块 (8)4.实验结果 (9)4.1主菜单界面 (9)4.2查询功能模块 (9)4.3订票功能模块 (10)4.4退票功能模块 (10)4.5录入航班信息模块 (10)5.体会 (11)参考文献 (12)附录:源程序清单 (13)1.系统需求分析本次课程设计要求使用C语言编写一个航空客运订票系统程序,根据所有内容都可以只在内存中运行可得知该模拟的航空客运订票系统不需要用文件保存相关输入,运行过程中的数据。
同时该航空客运订票系统要求模拟实际航空订票系统,具有查询航线,客票预订,办理退票,录入航班信息等基本功能。
查询航线功能根据实际分析应该具有通过用户输入的要查询终点站名输出该终点站的终点站,航班号,飞机号,飞行日期,剩余票量的功能。
订票功能应当设计能够根据用户输入的姓名和终点站,查询该终点站的余票并提示剩余票数,之后让用户输入需要订购的票数并执行相关操作。
退票功能可设计成要求用户输入姓名和航班号来查找该用户的的订票信息并打印,再询问是否退票。
录入功能是必要的,用来录入航班节点信息。
2.数据结构设计及用法说明根据该航空信息管理系统的功能要求,应当设计菜单模块,查询模块,订票模块,退票模块,录入信息模块等几个基本模块,main函数里调用菜单模块打印选项菜单,然后用switch case 接收用户选择,并依此跳转到相应模块执行。
同时,为达到能够执行一个模块后继续返回主菜单执行而不是直接退出的目的设计将菜单模块及相应子功能模块放入for死循环里,当输入5则直接退出程序。
按该系统的功能分析得出存放在系统中各项数据不需要使用排序功能,因而使用链表保存数据比用顺序表和数组要便捷并且占用内存少,所以定义linklist类型,内部有data,next 指针2个数据。
数据结构课程设计航空订票系统
目录总体设计 (2)概要设计 (2)详细设计 (3)调试分析 (7)测试数据及截图 (7)时间复杂度分析 (11)问题思考 (11)算法的改进设想 (11)课设总结体会 (11)附录 (13)程序说明 (13)源代码 (13)主要参考文献 (26)总体设计通过此系统可以实现如下功能:1).录入:可以录入航班情况(数据存储在一个数据文件中)2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3).订票:(订票情况存在一个数据文件中)可以订票,如果该航班已经无票,可以提供相关可选择航班;4).退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5).修改航班信息:当航班信息改变可以修改航班数据文件概要设计每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链头插入一个“航班信息”的新结点。
(2)浏览模块:顺着单链表输出航班信息。
(3)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。
提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线,0对已有的航班信息进行改动(修改和删除)。
对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操作。
(4)查询模块:提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达城市查询。
顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是否要订票,若订进入订票模块;否则,查询不成功。
(5)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。
数据结构课程教学设计-飞机订票系统设计与实现(里面附有源代码)
2.2.3 客户退票模块
void cancel(passengerList *&PList,flightnode *&h)函数调用intdelete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。
int isFull; //航班是否满仓
struct flightnode *next;//指向下一个结点
}flightnode;//航班结点
(2)客户的资料:为了便于插入、删除和修改,其采用项:
姓名
证件号
航班号
订票数量
订单号
void find_same_flight(flightnode *l,char *flight_num):在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。
void cancel(passengerList *&PList,flightnode *&h):完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。
(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;
数据结构课程设计之飞机订票系统
数据结构课程设计之飞机订票系统青岛理工大学数据结构课程设计报告题目: 飞机订票系统院(系):学生姓名: 班级: 学号:起迄日期: 指导教师:指导教师评语: 成绩:签名:年月日2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。
2.基本功能1,录入航班信息。
没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。
数据由使用者输入。
数据存储在txt文件中,采用线性表的链式结构。
2,加载航班和客户信息。
可以自动加载保存在txt文件中的航班和客户的信息。
3,查询航班。
可以通过输入航班号,查询该航班的所有信息。
可以通过输入起飞抵达的城市,查询航班的信息。
4,订票。
客户的信息包括:姓名,证件号,所订票的航班号,座号。
用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。
如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。
5,退票。
删除退票用户的订票信息,相应的航班的剩余票数增加1。
6,修改航班信息。
用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。
7,保存操作。
把当前的航班信息,和用户信息分别保存在txt文件中。
8,输出所有客户信息。
按一定的格式输出用户的姓名,证件号码,航班号,座号。
9,输出所有航班信息。
按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。
0,退出系统。
3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。
系统会根据用户的输入输出相应的航班信息或者用户信息。
二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。
然后根据要完成的功能,分模块用函数实现。
所用到的算法主要有:链表的创建,增加,遍历,插入,删除。
数据结构课程设计 飞机订票系统
飞机订票系统1. 需求分析描述要求编程解决的问题。
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(a) 输入的形式和输入值的范围;(b) 输出的形式;(c) 程序所能达到的功能;(d) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2. 概要设计给出程序要达到的具体的要求。
描述解决相应问题算法的设计思想。
描述所设计程序的各个模块(即函数)功能。
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3. 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。
设计出良好的输入输出界面(清晰易懂)。
4. 调试分析内容包括:(a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;(c)经验和体会等。
5. 用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。
6. 测试结果设计测试数据,或具体给出测试数据。
要求测试数据能全面地测试所设计程序的功能。
列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
7. 测试情况:给出程序的测试情况,并分析运行结果附录(非必须,按照需要添加)带注释的源程序。
可以只列出程序文件名的清单。
需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
数据结构课程设计飞机订票系统
课程设计(论文)课程设计(论文)题目:飞机订票系统院(系):专业班级:姓名:学号:指导教师:2012年9 月18日课程设计(论文)任务书专业班级:学生姓名:指导教师(签名):一、课程设计(论文)题目飞机订票系统:设计航班信息,订票信息。
二、本次课程设计(论文)应达到的目的数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
本题目要达到目的:熟练掌握线性表的基本操作在两种存储结构上的实现。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)输入数据:航班号;起降时间;抵达城市;票价;票价折扣;1. 录入航班情况(数据结构、具体数据自定);2. 输入航班号,查询某个航线的情况;3. 输入起飞抵达城市,查询飞机航班情况;4. 客户姓名,证件号,订票数量,航班情况,订单编号(证件号唯一);5. 订票:如果该航班已经无票,可以提供相关可选择航班(结构自己设定);6. 退票:退票后修改相关数据文件;7. 修改航班信息:当航班信息改变可以修改航班数据文件。
四、应收集的资料及主要参考文献:1.数据结构与算法分析(C++版)(第二版)影印版 2005.72.数据结构与算法,科学出版社,2005.08;赵文静等编著3.数据结构-C++语言描述,西安交通大学出版社,1999.01,赵文静编著4.严蔚敏等著,《数据结构》,清华大学出版社,20035.冯博琴等编著,《软件技术基础》(修改版),西安交通大学出版社,1997五、审核批准意见教研室主任(签字)摘要随着全球经济和信息的发展,人们选择乘坐飞机外出的需求日益增加。
随着航空客运业务越来越发达,加上网络日益普及,所以良好的飞机场订票系统不仅方便人们订购飞机票,而且减缓了购票点的压力,具有一定的社会效益。
数据结构课程设计飞机订票系统
订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
主菜单0 1 2 3 4 5 6 7 8 9输入航班的信息列出航班的信息按航班号查询航班信息按城市来查询航班订票程序退票系统修改飞机航班的信息保存文件读取文件、下载文件退出详细设计3.源程序/******头文件(.h)***********/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*其它说明*/#include <string.h> /*字符串函数*/#include <conio.h> /*屏幕操作函数*/ #include <ctype.h> /*字符操作函数*/#define N 20#define Q 40 /*定义常数表示记录数*//*定义数据结构*//*乘客信息*/typedef struct{char number[10];/*编号*/char name[10]; /*姓名*/char id[20]; /*证件号*/int count; /*订票数*/char flightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedef struct{char planenumber[10];/*航班号*/char city1[20]; /*起飞城市*/char city2[20]; /*抵达城市*/char time1[20]; /*起飞时间*/char time2[20]; /*降落时间*/int room; /*舱位数*/char price[5]; /*票价*/char discount[5]; /*折扣*/GUEST guest[25];int sit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf(" Welcome to\n\n");printf(" Tickets Booking System\n\n");printf("********************MENU*********************\n\n");printf(" 0. Enter flight record\n");printf(" 1. List the flight information\n");printf(" 2. Search flightnumber\n");printf(" 3. Search city\n");printf(" 4. Book the ticket\n");printf(" 5. Quit the ticket\n");printf(" 6. Channge the flight information\n");printf(" 7. Save the file\n");printf(" 8. Load the file\n");printf(" 9. exit\n");printf("***********************************************\n");do{printf("\n Enter you choice(0~9):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/ }while(c<0||c>9); /*选择项不在0~9之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/ }/*输入函数*/int enter(FLY t[]){int i,k,n,m,w,j;char *s;clrscr(); /*清屏*/printf("input the flight's count(n<=40):");/*输入航线总数*/ scanf("%d",&n);while(n>40||n<0){clrscr();printf("input error!!!input again(0<n<=40):");/*输入航线总数*/scanf("%d",&n);}printf(" input the flight's information\n\n");/*提示信息*/printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++){scanf("%s",t[i].planenumber);/*输入姓名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起飞城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入降落城市*/gotoxy(36,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",&t[i].room);/*输入舱位数*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(73,6+i);scanf("%s",t[i].discount);/*输入折扣*/}printf("-----------------------------------------------------------------------------\n ");for(i=0;i<n;i++)t[i].sit=0;return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(FLY t[],int n){int i;clrscr();printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("************************end*******************\n");}/*按航班号查找记录*/void search1(FLY t[],int n){char s[20]; /*保存待查找航班名字符串*/int i;clrscr(); /*清屏*/printf("please input the flightname that you want to search:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*显示记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*按起降城市查找记录*/void search2(FLY t[],int n){char s1[20];char s2[20];int i;clrscr(); /*清屏*/printf("please input the start-city:");scanf("%s",s1); /*输入起飞城市名*/printf("please input the end-city:");scanf("%s",s2); /*输入降落城市名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].city1)==0)&&(strcmp(s2,t[i].city2)==0)) /*记录中的城市和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*订票*/void book(FLY t[],int n){char s[20],number1[10],name1[10],id1[20],flightname1[10];int i,j=0,m,k,count1;clrscr(); /*清屏*/printf("How many tickets do you want to book:");scanf("%d",&m);printf("number name ID book-count flightname\n"); /*提示信息*/printf("------------------------------------------------------------\n");for(k=0;k<m;k++){scanf("%s",number1);gotoxy(13,4+k);/*光标跳到地址栏*/scanf("%s",name1);/*输入订票客户姓名*/gotoxy(25,4+k);scanf("%s",id1);/*输入证件号*/gotoxy(43,4+k);scanf("%d",&count1);/*输入订票票数*/gotoxy(53,4+k);scanf("%s",flightname1);/*输入航班号*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(flightname1,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/{j=t[i].sit;strcpy(t[i].guest[j].number,number1);strcpy(t[i].guest[j].name,name1);strcpy(t[i].guest[j].id,id1);t[i].guest[j].count=count1;strcpy(t[i].guest[j].flightname,flightname1);t[i].room=t[i].room-count1;t[i].sit++;break; /*相等,则返回该记录的下标号,程序提前结结束*/}}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/{printf("Sorry!No this flight\n");m=m+2;k++;}}}/*退票*/void quit(FLY t[],int n){char s1[20],s2[20]; /*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;clrscr(); /*清屏*/printf("please input the flightname that you want to quit:");scanf("%s",s1); /*输入待查找航标名*/printf("please input the your id:");scanf("%s",s2); /*输入待查找证件号*/printf("number name ID book-count flightname\n"); /*显示提示*/printf("------------------------------------------------------------\n");for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{for(j=0;j<t[i].sit;j++)if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)= =0)){printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j ].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);t[i].room=t[i].room+t[i].guest[j].count;l=j;h=i;break;}}i=h;if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(k=l+1;k<t[i].sit;k++){strcpy(t[i].guest[k-1].number,t[i].guest[k].number); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[i].guest[k-1].name,t[i].guest[k].name);strcpy(t[i].guest[k-1].id,t[i].guest[k].id);t[i].guest[k-1].count=t[i].guest[k].count;strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname);}t[i].sit--;}printf("quit success!!\n");/*提示退票成功*/}}/*修改航班信息*/void channge(FLY t[],int n){char s[20]; /*要删除记录的姓名*/int i,j;clrscr(); /*清屏*/printf("please input the flightname that you want to channge:"); /*提示信息*/scanf("%s",s);/*输入航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示原先记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("please input the new information:\n");scanf("%s",t[i].planenumber);/*输入航班名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起始城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入终点城市*/gotoxy(35,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",t[i].room);/*输入座位号*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(71,6+i);scanf("%s",t[i].discount);/*输入折扣*/}}/*保存资料*/void save(FLY t[],int n){int i,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s %d %s %s",t[i] .planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i ].discount);fprintf(fp,"\r\n"); /*将换行符号写入文件*/fprintf(fp,"%d",t[i].sit); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(j=0;j<t[i].sit;j++){fprintf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gu est[j].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(FLY t[]){int i,n,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++){fscanf(fp,"%s %s %s %s %s %d %s %s",t[ i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,&t[i].room,t[i].pric e,t[i].discount);fscanf(fp,"%d",&t[i].sit); /*读入记录数*/for(j=0;j<t[i].sit;j++)fscanf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gues t[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest[j].flightname); /*按格式读入记录*/}fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n\n\n\n"); /*显示保存成功*/return n; /*返回记录数*/}/*主函数*/main(){ int i;FLY flight[Q];int length; /*保存记录长度*/clrscr(); /*清屏*/textcolor(YELLOW); /*字体颜色*/textbackground(BLUE);/*背景颜色*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=enter(flight);break;/*输入记录*/case 1:list(flight,length);break; /*显示全部记录*/ case 2:search1(flight,length);break; /*查找记录*/case 3:search2(flight,length);break; /*查找记录*/case 4:book(flight,length);break; /*订票*/case 5:quit(flight,length);break; /*退票*/case 6:channge(flight,length);break; /*修改航班信息*/ case 7:save(flight,length);break; /*保存文件*/case 8:length=load(flight); break; /*读文件*/case 9:exit(0); /*如返回值为9则程序结束*/}}}4.菜单窗口订票系统菜单窗口0.输入航班的信息1.列出航班的信息2.按航班号查询航班信息3.按城市来查询航班4.订票程序5.退票系统6.修改飞机航班的信息7.保存文件8.读取文件、下载文件。
数据结构课程设计航空订票系统
航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。
二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。
三、数据结构的设计://航线结构struct airline{char cityname[15]; //终点站char airnum[15]; //航班号char planenum[15]; //飞机号char qjtime[15]; //起降时间int price; //价格int disc; //折扣int num; //总座位数int rempla; //剩余位置(票数)linklist *order;linkqueue wait;}line;//定义链表队列typedef struct wait{char name[6];int ordnum;struct wait *next;} qnode,*qptr;//无票时其余等候买票队列typedef struct listqueue{qptr front; //对头qptr rear; //队尾}linkqueue;typedef struct order{char name[15]; //客户姓名char crenum[15]; //证件号char airnum[15]; //航班号char planenum[15]; //飞机号int ordnum; //订票数量int rempla; //剩余位置int num; //总座位数char qjtime[15]; //起降时间struct order *next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息truct order指针,等候买票的队列的结构体信息。
建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。
(完整版)数据结构课程设计-航空客运订票系统
嘉应学院计算机学院实验报告课程名称:数据结构课程设计开课学期:2017-2018学年第2学期班级:1503指导老师:***实验题目:航空客运订票系统学号:姓名:上机时间:1.需求分析(1)航空管理。
每条航班所涉及的信息有:终点站名、航班号、飞机型号、飞行周日(星期几)、乘员定额、余票量。
(2)客户管理。
有关订票的客户信息(包括姓名、订票量、航位等级(1,2和3))以及等候替补的客户名单(包括姓名、所需票量)。
(3)系统实现的主要操作和功能。
系统实现的主要操作和功能如下:①查询航班。
根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。
②承办订票业务。
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。
③承办退票业务。
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。
2.概要设计1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面2)存储结构设计本系统主要采用链表结构类型存储航班信息和订票的乘客信息。
航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。
3)系统功能设计本系统分为以下5个功能模块。
(1)航班管理。
航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。
(2)订票办理。
在添加了航班的基础上可办理订票业务。
乘客根据所需航班输入终点站名和订票量订票。
如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。
(3)退票办理。
已办理订票业务的乘客可根据所订票的航班和乘客姓名办理退票业务。
、(4)乘客管理。
可以查看已经订票的乘客信息和候补乘客的信息。
数据结构课程设计_飞机订票系统设计与实现 (里面附有源代码)
课程设计题目飞机订票系统院系 *******专业 ***************姓名 ******学号 *********指导教师 ***2012年7月1. 需求分析1.1 问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。
本课程设计的题目为:飞机订票系统。
1.2 基本要求1.2.1 输入的形式和输入值的围录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。
客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。
客户退票时,需要输入,证件号进行退票操作,值为字符串。
查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。
查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户和证件号,值为字符串。
修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。
1.2.2 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的容。
数据结构课程设计---航空订票系统
数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。
飞机订票系统(数据结构)
假设某机场共有M次航班,第i次航班有ni个座位,且每次航班到达一个目的机场。
设计一个满足该机场需要的用户订票、退票程序#include <stdio.h>#include <string.h>#include <conio.h>#include <fstream>struct air //定义结构体数组{int num;int seat;int count;air *next;};struct air s[3];void init(int); //初始化航班信息void read(); //读取航班信息void save(); //保存航班信息void print(); //输出航班信息void dingpiao(); //订票信息void tuipiao(); //退票信息void main(){init(3);save();int j;printf(" ★---您好,欢迎进入飞机订票系统!---★\n");printf("================================================================ ================\n");do{printf(" -------- ☆ 1.浏览航班信息☆-------- \n\n"" -------- ☆ 2.订票信息☆-------- \n\n"" -------- ☆ 3.退票信息☆-------- \n\n"" -------- ☆0.退出☆-------- \n\n");printf("================================================================ ================\n");printf("机场共有M=3次航班,第i次航班有(n=2)*i个座位,每次航班到达一个目的机场!!!\n");printf("================================================================ ================\n");printf("请在0-3中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:print(); //读取航班信息break;case 2: dingpiao(); //订票信息break;case 3:tuipiao(); //退票信息break;case 0:;break;}}while(j!=0); //判断结束printf("谢谢使用,再见!\n");}//主函数结束void init(int se) { //初始化模块int i;air *q=&s[0]; //指向头指针for(i=0;i<se;i++){q->num=i+1; //航线编号q->seat=2*(i+1); //第i次航班有ni个座位q->count=q->seat; //剩余座位q->next=&s[i+1]; //指向下一结点q=q->next; //头指针+1}q->next=NULL; //最后一个节点指针设为空}void save()//保存模块程序{int i;int m;FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}for(i=0;i<3;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错printf("向文件输入数据失败!\n\n");fprintf(fp1,"%d",&m);fclose(fp);//关闭文件fclose(fp1);//关闭文件}void read()//从文件读取信息模块{int m;int i;FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错{printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示getchar();if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}fscanf(fp1,"%d",&m);fclose(fp1);//关闭文件for(i=0;i<m;i++){fread(&s[i],sizeof(air),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}void print()//输出航班模块{int se;char w[10];read();//调用读取文件函数printf("航班号座位数剩余票\n");air *q=&s[0];for(se=1;se<4;se++){printf(" %d ",q->num);printf(" %d ",q->seat);printf(" %d ",q->count);printf("\n");q=q->next;}printf("请按任意键回车键结束返回上层菜单以:\n");scanf("%s",w);}void dingpiao()//订票模块int i;int n;char a[10];read();do{printf("请输入您要订的机票的航线编号(1、2、3):\n");scanf("%d",&i);if((i-1)<0||(i-1)>3){printf("请输入有效飞机编号!\n");//判断机票数是否出错}else{air *q=&s[i-1];printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);//读取所订机票数if(n<0){printf("请输入有效的机票数!\n");//判断机票数是否出错break;}if((q->count)!=0&&(q->count)>=n)//判断是否出错{q->count=q->count-n;save();//调用保存函数printf("订票成功!\n\n");break;}if(q->count<n)//判断是否出错{printf("票数不足:\n");break;}printf("是否继续?请输入yes或no以回车键结束:\n");//判断是否继续订票scanf("%s",a);}}while(!strcmp(a,"yes"));//判断结束}void tuipiao()//退票模块{int n;char a[10];int i;do{printf("请输入您要订的机票的航线编号(1、2、3):\n");scanf("%d",&i);if((i-1)<0||(i-1)>3){printf("请输入有效飞机编号!\n");break;}else{air *q=&s[i-1];printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数read();int k;k=2*i-(q->count);if(n<0||n>k) //判断票数是否有效{printf("请输入有效的机票数!\n");break;}else{q->count=q->count+n;save(); //调用保存模块printf("退票成功!\n\n");printf("是否继续?请键入yes或no以回车键结束:\n\n");//判断是否继续退票scanf("%s",a);}}}while(!strcmp(a,"yes"));//判断并跳出循环getchar();。
航空订票系统C++数据结构课程设计报告
一.需求分析:通过此系统可以实现如下功能:1.航班信息录入每个航班信息包括航班号、起飞时间、降落时间、起飞地点、将落地点、票价、折扣、剩余票量。
通过剩余票量可以确定该航班是否已满。
2.航班信息查询通过航班号或者起飞地点、降落地点查询所需要的航班信息。
3.订票输入姓名和所要订的航班的航班号订票。
4.退票输入姓名和所订的航班的航班号办理退票。
5.修改航班信息输入航班号修改该航班的起飞和降落时间以修改航班的起降时间。
6.退出退出的同时将信息写入文件。
二.总体设计:结构体:struct flight //航班信息{int a1; //航班号string a2; //起飞时间string a3; //降落时间char a4[10]; //起飞城市char a5[10]; //降落城市int a6; //价格int a7; //票价折扣int a8; //余票}fl[10];struct customer //客户信息{char name[10]; //定义字符型数组姓名name[10]int seat; //定义整型变量座位号seatint num; //定义整型变量航班号numchar no[18]; //证件号noint ps; //订票数psstring qfs; //起飞时间qfsstring jls; //降落时间jlschar qfd[10]; //起飞城市qfdchar jld[10]; //降落城市jldint pj; //票价pj}cu[200];使用的函数:void luru(); //声明录入函数void chaxun(); //声明查询函数void chaxun1(); //声明查询方式1函数 void chaxun2(); //声明按查询方式2函数 void dingpiao(); //声明订票函数 void tuipiao(); //声明退票函数 void xiugai(); //声明修改函数 void menu(); //声明主菜单函数 void duqu(); //声明文件读取函数 void tuichu(); //声明退出并保存函数通过各个函数的调用以实现航班信息录入,航班信息查询,订票,退票,修改航班信息。
数据结构航空订票系统课程设计报告
摘要飞机在现代的生活中扮演者非常重要的角色。
它能够快速的把人们送到自己想要去的地方,既快速,又方便。
所以现在坐飞机时很普遍的。
但是都到机场去买票浪费时间,因此,航空订票系统应运而生。
有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。
方便了大家关键词航空订票系统、查询、订票、退票目录摘要 (I)1 需求分析 (2)1.1 需求概述 (2)1.2 需求环境 (3)1.3 功能描述 (3)2 概要设计 (4)2.1 程序功能模块 (4)2.2 程序流程图 (4)2.3 课程设计的思想 (5)3 详细设计 (6)3.1 程序初始化 (6)3.1.1代码功能 (6)3.1.2 功能实现代码 (6)3.2 查询航班信息 (9)3.2.1代码功能 (9)3.2.3 功能实现代码 (11)3.3 订票模块 (12)3.3.1 代码功能 (12)3.3.2 功能实现代码 (12)4 测试与运行 (21)5结束语 (16)6 参考文献 (17)7附录 (18)1 需求分析1.1 需求概述航线管理。
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理。
有关订票的客房信息(包括XX、订票量、舱位等级(1,2和3)以及等替补的客房(包括XX、所需标量)。
系统实现主要操作操作和功能。
系统实现的主要操作规程和功能如下:①查询航线。
根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。
②承办订票业务。
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。
根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。
数据结构课程设计之飞机订票系统
青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。
2.基本功能1,录入航班信息。
没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。
数据由使用者输入。
数据存储在txt文件中,采用线性表的链式结构。
2,加载航班和客户信息。
可以自动加载保存在txt文件中的航班和客户的信息。
3,查询航班。
可以通过输入航班号,查询该航班的所有信息。
可以通过输入起飞抵达的城市,查询航班的信息。
4,订票。
客户的信息包括:姓名,证件号,所订票的航班号,座号。
用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。
如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。
5,退票。
删除退票用户的订票信息,相应的航班的剩余票数增加1。
6,修改航班信息。
用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。
7,保存操作。
把当前的航班信息,和用户信息分别保存在txt文件中。
8,输出所有客户信息。
按一定的格式输出用户的姓名,证件号码,航班号,座号。
9,输出所有航班信息。
按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。
0,退出系统。
3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。
系统会根据用户的输入输出相应的航班信息或者用户信息。
二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。
然后根据要完成的功能,分模块用函数实现。
所用到的算法主要有:链表的创建,增加,遍历,插入,删除。
2.数据结构设计:采用的逻辑结构是线性结构。
存储结构是链式结构。
数据结构课程设计 飞机航班订票系统
课程设计报告书课程设计名称:《数据结构课程设计》专业:题目:飞机航班订票系统班级:学号:姓名:指导老师:完成时间:2012-7-9问题描述一机场每天有n个航班,每个班次都有一班次号(1、2、3…n),固定的起飞时间,固定的路线(起始站、终点站),大致的飞行车时间,固定的额定载客量。
如班次起飞时间起点站终点站飞行时间额定载量已定票人数1 8:00 天津广汉2 145 1302 6:30 天津成都 0.5 140 1403 7:00 天津成都 0.5 140 1204 10:00 天津成都 0.5 140 120…试设计一个机票管理系统,对机场的售票情况进行管理。
基本要求功能要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的起飞时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询;(4)售票和退票功能A:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可预约登记排队等候;B:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队预约的客户。
(5) 修改航班信息:当航班信息改变可以修改航班数据文件实现提示每条航线应包括的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票额、已订票的客户名单(包括姓名、订票额、座位号)和预约登记的客户名单(包括姓名、所需票额)。
这最后两项显然是一个线性表和一个队列。
为查找方便、已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
数据结构课程设计 航空客运订票系统
《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期2017.04.13目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (4)4. 测试结果与分析 (6)5. 总结 (10)6. 参考文献 (10)附录程序源代码 (10)课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。
2. 系统设计2.1 设计目标(1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(2)可以浏览已订票客户信息;包括客户姓名、订票数额和舱位等级;(3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;(5)可以办理退票业务;提供航班号和客户姓名,即可退票;(6)可以查看剩余票数;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
2.2 设计思想(1)运行环境(软硬件环境):DEV-C++;(2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;(3)输出的形式描述:通过客户的输入,输出相应内容;(4)功能描述:用户可通过本系统实现对航班的查询、订票和退票功能。
2.3 系统模块划分2.3.1主函数输出菜单界面。
输入指令,显示,敲击回车开始工作。
2.3.2浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用void display()函数实现打印struct airline链表中存储的航线的基本信息的功能。
2.3.2浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find()函数查询并以指针形式返回。
数据结构课程设计c语言版《飞机订票系统》分解
软件工程专业14级《数据结构》课程设计报告设计题目:飞机订票系统班级:软件14 姓名:指导教师:2015年 11月20日目录一、设计任务与要求 (1)1.1 总体目标与任务要求 (1)1.2 题目选择与目的意义 (1)1.3 所选题目的主要工作 (1)二、需求分析 (2)2.1 用户需求分析 (2)2.2 功能需求分析 (2)2.3 系统需求分析 (2)三、概要设计 (3)3.1 各模块的算法设计说明 (3)3.2 存储结构设计说明 (8)四、详细设计 (10)五、源代码 (11)六、运行结果分析 (21)七、收获与体会 (28)八、主要参考资料 (28)一、设计任务与要求1.1 总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。
2)查询可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。
3)订票可以订票,如果该航班已经无票,可以提供相关可选择的航班(订票情况可以存在一个数据文件中,结构自己设定)。
4)退票可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息当航班信息改变可以修改航班数据文件。
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
1.2 题目选择与目的意义选择这个题目的原因是,订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。
与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率。
这个题目做出来的系统还是比较实用的,所以我选择了订票系统这个题目。
完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发。
通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要随着时代的进步社会分工的不断细化,各个行业联系的不断密切,人们出行越来越多,出行的方式也是百花齐放,作为空中重要的交通工具,飞机航空系统也在不断地得到优化,其中重要的一项就是航空飞机订票系统,因此好的订票系统关系着人们的日常出行方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而艰巨的任务。
本文Microsoft Visual C 6.0 作为程序代码的实现软件,进行飞机订票系统的数据结构课程设计。
首先,根据课程设计容进行需求分析,确定主要的功能模块,。
然后进行数据结构、各功能模块算法以及它们之间的调用关系的概要设计,做出各信息模块的数据结构表,并给出所用的结构体和结点类型。
在此基础上,进行各功能模块的详细算法设计,做出各算法的流程图。
最后,对系统进行测试,分为合法数据测试和非法数据测试,并对测试结果截图保存。
本系统包含录入航班信息、订票、退票、查询航班信息、查询订票信息、修改航班信息和退出系统 7 个基本功能,经测试后健壮性良好。
关键词飞机订票系统;数据结构;C 语言;单链表i目录1 问题背景 (1)2 问题分析 (1)3 需求分析 (2)3.1 用户需求分析 (2)3.2 功能需求分析 (2)3.3 系统需求分析 (3)4 逻辑设计 (3)4.1 数据结构 (3)4.2 各功能模块间函数调用关系 (5)4.3 函数说明 (5)5 详细设计 (7)5.1 录入航班信息 (7)5.2 顾客订票模块 (8)5.3 顾客退票模块 (8)5.4 查询航班模块 (9)5.5 查询订单模块 (9)5.6 修改航班模块 (9)6 程序调试与测试 (11)6.1 合法数据测试结果 (11)6.2 非法数据测试结果 (13)7 结果分析 (15)7.1 输入 (15)7.2 输出 (15)16 总结 .......................................................................参考文献 (16)ii1问题背景订票系统是一种新兴的现代商务方式,近几年来得到了迅速发展,显现了巨大的现代商业价值。
有理由相信,订票系统将逐渐方便盛会生活,也将成为数字化社会的一种重要体现。
它改变了传统的买卖双方面堆满的交流方式,也打破了旧有工作经营模式,它通过网络使航空公司面对整个世界,为用户提供每周 7 天,每天 24 小时的全天候服务。
网上订票的规模正在逐年迅速增长,它带来的商机是巨大而深远的。
订票系统研究的主攻方向是通过公共计算机通信网络进行网上订票活动,突破传统商务在时间、地域上的限制,成为方便、快捷、安全可靠的新兴电子化商务活动模式。
是网上订票活动更安全、可靠、快速、明确和方便。
对航空公司来说,航空订票管理系统既能扩大服务围,扩大公司影响,减少营业费用,又对稳固航空公司的客源有着重要的辅助作用;站在旅客的角度,航空公司提供的这种服务提供了更多的方便,节省了很多时间。
建设航空订票管理系统是体现和提高航空公司领导业绩的一条捷径。
2问题分析通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件13需求分析3.1 用户需求分析用户使用此程序所要完成的工作主要为:录入和查询所有航线信息、查看已订票客户信息、查询航线、办理订票业务、办理退票业务。
通过此系统可以方便的进行上述工作。
每条航线所涉及的信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量。
已订票的客户信息包括、订票量、舱位等级(1,2 或3)。
等候替补的客户信息包括、所需票量。
查询航线功能可以根据旅客提出的终点站名输出航班号、飞行时间、票价、乘员定额、余票量。
订票业务功能根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。
若需要,可登记排队候补购票。
退票业务功能根据客户提供的情况(航班号、)为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
3.2功能需求分析1.功能模块说明:(1)将航班的基本信息录入到系统中。
(2)根据航班号或者根据起飞地点、降落地点查询所需航班信息。
(3)输入和所要订航班的航班号订票。
(4)输入和所订航班的航班号办理退票。
(5)输入航班号,修改该航班的起飞和降落时间以修改航班的起降时间。
(6)退出的同时将信息写入文件。
2. 订票系统功能图2订票系统录办办查查航退入理理询询班出航订退航订信系班票票班单息统信业业信信修息务务息息改图 3.1 订票系统结构图3.3 系统需求分析开发环境:PC 机,Windows 7 系统运行软件:Microsoft Visual C 6.04逻辑设计4.1数据结构1航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班是否满仓和空座数九个数据项:表3.1 航班信息的数据结构表数据项数据类型航班号字符串(char)起飞时间字符串 (char)降落时间字符串 (char)起飞城市字符串 (char)抵达城市字符串 (char)航班是否满仓整型 (int)空座数整型 (int)票价浮点数 (float)票价折扣浮点数 (float)typedef struct passengernode{ //定义客户资料结点char name[20]; //char ID_num[20]; //证件号char flight_num[10]; //航班号int order_num; //订单号int ticket_num; //订票数量struct passengernode *next; //指向下一个结点}passengernode;3 客户链表:每个数据元素包括头指针和尾指针两个数据项:每个结点包括两个指针域:C 语言描述如下:typedef struct passengerList{passengernode *head;passengernode *rear;}passengerList;4.2各功能模板函数之间的调用关系。
4.3 函数说明void init_flight(flightnode *&h):要建立一个以 h 为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表。
void init_passengerList(passengerList *&pList):建立一个带有头指针和尾指针的空链表,存储带有顾客信息的结点。
头指针域尾指针域void save_flight(flightnode *h):保存航班信息到指定数据文件中。
void load_flight(flightnode *&h):从存储航班信息的文件导入航班信息到航班链表中。
void save_passenger(passengerList *PList):保存客户信息到指定数据文件中。
void load_passenger(passengerList *&PList):从存储客户信息的文件导入客户信息到客户链表中。
void add_flight(flightnode *&h):录入航班信息后调用 insert_flight 函数增加班。
void insert_flight(flightnode *&h,char* flight_num,char* start_place,char*end_place,char*start_time,char* end_time,int left,float price,float price_discount,int isFull):在录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中。
int book(flightnode *&l,passengerList *&PList):要完成客户订票,将客户结点插入客户链表中,并修改相应的航班信息。
void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num):在顾客订票后,将该顾客结点插入到顾客链表中,并修改相应的航班信息。
void find_same_flight(flightnode *l,char *flight_num):在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。
void cancel(passengerList *&PList,flightnode *&h):完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。
int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char*ID_num):按照要退票的顾客的和证件号查找该顾客结点,进行删除操作。
void flight_check(flightnode *h):选择使用何种方式对航班信息进行查询。
void check_all_flight(flightnode *l):浏览所有航班信息。
int place_check(flightnode *l,char *start_place,char *end_place):按照起飞抵达城市查询航班信息。
int flight_num_check(flightnode *l,char *flight_num):按照航班号查询航班信息。
void passenger_check(passengerList *PList):选择使用何种方式对订单信息进行查询。
void check_all_passenger(passengerList *PList):浏览所有订单信息。
int order_num_check(passengerList *PList,int order_num):按订单号查询订单信息。