欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:88908024       资源大小:166.52KB        全文页数:37页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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客户订票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作为程序代码的实现,旨在实现对现有飞机订票系统中遇到的各种情况进行良好的改进,是作为嵌入式系统应用于机场的良好软件。1.1研究背景及意义随着时代的进步,社会分工的不断细化,各个行业的联系不断密切,人们出行越来越多,出行的方式也是百花齐放。作为空中的重要交通工具,飞机航空系统也在不断得到优化,其中重要的一项就是飞机航空订票系统。因此好的订票系统关系着人们的日常出行方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而艰巨的任务,需要我们认真去完成。1.2任务概述假定民航机场有n个航班,每个航班有一个航班号、确定的航线(出发地、目的地)、确定的飞行时间和飞机票总数,旅客数。该系统需实现下列服务:1. 航班信息录入功能;2. 航班信息浏览功能3. 查询航线(出发地、目的地查询)4. 承办订票和退票业务2需求分析2.1客户功能1、航线查询功能: 根据输入的起止城市信息查询航班,并显示其详细信息(起飞时间、到达时间、航班号、余票量)。2、客票预订功能:  根据输入的航班号和数量预订机票,办理手续并进行信息核对。2.2管理员功能1、 添加功能:  添加一个航班的信息,包括航班号、行程、起飞时间、到达时间、机型、全价、座位总数 。2、将航班信息写入文件。2.3操作方法民航订票系统的主界面如下所示:  * 中国民航欢迎您!*       * 1、客户 * 2、管理员 * 3、退出程序运行 *  (1) 、选择1进入普通用户菜单:  * 您好,欢迎使用本系统办理订票业务*  * 1、承办订票业务 * 2、承办退票业务 * 3、查询航班 * * 4、退出程序的运行 * 选择1进入订票模块:  请输入您要订购的航班号 n23dt 请输入您要订购的机票数量 2订票成功!选2进入退票模块:请输入日期: 航班:退票成功!选择3进入航班查询信息模块:  请输入起始地点  北京 请输入目的地点  南京 出发地点  目的地点  起飞时间    航班号 余票北京       南京      05:43      Bn23dt      100查找已完成 按任意键返回菜单(2)、选择2进入管理员菜单:* 后台管理系统* * 1、录入航班信息 * 2、将数据写入文件 * 3、退出程序的运行 * 请输入对应操作序号进行相应操作:选择1录入航班信息请输入您要添加的航班种数:请输入您要添加的航班信息: 出发地点:       南京 目的地点:       北京 起飞时间: 时:5 分:43航班号: Bn23dt 星期几:四您输入的信息是: 种数 出发地点  目的地点  起飞时间    航班号    星期几 余票3 南京       北京      05:43     Bn23dt    四 100选择2将信息写入文件.选择3退出菜单.3总体设计3.1功能结构图根据需求分析,该系统的功能结构图如下所示:民航订票系统管理员模块客户模块将信息写入文件退机票预定客票查询航班添加航 班按航线查询图3-1系统结构示意图3.2模块分析3.2.1添加航线系统将提示用户输入新添加的航班的信息,插入在链表中。3.2.2查询航班 首先由用户输入要查找的起始地点,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的航班资料。 3.2.3预订订票   由用户输入航班号和订票数目,系统判断能满足用户需求则输出“订票成功”信息3.2.4退机票首先由用户输入要退的航班,然后调用删除函数,删除该航班的已订状态。3.3数据结构设计(一)、本系统要用到的库函数:#include<iostream>#include<fstream>#include<string> #include<windows.h> (二)、航空类的定义 class 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()/构造函数 name0='0' number0='0' week0='0' day0='0' left=M; n=0;/数组从0开始计数 for(int i=0;i<20;i+) flagi=0; void init()/初始化每种飞机票 cout<<"请输入起点:" cin>>start_place; cout<<"请输入终点:" cin>>name; cout<<"请输入航班号:" cin>>number; cout<<"请输入星期几飞行:" cin>>week; cout<<"请输入航班的日期:" cin>>day; Plane();/析构函数 char *get_start_place()return start_place; /起点char *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 people_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 ()写文件函数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(“color 9e” );/控制台调用接着要求用户选择用户类型,按1为普通用户,按2位管理员,3退出,进入相应菜单后,同样选择对应序号,进行相应操作,进入管理员模式要输入密码进行验证。4.2.2客户订票void book() 函数调用此函数实现客户订票预订票数功能。此函数会首先要求用户所要订购的航班号和预订票数 cout<<"请输入航班号:"<<endl; cin>>number; cout<<"请输入订票数额:" cin>>n; 之后用一个for循环 实现信息匹配,for(int i=0;i<N;i+) if(strcmp(number,pli.number)=0)用num不为零标记匹配成功的状态当信息匹配后再判断票数是否足够: if(n<=pli.getleft()&&n>0) 票数足够久则订票,cout<<"此航班有足够余票"<<endl; pli.deleft(n);/余票减少 pli.people_in(); /旅客增加pli.flagpli.getn()=1; /状态改为已订票不满足则返回上级菜单,重新确定订票信息,不满足的状态用num为零进行标记;num=0;如果用户确实是要订票但余票不够,则询问用户是否进行预约,确定后将所需票数改为预约状态,用-1标记。cout<<"是否需要预约"<<endl; cout<<"是(1) 否(2)"<<endl;cin>>ch;switch(ch)case 1:/确定预约pli.people_in();pli.flagpli.getn()=-1;/预约,用-1标记,表示预约状态break;case 2:/不预约,退出break;default:/容错处理cout<<"wrong input!"<<endl;最后在函数结尾再调用自身实现返回上级菜单功能,book();/di递归调用4.2.3客户退票void back() 函数首先会要求客户输入要退订的票的日期和航班,cout<<"请输入日期:" cin>>day; cout<<"请输入航班:" cin>>number;然后程序进行信息匹配if(strcmp(day,pli.getday()=0&&strcmp(number,pli.getnumber()=0)匹配成功则退票成功,同时系统票数增加pli.inleft(n);/该种飞机票增加,即已退票,接着查询客户的订票状态,/用户是否有预订票,若有,则为用户确定订购此票。if(pli.flagj=-1)/客户是否为预定状态cout<<"有预约订票,请输入订票数额:"cin>>nu;if(nu<=pli.getleft()/余票额是否满足要求cout<<"此航班有票"<<endl;pli.flagj=1;cout<<"订票成功"<<endl;pli.deleft(nu);for(int k=0;k<nu;k+)cout<<"座位号"<<" "cin>>sitnumber;cout<<"余票额为"<<pli.getleft()<<endl;elsecout<<"没有预约订票!"<<"余票额为"<<pli.getleft()<<endl;若在用户退票的过程中没有匹配到航班,则显示没有此票,清屏并用递归调用返回到上级菜单。4.2.4客户查询void query() 函数这个模块查询是按航线的起止点进行查询。首先会要求用户输入要查询起止点,然后系统在所有的数据中进行匹配,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管理员航班信息录入模块想要进入管理员后台管理界面,必须输入管理员密码,保证信息的安全性cout<<"请输入密码: "<<endl;cin>>y; /读取密码if(strcmp(y,f)=0)/密码匹配就允许进入管理系统进入系统后按1 进行信息的录入工作,按 2 进行信息写入文件的操作,按 3退出管理系统。退出采用延时3秒倒计时退出方式Sleep(1000)/循环三次,即为3秒倒计时4.2.5.1 类成员void init()函数进行航班信息的录入工作 cout<<"请输入起点:" cin>>start_place; cout<<"请输入终点:" cin>>name; cout<<"请输入航班号:" cin>>number; cout<<"请输入星期几飞行:" cin>>week; cout<<"请输入航班的日期:" cin>>day; 4.2.5.2 void input() 函数进入模块,系统要求管理员输入需要录入的机票的种类数,之后调用写入 函数进行写入for(int i=0;i<count;i+) pli.init(); cout<<endl; 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利用递归调用实现返回上级菜单或者主菜单因为考虑到用户的体验,程序设计最终要考虑到用户,所以设计之初就考虑到当完成一项操作后返回上级菜单或者主菜单以便于用户接着进行操作5.3倒计时退出界面利用延时函数Sleep(); 实现暂停工作,最终实现倒计时退出5.4管理员权限限定进入管理员需要密码,否则没有权限5.5后台管理界面6总结该程序有许多模块组成,模块之间又存在各种包含或调用关系,如果用c语言来实现,虽然程序并不长,后期的调试和修改恐怕也会让人非常头疼,而c+中类的定义和使用使得各种模块相对更加独立,功能分担也更加鲜明,程序容易读,也容易调试和修改。此外,实际动手做一做,才发现c+这门语言有很多细节是当初复习笔试是没有注意到的,对c+的掌握程度和运用能力与编程前有了很大的提高。 在编程过程中,格式出错最多的是对类的成员函数进行定义时,常常忘记限定作用域,导致函数无法调用;而内容上出错最多的则是与指针有关的内容,以后编程时还应努力改正。还有好多功能没有完善,比如说管理员删除航线,管理员浏览全部的航线,还有用户查询航线时可根据航线,起止点,时间等信息进行查询。但是值得一提的是利用了递归调用实现返回上级菜单,主菜单的功能,提升了用户的体验。这一点作为程序的主编写者还是比较自豪,满意的。当然,程序还有好多的不足需要修正,毋庸置疑,程序还存在好多没有发现的bug有待修正。 7程序清单#include<string> #include<iostream>#include<fstream>#include<windows.h> using namespace 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()/构造函数 name0='0' number0='0' week0='0' day0='0' left=M; n=0;/数组从0开始计数 for(int i=0;i<20;i+) flagi=0; void init()/初始化每种飞机票 cout<<"请输入起点:" cin>>start_place; cout<<"请输入终点:" cin>>name; cout<<"请输入航班号:" cin>>number; cout<<"请输入星期几飞行:" cin>>week; cout<<"请输入航班的日期:" cin>>day; Plane();/析构函数 char *get_start_place()return start_place;/起点 char *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 people_in() n+;/旅客数目增加函数; class menu public : int ch; int me_nu();class logo_menu:public menupublic:int me_nu()cout<<endl<<" *- 中国民航欢迎您!-*"<<endl<<endl; cout<<"= "<<endl; cout<<" - * 1.客户 *-"<<endl<<endl;cout<<" - * 2.管理员 *-"<<endl<<endl;cout<<" - * 3:退出程序的运行 *-"<<endl<<endl; cout<<"= = "<<endl;cin>>ch; system("cls");return ch; ;class admin_menu:public menupublic:int me_nu()cout<<endl<<"*- 后台管理系统 -*"<<endl<<endl cout<<"= "<<endl; cout<<"- * 1.录入航班信息 *-"<<endl<<endl; cout<<" -* 2.将数据写入文件 *-"<<endl<<endl; cout<<"- * 3:退出程序的运行 *-"<<endl<<endl; cout<<"= "<<endl; cout<<"请输入对应操作序号进行相应操作:"cin>>ch;system("cls");return ch; ;class client_menu:public menupublic:int me_nu()cout<<endl<<"您好,欢迎使用本系统办理订票业务"<<endl<<endl;cout<<"= "<<endl; cout<<"- * 1:承办订票业务 *-"<<endl<<endl; cout<<"- * 2:承办退票业务 *-"<<endl<<endl; cout<<"-* 3:查询航线 *-"<<endl<<endl;cout<<"- * 4:退出程序的运行 *-"<<endl<<endl; cout<<"= "<<endl; cout<<"请输入对应操作序号进行相应操作:"cin>>ch; 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_logo) case 1: int choice_client; client_menu c; choice_client=c.me_nu(); switch(choice_client) case 1:cout<<endl<<"* 您好,欢迎使用本系统办理订票业务*"<<endl<<endl; cout<<"= "<<endl; book();break; case 2:cout<<endl<<"* 您好,欢迎使用本系统办理订票业务*"<<endl<<endl; cout<<"= "<<endl; back();break; case 3:cout<<endl<<"* 您好,欢迎使用本系统办理订票业务"<<endl<<endl;cout<<"= "<<endl; query();break; case 4:cout<<endl;for(int i=3;i>=1;i-)cout<<i<<"秒后退出客户订票系统"<<endl<<endl;Sleep(1000);system("cls");cout<<endl<<"-* 期待您的再次使用,谢谢,再见*"<<endl<<endl;Sleep(2000);return 0;default:cout<<endl<<"Wrong Input!"<<endl<<endl;for(int i=3;i>=1;i-)cout<<i<<"秒后返回主界面"<<endl<<endl;Sleep(1000);system("cls");break;case 2:char y40;cout<<endl<<"*进入后台管理系统*"<<endl<<endl;cout<<"= "<<endl;cout<<"请输入密码: "<<endl;cin>>y; /读取密码if(strcmp(y,f)=0)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-)cout<<i<<"秒后退出后台管理系统"<<endl<<endl;Sleep(1000);return 0; default: cout<<"wrong input!"<<endl; else cout<<"输入密码错误!您没有操作权限!"<<endl<<endl; for(int i=3;i>=1;i-) cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); system("cls"); break;case 3: for(int i=3;i>=1;i-) cout<<i<<"秒后退出系统"<<endl<<endl; Sleep(1000); return 0;break;default:cout<<"wrong input!"<<endl<<endl<<"将要返回主菜单。"<<endl<<endl;for(int i=3;i>=1;i-) cout<<i<<"秒后返回主菜单"<<endl<<endl; Sleep(1000);Sleep(1000);system("cls"); return 0; void input() int count;cout<<"请输入您要录入的机票种数:"<<endl<<endl; cin>>count;for(int i=0;i<count;i+) p

    注意事项

    本文(C++课程设计-民航售票系统.docx)为本站会员(教****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开