1、附录:源代码 10第1章 问题描述通过此系统可以实现如下功能: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:订票数量及航班情况。第2章 概要设计1、 开发环境系统环境:Microsoft Windows10 专业版开发环境:Microsoft Visual Studio 2015开发平台:Win64开发语言:C+硬件环境:(1)
2、CPU:Intel Core i5(2) 内存:4GB(3) 显示卡:NVIDIA GeForce GTX950M2、组成框图3、 流程图第3章 详细设计 录入航班情况 可以查询某个航线的情况 可以输入抵达城市,查询飞机航班情况; 1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。2)当有余票时显示剩余票数,则可以订票成功,如果没有余票,则订票失败。1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。 2)当有余票时显示剩余票数,则可以退票成功,如果没有余票,则退票失败。/它相当于一种记录定义要存储的变量:可以通过以下的声明来建立如图的数据类型int air_num;
3、 /班次号 short begin_hour; /起飞时间小时 short begin_minute; /起飞时间分钟 char begin_name10; /起始站点 char end_name10; /终点站名 float fly_time; /飞行时间 int total; /乘员总定额 int total_already; /已订票人数 bool exist; /航班状态 int fare; /飞机票价 定义一个结构体来存储四个航班信息: 里的变量依次表示为:航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态;1,12,0,天津,广
4、州,2,145,130,true,1000, 2,6,30,北京成都,0.5,140,140,true,2000, 3,22,0,南京,2.5,140,120,true,2500, 4,15,0,长沙,2,140,120,true,3000 112天津广州2145130true1000630北京成都0.51402000322南京2.51202500415长沙3000 /录入input()方法的功能就是录入航班号 i,起飞时间(小时)begin_hour,起飞时间(分钟)begin_minute,起始地点名称 begin_name,种植地点名称 end_name,飞行时间 fly_time,总载
5、客量 total,已订票人数 total_already,飞机票价 fare,航班状态 exist。变量int i=4,因为事先已经录入4个编号为14的航班号,因此当输入14的航班号时会提醒此航班号已存在,因而在控制台输入的航班号必须大于4而小于50。变量int j=0;则j+1表示录入第(j+1)个航班班次的信息 /查询,按终点站来查询根据已有的飞机信息来依据终点信息来查询航班。首先要调用读取机票信息函数,读取要查询的机票信息,既read()方法。并且在方法中有一个计数器 k,当k=-1时输出无此航班的飞机,反之根据终点站名字来查询航班信息。 /调用系统时间当输入起飞时间与该电脑里的时间作比
6、较,当电脑现在的时间比输入起飞时间大的话,则说明飞机已经起飞。通过线面的语句来实现:(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果没起飞,在判断是否还有余票if(bi.total=bi.total_already),如果有,计算剩余的多少张票bi.total-bi.total_already,进而订在剩余票数的范围内购票,如果与之相反,则证明飞机已经起飞也就是说已经订不到票了。 /办理退票函数思路类
7、似于订票,首先要数如要退票的航班号,并且在这之后读入系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞if(bi.begin_hoursys.wMinute),如果没起飞,确定退票数完成退票操作。如果与之相反,则证明飞机已经起飞了,无法进行退票业务了。第4章 测试结果及分析 参考文献源代码#includestring /strcmp()是用来比较大小的,它是C+中头文件 /系统窗口时间using namespace std;const int N= 50;struct airline int air_num; short begin_hour; short b
8、egin_minute; char begin_name10; int total_already; bool exist; int fare;struct airline bN=/航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态 1,12,0,2,140,120,true,3000 ;/声明全局变量int n=0; /航班数量/函数声明void input();void find();string time(short begin_hour,char begin_minute);void order();void refund();vo
9、id input() /录入班次信息函数 if(n=0) coutn; for(int i=4,j=0;in+4,ji+,j+)正在录入第j+150|bi.air_num1) cout输入编号错误!break; for(int j=0;ji;j+) if(bi.air_num!=bj.air_num) continue; else cout=i) cout请输入班次的起飞时间:endlbi.begin_hour;cout分钟为:bi.begin_minute;请输入班次的起始地点:bi.begin_name;请输入班次的终到地点:bi.end_name; if(strcmp(bi.end_na
10、me,bi.begin_name)=0) cout输入错误!起始地点和终到地点不应该相同!请输入班次的飞行时间(hour):bi.fly_time;请输入固定的载客量:bi.total;请输入已订票人数:bi.total_already;请输入飞机票价:bi.fare; bi.exist=true;-已成功录入!-nstring time(short begin_hour,short begin_minute) /调用系统时间函数 SYSTEMTIME sys; /系统时间 sys GetLocalTime(&sys); /获得本地电脑时间 string str; if(begin_hours
11、ys.wMinute) str=已发出! else str=未发出! return str;void output(int i) cout-n班次号 起飞时间起始站终点站 飞行时间固定载客量已订票人数飞机票价飞机状态bi.air_numbi.begin_hour:bi.begin_minute bi.begin_namebi.end_namebi.fly_timebi.totalbi.total_alreadybi.fareend; for(int i=0;n+4;i+) if(strcmp(bi.end_name,end)=0) /strcmp()是用来比较大小的,它是C+中头文件 /中定义
12、的一个用于对两组字符串进行比较的函数,它的返回值是int类型。 output(i); k=i; if(k=-1)不存在至此的航班 void check() /浏览班次函数已有的航班班次为:n+4i+) output(i); couttime(bi.begin_hour,bi.begin_minute) /显示是否发出航班 void order() /订票函数 int num1,num2,k=-1; char ch;请输入要购买机票的班次编号:num1; if(bi.air_num=num1) 存在此班次! if(bi.total=bi.total_already) cout对不起,此班次的机票
13、已售完! else cout仍有机票bi.total-bi.total_alreadynum2; if(bi.total-bi.total_alreadynum2) cout对不起,您所要购买的机票数已超过剩余票数,无法办理! break; else cout bi.total_already+=num2; cout订票成功,祝您旅途愉快! else cout此航班已经发出,无法办理订票! else return; 不存在编号为num1的班次!void refund() /退票函数请输入要退机票的班次编号: SYSTEMTIME sys; GetLocalTime(& if(bi.begin_
14、hour对不起,此航班已经起飞,无法办理退票! else 请输入要退的机票数: if(bi.total_already 只售出张票! break; 确定要退票? bi.total_already-=num2; coute; switch(e) case input();2find();3check();4order(); case 5refund(); default: 学生学习心得这次课程设计,让我意识到我的局限性,对数据结构的掌握并不好,很多东西搞混淆了。所以做程序的时候一直在查书。通过查书,上网查资料我终于做出来了,有些功能没有实现,有很多遗憾,比如订票的乘客信息,数据结构全部使用的单链表。但我加入了系统时间对比。还掌握了用Visio画UNL图的基本操作。更重要的是,通过这次课程设计,我明白了学习的重要性。学生(签名): 年 月 日诚信承诺本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。任课教师评语成绩评定:任课教师(签名):
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1