飞机订票管理系统
计算机科学与技术教研室
(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<<"您退订成功~"<总结
在此次的程序设计过程中,我收获颇多,对程序设计基础知识的掌握更加扎实,同时提高了自己独立编程的能力、灵活运用知识点的能力。在该飞机订票管理系统中,主要运用了类的继承、构造函数和文件流等知识;功能实现则通过函数来完成。
但是我的工作还是有很多的不足,例如:在退票和订票功能实现询问排队人员时,遇到了大量困难和问题。例如,退票后余票增加,订票后余票减少,问问他人是否排队等,然后经过老师的辅导和查阅书籍把问题一一解决。
通过这次的课程设计,让我们充分感到了独自设计一个程序是多么的困难,没有团队是不行的,和同学们相互探讨,相互学习,相互监督。促进自己,学会了合作,学会了运筹帷幄。
在这个程序的设计过程中,我清楚的意识到自己的水平不足,C++的一些基础知识还没有得到运用,课程的知识学的有多么的不扎实,自己上机实际编程出现了很多的语法性错误,调试时电脑总是在报错,到最后虽然都改完了,也没有报错了,但不是自己独自修正的,因此,我意识到了我自己有太多的东西还不会,让我感觉到学习好C++是多么得重要。
以后还会有很多的课程设计,我一定会吸取这次教训,把知识学懂学会学精,真正的运用自如。
通过这次课程设计让我巩固了类的继承,类的初始化,文件流,构造函数这些知识,让我懂得了主动学习是最好的方法,主动动手去做,广泛查阅
,多次进行修改和完善,只有这样,才能有好的设计呈现出来。
通过这次课程设计,我培养了自己对C++语言的兴趣,编程能力也比以前略有提高,但仍然存在许多的不足,不能独自写出功能齐全的代码,写代码还要参考很多的资料,所以,以后要培养自己独立写代码的能力。
4、参考文献
[1]谭浩强.《C++程序设计(第2版)》.清华大学出版社.2011.8
[2]谭浩强.《C++程序设计题解与上机指导(第2版)》.清华大学出版社.2011.6
[3]温秀梅,丁学钧.《Visual C++面向对象程序设计教程与实验(第二版)》.清华大学出版社.2009.4
答辩
答辩小组:
题问与答辩请况记录如下:
1、在输入函数中的结构是怎么选择的,执行之后怎么样,
根据各个循环结构其优点,我选用while循环结构,因为while 结构简便易读。通过while循环结构实现输入书名和编号就记录其详细信息。并随后执行显示函数,把所有书籍的详细信息按一定格式显示出来。
2、在查询函数中,利用什么方法实现的,执行之后怎么样,
在这其中,程序内部以 while循环先进行姓名查找寻找符合数据,然后用if语句判断有没有该图书。其主要代码为:while(strcmp(stu[i].name,s)!=0&&i