1、面向对象C+航空售票系统大 连 科 技 学 院面向对象程序设计课程设计题 目 航空售票管理系统 学生姓名 李易霖 专业班级 计算机10-1 指导教师 刘瑞杰 职 称讲师 所在单位 信息科学系软件工程教研室 教学部主任 王立娟 完成日期 2012年7月6日课程设计报告单学号1001020112姓名李易霖专业班级计算机10-1考 核 项 目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、
2、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综 合 评 定:(优、良、中、及格、不及格) 指导教师签字:2012年7月6日面向对象程序设计课程设计任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)
3、指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。第2个工作日第4个工作日:设计程序结构、模块图。第5个工作日第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。指导教师签字:2012年6月25日题目:航空售票管理系统1.需求分析航空售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等
4、工作。本系统可以在功能上实现更新航班信息 浏览航班信息查询,以及航班信息订票和退票这四个主要的功能。2.概要设计程序的结构图如下如上图,程序中各功能模块所需的数据都直接取自文件,这样保证了各模块的独立性和数据的安全性。并且只有相应的模块进行写的操作,并且数据的写入不必依赖其他模块,这样使用户可以仅使用其中某一项功能,而不必进行多余的操作。3.详细设计首先根据问题描述抽象出一个航班类,封装了航班的数据信息和方法。数据里主要有航班的航班号、起飞时间、站点等信息,方法主要是对该类中数据的值的输入、输出对本班次机票的管理,对时间、站名等的核对,另外为了方便对文件的输出和读取,还以友元的形式重载了提取和
5、插入运算符。该系统总共包含四大功能模块:1更新航班信息功能模块该模块为对航班信息的操作,仅向管理员开放使用,普通用户不能使用该功能对航班信息进行操作,故进入该功能需进行身份验证。可不定时地增加航班数据。该模块又被分为五个子功能模块信息库的重建、信息的插入、修改、删除和清空数据。2浏览航班信息浏览航班信息,可显示出所有航班,如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息,完成将文件中的航班信息按照要求格式全部输出。3查询航班信息可以实现按航班号和按站点的查询并将查询到的信息输出。4订票和退票系统A:查询航班编号或站点。当剩余座位数大于0,并且当前系统时间小于起飞时间时
6、才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。该模块根据订票和退票操作的相似性,将这两种操作放在一起。另外,由于各模块函数是直接对文件进行操作,所以各功能模块是相互独立的。4.编码int main() Traffic_system civil_aviation; /若文件不存在,则新建文件 ofstream newfile( flight information.txt, ios:app ); if (!newfile) cerr 文件flight information.txt无法打开!n; exit(2); newfi
7、le.close(); int tab; while(1) cout 欢迎进入航空售票管理系统 * 主菜单: * * 1更新航班信息(需管理员身份验证) 2浏览航班信息 * * 3查询航班信息 4订票 和 退票 * * 5清 屏 0退 出 系 统 * * 你需要做什么?(选择04) tab; while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0) cout tab; switch(tab) case 1: civil_aviation.Manage(); break; /航线管理 case 2: civil_avia
8、tion.Scan(); break; /订票办理 case 3: civil_aviation.Search(); break; /退票办理 case 4: civil_aviation.BookRefund(); break; case 5: system(cls); break; case 0:return 0; /退出系统 5.调试分析程序编写完成后,主要出现的是各种语法错误,如字母打错了,字母少打了,字母大小写错了,符号错了或少打了等等一系列错误。有时候一个小小的错误会让程序运行不了,在反复的调试检查的过程中,我把这些细小的错误全部都找出来,最后程序终于能执行了。还有就是存储问题了。
9、在开始的时候我一直按照书上的直接用输出流对象来存储到文件里面,后来打开文件,里面确实有数据,但是在调出数据,也就是在查询客户信息的时候,尽管我输入的是已经存在的客户姓名,但是系统却找不到客户信息。我存储的时候数据间没有间隔,在读取的时候就不能分别数据了,应该在存储的时候在每个数据间加入一个空格符号,来分开每一个数据。系统能正常识别数据了。6.测试结果及运行效果1、首先进入系统提示是否是第一次进入,如果是第一次就进行初始化,讲预先的几个乘客信息存档。否则直接进入主菜单:第一次进入,初始化!并且进入主菜单:提示输入业务代码,如果输入的不是以上业务代码则提示输入错误:图4 输入错误2、进行第一个功能
10、选项:订票业务:如果已经存在此客户的信息则会出现下面情况:则提示已经定过航班,问是否进入主菜单。如果输入的客户在档案里面没有则进行正常订票:3、第二项功能:退票业务:输入客户姓名和航班,将其信息删除。并提示是否返回主菜单。为了验证是否删除了客户信息,可以进行查询客户信息业务和查询全部信息业务:图8 查询信息确认显示没有刚刚已经退订客户的信息。显示出没有刚刚已退订客户的信息,并且航班的信息随之调整,订票数和余票数自动修改为正确值。图9 查询信息确认4、下面为第三个功能选项:查询客户信息,输入客户姓名,就会自动输出客户的相关信息。如果没有客户信息则输出以下内容,并且提示是否进入到主菜单。5、查询全
11、部信息:包括所有客户信息和所有航班的信息图13 全部信息 6、退出系统:退出:7.系统开发所用到的技术这个航空售票管理系统中,应用的是C+程序设计语言。C+和C的不同在于C+的功能更强大更完善,支持中文输入,是兼顾面向对象的特点的程序设计语言。为了方便编写程序,我采用了比较简单的方法,从main主函数中指向5个函数,并且全部定义为void型,可以指向任意类型的数据,提高兼容性。用switch选择语句来指向调用函数,再对5个调用函数进行定义。这样函数之间彼此循环构成了一个完整的函数。8.课程设计总结经过这次的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。我这次课程设计的题目是航
12、空订票系统,在开始阶段,根本无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。通过这次课设我对C+语言中的类的定义、运算符重载等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,更使我意识到了学习C+语言的重要性。另外,对程序的不断调试,是我的查错能力有了很大的提高。 本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。C+设计实践是对之前学过的知识的加深和巩固,之前学得较浅,实践的机会不多,这次实践让
13、我对C+程序有了更加深入的了解,心理也由原来的不喜欢到喜欢,感觉很有意思也很有用,可也设计一些有用的或者是自己喜欢的程序。最令我收益的是写程序的过程和调试修改的过程,因为之前我们就学了几章,没有把知识学习全面,因此编写起来是有难度的,在预先想好程序结构后,就开是卡看书,一个函数一个函数来编写,不懂的地方就上网搜或是请教一下同学,当终于把程序写出来的时候,内心里又有一种说不出来的激动,我感觉这很符合大学的教育观念,是对个人自主学习能力的一个锻炼。在接下来就是调试,虽然出了很多的错误。但在我不断找错下现在程序终于能较好的运行出来了,当然,还存在一些瑕疵,但通过这近两周的实践学习,我收获的不仅仅是这
14、一个程序,我的自学能力,以及寻找问题解决问题的能力也得到了很好的锻炼,使我的专业水平提高了不少。从这次课程设计中我付出了很多也收获了很多。参考文献1C+程序设计谭浩强,清华大学出版社2Visual C+面向对象程序设计程刘瑞新主编,曹建春,沈淑娟,张连堂等编著,机械工业出版社3 C+程序设计吴乃陵,况迎辉北京:高等教育出版社附录 全部代码#include #include#include using namespace std;struct flightint fligh;int num;char place10;int dticket;int yticket;fl10=101,01,北京,1
15、,99, 102,02,上海,1,99, 103,03,广州,1,99;struct customerchar name10; int seat; int num;cu300=张三,01,101,李四,01,102,王麻子,01,103; /定义结构体int cnum=3; /定义客户编号void list();void dingpiao();void tuipiao();void chaxun(); void chaxun();void chaxunquanbu();void caidan1(); /函数声明void caidan2();void chushi();void main()co
16、ut欢迎使用航空订票系统 制作者 李易霖版权所有,XXendlendl; caidan2(); /主函数void caidan1()int i; cout* 航空订票系统v2012 *endl; cout* *endl; cout* 1.订票业务 2.退票业务 *endl; cout* 3.查询客户信息 4.查询全部信息 *endl; cout* 5.退出系统 *endl; cout* *endl; cout* 如果是第一次使用本系统,请载入初始信息谢谢 *endl; cout*endl;ifstream infile1(airline.dat);ifstream infile2(custom
17、er.dat);for(i=0;ifli.flighfli.numfli.placefli.dticketfli.yticket;for(i=0;icui.namecui.numcui.seatcnum; infile1.close();infile2.close(); /读取数据cout请输入业务代码:;list(); /菜单1void caidan2()int t; coutt; if(t=1)chushi();else caidan1(); /菜单2void chushi()int i; ofstream outfile(airline.dat); ofstream file(custo
18、mer.dat); for (i=0;i3;i+) outfilefli.fligh fli.num fli.place fli.dticket fli.yticketendl;filecui.name cui.num cui.seat cnumendl; outfile.close();file.close();cout初始化已完毕!endla;coutendl;switch(a)case 1:dingpiao();break; case 2:tuipiao();break; case 3:chaxun();break; case 4:chaxunquanbu();break; case 5
19、:;break; default:cout输入错误,请重新输入正确的代码:;list(); /输入代码void dingpiao()/ 订票char name10;int num,i,t,j,k,temp;int x; cout请输入你的姓名和想订的航班号:endlendl; coutname; coutendl; coutnum;for(i=0;i300;i+)if(strcmp(name,cui.name)=0)coutt;switch(t) case 1:caidan1();break; default :break; for(i=0;i300;i+)if (name!=cui.name
20、)for(j=0;j10;j+)if(flj.fligh=num)temp=j; if(fltemp.yticket=100) coutx; switch(x) case 1: for (k=0;k3;k+) if (flk.fligh=num) flk.dticket=flk.dticket+1;flk.yticket=flk.yticket-1;cnum=cnum+1; strcpy(cucnum.name,name);cucnum.num=num; cucnum.seat=flk.dticket; ofstream outfile1(airline.dat); for(j=0;j3;j+
21、) outfile1flj.fligh flj.num flj.place flj.dticket flj.yticketendl; ofstream outfile2(customer.dat,ios:app); outfile2cucnum.name cucnum.num cucnum.seat cnumendl; /打开文件并存储数据 cout订票成功!endlendl 客户信息:cucnum.namet航班号:cucnum.numt座位号:cucnum.seatendl; outfile1.close();outfile2.close(); couttemp; if(temp=1) c
22、aidan1();else; ;break; default :caidan1();break;else cout此航班票已经售完,请订其他航班次的票; / /订票void tuipiao()/ 退票char name10;int i,temp,t,num,a,j;struct tmp;cout请输入您的姓名和航班号:endl;coutname;coutnum;coutendl;for(i=0;i300;i+)if (strcmp(cui.name,name)=0)a=0;couttemp; if(temp=1) ofstream outfile1(airline.dat); ofstream
23、 outfile2(customer.dat); for(j=0;j=i;j+) outfile2cuj.name cuj.num cuj.seat jendl; for(t=0;t3;t+) if(flt.fligh=num) flt.dticket=flt.dticket-1;flt.yticket=flt.yticket+1; for(t=0;t3;t+) outfile1flt.fligh flt.num flt.place flt.dticket flt.yticketendl; else a!=0; if (a!=0) cout没有你的信息,请查证后再操作!;couttemp;if(temp=1)caidan1();/ 退票void chaxun()char name10;int temp,i,a; coutname; for(i=0;i300;i+) if (strcmp(cui.name,name)=0)temp=i;a=0; cout*乘客信息*endl姓名:cutemp.namet 航班号:cutemp.numt座位号:cutemp.seatendl; if (a!=0) cout没有你的信息,请查证后再操作!endl;couttemp;if(temp=1)caidan1(); /查
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1