飞机订票管理系统
计算机科学与技术教研室
(2013 /2014学年第二学期)
课程名称 课程
基础(二)
设计题目 飞机订票管理系统
学号 姓名
小组成员
起止时间: 2013年6月28 日 至2014年7月11 日
飞机订票管理该生平时表现良好,参与了课程设计的整个过程,而且完成了
系统的代码编写,运用了类、类的继承、构造函数等知识,并实现了录入、删除、
查询、修改及退出程序运行等基本功能。在此基础上还实现了订票,退票功能。课
程设计说明
填写正确,条理清楚,对于课程设计过程介绍详细,代码正确。作品课程设计
演示熟练,能按照设计要求完成指定的功能。答辩过程中,回答问题正确,熟练,评 语
对自己的程序描述清楚,条理性强。
演示与答辩
平时成绩
成绩
成绩
指导教师
成绩总评 年 月 日
(签字)
注:成绩均用百分制。总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%
设计题目: 飞机订票管理系统
1、课程设计目的:
(1)熟练掌握,C++语言程序的编写,调试及运行;
(2)熟练掌握C++程序的类的应用。
(3)熟练掌握类的继承、构造函数的应用。
(4)熟练掌握文件流的应用。
(5)能够独立调试程序;
(6)学生独立编程能力,运用所学知识解决问题的能力。
2、课程设计正文:
2.1系统
根据图书管理系统,进行分析,我认为该系统应该分为三大部分功能:
第一大部分功能,应该是针对乘客的应用程序;
第二大部分功能,应该是针对管理员的应用程序。
第三大部分,应该是退出该系统的应用程序。
乘客程序 2.1.1分析
第一大部分功能,还应分为两小部分功能:
第一小部分功能,应该是订票业务,根据客户提出的航班号,查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或者余票数少于订票额,则需重新询问客户要求,若需要,可登记排队候补。
第二小部分功能,应该是退票业务,根据客户提供的情况航班号、终点站等信息,为客户办理退票手续。
2.1.2分析管理员程序
然而,第二大部分功能,还应该分为八小部分:
第一小部分功能,应该是录入功能,可以录入航班信息,如:终点站名、航班号、飞机号、星期几飞行、乘员定额、余票量等重要信息。然后,把数据存储在一个数据文件中。
第二小部分功能,应该是添加功能,当录入完之后,还需可以添加一个航班信息,就运用此功能。
第三小部分功能,应该是显示功能,显示航班信息,如:终点站名、航班号、飞机号、星期几飞行、乘员定额、余票量、已订票的客户名单包括姓名、订票量、舱位等级,以及等候补替的客户
名单包括姓名、所需票量。
第四小部分功能,应该是查询功能,根据旅客提出的终点站名,查询出下列信息:航班号、飞机号、星期几起飞,最近航班的日期和余票量。
第五小部分功能,应该是修改功能,如果那条航班信息录入错误可以对其进行修改,把航班信息重新输入一遍。
第六小部分功能,应该是删除功能,如果那条航班信息录入错误可以对其进行删除,把航班的所有信息删除。
第七小部分功能,应该是订票功能,根据类的继承,继承乘客类的订票函数。根据客户提出的航班号,查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或者余票数少于订票额,则需重新询问客户要求,若需要,可登记排队候补。
第八小部分功能,应该是退票功能,根据类的继承,继承乘客类的退票函数,然后,在此基础上,添加上管理员查询该航班是否有人排队等候补,首先询问排在第一的客户,若剩余票能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
2.2系统设计
2.2.1编写要求
(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、星期几飞行、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级)以及等候补替的客户名单(包括姓名、所需票量);
(2)作为示意系统,全部数据可以只放在内存中;
(3)系统能实现的操作和功能如下:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);
查询航线:根据旅客提出的终点站名输入下列信息:航班号、飞机号、星期几起飞,最近航班的日期和余票量。
承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或者余票数少于订票额,则需重新询问客户要求,若需要,可登记排队候补;
承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队等候补,首先询问排在第一的客户,若所有退票额能满足他的要求,则为他办理订票手续否则依次询问其他排队候补的客户。
修改航班信息:当航班信息改变可以修改航班数据文件。
2.2.2程序流程
程序流程如图1所示。
订票业务
退票业务
录入航班
乘客 添加航班
开始 主菜单 退出 返回主菜单 显示航班
管理员 查询航班
修改航班
删除航班
订票业务
退票业务
图1 程序框图
2.2.3总体设计
飞机订票管理系统进行设计:首先,对飞机订票管理系统进行分类,把它分为两个类: 1.乘
客类 2.管理员类;管理员类继承乘客类,然后分别编辑这两个类,有了这几大部分,然后进行细
化。
2.2.4乘客类设计
根据分析的结果乘客类分为两个小部分功能:
(1)对其订票功能设计
首先,定义一个订票函数的函数,进行订票时,先进行查询,当余票为0时,询问乘客是否进
行候补排队,如果排队则录入候补人员的姓名、需求量,当余票不为零时,乘客订票输入自己的姓
名、需求量和舱位等级等信息。
(2)对其退票功能设计
如果乘客进行退票,退票成功,余票加1,则管理员询问候补人员是否订阅此票,这个订票流程和订票功能一样。
2.2.5管理员程序设计
根据分析的结果面对读者系统分为6个小部分功能:
(1)对录入功能进行设计
进行录入,先录入终点站名,当终点站录入为0时停止录入,录入的数据储存在“plane.txt”文件中。
(2)对添加功能进行设计
进行添加时,在原有的数据中,继续添加相应的数据,并把着这数据储存在“plane.txt”文件中。能够一同显示出来。
(3)对显示功能进行设计
调用“plane.txt”文件中的所有数据,把他们按照一定格式显示出来。
(4)对查询功能进行设计
输入要查询的终点站的名字,然后进行搜寻,把对应的所有相关的数据输出出来。
(5)对修改功能进行设计
据显示出来,然后,选择要修改的数据,然后重新输入,并替换它。 把所有的数
(6)对删除功能进行设计
把所有的数据显示出来,然后,选择要删除的数据,对其进行删除对应的“plane.txt”文件中的数据。
2.3系统实施
2.3.1录入功能
其主要代码为:
for(i=0;i
>destination;
if(destination=="0") break;
if(destination!="0")
{
N++;
outfile<>flight_number;
outfile<>plane_number;
outfile<>week;
outfile<>passenger_number;
outfile<>remain_ticket;
outfile<>destination;
outfile<>flight_number;
outfile<>plane_number;
outfile<>week;
outfile<>passenger_number;
outfile<>remain_ticket;
outfile<>destination;
cout<<" 终点站:"<>flight_number;
cout<<" 航班号:"<>plane_number;
cout<<" 飞机号:"<>week;
cout<<" 星期:"<>passenger_number;
cout<<" 乘客定额:"<>remain_ticket;
cout<<" 余票:"<>search_destination;
for(i=0;i>k;
k=k-1;
cout<<"请输入新的数据:"<>destination[k];
cout<<"航班号:"<>flight_number[k];
cout<<"飞机号:"<>plane_number[k];
cout<<"星期:"<>week[k];
cout<<"乘客定额:"<>passenger_number[k];
cout<<"余票:"<>remain_ticket[k];
其修改执行结果如图6所示。
图6修改功能
2.3.6删除功能
其主要代码为:
cout<<"您想删除第几个,"<>k;
k=k-1;
infile.close();
ofstream outfile("plane.txt",ios::out);
if(!outfile)
{cerr<<" open error"<>name2;
cout<<"需要票量:"<>need_number;
cout<<"补替人姓名:"<>name1;
cout<<"需要舱位等级:"<>shipping_grade;
cout<<"订票人姓名:"<>a;
if(a==1)
{cout<<"您退订成功~"<记录
答辩小组:
题问与答辩请况记录如下:
1、在输入函数中的结构是怎么选择的,执行之后怎么样,
根据各个循环结构其优点,我选用while循环结构,因为while 结构简便易读。通过while循环结构实现输入书名和编号就记录其详细信息。并随后执行显示函数,把所有书籍的详细信息按一定格式显示出来。
2、在查询函数中,利用什么方法实现的,执行之后怎么样,
在这其中,程序内部以 while循环先进行姓名查找寻找符合数据,然后用if语句判断有没有该图书。其主要代码为:while(strcmp(stu[i].name,s)!=0&&i