


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内蒙古科技大学本科生C+H序设计课程设计说明书题目:航空售票管理系统学生:完美主义学号:XXXXXXXX专业:计算科学与技术班级:计2010-1班指导教师:XXX【摘要】随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。然而,交通的快捷离不开信息的快捷。随着随着电脑的发展和普及,人们的生活方式发生了巨大的改变,电脑在代替和延伸脑力劳动方面发挥着越来越重要的作用。在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给电脑处理,就可以很好地满足我们的需求。航空售票管理系统可
2、以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。本文介绍了简易航空售票管理系统的实现过程。【关键词】航空售票管理系统动态数组类和对象文件操作运算符重载多文件结构成绩评定标准课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式考核项目评价质量成绩程序功能完全实现,并能通过答辩。60%A能完全正确答复提问;B问题答复的基本意思正确;C不能答复或答复错误,抽取程序小的功能即时编程,能完成;D不能答复或答复错误,即时编程无法完成;程序设计符合面向对象的思想和原则,结构合理15A程序结构层次分明,提取出各个实体类,类的设计合理;B程序结构层次分明,具有客户类和服务类;C类的设
3、计基本正确;D几乎在一个他者方法中实现了大部分的逻辑,结构不够活晰;程序的风格10%A遵守编码标准,有良好的风格;以下问题每出现一项成绩降一个等级:1.类、方法和变量命名不符合标准;2.方法和届性前缺少注释;3.程序没有适当缩进;设计说明书15%从以下几方面考核:1.结构完整2.图表正确3.文字通顺4.版面工整第一章问题描述0第二章问题分析1阐述你对问题的理解、解决问题的方案说明1系统功能模块的划分1第三章数据模型3相关数据结构的说明3类的设计3程序结构说明,即程序各个部分之间如何协调来完成任务4全局变量,重要形式参数、局部变量等等,它们的命名及用途解释5第四章算法描述6解题算法的设计思路介绍
4、6画出程序流程图6第五章设计总结12附录13参考文献32第一章问题描述1.1该航空售票管理系统必须用C+语言进行设计,要能表达C+语言的特性。1.2该系统至少要能提供以下服务:(1)录入航班信息,格式为:航班号起始顿占t八、起飞时间经济舱票价剩余座位mu2164包头北京20:3061087可不定时地增加航班数据。2浏览航班信息,可显示出所有航班,如果当前系统时间超过了某航班的起飞时问,则显示“此次航班已发出”的提示信息。3查询路线:可按航班编号查询,可按起始站,终点站查询4订票和退票功能A:查询航班编号或站点。当剩余座位数大丁0,并且当前系统时间小丁起飞时间时才能售票,售票后自动更新剩余座位数
5、。B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。第二章问题分析从对问题的描述可以知道,我们需要建立的是具有能对数据录入,追加,浏览,检索和修改功能的软件。由于乘客的数量较大且不固定,因此选择用动态数组来保存乘客的基本信息:航班号、起始站名、终点站名、起飞时间、经济参票价、余票量等等。所以我们建立一个可以动态增长的数组,在必要的时候将数组的内容保存到文件中。系统主要实现的操作和功能是:录入航班信息、浏览航班信息、查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足
6、客户的要求。2.1阐述你对问题的理解、解决问题的方案说明根据系统功能要求,可以将问题解决分为以下步骤:1分析系统中的各个实体之间的关系及其届性和行为;2根据问题描述,设计系统的类层次;3完成类层次中各个类的描述(包括届性和方法);4完成类中各个成员函数的定义;5完成系统的应用模块;6功能调试;7完成系统总结报告以及系统使用说明书。2.2系统功能模块的划分该系统总共包含四大功能模块:一、更新航班信息功能模块该模块为对航班信息的操作,仅向管理员开放使用,普通用户不能使用该功能对航班信息进行操作,故进入该功能需进行身份验证。该模块乂被分为五个子功能模块一一信息库的重建、信息的插入、修改、删除和活空数
7、据。二、浏览航班信息完成将文件中的航班信息按照要求格式全部输出。三、查询航班信息可以实现按航班号和按站点的查询并将查询到的信息输出。四、订票和退票系统该模块根据订票和退票操作的相似性,将这两种操作放在一起。另外,由于各模块函数是直接对文件进行操作,所以各功能模块是相互独立的。第三章数据模型3.1相关数据结构的说明本系统用到的容器主要是动态增长的vector,使用该容器需用头文件#include<vector>,其通过语句vector<Flight>v_array;申请了一个可以动态增长的数组。该数组的元素类Flight的对象,通过语句Flightfly;v_array.
8、push_back(fly)可实现数组v_array的增长。该容器用来存放航班类Flight的对象,使用该容器可以可以存放个数不确定的对象,且可以方便地进行访问。3.2类的设计程序中一共定义了两个类:Flight类和Traffic_system类。在Flight类里定义了私有数据成员m_fnum10表示航班号,m_ftime2表示起飞时间,charm_fstar18表示起始站,m_fdestination18表示终点站,m_fprice表示票价,m_fseat表示票数;定义了共有的成员函数boolSetInfo()用来设置航班信息,friendistream&operator>&
9、gt;(istream&in,Flight&cp)用来重载提取运算符>>,friendostream&operator<<(ostream&out,Flight&cp)用来重载插入运算符<<,voidDisplay()用来输出航班信息,boolBook()用来订票,voidRefund()用来退票,boolIf_takeoff()用来判断是否起飞,boolIf_deleted()用来判断该航班是否被删除,boolIf_match(char(*p)18,charta)用来判断航班号或站点名是否相同。另一个类为Traffi
10、c_system类,其中定义了私有数据成员m_sum和v_array,v_array是数组名,用来存放航班类对象,m_sum表示数组v_array中航班类对象的个数;还定义了私有的成员函数voidRead_file()用来读取文件,voidSave_file()用来保存数据到文件,以及公有的数据成员函数voidManage()用来管理航班信息,voidScan()用来浏览航班信息,intSearch(intinvoke=0沆成查询功能,voidBookRefund()用来订票和退票。两个类之间是组合的关系,其中Flight类是Traffic_system类的子类。3.3程序结构说明,即程序各个
11、部分之间如何协调来完成任务程序的结构图如下:如上图,程序中各功能模块所需的数据都直接取自文件,这样保证了各模块的独宜性和数据的安全性。并且只有相应的模块进行写的操作,并且数据的写入不必依赖其他模块,这样使用户可以仅使用其中某一项功能,而不必进行多余的操作。3.4全局变量,重要形式参数、局部变量等等,它们的命名及用途解释(1) 整个程序中未使用全局变量。(2) 重要形参A) 提取运算符重载函数istream&operator>>(istream&in,Flight&cp)中使用了形参in和cp,形参in为引用“istream&”,与该函数的返回值相同,
12、故可以将该函数的返回值传给该形参,实现“>>”操作符的连续使用。形参cp为引用“Flight&”,实现了对Flight类对象的输入重载。B) 插入运算符重载函数ostream&operator<<(ostream&out,Flight&cp)中使用了形参out和cp,其作用与上面类似。C) 函数boolFlight:If_match(char(*p)18,charta)中使用了形参p和ta,形参p为指向字符数组的指针,它用来指向一个大小为18的字符数组;形参ta为字符型,其作用是使该函数区分航班号和站点名两种比较。D) 函数intTraf
13、fic_system:Search(intinvoke=0)中使用了形参invoke,该形参为int型并设置默认参数0,其作用为区分调用者,以便输出相应的提示信息。第四章算法描述4.1解题算法的设计思路介绍首先根据问题描述抽象出一个航班类,封装了航班的数据信息和方法。数据里主要有航班的航班号、起飞时间、站点等信息,方法主要是对该类中数据的值的输入、输出对本班次机票的管理,对时间、站名等的核对,另外为了方便对文件的输出和读取,还以友元的形式重载了提取和插入运算符。由于有航班有多组,为了方便管理各个对象,所以有定义了一个Traffic_system类,将Flight类的对象作为Traffic_sy
14、stem类的数据成员。Traffic_system类中还定义了两个私有的成员函数完成对文件的读写。共有的成员函数主要是Manage。,voidScan(),Search(intinvoke=0胛BookRefund(),用来完成系统的几大功能。4.2画出程序流程图文件中主函数流程图main()开始输入tab文件“class/Traffic_system.cp0中类中Traffic_system中浏览函数voidScan()学习文档仅供参考查询函数Search(intinvoke=0)输出提示信息输入tab订票退票函数BookRefund()开始输出菜单输入tabY查询tab=1N查询tab=2
15、tab=0Y结束订票退票保存保存break;break;第五章设计总结此课程设计完成了对航线查询、订票、退票等功能的设计操作,并且为了插入和删除方便,运用动态数组做存储结构。此课程设计还包含了活屏功能以及退出功能。对程序在运行时输入错误操作的修改,提供了一定方便条件基本上能安全的运行,具备的功能符合题目的要求。用了文件的操作,是此程序的最大优点。程序写的还算简练,结构活晰,各个模块的分工和功能明确。经过两周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。我这次课程设计的题目是航空订票系统,在开始阶段,根本无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序
16、的设计。通过这次课设我对C+祁言中的类的定义、运算符重载等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,更使我意识到了学习C+S言的重要性。程序中运用了多文件结构,虽然程序不是太大,但多文件结构的使用是我模仿正规软件的结构来写的,我想这对我以后的提高有帮助。另外,对程序的不断调试,是我的查错能力有了很大的提高。附录【程序活单】文件#include<fstream>#include<iostream>usingnamespacestd;#include"class/Traffic_syste
17、m.h"intmain()Traffic_systemcivil_aviation;假设文件不存在,则新建文件ofstreamnewfile("flightinformation.txt",ios:app);if(!newfile)cerr<<"文件"flightinformation.txt'”无法打开!n"exit(2);newfile.close();inttab;while(1)cout<<"n>>>>>>>>>>>&g
18、t;>>>>>>>>>>>>>>欢送进入航空售票管理系统<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<"*主菜单:*"<<"*1一更新航班信息需管理员身份验证2浏览航班信息*"<<"*3一查询航班信息4和退票*"
19、;<<"*5一活屏0-退出系统*"<<"*<<"你需要做什么?选择04"<<endl;cin>>tab;while(!(tab=1|tab=2|tab=3|tab=4|tab=5|tab=0)(cout<<"请输入正确选择04:";cin>>tab;switch(tab)(case1:(civil_aviation.Manage();break;航线管理case2:(civil_aviation.Scan();break;订票办理case3:
20、(civil_aviation.Search();break;退票办理case4:(civil_aviation.BookRefund();break;case5:system("cls");break;case0:return0;退出系统学习文档仅供参考文件class/Traffic_system.h#include<vector>usingnamespacestd;#include"flight.h"用于对文件的操作classTraffic_systempublic:Traffic_system()m_sum=0;voidManage。;
21、/管理航班信息voidScan();/植ij览intSearch(intinvoke=0);/质询功能voidBookRefund();/订票和退票private:voidRead_file();/读取文件voidSave_file();/保存文件private:intm_sum;/记录航班数vector<Flight>v_array;航班类数组;文件class/Traffic_system.cpp#include<fstream>#include<iostream>usingnamespacestd;#include"Traffic_system
22、.h"读取文件voidTraffic_system:Read_file()ifstreamfile("flightinformation.txt");if(!file)cerr<<"文件"flightinformation.txt'”无法打开!n"exit(1);m_sum=0;while(!file.eof()Flightfly;v_array.push_back(fly);/file>>v_arraym_sum+;m_sum-;/file.close();保存文件voidTraffic_system
23、:Save_file()ofstreamfile("flightinformation.txt",ios:trunc);if(!file)cerr<<”文件'"flightinformation.txt'"无法打开!n”;exit(2);inti=-1;while(+i<m_sum)(if(!v_arrayi.If_deleted()(file<<v_arrayi;file.close();管理航班信息voidTraffic_system:Manage()(charpassword20;/用于存贮密码intt
24、imes=3;cout<<”登录系统需验证密码!"<<endl;验证密码。三次错误后,就自动退出程序do(times-;cout<<"请输入密码:默认000";cin>>password;if(strcmp(password,"000")=0)/密码是“000”(times=-1;break;elseif(times>0)cout<<"密码错误!n剩余"<<times<<”次时机!”<<endl;while(times>
25、;0);if(times!=-1)(cout<<”对不起!n您不是管理员!不能使用此系统!"<<endl;return;system("cls");while(1)inttab;cout<<""*欢送使用航班信息管理系统*5,<<<<"t*t>>1重新创建信息库tt>>2插入信息*nt*t>>3修改信息tt>>4删除信息*nt*t>>5删除全部tt>>0退出管理*n"<<<&l
26、t;"你需要做什么?选择05"<<endl;cin>>tab;while(!(tab=1|tab=2|tab=3|tab=4|tab=5|tab=0)(cout<<”请输入正确选择05:";cin>>tab;switch(tab)(case1:(m_sum=0;Flightfly;cout<<"请进行信息录入。按“+”结束!n"dov_array.push_back(fly);/while(v_arraym_sum+.SetInfo();break;case2:(Read_file()
27、;Flightfly;cout<<"请进行信息录入。按“+”结束!n"dov_array.push_back(fly);/while(v_arraym_sum+.SetInfo();break;case3:(charfnum118;Read_file();cout<<”请输入您要修改信息的航班号:"cin>>fnum0;inti=0;for(;i<m_sum;i+)(if(v_arrayi.If_match(fnum,'1')(cout<<"该航班的原信息为:n"<&l
28、t;n"<<"I航班号I起始站点站I起飞时间I票价I余票I"<<n"v_arrayi.Display();cout<<"请输入正确信息!n"v_arrayi.SetInfo();m_sum+;/保持及总航线数不变break;if(i=m_sum)(cout<<"抱歉!您要修改的信息不存在!"<<endl;return;m_sum+;/break;case4:(charfnum118;Flightempty;/声明"空”对象,用于删除Read_fi
29、le();cout<<"请输入您要删除航班的航班号:"cin>>fnum0;inti=0;for(;i<m_sum;i+)(if(v_arrayi.If_match(fnum,'1')(cout<<"您要删除的航班为:n"<<n"<<"I航班号I起始站I终点站I起飞时间I票价I余票I"<<"n"v_arrayi.Display();v_arrayi=empty;m_sum+;/保持及总航线数不变break;if(
30、i=m_sum)(cout<<"您要删除的信息不存在!"<<endl;return;break;case5:m_sum=1;break;case0:return;cout<<”确认Y»取消N»n请选择:"charyn;do(cin>>yn;while(!(yn='Y'|yn='y'|yn='N'|yn='n');if(yn='Y'|yn='y')(m_sum-;/御应m_sum+Save_file();
31、cout<<"操作成功!"<<endl;浏览voidTraffic_system:Scan()(charc;Read_file();if(m_sum=0)(cout<<”暂无信息!请等待管理人员更新!"学习文档仅供参考return;cout<<"t航班信息表:n"<<n"I起飞时<<"I航班号I起始站问I票价I余票I"<<n"for(inti=0;i<m_sum;i+)v_arrayi.Display();cout&
32、lt;<”按任意键返回主菜单!"cin>>c;查询功能intTraffic_system:Search(intinvoke)inttab;Read_file();cout林*n>>1按航班号查询>>2按站点查询<<>>0返回*n*if(tab=0)return-1;elseif(tab=1)(cout<<”请输入航班号:"cin>>str0;ta='1'else(cout<<”请输入出发站:"cin>>str0;cout<<
33、"请输入终点站:"cin>>str1;ta='2'for(inti=0;i<m_sum;i+)(if(v_arrayi.If_match(str,ta)(cout<<"您要查询的结果如下:n"<<n"<<"I航班号I起始站I终点站I起飞时间I票价I余票I"<<"cin>>c;returni;cout<<"抱歉!您查询的航班不存在!"<<endl;return-1;订票和退票voi
34、dTraffic_system:BookRefund()(while(1)(cout<<"*欢送进入机票服务系统*5叩<<"n"<<"请选择:tttttttt*n*t>>1订票t>>2退票t>>0返回主菜单*n"<<""<<endl;inttab;cin>>tab;while(!(tab=1|tab=2|tab=0)(cout<<”请输入正确选择02:";cin>>tab;charta
35、;switch(tab)(case1:cout<<”请先查找该航班:"<<endl;inti;i=Search(1);if(i!=-1&&v_arrayi.Book()(cout<<”确认订票Y»取消订票N»n请选择:”;do(cin>>ta;while(!(ta='Y'|ta='y'|ta='N'|ta='n');if(ta='Y'|ta='y')(Save_file();cout<<&quo
36、t;订票成功!"<<endl;break;case2:(charstr118;Read_file();cout<<”请输入航班号:"cin>>str0;inti=0;for(;i<m_sum;i+)(if(v_arrayi.If_takeoff()continue;if(v_arrayi.If_match(str,'1')(v_arrayi.Refund();cout<<”确认退票Y»取消退票N»n请选择:”do(cin>>ta;while(!(ta='Y'
37、|ta='y'|ta='N'|ta='n');if(ta='Y'|ta='y')(Save_file();cout<<”退票成功!"<<endl;break;if(i=m_sum)(cout<<”不存在该航班或该航班已起飞!不能退票。"<<endl;break;case0:return;文件classFlight(public:Flight()(m_fnum0='+'boolSetInfo();/设置航班信息friendistrea
38、m&operator>>(istream&in,Flight&cp);提取运算符重载friendostream&operator<<(ostream&out,Flight&cp);/ft入运算符重载voidDisplay();/输出航班信息boolBook();/订票voidRefund();/退票boolIf_takeoff();/判断是否起飞boolIf_deleted();/判断是否删除boolIf_match(char(*p)18,charta);/判断航班号或站点名是否相同private:charm_fnum10
39、;/航班号intm_ftime2;/起飞时间charm_fstar18;/起始站charm_fdestination18;/廖$点站intm_fprice;/票价intm_fseat;/票数;文件class/flight.cpp#include<iostream>#include<string>#include<iomanip>#include<ctime>/time.hinCusingnamespacestd;#include<stdio.h>#include"flight.h"/<<运算符重载ist
40、ream&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;returnin;ostream&operator<<(ostream&out,Flight&cp)out<<cp.m_fnum<<""
41、;<<cp.m_fstar<<""<<cp.m_fdestination<<""<<cp.m_ftime0<<""<<cp.m_ftime1<<""<<cp.m_fprice<<""<<cp.m_fseat<<"n"returnout;获取系统时间intget_systemtime()(time_tnow;structtm*fmt;t
42、ime(&now);fmt=localtime(&now);return(fmt->tm_hour*60+fmt->tm_min);判断是否起飞boolFlight:If_takeoff()(return(m_ftime0*60+m_ftime1<=get_systemtime();判断是否作废boolFlight:If_deleted()(returnm_fnum0='-'判断航班号或站点名是否相同boolFlight:If_match(char(*p)18,charta)(if(ta='1')return(!strcmp(m
43、_fnum,p0);elsereturn(!strcmp(m_fstar,p0)&&!strcmp(m_fdestination,p1);学习文档仅供参考设置航班信息boolFlight:SetInfo()(cout<<"输入航班号:"cin>>m_fnum;if(m_fnum0='+')returnfalse;cout<<"起始站:"cin>>m_fstar;cout<<”终点站:"cin>>m_fdestination;cout<&
44、lt;”请输入起飞时间:格式:03:05"scanf("%d:%d",m_ftime,m_ftime+1);cout<<"票价:"cin>>m_fprice;cout<<”余票:"cin>>m_fseat;returntrue;/输出航班信息voidFlight:Display()(if(If_takeoff()(cout<<"I"<<setiosflags(ios:left)<<setw(10)<<m_fnum<<"I"<<setw(18)<<m_fstar<<"I"<<setw(18)<<m_fdestination<<"I"<<"本次航班已经起飞!"<<"I"<<"<<endl;else(cout<<"I"<<setiosflags(ios:left)<<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级护师真题及答案
- 2025年语文合格考试试题及答案
- 2025年阳泉历史中考试题及答案
- 2025年海洋科技前沿:海水提锂吸附分离技术发展动态分析
- 2025年企业招投标考试题及答案
- 2025年干部素养考试试题及答案
- 2025年社区卫生管理与服务综合考试题答案及解析
- 2025年外科护理常见操作规范考试答案及解析
- 2025年生物化学实验技巧操作模拟考试卷答案及解析
- 开发楼盘项目销售代理合同6篇
- 门机控制器调试手册
- YY/T 0339-2024呼吸道用吸引导管
- 围手术期高血压专家管理共识
- 外科患者疼痛护理与管理
- 租金延迟缴纳申请书
- DL-T 2563-2022 分布式能源自动发电控制与自动电压控制系统测试技术规范
- 食堂工作人员培训内容
- 骨折康复护理的常见问题和处理方法
- 泛影葡胺在消化道造影中的应用
- 2022年11月四川省凉山州中级人民法院逐级遴选4名法官笔试题库含答案解析
- 两江三镇说武汉智慧树知到答案章节测试2023年武汉纺织大学
评论
0/150
提交评论