C++课程设计报告材料飞机订票管理系统.docx

上传人:b****5 文档编号:8096497 上传时间:2023-01-28 格式:DOCX 页数:34 大小:259.02KB
下载 相关 举报
C++课程设计报告材料飞机订票管理系统.docx_第1页
第1页 / 共34页
C++课程设计报告材料飞机订票管理系统.docx_第2页
第2页 / 共34页
C++课程设计报告材料飞机订票管理系统.docx_第3页
第3页 / 共34页
C++课程设计报告材料飞机订票管理系统.docx_第4页
第4页 / 共34页
C++课程设计报告材料飞机订票管理系统.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

C++课程设计报告材料飞机订票管理系统.docx

《C++课程设计报告材料飞机订票管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告材料飞机订票管理系统.docx(34页珍藏版)》请在冰豆网上搜索。

C++课程设计报告材料飞机订票管理系统.docx

C++课程设计报告材料飞机订票管理系统

青岛理工大学

C++面向对象课程设计报告

 

院(系):

计算机工程学院

专业:

软件工程

学生姓名:

班级软件131班学号:

题目:

飞机订票管理系统设计____

起迄日期:

_2015.6.29~2015.7.10

设计地点:

计算机学院机房

指导教师:

翟正利丁凡

 

完成日期:

2015年7月10日

C++面向对象课程设计任务书

题目24“飞机订票管理系统设计”

1、问题描述:

航空客运订票的业务包括:

查询航班、客票预订和办理退票等。

试设计一个航空客运订票系统,已使上述业务可以借助计算机完成。

2.功能要求:

(1)每条航线所涉及的信息有:

终点站名、航班号、飞机号、星期几飞行飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级)以及等候补替补的客户名单(包括姓名、所需票量);

(2)作为示意系统,全部数据可以只放在内存中;

(3)系统能实现的操作和功能如下:

录入:

可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);

查询航线:

根据旅客提出的终点站名输入下列信息:

航班号、飞机号、星期几起飞,最近航班的日期和余票量。

承办订票业务:

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或者余票数少于订票额,则需重新寻味客户要求,若需要,可登记排队候补;

承办退票业务:

根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队等候补,首先询问排在第一的客户,若所有退票额能满足他的要求,则为他办理订票手续否则依次询问其他排队候补的客户。

修改航班信息:

当航班信息改变可以修改航班数据文件。

(选作)为客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他航线情况。

3、问题的解决方案:

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(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<

<

<

<

<

file<

outfile.close();file.close();

cout<<"初始化已完毕!

"<

caidan1();

}

}

(2).查询航班信息:

voidchaxun1()

{

charplace[10];

inttemp,i,a;

cout<<"输入终点站名:

";cin>>place;

for(i=0;i<100;i++)

if(strcmp(fl[i].place,place)==0){temp=i;a=0;}

cout<<"航班信息"<

"<

"<

"<

if(a!

=0)cout<<"查询失败!

"<

cout<<"返回主菜单?

1.是2.否";cin>>temp;

if(temp==1)caidan2();

}

(3).订票:

voiddingpiao()//订票

{

charname[10];

intnum,i,t,j,k,temp;

intx;

cout<<"请输入你的姓名和想订的航班号:

"<

cout<<"姓名:

";

cin>>name;

cout<

cout<<"航班号:

";

cin>>num;

for(i=0;i<300;i++)

if(strcmp(name,cu[i].name)==0)

{

cout<<"您已经定过航班,要返回主菜单吗?

(1.返回/2.退出)";

cin>>t;switch(t)

{case1:

caidan1();break;

default:

break;}

}

for(i=0;i<300;i++)

if(name!

=cu[i].name)

for(j=0;j<10;j++)

if(fl[j].fligh==num)temp=j;

if(fl[temp].yticket<=100)

{

cout<<"此航班还有余票,要订票吗?

(1.是/2.否)";

cin>>x;

switch(x)

{

case1:

{

for(k=0;k<3;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("airline.dat");

for(j=0;j<3;j++)

outfile1<

ofstreamoutfile2("customer.dat",ios:

:

app);

outfile2<

cout<<"订票成功!

"<

<<"客户信息:

"<

"<

"<

outfile1.close();

outfile2.close();

cout<<"1.返回主菜单2.退出:

";

cin>>temp;

if(temp==1)

caidan1();

else;

}};

break;

default:

caidan1();break;}}elsecout<<"此航班票已经售完,请订其他航班次的票~";

}

(4).退票:

voidtuipiao()//退票

{

charname[10];

inti,temp,t,num,a,j;

structtmp;

cout<<"请输入您的姓名和航班号:

"<

cout<<"姓名:

";

cin>>name;cout<<"航班号:

";

cin>>num;cout<

for(i=0;i<300;i++)

{if(strcmp(cu[i].name,name)==0)

{

a=0;cout<<"确定退订吗?

(1.是2.否):

";

cin>>temp;

if(temp==1)

{

ofstreamoutfile1("airline.dat");

ofstreamoutfile2("customer.dat");

for(j=0;j<=i;j++)

outfile2<

for(t=0;t<3;t++)

{

if(fl[t].fligh==num){fl[t].dticket=fl[t].dticket-1;fl[t].yticket=fl[t].yticket+1;}}

for(t=0;t<3;t++)

outfile1<

}

}

else

a!

=0;

}

if(a!

=0)

cout<<"没有你的信息,请查证后再操作!

";

cout<<"返回主菜单?

1.是2.否:

";

cin>>temp;

if(temp==1)

caidan1();

}

(5).查询全部信息:

voidchaxunquanbu()

{

inti,temp;

cout<<"乘客信息:

"<

for(i=0;i<300;i++)

{

if(cnum==i)temp=i;

}

for(i=0;i

cout<<"姓名:

"<

"<

"<

"<

cout<

"<

for(i=0;i<3;i++)

cout<<"航班号:

"<

"<

"<

"<

"<

cout<<"返回主菜单?

1.是2.否";

cin>>temp;

if(temp==1)caidan1();

}

(6).主菜单函数:

voidcaidan1()

{

inti;

cout<<"*************航空订票系统v2012*************"<

cout<<"***                     ***"<

cout<<"***1.订票业务2.退票业务***"<

cout<<"***3.查询客户信息4.查询全部信息***"<

cout<<"***5.查询飞机票6.退出系统***"<

cout<<"******"<

cout<<"***如果是第一次使用本系统,请载入初始信息***"<

cout<<"*********************************************************"<

ifstreaminfile1("airline.dat");

ifstreaminfile2("customer.dat");

for(i=0;i<3;i++){infile1>>fl[i].fligh>>fl[i].num>>fl[i].place>>fl[i].data>>fl[i].dticket>>fl[i].riqi>>fl[i].yticket;}

for(i=0;i<300;i++){infile2>>cu[i].name>>cu[i].num>>cu[i].seat>>cnum;}

infile1.close();infile2.close();//读取数据

cout<<"请输入业务代码:

";

list();

}

(7).选择列表函数:

voidlist()

{

inta;

cin>>a;cout<

switch(a)

{

case1:

dingpiao();break;

case2:

tuipiao();break;

case3:

chaxun();break;

case4:

chaxunquanbu();break;

case5:

chaxun1();break;

case6:

;break;

default:

{cout<<"输入错误,请重新输入正确的代码:

";list();}//输入代码

}

}

(8).查询客户信息函数:

voidchaxun()

{

charname[10];

inttemp,i,a;

cout<<"请输入你的姓名:

";cin>>name;

for(i=0;i<300;i++)

if(strcmp(cu[i].name,name)==0){temp=i;a=0;}

cout<<"*****乘客信息*****"<

"<

<<"航班号:

"<

"<

if(a!

=0)cout<<"没有你的信息,请查证后再操作!

"<

cout<<"返回主菜单?

1.是2.否";

cin>>temp;

if(temp==1)

caidan1();

}

三、调试分析

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类型。

 

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++面向对象程序设计》实验指导及习题解析.西安:

西安电子科技大学出版社,2010

[3]郑莉,董渊.C++程序设计基础教程.北京:

清华大学出版社,2010

[4]郑莉.C++程序设计基础教程学生用书.北京:

清华大学出版社,2010

七、附录(要加上注释。

#include

#include

#include

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",0,"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();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1