数据结构飞机订票课程设计报告.docx
- 文档编号:7066997
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:33
- 大小:228.73KB
数据结构飞机订票课程设计报告.docx
《数据结构飞机订票课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构飞机订票课程设计报告.docx(33页珍藏版)》请在冰豆网上搜索。
数据结构飞机订票课程设计报告
数据结构
课程设计实践报告
设计题目:
姓名:
专业:
计算机科学与技术
学号:
指导老师:
一.设计要求………………………………3
二.算法思想和程序结构…………………4
三.调试过程………………………………5
四.运行结果………………………………7
五.心得体会………………………………14
一.设计要求:
1.录入:
录入航班及客户资料,数据分别存入两个数据文件中,取名为“airline.dat”和“customer.dat”。
2.查询:
查询某个航线的情况(如:
输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞和抵达城市,查询飞机航班;)
3.订票:
如果该航班已经无票,可以提供相关可选择航班。
4.退票:
退票后修改相关数据文件。
客户资料要有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件。
二.设计思想
为了方便编写程序,我采用了比较简单的方法,从main主函数中指向5个函数,并且全部定义为void型,可以指向任意类型的数据,提高兼容性。
用switch选择语句来指向调用函数,再对5个调用函数进行定义。
这样函数之间彼此循环构成了一个完整的函数。
并且用结构体的形式存储航班和乘客信息,方便灵活使用。
Main函数
菜单
三.调试过程
由于学的知识不是很牢靠也不是很熟练,在最开始的时候老是范一些小错误,而且很多语法错误,忘了写全{}就会出现很多个错误,在一个庞大的程序里面找这些错误再一一改正,很可能还是不能运行,但是多加一个}就很可能全部错误都搞定。
调试的时候很多地方都是牵一发而动全身,特别是修改的时候,修改一个变量就得把其他部分的都改掉,不然就会一直出现错误。
还经常忘了定义变量就用,不过看英文提示面前能看懂,也能找到相应的错误。
在把语法小错误解决之后就剩下运行了,但是运行的情况不容乐观,很多地方不是我想要的结果。
比如在最开始要初始化程序,就是把预先输入好的几个客户信息存档,这个工作必须在进入程序时就得进行,不然文件里面没有内容。
但是在每次返回主菜单的时候又不能初始化,那样的话就存不进去了。
所以我想出了用两个菜单函数的办法,这样可以选择是否需要初始化。
在退票的时候,由于需要在一个循环里面一直的判断并且存储,如果判断出输入的名字在文件中没有的话就输出“没有你的信息,请查证后再操作!
”,但是随着每一次循环如果找不到信息就得输出一次,这样就会不停地输出那句话。
我想了很久想出来用一个中间变量a来解决,如果名字像匹配就让a=0,不匹配就让a=1,这样就能避免一直的循环,直接在后面判断a的值就能知道判断的结果,然后做出相应的结果,运行的时候终于解决了这个问题。
在其他的几个函数里面我也遭遇到了同样的问题,就是在判断的时候屏幕上一直不停地输出信息,我采取了同样的方法解决了问题。
同样用定义中间变量值的办法。
还有就是存储问题了。
在开始的时候我直接用输出流对象来存储到文件里面,后来打开文件,里面确实有数据,但是在调出数据,也就是在查询客户信息的时候,尽管我输入的是已经存在的客户姓名,但是系统却找不到客户信息。
后来查阅了资料才知道,我存储的时候数据间没有间隔,在读取的时候就不能分别数据了,应该在存储的时候在每个数据间加入一个空格符号,来分开每一个数据。
这样终于搞定了,系统能正常识别数据了。
四.运行结果
1、首先进入系统提示是否是第一次进入,如果是第一次就进行初始化。
否则直接进入主菜单:
第一次进入,初始化!
并且进入主菜单:
2、进行第一个功能选项:
订票业务:
3、下面为第二个功能选项:
查询航班信息
输入航班号或者出发到达地,就会自动输出航班的相关信息。
也可以查询所有航班,并输出相关乘客信息。
4、第三个功能选项,修改航班信息:
包括航班的所有信息。
可以根据航班号以及航班航线进行查找并修改。
5、第四项功能:
订票业务
可以根据航班号以及航班航线进行订票,如果无直达航班,则提供中转航班进行性订票。
5、第五项功能:
退票业务
输入客户证件号及航班号进行退票。
6、退出系统
六.心得体会
本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。
为了让程序容易使人看懂,我用到的知识点不是非常多,大都是一些基本知识,我能熟练地运用这些知识编程也算一个很大的成功了。
C++设计实践是对之前学过的知识的加深和巩固,之前学得较浅,实践的机会不多,这次实践让我对C++程序有了更加深入的了解,心理也由原来的不喜欢到喜欢,感觉很有意思也很有用,可也设计一些有用的或者是自己喜欢的程序。
最令我收益的是写程序的过程和调试修改的过程,因为之前我们就学了几章,没有把知识学习全面,因此编写起来是有难度的,在预先想好程序结构后,就开是卡看书,一个函数一个函数来编写,不懂的地方就上网搜或是请教一下同学,当终于把程序写出来的时候,内心里又有一种说不出来的激动,我感觉这很符合大学的教育观念,是对个人自主学习能力的一个锻炼。
在接下来就是调试,虽然出了很多的错误,虽然自己也被搞的焦头烂额,但我还是很兴奋,一点点找线索,找到问题,再解决。
现在程序终于能较好的运行出来了,当然,还存在一些瑕疵,但通过这个暑假的实践学习,我收获的不仅仅是这一个程序,我的自学能力,以及寻找问题解决问题的能力也得到了很好的锻炼。
源代码:
#include
#include
#include
usingnamespacestd;
structflight
{
intnum;
charplace1[10];
charplace[10];
charplace2[10];
chartime1[20];
chartime[20];
chartime2[20];
intprice1;
intprice2;
intprice;
chardiscount[10];
intdticket;
intyticket;
}fl[20]={{101,"南京","武汉","北京","09-01-13:
00","09-01-16:
00","09-01-18:
00",2700,3000,5600,"50%",1,99},
{102,"新疆","哈尔滨","上海","09-01-09:
00","09-01-15:
00","09-01-21:
00",4000,4500,7800,"70%",1,99},
{103,"杭州","海南","广州","09-01-12:
00","09-01-14:
00","09-01-16:
00",2100,2000,3400,"20%",1,99}};
structcustomer
{
charname[10];
intnum;
charid[20];
intprice;
intticket;//订票数量
intseat;//座位号
}cu[300]={{"张三",101,"321002",5600,1,1},{"李四",102,"225006",7800,1,1},{"王五",103,"210023",3400,1,1}};//定义结构体
structticketnum
{
charplace1[10];
charplace2[10];
intyticket1;
intyticket2;
}ti[20]={{"","",99,99},{"","",99,99},{"","",99,99}};
intcnum=3;//定义客户编号
intfnum=3;//定义飞机编号
voidlist();
voidinput();
voiddingpiao();
voidtuipiao();
voidsearch();
voidchange();
voidmenu();//函数声明
voidchushi();
voidmain()
{
intx;
cout<<"第一次使用请按1进行初始化,按任意数字继续:
";
cin>>x;
if(x==1)
chushi();
else
menu();
}//主函数
voidmenu()
{
inti;
cout<<"*************航空订票系统*************"< cout<<"*** ***"< cout<<"***1.录入业务2.查询航班信息***"< cout<<"***3.修改航班信息4.订票业务***"< cout<<"***5.退票业务6.退出系统***"< cout<<"******"< cout<<"********************************************************"< ifstreaminfile1("airline.dat"); ifstreaminfile2("customer.dat"); for(i=0;i<20;i++) { infile1>>fl[i].num>>fl[i].place1>>fl[i].place>>fl[i].place2>>fl[i].time1>>fl[i].time>>fl[i].time2>>fl[i].price1>>fl[i].price2>>fl[i].price>>fl[i].discount>>fl[i].dticket>>fl[i].yticket>>ti[i].yticket1>>ti[i].yticket2; } for(i=0;i<300;i++) { infile2>>cu[i].name>>cu[i].num>>cu[i].id>>cu[i].price>>cu[i].ticket>>cu[i].seat>>cnum; } infile1.close(); infile2.close();//读取数据 cout<<"请输入业务代码: "; list(); } voidchushi() { inti,j; ofstreamoutfile("airline.dat"); ofstreamfile("customer.dat"); //outfile<<"航班号起点站终点站起飞时间到达时间票价折扣已订票数剩余票数"< //file<<"顾客姓名航班号证件号订票数量座位号订单号"< for(i=0;i<3;i++) { j=i+1; outfile< < < file< } outfile.close(); file.close(); cout<<"初始化已完毕! "< menu(); }//存储数据 voidlist() { inta; cin>>a; cout< while(a<1||a>6) { cout<<"输入错误,请重新输入: "; cin>>a; cout< } switch(a) { case1: input(); break; case2: search(); break; case3: change(); break; case4: dingpiao(); break; case5: tuipiao(); break; case6: exit (1); default: { cout<<"输入错误,请重新输入正确的代码: "; list(); }//输入代码 } } voidinput()/////////////////////////////////////////////////////////////////////录入 { ofstreamoutfile("airline.dat",ios: : app); inty,i; cout<<"一共要录入的航班数: "< cin>>y; cout<<"请依次输入航班信息: "< cout<<"**********************************************************************"< for(i=0;i { cout<<"请输入航班号: "< cin>>fl[i+fnum].num; cout<<"请输入起始站: "< cin>>fl[i+fnum].place1; cout<<"请输入中转站: "< cin>>fl[i+fnum].place; cout<<"请输入终点站: "< cin>>fl[i+fnum].place2; cout<<"请输入起飞时间: "< cin>>fl[i+fnum].time1; cout<<"请输入中转时间: "< cin>>fl[i+fnum].time; cout<<"请输入降落时间: "< cin>>fl[i+fnum].time2; cout<<"请输入票价1: "< cin>>fl[i+fnum].price1; cout<<"请输入票价2: "< cin>>fl[i+fnum].price2; cout<<"请输入总票价: "< cin>>fl[i+fnum].price; cout<<"请输入票价折扣: "< cin>>fl[i+fnum].discount; cout<<"请输入已经订购机票: "< cin>>fl[i+fnum].dticket; cout<<"请输入剩余机票数: "< cin>>fl[i+fnum].yticket; ti[i+fnum].yticket1=fl[i+fnum].yticket; ti[i+fnum].yticket2=fl[i+fnum].yticket; cout< < < outfile< < < fnum=fnum+1; } outfile.close(); menu(); }////////////////////////////////////////////////////////////////////////////////录入 voiddingpiao()//////////////////////////////////////////////////////////////////订票 { charname[10]; charplace1[10]; charplace2[10]; intnum,i,j,t,k,temp,cho; intx,y; charid[20]; cout<<"请输入你的姓名,证件号和订票方式: "< cout<<"姓名: "; cin>>name; cout< cout<<"证件号: "; cin>>id; cout< cout<<"1.航班号: "< "< cin>>cho; switch(cho) { case1: { cout<<"输入航班号: "< cin>>num; for(i=0;i<300;i++) if((strcmp(id,cu[i].id)==0)&&num==cu[i].num) { cout<<"您已经定过该航班,要返回主菜单吗? 输入1返回"; cin>>t; if(t==1) menu(); } for(i=0;i<300;i++) if(id! =cu[i].id) for(j=0;j if(fl[j].num==num) temp=j; if(fl[temp].yticket>0)//判断有没有余票 { cout<<"此航班还有余票,要订票吗? 输入1订票,其他数字退出"; cin>>x; switch(x) { case1: { cout<<"该航班订几张票? "; cin>>y; for(k=0;k if(fl[k].num==num) { cnum=cnum+1; strcpy(cu[cnum].name,name); cu[cnum].num=num; cu[cnum].price=fl[k].price; cu[cnum].ticket=y; cu[cnum].seat=fl[k].dticket+1; strcpy(cu[cnum].id,id); fl[k].dticket=fl[k].dticket+y; fl[k].yticket=fl[k].yticket-y; ofstreamoutfile1("airline.dat"); for(j=0;j outfile1< < < ofstreamoutfile2("customer.dat",ios: : app); outfile2< cout<<"订票成功! "< <<"客户信息: "< "< "< <<"证件号: "< "< "< "< "< outfile1.close(); outfile2.close(); cout<<"1.返回主菜单2.退出: "; cin>>temp; menu(); } };
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 飞机 订票 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)