C++课程设计报告材料飞机订票管理系统Word格式文档下载.docx
《C++课程设计报告材料飞机订票管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告材料飞机订票管理系统Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
一、需求分析
1.选做此课题或项的目的
1.通过实验实现对学生信息系统的管理操作;
2.进一步掌握和利用C++进行程设计的能力;
3.进一步理解和运用结构化程序设计的思想和方法;
4.初步掌握开发一个小型实用系统的基本方法;
5.学会利用流程图或N-S图表示算法;
6.掌握书写程设计开发文档的能力
2.程序所实现的功能
1.输入航班信息并保存到磁盘;
2.浏览航班信息;
3.修改航班信息并保存到磁盘
4.查找航班
5.订票
6.退票
2、内容设计
1.根据所选题目给出模块图
如图1.1所示
飞机订票管理系统
修改航班信息
退票
图1.1模块图
2.画出主程序及其主要模块的流程图
(1).如图2.1所示为查询函数的流程图:
图2.1查询函数的流程图
(2).图2.2所示为订票函数流程图
开始
输入要订票的姓名
姓名与初始姓名相同?
否
输入航班号
还有余票,订票?
是
存储客户信息到文件
修改航班信息(票额)
输出订票信息
返回主菜单?
主菜单
结束
图2.2订票函数流程图
(3).图2.3所示为退票函数流程图
输入姓名和航班号
信息与文件中信息相同?
是否退订?
从文件中删除该用户订票信息
返回主菜单?
退票成功!
图2.3退票函数流程图
(4).如图2.4所示为查询全部信息函数
图2.4查询全部信息函数
(5.)如图2.5所示为主程序流程图
图2.5查询全部信息函数
3.编写程序关键代码
(1).录入航班信息:
voidchushi()
{
inti;
ofstreamoutfile("
airline.dat"
);
ofstreamfile("
customer.dat"
for(i=0;
i<
3;
i++)
{
outfile<
<
fl[i].fligh<
"
"
<
fl[i].num<
fl[i].place<
fl[i].data<
fl[i].dticket<
fl[i].riqi<
fl[i].yticket<
endl;
file<
cu[i].name<
cu[i].num<
cu[i].seat<
cnum<
}
outfile.close();
file.close();
cout<
初始化已完毕!
endl<
caidan1();
}
(2).查询航班信息:
voidchaxun1()
charplace[10];
inttemp,i,a;
cout<
输入终点站名:
;
cin>
>
place;
for(i=0;
100;
if(strcmp(fl[i].place,place)==0){temp=i;
a=0;
cout<
航班信息"
航班号:
fl[temp].fligh<
飞机号:
fl[temp].num<
起飞日期:
fl[temp].data<
最近航班日期"
fl[temp].riqi<
余票量"
fl[temp].yticket<
if(a!
=0)cout<
查询失败!
1.是2.否"
temp;
if(temp==1)caidan2();
(3).订票:
voiddingpiao()//订票
charname[10];
intnum,i,t,j,k,temp;
intx;
请输入你的姓名和想订的航班号:
姓名:
cin>
name;
航班号:
num;
for(i=0;
300;
if(strcmp(name,cu[i].name)==0)
您已经定过航班,要返回主菜单吗?
(1.返回/2.退出)"
t;
switch(t)
{case1:
break;
default:
if(name!
=cu[i].name)
for(j=0;
j<
10;
j++)
if(fl[j].fligh==num)temp=j;
if(fl[temp].yticket<
=100)
{
此航班还有余票,要订票吗?
(1.是/2.否)"
x;
switch(x)
case1:
for(k=0;
k<
k++)
if(fl[k].fligh==num)
{
fl[k].dticket=fl[k].dticket+1;
fl[k].yticket=fl[k].yticket-1;
cnum=cnum+1;
strcpy(cu[cnum].name,name);
cu[cnum].num=num;
cu[cnum].seat=fl[k].dticket;
ofstreamoutfile1("
for(j=0;
j++)
outfile1<
fl[j].fligh<
fl[j].num<
fl[j].place<
fl[j].data<
fl[j].dticket<
fl[j].riqi<
fl[j].yticket<
ofstreamoutfile2("
ios:
:
app);
outfile2<
cu[cnum].name<
cu[cnum].num<
cu[cnum].seat<
//打开文件并存储数据
cout<
订票成功!
endl
<
客户信息:
'
\t'
座位号:
outfile1.close();
outfile2.close();
1.返回主菜单2.退出:
cin>
if(temp==1)
caidan1();
else;
}};
break;
}}elsecout<
此航班票已经售完,请订其他航班次的票~"
(4).退票:
voidtuipiao()//退票
inti,temp,t,num,a,j;
structtmp;
请输入您的姓名和航班号:
{if(strcmp(cu[i].name,name)==0)
a=0;
确定退订吗?
(1.是2.否):
if(temp==1)
ofstreamoutfile1("
ofstreamoutfile2("
for(j=0;
=i;
cu[j].name<
cu[j].num<
cu[j].seat<
for(t=0;
t<
t++)
{
if(fl[t].fligh==num){fl[t].dticket=fl[t].dticket-1;
fl[t].yticket=fl[t].yticket+1;
}}
for(t=0;
outfile1<
fl[t].fligh<
fl[t].num<
fl[t].place<
fl[t].data<
fl[t].dticket<
fl[t].riqi<
fl[t].yticket<
}
}
else
a!
=0;
}
if(a!
=0)
没有你的信息,请查证后再操作!
1.是2.否:
if(temp==1)
(5).查询全部信息:
voidchaxunquanbu()
inti,temp;
乘客信息:
if(cnum==i)temp=i;
编号:
i+1<
航班信息:
fl[i].fligh<
目的地:
起飞日期"
已订票数:
剩余票数:
if(temp==1)caidan1();
(6).主菜单函数:
voidcaidan1()
*************航空订票系统v2012*************"
*** ***"
***1.订票业务2.退票业务***"
***3.查询客户信息4.查询全部信息***"
***5.查询飞机票6.退出系统***"
******"
***如果是第一次使用本系统,请载入初始信息***"
*********************************************************"
ifstreaminfile1("
ifstreaminfile2("
i++){infile1>
fl[i].fligh>
fl[i].num>
fl[i].place>
fl[i].data>
fl[i].dticket>
fl[i].riqi>
fl[i].yticket;
i++){infile2>
cu[i].name>
cu[i].num>
cu[i].seat>
cnum;
infile1.close();
infile2.close();
//读取数据
请输入业务代码:
list();
(7).选择列表函数:
voidlist()
inta;
a;
switch(a)
case1:
dingpiao();
case2:
tuipiao();
case3:
chaxun();
case4:
chaxunquanbu();
case5:
chaxun1();
case6:
default:
{cout<
输入错误,请重新输入正确的代码:
}//输入代码
(8).查询客户信息函数:
voidchaxun()
inttemp,i,a;
请输入你的姓名:
if(strcmp(cu[i].name,name)==0){temp=i;
*****乘客信息*****"
cu[temp].name<
<
cu[temp].num<
cu[temp].seat<
if(a!
=0)cout<
三、调试分析
1.实际完成的情况说明(完成的功能,支持的数据类型等)。
该航空订票管理系统主要完成的支持int(航班号,座位号等),char(姓名,终点,到达日期等,主要实现的功能如下:
1.航班信息与客户信息的初始化。
2.客户信息的录入。
3.航班信息的修改(包括余票和已定票的改动)。
4.订票功能。
5.退票功能。
6.查询航线功能。
7.查询全部信息功能(包括用户和航班的信息)。
2.程序的性能分析。
1.本程充分利用了各种系统函数,使程序十分简洁。
2.程序相比之下较大,运行起来需要一定的时间。
3.根据不同的功能建立不同的类,对具体功能又分别用相应的函数来据体实现使程序变得有序易懂。
3.上机过程中出现的问题及其解决方案。
上机过程遇到的问题有:
1.不了解文件的使用,包括读取文件到程序,将数据写入文件等。
2.对整体程序的模版不够理解,刚开始不能够完全地构思出程序的全部。
3.出现括号和符号忘记匹配,或者马虎造成单词拼错以及函数体写错。
4.结构体的格式开始不够熟练。
5.循环体的嵌套使用不够熟悉。
6.使用string类型不是那么熟练。
解决方案:
1.查阅相关书籍,以及上网查找资料,询问基础较好的同学,从而对文件的操作有了进一步的提升。
2.上网查找类似的程序,观看其大致结构,从而提炼出精华,找出大致规律,运用到自己的程序里,使程序不至于那么僵硬。
3.每写完一段程序就检查该段程序有没有错误,分段缩小范围修改,采用分步调试方法,逐步找出问题所在。
4.上网以及查阅结构体的详细说明,学会熟练使用结构体。
5.可以先画流程图列出所有循环体的图示,根据图示来编写程序中循环体的嵌套,这样可以大大减少循环体的出错。
6.开始使用char类型来定义字符串,后来改成方便的string类型,之前忘记头文件#include<
string>
,通过学习进一步理解string类型。
4.程序中可以改进的地方说明。
1.退票管理中可增加功能,区分退票在飞机起飞前和飞机起飞后,根据不同的选择来退还不同金额的退款。
2.订票函数里可适当提升订票的最大人数,以免发生系统崩溃的现象。
3.查询函数里可以增加查询合适航班的方式,以便于更好程度地适应用户多方面的不同订票需求。
5.程序中可以扩充的功能及设计实现构想。
1.可以增加用户登录功能,让用户可以设置自己的帐号密码,以便于用户更方便的使用本飞机订票系统办理航空业务。
2.可以将dos系统界面显示做成mfc界面显示,使显示更加清晰,更便于用户理解和使用本系统。
3.可以在航空飞机订票的基础上发展其他订票功能,比如火车订票,汽车订票,更全面地提供订票管理服务。
4、用户手册
1.运行程序,显示主菜单如图3.1所示:
图3.1主菜单
2.选择5.查询航班信息,然后选择返回主菜单如图3.2图3.3所示:
图3.2查询航班信息
图3.3查询航班信息
3.选择1订票,进行订票,输入姓名,要订的航班号,显示已定过情况如图3.4所示,若未定过,则订票,此时客户信息将新增进文件customer中,订票完成后选择返回主菜单,如图3.5图3.6图3.7所示:
图3.4订票失败
图3.5订票成功
图3.6返回主菜单
图3.7文件数据存储情况
3.退票,输入你的姓名,返回主菜单,此时文件改变,如图3.8图3.9所示:
图3.8退票成功
图3.9文件存储情况
4.查询,输入4,查询如图3.10,图3.11所示:
图3.10查询全部信息
图3.11查询全部信息
6.退出系统,如图3.12所示
图3.12退出系统
5、设计总结
自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,发现其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。
在试验中还发现了许多的不足,对于以后对C++的学习有很大的帮助。
六、参考文献
[1]李兰,任凤华.C++面向对象程序设计.西安:
西安电子科技大学出版社,2010
[2]李兰,任凤华.《C++面向对象程序设计》实验指导及习题解析.西安:
[3]郑莉,董渊.C++程序设计基础教程.北京:
清华大学出版社,2010
[4]郑莉.C++程序设计基础教程学生用书.北京:
七、附录(要加上注释。
)
#include<
iostream>
#include<
fstream>
usingnamespacestd;
structflight
intfligh;
intnum;
charplace[10];
chardata[10];
//起飞日期(星期几)
intdticket;
charriqi[15];
//最近航班日期
intyticket;
}fl[10]={{101,01,"
北京"
"
monday"
1,"
2015.01.01"
99},
{102,02,"
青岛"
tuesday"
0,"
2015.02.10"
100},
{103,03,"
郑州"
friday"
2015.3.15"
100}};
structcustomer
{charname[10];
intseat;
intnum;
}cu[300]={{"
李华"
01,101},{"
赵光"
01,102},{"
王磊"
01,103}};
//定义结构体
intcnum=3;
//定义客户编号
voidlist();
voiddingpiao();
voidtuipiao();
voidchaxun();
voidchaxunquanbu();
voidchaxun1();
voidcaidan1();
//函数声明
voidcaidan2();
voidchushi();