C语言航班售票系统课程设计报告航班售票系统.docx

上传人:b****3 文档编号:5342605 上传时间:2022-12-15 格式:DOCX 页数:19 大小:88.53KB
下载 相关 举报
C语言航班售票系统课程设计报告航班售票系统.docx_第1页
第1页 / 共19页
C语言航班售票系统课程设计报告航班售票系统.docx_第2页
第2页 / 共19页
C语言航班售票系统课程设计报告航班售票系统.docx_第3页
第3页 / 共19页
C语言航班售票系统课程设计报告航班售票系统.docx_第4页
第4页 / 共19页
C语言航班售票系统课程设计报告航班售票系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言航班售票系统课程设计报告航班售票系统.docx

《C语言航班售票系统课程设计报告航班售票系统.docx》由会员分享,可在线阅读,更多相关《C语言航班售票系统课程设计报告航班售票系统.docx(19页珍藏版)》请在冰豆网上搜索。

C语言航班售票系统课程设计报告航班售票系统.docx

C语言航班售票系统课程设计报告航班售票系统

 

运算机科学与技术系

 

课程设计报告

2020~2020学年第二期

 

课程

程序设计语言Ⅱ课程设计

课程设计名称

航班售票系统

 

一、课程设计题目

课程设计名称:

航班售票系统

设计内容:

设计一个航班售票系统系统,能够对航空公司的售票进行治理。

航空公司的售票系统要紧包括:

航线信息、订票业务、退票业务。

任务和要求

1.航线信息:

每条航线包括航班号,飞机号,目的地,订票数,余票数,共5项。

现有3条航线:

目的地北京,上海,广州。

飞机可乘100人(初始定票数为0,余票数为100)。

将这些信息存入文件中。

2.订票业务:

(1).客户信息包括姓名,航班号,座位号(初始为0),假设已有3个客户信息存入文件。

(2).有新客户订票时,先输入姓名和航班号,查询情形,若是还有余票,就为那个客户办理订票手续,分给客户一个座位号,然后写入文件,并修改文件,假设无余票,那么输出客户已满

3.退票业务:

依照客户提出的航班号,办理退票,从文件中删除那个客户的信息,并修改中相应的航线的订票数和余票数输出全数航线的信息和全数客户信息,退出系统。

二、问题的分析

第一这是一个治理系统,有两个大类乘客和飞机,因此要概念2个类,又因为需要进行文件的操作,那么能够再概念2个类,乘客信息类,飞机信息类用于贮存多个信息。

界面操作固然需要用switch语句实现,case时挪用到函数。

三、算法的设计

我设计的那个航空治理系统运用到了条件判定,switch语句,循环语句,类与对象,对象数组,对象指针,类与类的嵌套,文件的写入写出等知识点。

整体的构思:

设计了四个类飞机信息库类,乘客类,乘客信息库类。

飞机类包括了飞机的一些大体属性,有航班号,飞机号,目的地,余票数,已定票数等信息

classFlightddplane(n,m,de);

return1;

}

return0;

}

Flight*query(intpflightnum)etflightnum()==pflightnum&&Fl[i].getnote()==0)

return&Fl[i];

returnNULL;

}

Flight*query1(intpplanenum)

{

for(inti=0;i<=top;i++)

if(Fl[i].getplanenum()==pplanenum&&Fl[i].getnote()==0)

return&Fl[i];

returnNULL;

}

voidlist()

{

for(inti=0;i<=top;i++)

if(Fl[i].getnote()==0)

Fl[i].list();

}

voidplanedata();

~FDatabase()

{

fstreamfile("",ios:

:

out);

for(inti=0;i<=top;i++)

if(Fl[i].getnote()==0)

((char*)&Fl[i],sizeof(Fl[i]));

();

}

};

乘客类包括了乘客的一些大体属性,有姓名,航班号,座位号,客户编号等属性

classPassengerddbook(n,na,id,seat);

return1;

}

return0;

}

Passenger*query(intid)

{

for(inti=0;i<=top;i++)

if(passer[i].getID()==id&&passer[i].getnote()==0)

return&passer[i];

returnNULL;

}

Passenger*query1(intseat)

{

for(inti=0;i<=top;i++)

if(passer[i].getseatnum()!

=seat&&passer[i].getnote()==0)

return&passer[i];

else

returnNULL;

}

voidlist()

{

for(inti=0;i<=top;i++)

if(passer[i].getnote()==0)

passer[i].list();

}

voidpassengerdata();

~PDatabase()

{

fstreamfile("",ios:

:

out);

for(inti=0;i<=top;i++)

if(passer[i].getnote()==0)

((char*)&passer[i],sizeof(passer[i]));

();

}

};

 

要紧功能:

此航空系统治理能够进行新增航班,更改航班,查找航班,显示航班信息,删除航班。

客户能够进行订票,退票,客户资料修改,查找,删除等操作。

具体实现进程:

1、新增航线的实现进程:

通过录入航线的飞机号,航班号,目的地。

系统会存入到飞机的对象数组里,一个飞机确实是一个对象,然后存入飞机的对象数组中,这要紧通过飞机信息类中的addplane()函数在挪用飞机类中的addplane()函数实现存入飞机的大体信息,同时这一个飞机的信息作为一个对象保留在飞机类的对象数组中。

若是想要把那个新增的飞机写入文件的话,通过飞机信息库类的中析构函数写入文件,因此每当要贮存进文件,那么需要推出系统后保留,那么下次进入后你将会看到在飞机信息类中会看到飞机的信息。

2、更改航班操作的实现进程:

先要录入你要更改的航班号,系统会找到那个航班,如此你能够进行目的地修改的操作。

通过飞机信息库类中的query()函数进行查找,利用for循环,逐个查找,当找到的飞机航班号与输入的航班号相同时,进行输出。

并通过飞机类的setname()函数对目的地的字符串利用strcpy()函数进行覆盖。

因此那个飞机对象的目的地就改变了。

3、查找航班的实现进程:

输入航班号,利用飞机信息库类中的query()函数查找,最后返回对象,并输出对象。

4、显示航班信息的实现进程:

利用飞机信息库类中的list()函数进行输出对象数组中的对象。

5、删除航班进程的实现:

能够删除单个航班,也能够删除全数,删除单个航班先输入航班号查找出航班,然后通过挪用飞机类的delplane()函数进行信息存在标记的改变。

删除全数直接更改飞机对象数组中的下标即可。

6、订票的实现:

第一输入航班号,若是没有此航班会提示错误,直到有此航班后才能进行下一步操作,然户输入姓名,客户编号,座位号,客户编号是客户自己拥有的一个ID,座位号用户能够自己预定。

若是作为被预定后,会显示错误需要从头预定座位号。

挪用乘客信息库类中的addbook()函数在挪用乘客类中的addbook()函数进行赋值操作,而且此航班的信息中余票数会减少一个,已定票数会增加一个。

同时将此乘客的信息存入乘客对象数组中。

7、退票的实现:

输入航班号,用户编号。

系统会查找出此客户,并会通过乘客信息类的delpassenger()函数设置删除标记。

已达到删除乘客信息的成效,就达到了退票的成效,而且飞机信息中的余票数会增加1,订票数会减少1。

8、客户资料修改的实现进程:

通过输入用户ID后,查找出当前客户,能够进行客户信息的姓名修改,挪用setname()函数修改姓名。

 

主界面

1、订票2、退票3、客户信息4、飞机信息

 

1、订票

需要输入航班号、姓名、用户编号、座位号

2、退票

需要输入航班号、

用户编号

客户信息管理

1更改2查找3显示4删除全部5删除单个

飞机信息管理

1新增2更改3删除单个4查找5显示6删除全部

 

调用乘客类中的addbook()函数

调用乘客类中的delpassenger()

1调用乘客信息类中的setname()

2调用乘客信息类中的query()和list()

3调用乘客信息类中的list()

4、5调用乘客信息类的clear(),delpassenger()

 

1调用飞机信息库类的addplane()

2调用飞机类的setname()

3调用飞机信息类中的delplane()

4调用飞机信息类中的query()和list()

5调用飞机信息类的list()

6调用飞机信息类的clear()

 

四、上机调试进程:

问题:

在调试进程时常常会碰到一些类与类内嵌时有函数未概念的情形,明明已经概念过类了,但编译时显示类未概念,对象为概念,不能相互访问,还有的时候由于概念的标示符过量,致使会编写错误标示符,还有一些小错误,比如符号漏写等,这些错误都是专门好看出来。

最难的错误应该是在嵌套进程中的逻辑问题,有的时候会挪用错误函数,有的时候会很混乱,整个思路就乱了。

修改:

在嵌套时要注意有无先概念对象到另一个类中,概念函数时,若是函数体短的函数直接概念为内联函数,如此可不能有忘概念的现象产生。

在类与类嵌套时应该注意类前向引用声明。

类与类的逻辑问题仍是静下心来梳理一下自己的思路,这是我感觉最好的方法了。

五、测试结果及分析

一、程序一开始的登录界面(主界面)

二、在主界面选择3进入客户治理系统

3、在主界面选择4进入航线治理系统

4、在航线治理系统当选择5显示系统中存储的所有航线信息

五、在主界面当选择1订票并成功完成了预订

六、设计后的感想

通过了2个礼拜的课程设计,自己独自一人完成了一个小小的治理系统的程序编写,可谓是感触颇多。

从一开始构思,到后来的实践,查找资料,找出语法错误,最后终于能运行了,但一运行便显现了很多BUG,然后就开始了漫长的测试期,不断的修改,不断的找到BUG,测试期的远远大过编程期,其实测试也是一个超级艰巨的工程。

这使我想起了许多游戏公司,每当一款游戏完成制作后,都会聘请一些玩家去进行测试,看看有无BUG,以便及时修改,才不至于上市后被人发觉BUG的为难,然后又会去打补丁。

其实测试时一个漫长的进程,我那个程序的测试期远远没有终止,此刻仍然存在BUG,并非是最完美的状态,只是我会继续改良。

这段时刻真的收成了许多书上没有的东西,最关键是我找到了编程的思路和感觉。

突然发觉编程其实能够这么简单!

这次课程设计历时二个礼拜多左右,通过课程设计,发觉自己的很多不足,自己知识的很多漏洞,看到了自己的实践体会仍是比较缺乏,理论联系实际的能力还急需提高。

尽管自己在学习C与C++上都不太懂,但我明白这都是自己平常不尽力的结果,因为这次课程设计是一门课程,对每一个人的要求也专门高,因此我必需得自己去弄懂一些东西,比如说:

类是什么东西?

类的作用是什么?

何为链表?

这些在高手看来都很简单的东西,对我来讲超级的难以明白得。

因为平常全然就不看书的缘故。

在任务刚布置下来的时候,乃至感觉到了紧张和忧虑,因为整个班级做“航天售票系统”那个题目的就我一人,但自己想一想:

既然那个题目轮到我,那这确实是我自己的情形,我必需得自己想方法去解决。

于是,从不在学校图书馆借阅专业图书的我疯狂地一口气接了四本专业书籍,其中两本C++,两本CB,借完抱回宿舍一看,感觉就跟天书一样,确实是看不懂。

当我正预备舍弃的时候,有同窗跟我说:

“若是你情愿花时刻的话,先把学校发的书多看看”。

我听从他的建议,把讲义翻出来慢慢的研究,仿佛感觉有一些极小的问题,自己能够独立解决了。

这对我来讲确实是一个超级大的收成!

一点小的收成能够让我看见更大的力量,感觉自己满身充满着干劲,真的专门希望能够通过这次课程设计,促使自己将以前没有看过的书都看一遍、由此来使自己的C++水平更上一层楼!

这次的课程设计也让我看到了同窗之间彼此帮忙的力量,我以为咱们班进行的这次课程设计不单单是一次锻炼,还让咱们见到了同窗之间的彼此帮忙,当一个同窗在处置一些问题碰到困难的时候,总会看到有一些其他会做的同窗踊跃的去帮忙他解决这些难题。

这次课程设计让我看到了一个团队的工作,团队需要个人,个人也离不开团队,大伙儿都在尽力发扬团结协作的精神,因为每一个人都希望自己的课程设计这门课能够顺利的通过。

刚开始的时候,大伙儿就已经做好了迎接挑战的预备,据我私下里了解,有些同窗为了这次课程设计,从不熬夜的他们大体天天晚上研究到夜里一两点才睡,真的很佩服这些同窗的干劲。

其实在那个班级,C++这门课程仍是有必然的区分度的,但仿佛起先就分派好了各自的任务,底子薄的同窗先去自己编写一些自己能够写出的东西,而后请功底好的同窗进行加工,将程序完善化。

关于每一个程序要求做出来的界面,和对每一个题目的明白得,大伙儿都会常常表达自己的观点,往往会把一些某个人想不到的问题给提出来,减少了每一个人为了解决一些常见的错误而绞尽脑汁而所用的时刻,不论结果如何,大伙儿都会常常聚在一路讨论各个方案的可行性。

在课程设计中只有一个人明白如何让程序正确、如何让程序完美是远远不够的,必需让每一个人都明白,如此能够增进大伙儿集体学习的踊跃性,也能够促使大伙儿彼此学习。

倘假设每一个人都只顾着自己的那一点点东东西,那恐怕最终不能通过这次课程设计使自己的知识有所长进,就连跟同窗之间彼此学习的那样一种乐趣他也体会不到吧!

因此说团结协作是咱们成功的一项超级重要的保证。

而这次设计也正好锻炼咱们这一点,这也是超级宝贵的。

此刻差不多大伙儿的程序都已经编好,我想,当大伙儿此刻回忆,那两个礼拜天天都花大量的时刻应该也会感觉是值得吧!

在那个进程中,我也曾经因为理论知识和实践能力的缺乏失落过,也曾经仿真成功而热情高涨。

生活确实是如此,汗水预示着结果也见证着收成。

劳动是人类生存生活永久不变的话题。

尽管这个题目或许对某些人来讲只是一次的一般的课程设计(航空售票系统),可是平心而论,也花费了我很多的心血,这就让我不能不佩服咱们班那些C++学的专门好的同窗,真不明白他们是如何做到的,而我更佩服放入是那些专门弄软件开发的技术先辈,通过这次课程设计才明白编一个简单的系统需要消耗多大的气力,更别说那些成千上万行的大系统,直到此刻我才意识到老一辈对咱们社会的付出,为了人们的生活更美好,他们为咱们社会所付出多少心血啊!

通过这次课程设计,我想说:

为完成这次课程设计咱们确实很辛苦,但苦中仍有乐,和班级同窗一路在同一个教室学习尽力的日子,让咱们有说有笑,彼此帮忙,配合默契,多少人世欢乐在那个地址洒下,大学里一年的相处还赶不上这十来天的学习,我感觉我和同窗们之间的距离加倍近了。

那个题目一直坚持做下来确实很累,但当咱们每一个人的程序运行都宣告成功的时候,当咱们点击运行按钮,显示没有错误,当咱们一句显示屏上的要求去验证任务书上所标明的功能,而且都能实现的时候,内心深处尽然有一种说不出的兴奋和兴奋。

这两个礼拜的各类艰辛在现在此刻都变成了最甜美的回忆!

   对我而言,这不单单是一次课程设计,更多的给我带来的知识上的重大收成,精神上的丰收加倍可喜。

它让我知道了看书的重要性,让我明白团结合作的重要行,更让我明白了学无止境的道理。

咱们每一个人都不能永久能知足于现有的成绩,人一辈子就像在登山,一座山峰的后面还有更高的山峰在等着你。

挫折是一份财富,经历是一份拥有。

这次课程设计必将成为我人一辈子旅途上一个超级美好的回忆!

七、参考文献

一、郑莉、董渊、张瑞丰C++语言程序设计(第三版)清华大学出版社2004年1月

附录:

#include<>

#include<>

#include<>

#include<>

#include<>

constintMaxp=10;ddplane(n,m,de);

return1;

}

return0;

}

Flight*query(intpflightnum)etflightnum()==pflightnum&&Fl[i].getnote()==0)

return&Fl[i];

returnNULL;

}

Flight*query1(intpplanenum)

{

for(inti=0;i<=top;i++)

if(Fl[i].getplanenum()==pplanenum&&Fl[i].getnote()==0)

return&Fl[i];

returnNULL;

}

voidlist()

{

for(inti=0;i<=top;i++)

if(Fl[i].getnote()==0)

Fl[i].list();

}

voidplanedata();

~FDatabase()

{

fstreamfile("",ios:

:

out);

for(inti=0;i<=top;i++)

if(Fl[i].getnote()==0)

((char*)&Fl[i],sizeof(Fl[i]));

();

}

};

voidFDatabase:

:

planedata()ddbook(n,na,id,seat);

return1;

}

return0;

}

Passenger*query(intid)

{

for(inti=0;i<=top;i++)

if(passer[i].getID()==id&&passer[i].getnote()==0)

return&passer[i];

returnNULL;

}

Passenger*query1(intseat)

{

for(inti=0;i<=top;i++)

if(passer[i].getseatnum()!

=seat&&passer[i].getnote()==0)

return&passer[i];

else

returnNULL;

}

voidlist()

{

for(inti=0;i<=top;i++)

if(passer[i].getnote()==0)

passer[i].list();

}

voidpassengerdata();

~PDatabase()

{

fstreamfile("",ios:

:

out);

for(inti=0;i<=top;i++)

if(passer[i].getnote()==0)

((char*)&passer[i],sizeof(passer[i]));

();

}

};

voidPDatabase:

:

passengerdata()

{

intchoice=1,id;

intpflightnum;

charpassengername[20];

Passenger*r;

system("cls");

while(choice!

=0)

{

cout<<"*****************客户治理系统*****************"<

cout<<"★1:

更改客户信息★"<

cout<<"★2:

查找★"<

cout<<"★3:

显示所有客户信息★"<

cout<<"★4:

删除所有客户信息★"<

cout<<"★5:

删除选定的客户信息★"<

cout<<"★0:

退出★"<

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

cout<<"请输入";

cin>>choice;

switch(choice)

{

case1:

cout<<"请输入客户编号";

cin>>id;

r=query(id);

if(r==NULL)

{

cout<<"无此客户!

"<

break;

}

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

";

cin>>passengername;

r->setname(passengername);

cout<<"信息修改成功"<

break;

case2:

cout<<"请输入航班号:

";

cin>>pflightnum;

r=query(pflightnum);

if(r==NULL)

{

cout<<"该航班不存在"<

break;

}

r->list();

break;

case3:

if(top<0)

cout<<"临时无客户订票!

"<

list();

break;

case4:

clear();

break;

case5:

cout<<"请输入客户编号";

cin>>id;

r=query(id);

if(r==NULL)

{

cout<<"无此客户!

"<

break;

}

r->delpassenger();

cout<<"删除成功!

"<

top--;

break;

}

}

system("cls");

}

voidmain()

{

intchoice=1,pflightnum,id,seat;

PDatabasePD;

Flight*b;

FDatabaseFD;

Passenger*r;

charna[20];

while(choice!

=0)

{

cout<<"*************欢迎来到航班售票系统*************"<

cout<<"★1:

订票★"<

cout<<"★2:

退票★"<

cout<<"★3:

乘客信息★"<

cout<<"★4:

飞机信息★"<

cout<<"★0:

退出★"<

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

cout<<"请操作:

";

cin>>choice;

switch(choice)

{

case1:

cout<<"请输入航班号";

cin>>pflightnum;

b=(pflightnum);

if(b==NULL)

{

cout<<"不存在的航班,已返回主界面..."<

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

当前位置:首页 > 自然科学 > 物理

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

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