航空售票管理系统说明_第1页
航空售票管理系统说明_第2页
航空售票管理系统说明_第3页
航空售票管理系统说明_第4页
航空售票管理系统说明_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、 HYPERLINK / 更多企业学院: 中小企业治理全能版183套讲座+89700份资料总经理、高层治理49套讲座+16388份资料中层治理学院46套讲座+6020份资料国学智慧、易经46套讲座人力资源学院56套讲座+27123份资料各时期职员培训学院77套讲座+ 324份资料职员治理企业学院67套讲座+ 8720份资料工厂生产治理学院52套讲座+ 13920份资料财务治理学院53套讲座+ 17945份资料销售经理学院56套讲座+ 14350份资料销售人员培训学院72套讲座+ 4879份资料更多企业学院: 中小企业治理全能版183套讲座+89700份资料总经理、高层治理49套讲座+16388

2、份资料中层治理学院46套讲座+6020份资料国学智慧、易经46套讲座人力资源学院56套讲座+27123份资料各时期职员培训学院77套讲座+ 324份资料职员治理企业学院67套讲座+ 8720份资料工厂生产治理学院52套讲座+ 13920份资料财务治理学院53套讲座+ 17945份资料销售经理学院56套讲座+ 14350份资料销售人员培训学院72套讲座+ 4879份资料内蒙古科技大学本科生C+程序设计课程设计讲明书题 目:航空售票治理系统学生姓名:完美主义学 号:专 业:计算科学与技术班 级:计2010-1班指导教师:【摘要】随着科技的进展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方

3、式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。然而,交通的快捷离不开信息的快捷。随着随着计算机的进展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就能够专门好地满足我们的需求。航空售票治理系统能够依照乘客和治理人员的要求,进行方便快速的查询、购票、退票和治理等工作。本文介绍了简易航空售票治理系统的实现过程。【关键词】航空售票治理系统 动态数组 类和对象 文件操作 运算符重载 多文件结构成绩评定标准课程设计的验收答辩采取“讲

4、解程序+提问+即时编程”的方式。考核项目评价质量成绩程序功能完全实现,并能通过答辩。(60%)A能完全正确回答提问;B问题回答的差不多意思正确;C不能回答或回答错误,抽取程序小的功能即时编程,能完成;D不能回答或回答错误,即时编程无法完成;程序设计符合面向对象的思想和原则,结构合理(15)A程序结构层次分明,提取出各个实体类,类的设计合理;B程序结构层次分明,具有客户类和服务类;C类的设计差不多正确;D几乎在一个类或者方法中实现了大部分的逻辑,结构不够清晰;程序的风格(10%)A遵守编码规范,有良好的风格; 以下问题每出现一项成绩降一个等级: 1类、方法和变量命名不符合规范; 2方法和属性前缺

5、少注释; 3程序没有适当缩进;设计讲明书(15%)从以下几方面考核: 1结构完整 2图表正确 3文字通顺 4版面工整目 录 TOC o 1-3 h z u HYPERLINK l _Toc312328091 问题描述1.1该航空售票治理系统必须用C+语言进行设计,要能体现C+语言的特性。1.2该系统至少要能提供下列服务:录入航班信息,格式为:航班号起始终点起飞时刻经济舱票价剩余座位mu2164包头北京20:3061087可不定时地增加航班数据。(2)扫瞄航班信息,可显示出所有航班,假如当前系统时刻超过了某航班的起飞时刻,则显示“此次航班已发出”的提示信息。(3)查询路线:可按航班编号查询,可按

6、起始站,终点站查询(4)订票和退票功能A:查询航班编号或站点。当剩余座位数大于0,同时当前系统时刻小于起飞时刻时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。问题分析从对问题的描述能够明白,我们需要建立的是具有能对数据录入,追加,扫瞄,检索和修改功能的软件。由于乘客的数量较大且不固定,因此选择用动态数组来保存乘客的差不多信息:航班号、起始站名、终点站名、起飞时刻、经济参票价、余票量等等。因此我们建立一个能够动态增长的数组,在必要的时候将数组的内容保存到文件中。系统要紧实现的操作和功能是:录入航班信息、扫瞄航班信息、查询航线

7、、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。阐述你对问题的理解、解决问题的方案讲明依照系统功能要求,能够将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)依照问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成.员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)完成系统总结报告以及系统使用讲明书。系统功能模块的划分该系统总共包含四大功能模块:更新航班信息功能模块该模块为对航班信息的操作,仅向治理员

8、开放使用,一般用户不能使用该功能对航班信息进行操作,故进入该功能需进行身份验证。该模块又被分为五个子功能模块信息库的重建、信息的插入、修改、删除和清空数据。扫瞄航班信息完成将文件中的航班信息按照要求格式全部输出。查询航班信息能够实现按航班号和按站点的查询并将查询到的信息输出。订票和退票系统该模块依照订票和退票操作的相似性,将这两种操作放在一起。另外,由于各模块函数是直接对文件进行操作,因此各功能模块是相互独立的。数据模型相关数据结构的讲明本系统用到的容器要紧是动态增长的vector ,使用该容器需用头文件#include ,其通过语句vector v_array;申请了一个能够动态增长的数组。

9、该数组的元素类Flight的对象,通过语句Flight fly; v_array.push_back(fly);可实现数组v_array的增长。该容器用来存放航班类Flight的对象,使用该容器能够能够存放个数不确定的对象,且能够方便地进行访问。类的设计程序中一共定义了两个类:Flight类和Traffic_system类。在Flight类里定义了私有数据成员m_fnum10表示航班号, m_ftime2表示起飞时刻,char m_fstar18表示起始站, m_fdestination18表示终点站, m_fprice表示票价, m_fseat表示票数;定义了共有的成员函数bool SetI

10、nfo()用来设置航班信息,friend istream& operator(istream& in, Flight& cp)用来重载提取运算符,friend ostream& operator(ostream& out, Flight& cp)用来重载插入运算符(istream& in, Flight& cp)中使用了形参in和cp,形参in为引用“ istream&”,与该函数的返回值相同,故能够将该函数的返回值传给该形参,实现“”操作符的连续使用。形参cp为引用“Flight&”,实现了对Flight类对象的输入重载。B) 插入运算符重载函数ostream& operator(ostre

11、am& out, Flight& cp)中使用了形参out和cp,其作用与上面类似。C) 函数bool Flight:If_match(char (*p)18, char ta)中使用了形参p 和ta,形参p为指向字符数组的指针,它用来指向一个大小为18的字符数组;形参ta为字符型,其作用是使该函数区分航班号和站点名两种比较。D) 函数int Traffic_system:Search(int invoke = 0)中使用了形参invoke,该形参为int型并设置默认参数0,其作用为区分调用者,以便输出相应的提示信息。算法描述解题算法的设计思路介绍首先依照问题描述抽象出一个航班类,封装了航班的

12、数据信息和方法。数据里要紧有航班的航班号、起飞时刻、站点等信息,方法要紧是对该类中数据的值的输入、输出对本班次机票的治理,对时刻、站名等的核对,另外为了方便对文件的输出和读取,还以友元的形式重载了提取和插入运算符。由于有航班有多组,为了方便治理各个对象,因此有定义了一个Traffic_system类,将Flight类的对象作为Traffic_system类的数据成员。Traffic_system类中还定义了两个私有的成员函数完成对文件的读写。共有的成员函数要紧是Manage(),void Scan(), Search(int invoke = 0)和BookRefund(),用来完成系统的几大

13、功能。画出程序流程图文件“航空售票治理系统v-1.0.cpp”中主函数流程图main()tab=0 tab=5 tab=4清屏订票和退票break;break; tab=3 tab=2 tab=1 开始输入tab输出菜单扫瞄治理查询break;break;break;YNYYYYYNNNN结束文件“class/Traffic_system.cpp”中类中Traffic_system中扫瞄函数void Scan()开始重建i m_sum 删除全部删除全部返回m_su =0 读文件i = 0输出表头YNNY查询函数Search(int invoke = 0)开始读文件输出提示信息输入tabtab=

14、0 返回 -1tab=1 输入str0, str1输入 str0i m_sum NYta=1ta=2v_arrayi.If_match(str, ta) 返回 iYNi+YYNNi=0订票退票函数BookRefund()tab=0 tab=2 tab=1 开始输入tab输出菜单查询break;YYYNN结束订票保存查询break;退票保存设计总结此课程设计完成了对航线查询、订票、退票等功能的设计操作,同时为了插入和删除方便,运用动态数组做存储结构。此课程设计还包含了清屏功能以及退出功能。对程序在运行时输入错误操作的修改,提供了一定方便条件差不多上能安全的运行,具备的功能符合题目的要求。用了文件

15、的操作,是此程序的最大优点。程序写的还算简练,结构清晰,各个模块的分工和功能明确。通过两周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。我这次课程设计的题目是航空订票系统,在开始时期,全然无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。通过这次课设我对C+语言中的类的定义、运算符重载等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有关心的,更使我意识到了学习C+语言的重要性。程序中运用了多文件结构,尽管程序不是太大,但多文件结构的使用是我模仿正规软件的结构来写的,我想这对我以后的提

16、高有关心。另外,对程序的不断调试,是我的查错能力有了专门大的提高。附录【程序清单】文件航空售票治理系统v-1.0.cpp#include #include using namespace std;#include class/Traffic_system.hint main()Traffic_system civil_aviation;/若文件不存在,则新建文件ofstream newfile( flight information.txt, ios:app );if (!newfile)cerr 文件flight information.txt无法打开!n;exit(2);newfile.c

17、lose();int tab;while(1)cout 欢迎进入航空售票治理系统 * 主菜单: * * 1更新航班信息(需治理员身份验证) 2扫瞄航班信息 * * 3查询航班信息 4订票 和 退票 * * 5清 屏 0退 出 系 统 * * 你需要做什么?(选择04) tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout tab;switch(tab)case 1:civil_aviation.Manage();break; /航线治理case 2:civil_aviation.Scan();bre

18、ak; /订票办理case 3:civil_aviation.Search();break; /退票办理case 4:civil_aviation.BookRefund();break;case 5: system(cls); break;case 0:return 0; /退出系统文件class/Traffic_system.h#include using namespace std;#include flight.h/用于对文件的操作class Traffic_systempublic: Traffic_system() m_sum = 0; void Manage();/治理航班信息vo

19、id Scan();/扫瞄int Search(int invoke = 0);/查询功能void BookRefund();/订票和退票private:void Read_file();/读取文件void Save_file();/保存文件private:int m_sum;/记录航班数vector v_array;/航班类数组;文件class/Traffic_system.cpp#include #include using namespace std;#include Traffic_system.h/读取文件void Traffic_system:Read_file()ifstream

20、 file( flight information.txt);if (!file)cerr v_arraym_sum+;m_sum-;/file.close();/保存文件void Traffic_system:Save_file()ofstream file( flight information.txt , ios:trunc);if (!file)cerr 文件flight information.txt无法打开!n;exit(2);int i = -1;while (+i m_sum)if (!v_arrayi.If_deleted()file v_arrayi;file.close(

21、);/治理航班信息void Traffic_system:Manage()char password20;/用于存贮密码int times = 3;cout 登录系统需验证密码! endl;/验证密码。三次错误后,就自动退出程序dotimes-;cout password;if(strcmp(password, 000) = 0)/密码是“000”times = -1;break;else if (times 0)cout 密码错误!n 剩余 times 次机会! 0);if(times != -1)cout 对不起!n 您不是治理员! 不能使用此系统! endl;return;system(

22、cls);while (1)int tab;cout n*欢迎使用航班信息治理系统*n 1重新创建信息库tt 2插入信息 *nt*t 3修改信息tt 4删除信息 *nt*t 5删除全部tt 0退出治理 *n 你需要做什么?(选择05) tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout tab;switch(tab)case 1:m_sum = 0;Flight fly;cout 请进行信息录入。按“+”结束!n;do v_array.push_back(fly);/while (v_arraym

23、_sum+.SetInfo(); break;case 2:Read_file();Flight fly;cout 请进行信息录入。按“+”结束!n;do v_array.push_back(fly);/while (v_arraym_sum+.SetInfo(); break; case 3: char fnum118; Read_file(); cout fnum0; int i = 0; for (; i m_sum; i+) if (v_arrayi.If_match(fnum, 1) cout 该航班的原信息为:n n 丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时刻丨票价

24、丨余 票丨 n; v_arrayi.Display(); cout 请输入正确信息!n; v_arrayi.SetInfo(); m_sum+;/保持及总航线数不变 break; if (i = m_sum) cout 抱歉!您要修改的信息不存在! endl; return; m_sum+;/ break; case 4: char fnum118; Flight empty;/声明空对象,用于删除 Read_file(); cout fnum0; int i = 0; for (; i m_sum; i+) if (v_arrayi.If_match(fnum, 1) cout 您要删除的航

25、班为:n n 丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时刻丨票价丨余 票丨 n; v_arrayi.Display(); v_arrayi = empty; m_sum+;/保持及总航线数不变 break; if (i = m_sum) cout 您要删除的信息不存在! endl; return; break; case 5:m_sum = 1; break; case 0:return;cout yn;while(!(yn = Y | yn = y | yn = N | yn = n );if(yn = Y | yn = y)m_sum-;/对应m_sum+Save_file(

26、);cout 操作成功! endl;/扫瞄void Traffic_system:Scan()char c;Read_file();if (m_sum = 0)cout 暂无信息!请等待治理人员更新!;return;cout t航班信息表:n n 丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时刻丨票价丨余 票丨 n;for (int i = 0; i m_sum; i+)v_arrayi.Display();cout c;/查询功能int Traffic_system:Search(int invoke)int tab;Read_file();cout 1按航班号查询 2按站点查询

27、0返回 *n*n请选择(02): tab;while(!(tab = 1 | tab = 2 | tab = 0)cout tab;char str218, ta;if (tab = 0) return -1;else if (tab = 1)cout str0;ta = 1;elsecout str0;cout str1;ta = 2;for (int i = 0; i m_sum; i+)if (v_arrayi.If_match(str, ta)cout 您要查询的结果如下:n n 丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时刻丨票价丨余 票丨 endl;v_arrayi.D

28、isplay();if (invoke = 0)cout c;return i;cout 抱歉!您查询的航班不存在! endl;return -1;/订票和退票void Traffic_system:BookRefund()while (1)cout *欢迎进入机票服务系统*nn n1订票t2退票t0返回主菜单 *n tab;while(!(tab = 1 | tab = 2 | tab = 0)cout tab;char ta;switch(tab)case 1:cout 请先查找该航班: endl;int i;i = Search(1);if (i != -1 & v_arrayi.Boo

29、k()cout ta;while(!(ta = Y | ta = y | ta = N | ta = n );if(ta = Y | ta = y)Save_file();cout 订票成功! endl;break;case 2:char str118;Read_file();cout str0;int i = 0;for (; i m_sum; i+)if (v_arrayi.If_takeoff()continue;if (v_arrayi.If_match(str, 1)v_arrayi.Refund();cout ta;while(!(ta = Y | ta = y | ta = N

30、| ta = n );if(ta = Y | ta = y)Save_file();cout 退票成功! endl;break;if (i = m_sum)cout 不存在该航班或该航班已起飞!不能退票。 (istream& in, Flight& cp);/提取运算符重载friend ostream& operator(ostream& out, Flight& cp);/插入运算符重载void Display();/输出航班信息bool Book();/订票void Refund();/退票bool If_takeoff();/推断是否起飞bool If_deleted();/推断是否删除

31、bool If_match(char (*p)18, char ta);/推断航班号或站点名是否相同private:char m_fnum10;/航班号int m_ftime2;/起飞时刻char m_fstar18;/起始站char m_fdestination18;/终点站int m_fprice;/票价int m_fseat;/票数;文件class/ flight.cpp#include #include #include #include /time.h in Cusing namespace std;#include #include flight.h/(istream& in, F

32、light& cp)in cp.m_fnum cp.m_fstar cp.m_fdestination cp.m_ftime0 cp.m_ftime1 cp.m_fprice cp.m_fseat;return in;ostream& operator(ostream& out, Flight& cp)out cp.m_fnum cp.m_fstar cp.m_fdestination cp.m_ftime0 cp.m_ftime1 cp.m_fprice cp.m_fseat tm_hour * 60 + fmt-tm_min);/推断是否起飞bool Flight:If_takeoff()

33、return (m_ftime0 * 60 + m_ftime1 = get_systemtime();/推断是否作废bool Flight:If_deleted()return m_fnum0 = -;/推断航班号或站点名是否相同bool Flight:If_match(char (*p)18, char ta)if (ta = 1) return (!strcmp(m_fnum, p0);else return (!strcmp(m_fstar, p0) & !strcmp(m_fdestination, p1);/设置航班信息bool Flight:SetInfo()cout m_fnum;if (m_fnum0 = +) return false;cout m_fstar;cout m_fdestination;cout 请输入起飞时刻:(格式:03:05);scanf(%d:%d,m_ftime, m_ftime + 1)

温馨提示

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

评论

0/150

提交评论