版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计课程设计报告题目:民 航 订 票 系 统专业班级: 学生学号: 学生姓名: 指导教师: 目录1、需求分析21.1客户功能:21.2管理员功能22、系统设计32.1、功能结构图322、模块分析32.2.1. 添加航线32.2.2. 显示航班32.2.3. 查询航班32.2.4. 删除航班42.2.5. 预订订票42.3、界面设计43、知识点的运用84、系统实施84.1、主界面84.2、管理员界面94.3、客户界面115、不足及改进116、心得体会127、源代码12- 2 -1、需求分析为方便民航公司对航班信息的管理和订票的自动化,特设计此系统。由于c+程序的可移植性和可维护性较强
2、,且数据比较安全,所以采用c+进行设计。根据客户需求,本系统共两个角色:客户、管理员。客户的任务是能够查询航线信息并进行客票预定,其中的航线信息的查询可以根据航班号和航班的始发地与目的地,管理员的主要任务是对航班信息进行添加、删除、查询、显示,具体功能如下所示:1.1客户功能:(1)、航线查询功能:根据输入的起止城市信息查询航班,并显示其详细信息(行程、起飞时间、到达时间、航班号、机型、全价、座位总数、余票量) (2)、客票预订功能:根据输入的航班号和数量预订机票,办理手续并进行信息核对1.2管理员功能(1)、添加功能:添加一个航班的信息,包括航班号、行程、起飞时间、到达时间、机型、全价、座位
3、总数,主要用到双链表的来建立一个关于航班信息的文件。(2)、删除功能:按航班号对一个航班的信息进行删除,从练表头进行查找,查找出相应的航班的信息,并且将其从链表中删除。(3)、显示功能:显示所有航班的详细信息,从练表头进行查找,查找出相应的航班的信息,并将对应的航班信息全部显示出来。(4)、航线查询功能:根据输入的起止城市信息查询航班,并显示其详细信息(行程、起飞时间、到达时间、航班号、机型、全价、座位总数、余票量)2、系统设计2.1、功能结构图根据需求分析,此系统的功能结构图如下所示:民航订票系统管理员模块客户模块添加航班删除航班查询航班显示航班查询航班预订客票按航班号查询按航线查询按航班号
4、查询按航线查询22、模块分析2.2.1. 添加航线系统将提示用户输入新添加的航班的信息,插入在链表中2.2.2. 显示航班显示模块将输出航班的详细信息。2.2.3. 查询航班首先由用户输入要查找的航班号或起始地点,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的航班资料。2.2.4. 删除航班首先由用户输入要删除的航班号,然后调用删除函数,删除该航班的资料。2.2.5. 预订订票 由用户输入航班号和订票数目,系统判断能满足用户需求则输出“订票成功”信息。2.3、界面设计请选择您的帐户类型:1、管理员账户2、普通用户帐户请输入序号并按回车确认(1)、选择1进入管理员菜单:管理员您好,
5、请选择您要进行的操作1、添加一个航班2、删除一个航班3、查询航班信息(按航班号)4、查询航班信息(按航线)5、显示全部信息请输入序号并按回车确认执行功能,输入n并确认退出选择1进入添加信息模块:请输入您要添加的航班信息:出发地点: 南京目的地点: 北京起飞时间:时:5分:43到达时间:时:7分:50航班号: bn23dt机型: 747全价: 200座位总数: 100您输入的信息是: 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 南京 北京 05:43 07:50 bn23dt 747 200 100 100 要继续添加请输入y并回车确认,否则输入n并确认回到菜
6、单选择2进入删除信息模块:请输入您要删除的航班号n23dt航班bn23dt已成功删除要继续删除 请输入y并回车确认,否则输入n并确认回到菜单选择3进入按航班号查询信息模块请输入您要查找的航班号n23dt 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 北京 南京 05:43 07:50 bn23dt 737 150 100 100查找已完成按任意键返回菜单选择4进入按航程查询信息模块:请输入起始地点北京请输入目的地点南京 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 北京 南京 05:43 07:50 bn23dt 737 15
7、0 100 100查找已完成按任意键返回菜单选择5进入显示全部信息模块:全部航班信息 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 nanjing beijing 05:43 06:54 bn23dt 747 200 100 100 北京 南京 05:43 07:50 bn23dt 737 150 100 100按任意键返回菜单(2)、选择2进入普通用户菜单:用户您好,请选择您要进行的操作1、查询航班信息(按航班号)2、查询航班信息(按航线)3、订购机票请输入序号并按回车确认执行功能,输入n并确认退出选择1进入按航班号查询信息模块请输入您要查找的航班号n23d
8、t 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 北京 南京 05:43 07:50 bn23dt 737 150 100 100选择2进入按航程查询信息模块:请输入起始地点北京请输入目的地点南京 出发地点 目的地点 起飞时间 到达时间 航班号 机型 全价 座位总数 剩余票数 北京 南京 05:43 07:50 bn23dt 737 150 100 100查找已完成按任意键返回菜单选择3进入订票模块:请输入您要订购的航班号n23dt请输入您要订购的机票数量2订票成功!3、知识点的运用该系统的设计主要运用到的知识点主要包括:类的定义,类的公有继承,重载的运用,友
9、元函数,双链表的建立和删除,输入流和输出流的运用。使用类的公有继承可以继承基类的除构造函数析构函数以外的全部成员信息,有利于代码的重用性,之所以使用类的公用继承是因为派生类的对象可以访问基类的函数或者数据类型(不是私有的数据类型)。 使用运算符的重载可以是可以是函数的实现变得更加的简洁和工整。因为我们定义的运算符需要访问到类中的私有的数据类型 ,所以把重载定义为类中的友元函数来适度的破坏类的封装性,使类外的其他函数也可以访问到类中的数据成员。 程序中使用到流,可以使文件的保存的读取变得更加的方便。使用输出流可以支持磁盘文件输出,使用输入流可以支持磁盘文件的输入。4、系统实施4.1、主界面4.2
10、、管理员界面选择1选择2选择3选择4选择54.3、客户界面选择1选择2选择35、不足及改进这个程序有许多模块组成,模块之间又存在各种包含或调用关系,如果用c语言来实现,虽然程序并不长,后期的调试和修改恐怕也会让人非常头疼,而c+中类的定义和使用使得各种模块相对更加独立,功能分担也更加鲜明,程序容易读,也容易调试和修改。此外,实际动手做一做,才发现c+这门语言有很多细节是当初复习笔试是没有注意到的,对c+的掌握程度和运用能力与编程前有了很大的提高。在编程过程中,格式出错最多的是对类的成员函数进行定义时,常常忘记限定作用域,导致函数无法调用;而内容上出错最多的则是与指针有关的内容,以后编程时还应努
11、力改正。该软件是在dos环境下运行的,不能够实现界面的可视化,使得客户和管理员的操作变得不美观和复杂化。希望后期的可视化的学习可以使该软件变得更加的完善,并且具有实际的可操作性。6、心得体会由于对c+这门语言掌握尚未熟练,编程进度较慢,因此没有时间实现一些功能,比如登录密码的控制,订票人信息的采集,图形界面等等,不过经过这次的锻炼,相信以后编程会越来越完善。通过本次课程设计的锻炼使我们小组成员对面向对象的编程有了更加深刻的理解,也使我们可以更加熟练的运用面向对象的思想来解决现实生活中的问题。 面向对象的程序设计把各个功能分为各种模块,每个模块之间不仅相互独立而且在功能上可以实现相互之间的调用。
12、各个模块之间的联系主要是通过类之间的继承来实现的。面向对象的主要的优点就是它的封装性,类通过一个简单的外部接口与外界发生联系,这样就很好的隐藏了对象的内部的细节。还有就是类的继承性,继承可以简化人们外界事物的认识,而且可以实现代码的复用性,使软件的开发变得更加方便。本次的课程设计让我们体会到了,对于问题的分析是解决问题的第一步,只有充分的考虑到自身和客户的需求才能开发出性能良好的软件。7、源代码#include #include #include #include #include #include class time private:int hour; int minute; public
13、:int gethour();int getminute(); friend istream &operator (istream &in,time &time); friend ostream &operator (istream &in,time &time) couttime.hour;while(time.hour23|time.hour0)cout输入错误,请重新输入endl;couttime.hour;couttime.minute;while(time.minute59|time.minute0)cout输入错误,请重新输入endl;couttime.minute;return
14、in;ostream &operator (ostream &out,time &time) if(time.hour10&time.minute10)cout0time.hour:0time.minute;else if(time.hour10)cout0time.hour:time.minute;else if(time.minute10)couttime.hour:0time.minute;elsecouttime.hour:(istream &in,flight &flight); friend ostream & operator (istream &in,flight &fligh
15、t) cout请输入您要添加的航班信息:endl;coutflight.start;coutflight.destination;cout起飞时间:flight.takeoff;cout到达时间:flight.descent;while(flight.takeoff.gethour()=flight.descent.gethour()|(flight.takeoff.gethour()=flight.descent.gethour()&flight.takeoff.getminute()=flight.descent.getminute()cout时间输入错误,请重新输入:endl;coutf
16、light.takeoff;coutflight.descent;coutflight.flightnumber;coutflight.type;coutflight.price;coutflight.seats;flight.ticketleft=flight.seats; return in;ostream & operator (ostream &out,flight &flight) outsetw(10)flight.startsetw(10)flight.destination flight.takeoff flight.descentsetw(8)flight.flightnum
17、bersetw(6)flight.typesetw(5)flight.pricesetw(10)flight.seatssetw(10)flight.ticketleftnext=tail;tail-previous=head;head-previous=tail-next=null;void flightlist:add() flight *p;p=new flight;tail-previous-next=p;p-previous=tail-previous;p-next=tail;tail-previous=p;cin*p;cout您输入的信息是:next;int sign=0;char
18、 number7;cout请输入您要删除的航班号number;p-previous=head;while(p!=tail)if(!strcmp(p-getflightnumber(),number)p-previous-next=p-next;delete p;cout航班number已成功删除previous=p;p=p-next;if(sign=0)cout您要删除的信息不存在endl;void flightlist:display(flight *result) coutsetw(10)出发地点setw(10)目的地点setw(10)起飞时间setw(10)到达时间setw(8)航班号s
19、etw(6)机型setw(5)全价setw(10)座位总数setw(10)剩余票数endl;cout*resultnext;char s30,d30;cout请输入起始地点s;cout请输入目的地点d;while(p!=tail)if(!strcmp(p-getstart(),s)if(!strcmp(p-getdestination(),d)display(p);+sign;p=p-next;return sign;void flightlist:bespeak()flight *p=head-next;char f7;int n;cout请输入您要订购的航班号f;cout请输入您要订购的机
20、票数量n;while(p!=tail)if(!strcmp(p-getflightnumber(),f)break;p=p-next;if(p=tail)cout您要订购的航班不存在,请查询其他合适的航班getticketleft()=0)cout您要订购的航班票已售完,请查询其他合适的航班getticketleft()-n0)cout剩余票数不能满足您的要求,请重新操作endl;elsecout订票成功!setticketleft(p-getticketleft()-n);int flightlist:findbyflightnumber() int sign=0;flight *p=hea
21、d-next;char f7;cout请输入您要查找的航班号f;while(p!=tail)if(!strcmp(p-getflightnumber(),f)display(p);+sign;p=p-next;return sign;void flightlist:displayall() flight *p;p=head-next;cout全部航班信息endl;coutsetw(10)出发地点setw(10)目的地点setw(10)起飞时间setw(10)到达时间setw(8)航班号setw(6)机型setw(5)全价setw(10)座位总数setw(10)剩余票数endl;while(p!
22、=tail)coutnext;cout按任意键返回菜单next;outputfile.open(flight.dat,ios:binary);if(!outputfile)cout文件打开失败!next;cout保存文件成功endl;outputfile.close();void flightlist:load() ifstream inputfile;flight *p;inputfile.open(flight.dat,ios:binary);if(!inputfile) cout文件打开失败!previous-next=p;p-previous=tail-previous;p-next=
23、tail;tail-previous=p;p=new flight;inputfile.read(char *)p,sizeof(*p);inputfile.close();void flightlist:destroy()flight *p=head-next,*q=p-next;while(p!=tail)delete p;p=q;q=p-next;flightlist:flightlist() delete head;delete tail;class menupublic:flightlist list;public:void logon();void administrator();
24、void user();void menu:logon()char choice= ;cout *endl;cout 欢迎使用民航订票系统endl;cout *endl;while(choice!=1&choice!=2)coutendl;coutendl;cout 请选择您的帐户类型:endl;cout 1、管理员账户endl;cout 2、普通用户帐户endl;coutendl;cout请输入序号并按回车确认choice;if(choice=1)administrator();break;if(choice=2)user();break;break;void menu:user()char
25、 adchoice;char judge=y;coutendl;coutendl;cout用户您好,请选择您要进行的操作endl;cout1、查询航班信息(按航班号)endl;cout2、查询航班信息(按航线)endl;cout3、订购机票endl;cout请输入序号并按回车确认执行功能,输入n并确认退出endl;cin.ignore();cin.get(adchoice);while(adchoice=1|adchoice=2|adchoice=3|adchoice=4|adchoice=5)if(adchoice=1)coutendl;if(list.findbyflightnumber(
26、)cout查找已完成endl;cout按任意键返回菜单endl;getch();elsecout您输入的航班不存在endl;cout按任意键返回菜单endl;getch();if(adchoice=2)coutendl;if(list.findbyflight()cout查找已完成endl;cout按任意键返回菜单endl;getch();elsecout您输入的航班不存在endl;cout按任意键返回菜单endl;getch();if(adchoice=3)list.bespeak();coutendl;coutendl;cout请选择您要进行的操作endl;cout1、查询航班信息(按航班
27、号)endl;cout2、查询航班信息(按航线)endl;cout3、订购机票endl;cout请输入序号并按回车确认执行功能,输入其他字符并确认退出endl;cin.ignore();cin.get(adchoice);void menu:administrator()char adchoice;char judge=y;coutendl;coutendl;cout管理员您好,请选择您要进行的操作endl;cout1、添加一个航班endl;cout2、删除一个航班endl;cout3、查询航班信息(按航班号)endl;cout4、查询航班信息(按航线)endl;cout5、显示航班的全部信息endl;cout请输入序号并按回车确认执行功能,输入n并确认退出endl;cin.ignore();cin.get(adchoice);wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 31511:2024 EN Requirements for contactless delivery services in cold chain logistics
- 淮阴师范学院《数字电子技术》2021-2022学年期末试卷
- 淮阴师范学院《历史学专业导论》2021-2022学年第一学期期末试卷
- 淮阴师范学院《武术A》2022-2023学年第一学期期末试卷
- 淮阴工学院《设计管理》2023-2024学年第一学期期末试卷
- DB4403T459-2024研发与标准化同步企业评价规范
- 常见客诉处理
- 托儿所服务的知识传授与认知发展考核试卷
- 以倾听为话题的话题作文600字
- 生物识别技术在空间探索中的应用考核试卷
- 民间借贷利息计算表
- 2024-2030年中国裸眼3D行业市场全景调研与竞争格局分析报告
- 2024-2030年中国葡萄酒行业市场发展趋势与前景展望战略分析报告
- 2024年统编版小学六年级《道德与法治》上册第四单元 法律保护我们健康成长 9.《知法守法 依法维权》 第一课时 课件
- 信息技术与学科教学融合课教学设计表
- 期中测试卷-2024-2025学年语文六年级上册统编版
- 【对民法中正当防卫的思考(论文)6800字】
- 喷涂设备租用合同模板
- 终极战略规划指南:深度剖析Cross SWOT分析、市场洞察与内部能力优化的综合行动方案
- 中国偏头痛诊治指南(第一版)2023解读
- 混凝土结构施工图平面整体表示方法制图规则和详图
评论
0/150
提交评论