数据结构飞机订票课程设计报告.docx

上传人:b****6 文档编号:7066997 上传时间:2023-01-16 格式:DOCX 页数:33 大小:228.73KB
下载 相关 举报
数据结构飞机订票课程设计报告.docx_第1页
第1页 / 共33页
数据结构飞机订票课程设计报告.docx_第2页
第2页 / 共33页
数据结构飞机订票课程设计报告.docx_第3页
第3页 / 共33页
数据结构飞机订票课程设计报告.docx_第4页
第4页 / 共33页
数据结构飞机订票课程设计报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据结构飞机订票课程设计报告.docx

《数据结构飞机订票课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构飞机订票课程设计报告.docx(33页珍藏版)》请在冰豆网上搜索。

数据结构飞机订票课程设计报告.docx

数据结构飞机订票课程设计报告

 

数据结构

课程设计实践报告

 

设计题目:

姓名:

专业:

计算机科学与技术

学号:

指导老师:

 

一.设计要求………………………………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();

}

};

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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