数据结构课程设计飞机票订票系统.doc_第1页
数据结构课程设计飞机票订票系统.doc_第2页
数据结构课程设计飞机票订票系统.doc_第3页
数据结构课程设计飞机票订票系统.doc_第4页
数据结构课程设计飞机票订票系统.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计 /学 号 成都理工大学计算机科学与技术系数据结构课程设计设计说明书题目订票系统学 生 姓 名班 级成 绩指导教师(签字) 计算机科学与技术系 2016 年 9 月 20 日目录第1章 问题描述1(1)录入:1(2)查询:1(3)订票:1(4)退票:11、开发环境22、组成框图23、流程图3第3章 详细设计41.根据飞机订票系统的可设要求,要实现以下功能:42.具体的方法及函数调用的思想:4struct:/它相当于一种记录43.方法的实现:51)input( ); /录入52)find( ); /查询,按终点站来查询63)string time(short begin_hour,char begin_minute); /调用系统时间64)order( ); /办理订票函数65)refund( ); /办理退票函数6第4章 测试结果及分析7执行结果:7参考文献10附录:源代码101第1章 问题描述通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:订票数量及航班情况。第2章 概要设计1、 开发环境系统环境:Microsoft Windows10 专业版开发环境:Microsoft Visual Studio 2015开发平台:Win64开发语言:C+硬件环境:(1) CPU:Intel Core i5(2) 内存:4GB(3) 显示卡:NVIDIA GeForce GTX950M飞机订票系统2、组成框图退票订票录入信息查询信息3、 流程图点击查询机票进入订票机票机票信息页面进入退票页面按条件查询开始飞机起飞?购票失败允许购买YNn飞机起飞?退票失败允许退票YN返回第3章 详细设计 1.根据飞机订票系统的可设要求,要实现以下功能:(1)录入:录入航班情况(2)查询: 可以查询某个航线的情况 可以输入抵达城市,查询飞机航班情况;(3)订票: 1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。2)当有余票时显示剩余票数,则可以订票成功,如果没有余票,则订票失败。(4)退票:1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。 2)当有余票时显示剩余票数,则可以退票成功,如果没有余票,则退票失败。2.具体的方法及函数调用的思想:struct:/它相当于一种记录定义要存储的变量:可以通过以下的声明来建立如图的数据类型int air_num; /班次号 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,天津,广州,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 1120天津广州2145130true10002630北京成都0.5140140true20003220广州南京2.5120120true25004150天津长沙2120120true30003.方法的实现:1)input( ); /录入input()方法的功能就是录入航班号 i,起飞时间(小时)begin_hour,起飞时间(分钟)begin_minute,起始地点名称 begin_name,种植地点名称 end_name,飞行时间 fly_time,总载客量 total,已订票人数 total_already,飞机票价 fare,航班状态 exist。变量int i=4,因为事先已经录入4个编号为14的航班号,因此当输入14的航班号时会提醒此航班号已存在,因而在控制台输入的航班号必须大于4而小于50。变量int j=0;则j+1表示录入第(j+1)个航班班次的信息2)find( ); /查询,按终点站来查询根据已有的飞机信息来依据终点信息来查询航班。首先要调用读取机票信息函数,读取要查询的机票信息,既read()方法。并且在方法中有一个计数器 k,当k=-1时输出无此航班的飞机,反之根据终点站名字来查询航班信息。3)string time(short begin_hour,char begin_minute); /调用系统时间当输入起飞时间与该电脑里的时间作比较,当电脑现在的时间比输入起飞时间大的话,则说明飞机已经起飞。通过线面的语句来实现:(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,进而订在剩余票数的范围内购票,如果与之相反,则证明飞机已经起飞也就是说已经订不到票了。5)refund( ); /办理退票函数思路类似于订票,首先要数如要退票的航班号,并且在这之后读入系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果没起飞,确定退票数完成退票操作。如果与之相反,则证明飞机已经起飞了,无法进行退票业务了。第4章 测试结果及分析 执行结果: 参考文献附录:源代码#include#include /strcmp()是用来比较大小的,它是C+中头文件(字符串函数)#include /系统窗口时间using namespace std; const int N= 50;struct airlineint air_num; /班次号short begin_hour; /起飞时间小时short begin_minute; /起飞时间分钟char begin_name10; /起始站点 char end_name10; /终点站名 float fly_time; /飞行时间 int total; /乘员总定额int total_already; /已订票人数bool exist; /航班状态int fare; /飞机票价;struct airline bN=/航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态1,12,0,天津,广州,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 ;/声明全局变量int n=0; /航班数量 /函数声明void input(); /录入void find(); /查询,按终点站来查询string time(short begin_hour,char begin_minute); /调用系统时间void order(); /办理订票函数void refund(); /办理退票函数void input() /录入班次信息函数if(n=0)cout请输入录入班次的数量:n; for(int i=4,j=0;in+4,jn;i+,j+)cout正在录入第j+1个班次的信息!n;cout-n;coutbi.air_num;if(bi.air_num50|bi.air_num1)cout输入编号错误!endl;break;for(int j=0;ji;j+)if(bi.air_num!=bj.air_num) continue; else cout录入失败,此编号的班次已经存在!=i) cout请输入班次的起飞时间:endlbi.begin_hour;coutbi.begin_minute;coutbi.begin_name;coutbi.end_name; if(strcmp(bi.end_name,bi.begin_name)=0)cout输入错误!起始地点和终到地点不应该相同!endl;break;coutbi.fly_time;coutbi.total;coutbi.total_already; coutbi.fare; bi.exist=true; cout-已成功录入!-n;string time(short begin_hour,short begin_minute) /调用系统时间函数SYSTEMTIME sys; /系统时间 sysGetLocalTime(&sys); /获得本地电脑时间string str;if(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wMinute)str=已发出!;else str=未发出!;return str;void output(int i)cout-n;cout班次号 起飞时间 起始站 终点站 飞行时间 固定载客量 已订票人数 飞机票价 飞机状态endl;cout bi.air_num bi.begin_hour:bi.begin_minute bi.begin_name bi.end_name bi.fly_time bi.total bi.total_already bi.fare bi.exist;void find() /查询班次信息函数int k=-1;/计数器 char end10;coutend;for(int i=0;in+4;i+)if(strcmp(bi.end_name,end)=0) /strcmp()是用来比较大小的,它是C+中头文件(字符串函数) /中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型。output(i);k=i;if(k=-1)cout不存在至此的航班endl; void check() /浏览班次函数cout已有的航班班次为:n+4endl;for(int i=0;in+4;i+) output(i);couttime(bi.begin_hour,bi.begin_minute)endl; /显示是否发出航班 void order() /订票函数int num1,num2,k=-1;char ch;cout请输入要购买机票的班次编号:num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;if(bi.total=bi.total_already)cout对不起,此班次的机票已售完!;else cout仍有机票bi.total-bi.total_already张!endl;coutnum2;if(bi.total-bi.total_alreadynum2)cout对不起,您所要购买的机票数已超过剩余票数,无法办理!endl;break;else cout确定要购买?(y/n)ch;if(ch=y|ch=Y)SYSTEMTIME sys;GetLocalTime(&sys);if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute)bi.total_already+=num2;cout订票成功,祝您旅途愉快!endl;else cout此航班已经发出,无法办理订票!endl;else return; if(k=-1)cout不存在编号为num1的班次!endl;void refund() /退票函数int num1,num2,k=-1;char ch;cout请输入要退机票的班次编号:num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;SYSTEMTIME sys;GetLocalTime(&sys);if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute)cout对不起,此航班已经起飞,无法办理退票!endl;else coutnum2;if(bi.total_alreadynum2)cout只售出bi.total_already张票!endl; break;else cout确定要退票?(y/n)ch;if(ch=y|ch=Y)bi.total_already-=num2;cout退票成功,欢迎您下次光临!endl;else return; if(k=-1)cout不存在编号为num1的班次!endl;void main() /主函数char e=1;while(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论