分享
分销 收藏 举报 申诉 / 36
播放页_导航下方通栏广告

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

  • 上传人:胜****
  • 文档编号:2683422
  • 上传时间:2024-06-04
  • 格式:DOCX
  • 页数:36
  • 大小:155.35KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    课程设计 民航 售票 系统
    资源描述:
    C++面向对象课程设计 民航订票系统 院 系: 计算机科学技术学院 班 级: 网络工程15-2 组 长: 组 员: 指导教师: 2016年06月14日 目 录 1概述 1 1.1研究背景及意义 1 1.2任务概述 1 2需求分析 2 2.1客户功能 2 2.2管理员功能 2 2.3操作方法 2 3总体设计 5 3.1功能结构图 5 3.2模块分析 5 3.2.1添加航线 5 3.2.2查询航班  5 3.2.3预订订票  6 3.2.4退机票 6 3.3数据结构设计 6 (一)、本系统要用到的库函数: 6 (二)、航空类的定义 6 (三)菜单类的定义 8 (四)、接口设计 8 4详细设计 9 4.1 算法设计说明  9 4.2函数实现模块 10 4.2.1 主控函数main() 10 4.2.2客户订票void book() 函数 10 4.2.3客户退票void back() 函数 11 4.2.4客户查询void query() 函数 12 4.2.5管理员航班信息录入模块 13 4.2.6文件写入void writetofile()函数 14 4.2.7控制台的调用system() 14 5程序调试与测试 15 5.1颜色选择 15 5.2利用递归调用实现返回上级菜单或者主菜单 15 5.3倒计时退出界面 15 I 5.4管理员权限限定 16 5.5后台管理界面 16 6总结 17 7程序清单 18 II 1概述 本文采用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_place[40];//起点 char name[40];//终点站名 char number[10];//航班号 char week[7];//星期几飞行 char day[40];//日期 int left;//余票额 int n;//与数组flag一起确定客户订票状态 public: int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态 Plane()//构造函数 { name[0]='\0'; number[0]='\0'; week[0]='\0'; day[0]='\0'; left=M; n=0;//数组从0开始计数 for(int i=0;i<20;i++) flag[i]=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 3 1 管理员 客户 1 3 3 订票 2 3 4 2 录入信息 数据写入文件 查询 退票 结束 图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,pl[i].number)==0) 用num不为零标记匹配成功的状态 当信息匹配后再判断票数是否足够: if(n<=pl[i].getleft()&&n>0) 票数足够久则订票, cout<<"此航班有足够余票"<<endl; pl[i].deleft(n);//余票减少 pl[i].people_in(); //旅客增加 pl[i].flag[pl[i].getn()]=1; //状态改为已订票 不满足则返回上级菜单,重新确定订票信息,不满足的状态用num为零进行标记; num==0; 如果用户确实是要订票但余票不够,则询问用户是否进行预约,确定后将所需票数改为预约状态,用-1标记。 cout<<"是否需要预约"<<endl; cout<<"是(1) 否(2)"<<endl; cin>>ch; switch(ch) { case 1://确定预约 pl[i].people_in(); pl[i].flag[pl[i].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,pl[i].getday())==0&&strcmp(number,pl[i].getnumber())==0) 匹配成功则退票成功,同时系统票数增加 pl[i].inleft(n);//该种飞机票增加,即已退票,接着查询客户的订票状态, //用户是否有预订票,若有,则为用户确定订购此票。 if(pl[i].flag[j]==-1)//客户是否为预定状态 { cout<<"有预约订票,请输入订票数额:"; cin>>nu; if(nu<=pl[i].getleft())//余票额是否满足要求 { cout<<"此航班有票"<<endl; pl[i].flag[j]=1; cout<<"订票成功"<<endl; pl[i].deleft(nu); for(int k=0;k<nu;k++) { cout<<"座位号"<<" "; cin>>sitnumber; } cout<<"余票额为"<<pl[i].getleft()<<endl; } } else cout<<"没有预约订票!"<<"余票额为"<<pl[i].getleft()<<endl; } 若在用户退票的过程中没有匹配到航班,则显示没有此票,清屏并用递归调用返回到上级菜单。 4.2.4客户查询void query() 函数 这个模块查询是按航线的起止点进行查询。 首先会要求用户输入要查询起止点,然后系统在所有的数据中进行匹配, for(i=0;i<=N;i++) if(strcmp(name,pl[i].getname())==0&&strcmp(start_place,pl[i].get_start_place())==0) 当信息匹配时,就会输出对应航班信息: cout<<"航班号:"<<pl[i].getnumber()<<endl; cout<<"星期:"<<pl[i].getweek()<<"飞行"<<endl; cout<<"航班日期:"<<pl[i].getday()<<endl; cout<<"余票额:"<<pl[i].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++) { pl[i].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 5 class Plane { public: char start_place[40];//起点 char name[40];//终点站名 char number[10];//航班号 char week[7];//星期几飞行 char day[40];//日期 int left;//余票额 int n;//与数组flag一起确定客户订票状态 public: int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态 Plane()//构造函数 { name[0]='\0'; number[0]='\0'; week[0]='\0'; day[0]='\0'; left=M; n=0;//数组从0开始计数 for(int i=0;i<20;i++) flag[i]=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 menu { public: 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 menu { public: 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 menu { public: 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 pl[N]; 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 y[40]; 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
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:C--课程设计-民航售票系统.docx
    链接地址:https://www.zixin.com.cn/doc/2683422.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork