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

下载本文档

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

文档简介

1、更多企业学院: 中小企业管理全能版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类、方法和变量命名不符合规范;

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

6、剩余座位数大于0,并且当前系统时间小于起飞时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。第二章 问题分析从对问题的描述可以知道,我们需要建立的是具有能对数据录入,追加,浏览,检索和修改功能的软件。由于乘客的数量较大且不固定,因此选择用动态数组来保存乘客的基本信息:航班号、起始站名、终点站名、起飞时间、经济参票价、余票量等等。所以我们建立一个可以动态增长的数组,在必要的时候将数组的内容保存到文件中。系统主要实现的操作和功能是:录入航班信息、浏览航班信息、查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查

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

8、班信息进行操作,故进入该功能需进行身份验证。该模块又被分为五个子功能模块信息库的重建、信息的插入、修改、删除和清空数据。二、 浏览航班信息完成将文件中的航班信息按照要求格式全部输出。三、 查询航班信息可以实现按航班号和按站点的查询并将查询到的信息输出。四、 订票和退票系统该模块根据订票和退票操作的相似性,将这两种操作放在一起。另外,由于各模块函数是直接对文件进行操作,所以各功能模块是相互独立的。第三章 数据模型3.1 相关数据结构的说明本系统用到的容器主要是动态增长的vector ,使用该容器需用头文件#include <vector>,其通过语句vector <Flight

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

10、 m_fseat表示票数;定义了共有的成员函数bool SetInfo()用来设置航班信息,friend istream& operator>>(istream& in, Flight& cp)用来重载提取运算符>>,friend ostream& operator<<(ostream& out, Flight& cp)用来重载插入运算符<<,void Display()用来输出航班信息,bool Book()用来订票,void Refund()用来退票,bool If_takeoff()用来判断是

11、否起飞,bool If_deleted()用来判断该航班是否被删除,bool If_match(char (*p)18, char ta)用来判断航班号或站点名是否相同。另一个类为Traffic_system类,其中定义了私有数据成员m_sum和v_array,v_array是数组名,用来存放航班类对象,m_sum表示数组v_array中航班类对象的个数;还定义了私有的成员函数void Read_file()用来读取文件,void Save_file()用来保存数据到文件,以及公有的数据成员函数void Manage()用来管理航班信息,void Scan()用来浏览航班信息,int Sear

12、ch(int invoke = 0)完成查询功能,void BookRefund()用来订票和退票。两个类之间是组合的关系,其中Flight类是Traffic_system类的子类。3.3 程序结构说明,即程序各个部分之间如何协调来完成任务程序的结构图如下:主函数订票 和 退票浏览航班信息查询航班信息更新航班信息插入信息删除全部删除信息修改信息重新创建信息库保存文件读取文件如上图,程序中各功能模块所需的数据都直接取自文件,这样保证了各模块的独立性和数据的安全性。并且只有相应的模块进行写的操作,并且数据的写入不必依赖其他模块,这样使用户可以仅使用其中某一项功能,而不必进行多余的操作。3.4 全局

13、变量,重要形式参数、局部变量等等,它们的命名及用途解释(1) 整个程序中未使用全局变量。(2) 重要形参A) 提取运算符重载函数istream& operator>>(istream& in, Flight& cp)中使用了形参in和cp,形参in为引用“ istream&”,与该函数的返回值相同,故可以将该函数的返回值传给该形参,实现“>>”操作符的连续使用。形参cp为引用“Flight&”,实现了对Flight类对象的输入重载。B) 插入运算符重载函数ostream& operator<<(ostream&

14、amp; 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,其作用为区分调用者,以便输出相应的提示信息。第四章 算法描述4.1 解题算法的设计思路介绍首先根据问题描述抽象

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

16、d(),用来完成系统的几大功能。4.2 画出程序流程图文件“航空售票管理系统”中主函数流程图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)开始读

17、文件输出提示信息输入tabtab=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;退票保存第五章 设计总结此课程设计完成了对航线查询、订票、退票等功能的设计操作,并且为了插入和删除方便,运用动态数组做存储结构。此课程设计还包含了清屏功能以及退出功能。对程序在运行时输入错误操作的修改

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

19、是太大,但多文件结构的使用是我模仿正规软件的结构来写的,我想这对我以后的提高有帮助。另外,对程序的不断调试,是我的查错能力有了很大的提高。附录【程序清单】文件航空售票管理系统#include <fstream>#include <iostream>using namespace std;#include "class/Traffic_system.h"int main()Traffic_system civil_aviation;/若文件不存在,则新建文件ofstream newfile( "flight information.txt&q

20、uot;, ios:app );if (!newfile)cerr << "文件"flight information.txt"无法打开!n"exit(2);new();int tab;while(1)cout << "n>>>>>>>>>>>>>>>>>>>>>>>>>>欢迎进入航空售票管理系统<<<<<<<<<

21、<<<<<<<<<<<<<<<<<<<<<" << "* 主菜单: *" << "* 1更新航班信息(需管理员身份验证) 2浏览航班信息 *" << "* 3查询航班信息 4订票 和 退票 *" << "* 5清 屏 0退 出 系 统 *" << "*" << "你需要做什么?(选

22、择04)" << endl;cin >> tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout << "请输入正确选择(04):"cin >> tab;switch(tab)case 1:civil_aviation.Manage();break; /航线管理case 2:civil_aviation.Scan();break; /订票办理case 3:civil_aviation.Search();break; /退票办

23、理case 4:civil_aviation.BookRefund();break;case 5: system("cls"); break;case 0:return 0; /退出系统文件class/Traffic_system.h#include <vector>using namespace std;#include "flight.h"/用于对文件的操作class Traffic_systempublic: Traffic_system() m_sum = 0; void Manage();/管理航班信息void Scan();/浏览

24、int Search(int invoke = 0);/查询功能void BookRefund();/订票和退票private:void Read_file();/读取文件void Save_file();/保存文件private:int m_sum;/记录航班数vector <Flight> v_array;/航班类数组;文件class/Traffic_system.cpp#include <fstream>#include <iostream>using namespace std;#include "Traffic_system.h"

25、;/读取文件void Traffic_system:Read_file()ifstream file( "flight information.txt");if (!file)cerr << "文件"flight information.txt"无法打开!n"exit(1);m_sum = 0;while (!()Flight fly;v_array.push_back(fly);/file >> v_arraym_sum+;m_sum-;/();/保存文件void Traffic_system:Save_fi

26、le()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;();/管理航班信息void Traffic_system:Manage()char password20;/用于存贮密码int t

27、imes = 3;cout << "登录系统需验证密码!" << endl;/验证密码。三次错误后,就自动退出程序dotimes-;cout << "请输入密码:(默认000)"cin >> password;if(strcmp(password, "000") = 0)/密码是“000”times = -1;break;else if (times > 0)cout << " 密码错误!n 剩余" << times << &

28、quot;次机会!" << endl;while(times > 0);if(times != -1)cout << "对不起!n 您不是管理员! 不能使用此系统!" << endl;return;system("cls");while (1)int tab;cout << "n*欢迎使用航班信息管理系统*n" << "" << "t*t >>1重新创建信息库tt >>2插入信息 *nt*t &

29、gt;>3修改信息tt >>4删除信息 *nt*t >>5删除全部tt >>0退出管理 *n" << "" << "你需要做什么?(选择05)" << endl;cin >> tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout << "请输入正确选择(05):"cin >> tab;switch(tab)case 1

30、:m_sum = 0;Flight fly;cout << "请进行信息录入。按“+”结束!n"do v_array.push_back(fly);/while (v_arraym_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()

31、; cout << "请输入您要修改信息的航班号:" cin >> fnum0; int i = 0; for (; i < m_sum; i+) if (v_arrayi.If_match(fnum, '1') cout << "该航班的原信息为:n" << " n" << "丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时间丨票价丨余 票丨" << " n" v_arrayi.Display

32、(); 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 << "请输入您要删除航班的航班号:" cin >

33、;> fnum0; int i = 0; for (; i < m_sum; i+) if (v_arrayi.If_match(fnum, '1') cout << "您要删除的航班为:n" << " n" << "丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时间丨票价丨余 票丨" << " n" v_arrayi.Display(); v_arrayi = empty; m_sum+;/保持及总航线数不变 break; if

34、(i = m_sum) cout << "您要删除的信息不存在!" << endl; return; break; case 5:m_sum = 1; break; case 0:return;cout << "确认Y 取消Nn请选择:"char yn;docin >> yn;while(!(yn = 'Y' | yn = 'y' | yn = 'N' | yn = 'n' );if(yn = 'Y' | yn = 'y

35、')m_sum-;/对应m_sum+Save_file();cout << "操作成功!" << endl;/浏览void Traffic_system:Scan()char c;Read_file();if (m_sum = 0)cout << "暂无信息!请等待管理人员更新!"return;cout << "t航班信息表:n" << " n" << "丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时间丨票价丨余 票

36、丨" << " n"for (int i = 0; i < m_sum; i+)v_arrayi.Display();cout << "按任意键返回主菜单!"cin >> c;/查询功能int Traffic_system:Search(int invoke)int tab;Read_file();cout << "*n* >>1按航班号查询 >>2按站点查询 >>0返回 *n*n请选择(02):" << endl;cin

37、>> tab;while(!(tab = 1 | tab = 2 | tab = 0)cout << "请输入正确选择(02):"cin >> tab;char str218, ta;if (tab = 0) return -1;else if (tab = 1)cout << "请输入航班号:"cin >> str0;ta = '1'elsecout << "请输入出发站:"cin >> str0;cout << &quo

38、t;请输入终点站:"cin >> str1;ta = '2'for (int i = 0; i < m_sum; i+)if (v_arrayi.If_match(str, ta)cout << "您要查询的结果如下:n" << " n" << "丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时间丨票价丨余 票丨" << " " << endl;v_arrayi.Display();if (invoke

39、= 0)cout << "按任意键返回主菜单!"char c;cin >> c;return i;cout << "抱歉!您查询的航班不存在!" << endl;return -1;/订票和退票void Traffic_system:BookRefund()while (1)cout<< "*欢迎进入机票服务系统*nn"<< "n"<< "请选择:tttttttt *n*t >>1订票t>>2退票t

40、>>0返回主菜单 *n"<< "" << endl;int tab;cin >> tab;while(!(tab = 1 | tab = 2 | tab = 0)cout << "请输入正确选择(02):"cin >> tab;char ta;switch(tab)case 1:cout << "请先查找该航班:" << endl;int i;i = Search(1);if (i != -1 && v_array

41、i.Book()cout << "确认订票Y 取消订票Nn请选择:"docin >> 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 <<

42、"请输入航班号:"cin >> 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 << "确认退票Y 取消退票Nn请选择:"docin >> ta;while(!(ta = 'Y' | ta = 'y' | ta = 'N' | ta = 'n&#

43、39; );if(ta = 'Y' | ta = 'y')Save_file();cout << "退票成功!" << endl;break;if (i = m_sum)cout << "不存在该航班或该航班已起飞!不能退票。" << endl;break; case 0:return;文件class Flightpublic:Flight()m_fnum0 = '+'bool SetInfo();/设置航班信息friend istream& oper

44、ator>>(istream& in, Flight& cp);/提取运算符重载friend ostream& operator<<(ostream& out, Flight& cp);/插入运算符重载void Display();/输出航班信息bool Book();/订票void Refund();/退票bool If_takeoff();/判断是否起飞bool If_deleted();/判断是否删除bool If_match(char (*p)18, char ta);/判断航班号或站点名是否相同private:char

45、m_fnum10;/航班号int m_ftime2;/起飞时间char m_fstar18;/起始站char m_fdestination18;/终点站int m_fprice;/票价int m_fseat;/票数;文件class/ flight.cpp#include <iostream>#include <string>#include <iomanip>#include <ctime>/time.h in Cusing namespace std;#include <stdio.h>#include "flight.h

46、"/<<运算符重载istream& operator>>(istream& in, Flight& 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&a

47、mp; cp)out << cp.m_fnum << " " << cp.m_fstar << " " << cp.m_fdestination << " " << cp.m_ftime0 << " " << cp.m_ftime1 << " " << cp.m_fprice << " " << cp.m_fseat &l

48、t;< "n"return out;/获取系统时间int get_systemtime()time_t now;struct tm *fmt;time(&now);fmt = localtime(&now);return (fmt->tm_hour * 60 + fmt->tm_min);/判断是否起飞bool Flight:If_takeoff()return (m_ftime0 * 60 + m_ftime1 <= get_systemtime();/判断是否作废bool Flight:If_deleted()return m_f

49、num0 = '-'/判断航班号或站点名是否相同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 << "输入航班号:"cin >> m_fnum;if (m_fnum0 = '+

50、9;) return false;cout << "起始站:"cin >> m_fstar;cout << "终点站:"cin >> m_fdestination;cout << "请输入起飞时间:(格式:03:05)"scanf("%d:%d",m_ftime, m_ftime + 1);cout << "票价:"cin >> m_fprice;cout << "余票:"cin >> m_fseat;return true;/输出航班信息void Flight:Display()if (If_takeoff()cout << "丨 " << setiosflags(ios:left) << setw(10) << m_fnum << "丨 " << setw(18) << m_fstar <<

温馨提示

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

评论

0/150

提交评论