收藏 分销(赏)

C--课程设计-民航售票系统.docx

上传人:胜**** 文档编号:2683422 上传时间:2024-06-04 格式:DOCX 页数:36 大小:155.35KB
下载 相关 举报
C--课程设计-民航售票系统.docx_第1页
第1页 / 共36页
C--课程设计-民航售票系统.docx_第2页
第2页 / 共36页
C--课程设计-民航售票系统.docx_第3页
第3页 / 共36页
C--课程设计-民航售票系统.docx_第4页
第4页 / 共36页
C--课程设计-民航售票系统.docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、C+面向对象课程设计民航订票系统 院 系: 计算机科学技术学院 班 级: 网络工程15-2 组 长: 组 员: 指导教师: 2016年06月14日目 录1概述11.1研究背景及意义11.2任务概述12需求分析22.1客户功能22.2管理员功能22.3操作方法23总体设计53.1功能结构图53.2模块分析53.2.1添加航线53.2.2查询航班53.2.3预订订票63.2.4退机票63.3数据结构设计6(一)、本系统要用到的库函数:6(二)、航空类的定义6(三)菜单类的定义8(四)、接口设计84详细设计94.1 算法设计说明94.2函数实现模块104.2.1 主控函数main()104.2.2客

2、户订票void book() 函数104.2.3客户退票void back() 函数114.2.4客户查询void query() 函数124.2.5管理员航班信息录入模块134.2.6文件写入void writetofile()函数144.2.7控制台的调用system()145程序调试与测试155.1颜色选择155.2利用递归调用实现返回上级菜单或者主菜单155.3倒计时退出界面15I5.4管理员权限限定165.5后台管理界面166总结177程序清单18II1概述本文采用C+作为前台开发工具,VC6.0作为程序代码的实现,旨在实现对现有飞机订票系统中遇到的各种情况进行良好的改进,是作为嵌入

3、式系统应用于机场的良好软件。1.1研究背景及意义随着时代的进步,社会分工的不断细化,各个行业的联系不断密切,人们出行越来越多,出行的方式也是百花齐放。作为空中的重要交通工具,飞机航空系统也在不断得到优化,其中重要的一项就是飞机航空订票系统。因此好的订票系统关系着人们的日常出行方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而艰巨的任务,需要我们认真去完成。1.2任务概述假定民航机场有n个航班,每个航班有一个航班号、确定的航线(出发地、目的地)、确定的飞行时间和飞机票总数,旅客数。该系统需实现下列服务:1. 航班信息录入功能;2. 航班信息浏览功能3. 查询航线(出发地、目的地查询)4

4、. 承办订票和退票业务2需求分析2.1客户功能1、航线查询功能:根据输入的起止城市信息查询航班,并显示其详细信息(起飞时间、到达时间、航班号、余票量)。2、客票预订功能:根据输入的航班号和数量预订机票,办理手续并进行信息核对。2.2管理员功能1、 添加功能:添加一个航班的信息,包括航班号、行程、起飞时间、到达时间、机型、全价、座位总数。2、将航班信息写入文件。2.3操作方法民航订票系统的主界面如下所示: * 中国民航欢迎您!* * 1、客户 * 2、管理员 * 3、退出程序运行 * (1) 、选择1进入普通用户菜单:* 您好,欢迎使用本系统办理订票业务* * 1、承办订票业务 * 2、承办退票

5、业务 * 3、查询航班 * * 4、退出程序的运行 *选择1进入订票模块:请输入您要订购的航班号n23dt请输入您要订购的机票数量2订票成功!选2进入退票模块:请输入日期: 航班:退票成功!选择3进入航班查询信息模块:请输入起始地点 北京请输入目的地点 南京出发地点目的地点起飞时间航班号 余票北京 南京 05:43 Bn23dt 100查找已完成按任意键返回菜单(2)、选择2进入管理员菜单:* 后台管理系统* * 1、录入航班信息 * 2、将数据写入文件 * 3、退出程序的运行 *请输入对应操作序号进行相应操作:选择1录入航班信息请输入您要添加的航班种数:请输入您要添加的航班信息:出发地点:南

6、京目的地点:北京起飞时间:时:5分:43航班号:Bn23dt星期几:四您输入的信息是:种数 出发地点目的地点起飞时间航班号 星期几 余票3 南京 北京 05:43 Bn23dt 四 100选择2将信息写入文件.选择3退出菜单.3总体设计3.1功能结构图根据需求分析,该系统的功能结构图如下所示:民航订票系统管理员模块客户模块将信息写入文件退机票预定客票查询航班添加航 班按航线查询图3-1系统结构示意图3.2模块分析3.2.1添加航线系统将提示用户输入新添加的航班的信息,插入在链表中。3.2.2查询航班首先由用户输入要查找的起始地点,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的航班

7、资料。3.2.3预订订票由用户输入航班号和订票数目,系统判断能满足用户需求则输出“订票成功”信息3.2.4退机票首先由用户输入要退的航班,然后调用删除函数,删除该航班的已订状态。3.3数据结构设计(一)、本系统要用到的库函数:#include#include#include #include (二)、航空类的定义 class Plane public: char start_place40;/起点char name40;/终点站名 char number10;/航班号 char week7;/星期几飞行 char day40;/日期 int left;/余票额 int n;/与数组flag一起

8、确定客户订票状态 public: int flag20;/订票状态数组,-1为预订票,1为已定票,0为初始化状态 Plane()/构造函数 name0=0; number0=0; week0=0; day0=0; left=M; n=0;/数组从0开始计数 for(int i=0;i20;i+) flagi=0; void init()/初始化每种飞机票 coutstart_place; coutname; coutnumber; coutweek; coutday; Plane();/析构函数 char *get_start_place()return start_place; /起点cha

9、r *getname() return name; /获得终点站名 char *getnumber() return number; /获得航班号 char *getweek() return week; /获得星期几飞行 char *getday() return day; /获得日期 int getleft() return left; /获得余票额 int getn() return n; /获得旅客数目 void inleft(int n) left=left+n; /余票额增加函数 void deleft(int n) left=left-n; /余票额减少函数 void peopl

10、e_in() n+;/旅客数目增加函数(三)菜单类的定义菜单类父类class menu public : int ch;/返回选择序号 int me_nu() /用于打印菜单,父类的菜单空实现;子菜单类(继承于父类菜单menu)class logo_menu:public menu;/主界面菜单class admin_menu:public menu;/管理员菜单class client_menu:public menu;/客户端菜单(四)、接口设计表2.1:函数列表函数名函数格式函数功能book()Void book()订票函数writetofile ()Void writetofile (

11、)写文件函数query()Void query()查询函数input()Void input()订票函数back()Void back()退票信息Writetofile()Void writetofile()写入文件menu()Int menu()界面函数Main()Int main()主函数4详细设计4.1 算法设计说明文件“航空售票管理系统v-1.0.cpp”中主函数流程图main()开始输出信息 1 2 31管理员客户13 3订票 2 3 42录入信息数据写入文件查询退票结束图4-1主控模块算法流程图4.2函数实现模块4.2.1 主控函数main()调用控制台,设置窗口颜色system(

12、“color 9e” );/控制台调用接着要求用户选择用户类型,按1为普通用户,按2位管理员,3退出,进入相应菜单后,同样选择对应序号,进行相应操作,进入管理员模式要输入密码进行验证。4.2.2客户订票void book() 函数调用此函数实现客户订票预订票数功能。此函数会首先要求用户所要订购的航班号和预订票数 cout请输入航班号:number; coutn; 之后用一个for循环 实现信息匹配,for(int i=0;iN;i+) if(strcmp(number,pli.number)=0)用num不为零标记匹配成功的状态当信息匹配后再判断票数是否足够: if(n0) 票数足够久则订票,

13、cout此航班有足够余票endl; pli.deleft(n);/余票减少 pli.people_in(); /旅客增加pli.flagpli.getn()=1; /状态改为已订票不满足则返回上级菜单,重新确定订票信息,不满足的状态用num为零进行标记;num=0;如果用户确实是要订票但余票不够,则询问用户是否进行预约,确定后将所需票数改为预约状态,用-1标记。cout是否需要预约endl; cout是(1) 否(2)ch;switch(ch)case 1:/确定预约pli.people_in();pli.flagpli.getn()=-1;/预约,用-1标记,表示预约状态break;case

14、 2:/不预约,退出break;default:/容错处理coutwrong input!endl;最后在函数结尾再调用自身实现返回上级菜单功能,book();/di递归调用4.2.3客户退票void back() 函数首先会要求客户输入要退订的票的日期和航班,coutday; coutnumber;然后程序进行信息匹配if(strcmp(day,pli.getday()=0&strcmp(number,pli.getnumber()=0)匹配成功则退票成功,同时系统票数增加pli.inleft(n);/该种飞机票增加,即已退票,接着查询客户的订票状态,/用户是否有预订票,若有,则为用户确定订

15、购此票。if(pli.flagj=-1)/客户是否为预定状态coutnu;if(nu=pli.getleft()/余票额是否满足要求cout此航班有票endl;pli.flagj=1;cout订票成功endl;pli.deleft(nu);for(int k=0;knu;k+)cout座位号sitnumber;cout余票额为pli.getleft()endl;elsecout没有预约订票!余票额为pli.getleft()endl;若在用户退票的过程中没有匹配到航班,则显示没有此票,清屏并用递归调用返回到上级菜单。4.2.4客户查询void query() 函数这个模块查询是按航线的起止点进

16、行查询。首先会要求用户输入要查询起止点,然后系统在所有的数据中进行匹配,for(i=0;i=N;i+)if(strcmp(name,pli.getname()=0&strcmp(start_place,pli.get_start_place()=0) 当信息匹配时,就会输出对应航班信息: cout航班号:pli.getnumber()endl; cout星期:pli.getweek()飞行endl; cout航班日期:pli.getday()endl; cout余票额:pli.getleft()endl; break; 4.2.5管理员航班信息录入模块想要进入管理员后台管理界面,必须输入管理员

17、密码,保证信息的安全性cout请输入密码: y; /读取密码if(strcmp(y,f)=0)/密码匹配就允许进入管理系统进入系统后按1 进行信息的录入工作,按 2 进行信息写入文件的操作,按 3退出管理系统。退出采用延时3秒倒计时退出方式Sleep(1000)/循环三次,即为3秒倒计时4.2.5.1 类成员void init()函数进行航班信息的录入工作 coutstart_place; coutname; coutnumber; coutweek; coutday; 4.2.5.2 void input() 函数进入模块,系统要求管理员输入需要录入的机票的种类数,之后调用写入 函数进行写入

18、for(int i=0;icount;i+) pli.init(); coutendl; 4.2.6文件写入void writetofile()函数定义输出文件流对象ofstream ofs(民航信息系统.dat,ios_base:in); 之后将各个对应信息写入文件4.2.7控制台的调用system()程序中用到的控制台命令:system(“cls”);/清屏用清屏实现窗口界面的切换工作system(“color 9e”);/窗口颜色设置5程序调试与测试5.1颜色选择经过之前的调试与搭配最终选择了使用蓝底黄字。5.2利用递归调用实现返回上级菜单或者主菜单因为考虑到用户的体验,程序设计最终要考

19、虑到用户,所以设计之初就考虑到当完成一项操作后返回上级菜单或者主菜单以便于用户接着进行操作5.3倒计时退出界面利用延时函数Sleep(); 实现暂停工作,最终实现倒计时退出5.4管理员权限限定进入管理员需要密码,否则没有权限5.5后台管理界面6总结该程序有许多模块组成,模块之间又存在各种包含或调用关系,如果用c语言来实现,虽然程序并不长,后期的调试和修改恐怕也会让人非常头疼,而c+中类的定义和使用使得各种模块相对更加独立,功能分担也更加鲜明,程序容易读,也容易调试和修改。此外,实际动手做一做,才发现c+这门语言有很多细节是当初复习笔试是没有注意到的,对c+的掌握程度和运用能力与编程前有了很大的

20、提高。在编程过程中,格式出错最多的是对类的成员函数进行定义时,常常忘记限定作用域,导致函数无法调用;而内容上出错最多的则是与指针有关的内容,以后编程时还应努力改正。还有好多功能没有完善,比如说管理员删除航线,管理员浏览全部的航线,还有用户查询航线时可根据航线,起止点,时间等信息进行查询。但是值得一提的是利用了递归调用实现返回上级菜单,主菜单的功能,提升了用户的体验。这一点作为程序的主编写者还是比较自豪,满意的。当然,程序还有好多的不足需要修正,毋庸置疑,程序还存在好多没有发现的bug有待修正。7程序清单#include #include#include#include using namesp

21、ace std;#define M 5/每种飞机票的总数目 #define N 20/飞机票的种类 #define frame_high 5#define frame_width 5class Plane public: char start_place40;/起点char name40;/终点站名 char number10;/航班号 char week7;/星期几飞行 char day40;/日期 int left;/余票额 int n;/与数组flag一起确定客户订票状态 public: int flag20;/订票状态数组,-1为预订票,1为已定票,0为初始化状态 Plane()/构造

22、函数 name0=0; number0=0; week0=0; day0=0; left=M; n=0;/数组从0开始计数 for(int i=0;i20;i+) flagi=0; void init()/初始化每种飞机票 coutstart_place; coutname; coutnumber; coutweek; coutday; Plane();/析构函数 char *get_start_place()return start_place;/起点 char *getname() return name;/获得终点站名 char *getnumber() return number;/获

23、得航班号 char *getweek() return week;/获得星期几飞行 char *getday() return day;/获得日期 int getleft() return left;/获得余票额 int getn() return n;/获得旅客数目 void inleft(int n) left=left+n;/余票额增加函数 void deleft(int n) left=left-n;/余票额减少函数 void people_in() n+;/旅客数目增加函数; class menu public : int ch; int me_nu();class logo_men

24、u:public menupublic:int me_nu()coutendl *- 中国民航欢迎您!-*endlendl; cout= endl; cout - * 1.客户 *-endlendl;cout - * 2.管理员 *-endlendl;cout - * 3:退出程序的运行 *-endlendl; cout= = ch; system(cls);return ch; ;class admin_menu:public menupublic:int me_nu()coutendl*- 后台管理系统 -*endlendl cout= endl; cout- * 1.录入航班信息 *-e

25、ndlendl; cout -* 2.将数据写入文件 *-endlendl; cout- * 3:退出程序的运行 *-endlendl; cout= endl; coutch;system(cls);return ch; ;class client_menu:public menupublic:int me_nu()coutendl您好,欢迎使用本系统办理订票业务endlendl;cout= endl; cout- * 1:承办订票业务 *-endlendl; cout- * 2:承办退票业务 *-endlendl; cout-* 3:查询航线 *-endlendl;cout- * 4:退出程

26、序的运行 *-endlendl; cout= endl; coutch; system(cls);return ch; Plane plN; void init(); void input();/初始化函数 void query();/查询函数 void book();/订票函数 void back();/退票函数 void writetofile(); int main() char f=2016sgs;system(color 9e);logo_menu l;while(1) int choice_logo; choice_logo=l.me_nu(); switch(choice_log

27、o) case 1: int choice_client; client_menu c; choice_client=c.me_nu(); switch(choice_client) case 1:coutendl* 您好,欢迎使用本系统办理订票业务*endlendl; cout= endl; book();break; case 2:coutendl* 您好,欢迎使用本系统办理订票业务*endlendl; cout= endl; back();break; case 3:coutendl* 您好,欢迎使用本系统办理订票业务endlendl;cout= endl; query();break;

28、 case 4:cout=1;i-)couti秒后退出客户订票系统endlendl;Sleep(1000);system(cls);coutendl-* 期待您的再次使用,谢谢,再见*endlendl;Sleep(2000);return 0;default:coutendlWrong Input!endl=1;i-)couti秒后返回主界面endlendl;Sleep(1000);system(cls);break;case 2:char y40;coutendl*进入后台管理系统*endlendl;cout= endl;cout请输入密码: y; /读取密码if(strcmp(y,f)=0

29、)system(cls); int choice_admin; admin_menu a; choice_admin=a.me_nu(); switch(choice_admin) case 1: input(); break; case 2: writetofile(); break; case 3: for(int i=3;i=1;i-)couti秒后退出后台管理系统endlendl;Sleep(1000);return 0; default: coutwrong input!endl; else cout输入密码错误!您没有操作权限!endl=1;i-) couti秒后返回主界面endl=1;i-) couti秒后退出系统endlendl; Sleep(1000); return 0;break;default:coutwrong input!endlendl将要返回主菜单。endl=1;i-) couti秒后返回主菜单endlendl; Sleep(1000);Sleep(1000);system(cls); return 0; void input() int count;cout请输入您要录入的机票种数:endlcount;for(int i=0;icount;i+) p

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服