航空售票系统实验报告.docx
- 文档编号:29816916
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:29
- 大小:386.64KB
航空售票系统实验报告.docx
《航空售票系统实验报告.docx》由会员分享,可在线阅读,更多相关《航空售票系统实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
航空售票系统实验报告
合肥学院
计算机科学与技术系
课程设计报告
2008〜2009学年第二期
课
程
程序设计语言H课程设计
课程设计名称
航空售票系统
学生姓
名
刘艺
学
号
0804032025
专业班
级
网络工程
(2)
指导教
师
咼玲玲、李红
2009年6月
一:
课程设计题目:
航班售票系统实验要求:
设计一个航班售票系统系统,能够对航空公司的售票进行管理。
航空公司的售票系统主要包括:
航线信息、订票业务、退票业务.
1:
航线信息包括航班号,飞机号,目的地,订票数,余票数,共5项.现有3条航线:
目的地北京,上海,广州。
飞机可乘100人(初始定票数为0,余票数为100)。
将这些信息存入文件
airline.dat中。
2:
订票业务:
(1).客户信息包括姓名,航班号,假设已有3个客户信息存入文件customer.dat。
(2).有新客户订票时,先输入姓名和航班号,查询情况,如果还有余票,就为这个客户办理订票手续,分给客户一个座位号,然后写入文件costomer.dat,并修改文件,若无余票,则输出客户已满
3:
退票业务:
根据客户提出的航班号,办理退票,从airline.dat文件中删除这个客户的信息,并修改airline.dat中相应的航线的订票数和余票数输出全部航线的信息和全部客户信息,退出系统。
二:
问题分析:
实验的准备工作:
(1)、仔细阅读课程设计任务书,明确实验设计的目的、实验内容、实验要求、所需知识点等。
(2)、阅读教材及相关材料,更深入的了解所需知识点,并与其它知识点能够融会贯通,加深对各知识点的了解,使得在进行课程设计的时候能够更好的运用各知识点。
根据题目要求,先定义一个customer类,声明类中的成员,包括name(姓名),ID(证件号
码),want(客人要订的票数)。
再定义一个AirInfo类,此类中包括三个成员函数,分别实现1:
航班信息.2:
订票业务.3:
退票业务的功能.
航线信息中要包括Num航班号),Start(航班起飞点),End(航班终点地),Time(航班起飞时间),Count(航班票数),LeftCount(航班剩余票数),havingBookCustomer(已订票的客户).
订票业务中需要用到类的调用,调用customer类,访问类中的公有成员name,ID,want,输入订票客户信息,订票成功.
退票业务中同样需要类的调用,调用customer类,访问类中的公有成员name,ID,want,输入退票客户信息,退票成功.
还要在类中声明一些成员函数,有设计航班号,设计航班起飞点,设计航班终点地,设计航班起飞时间,设计航班票数,设计航班剩余票数,设计已订票的客户,获取航班起飞时间日期,航班剩余票数,获取该航班起飞地,获取该航班终点地,获取该航班号,打印该航班的信息的函数.输入新的航班信息,查询航班信息,这些函数均要实现此系统的功能.
三:
算法的设计
1、通过分析实验要求的功能,确定所需函数,两者结合来分析所需的算法及算法该如何实现。
2在函数中用到了for循环来实现对对象的操作,再此过程中,for循环中每加一,实现对下一个对象进行操作,在每个对象中进行添加,删除,修改等功能。
3:
需用到声明类的成员函数的知识,类的成员函数描写的是类的行为,例如SetNum,
SetStart,GetLeftCount,SetHavingBookCustomer等,函数的原型声明要写在类体重,原型说
明了函数的参数表和返回值类型,而函数的具体实现是在类之外的,其具体形式为返回值类型类名:
:
函数成员名(参数表)
{
函数体
(1)};
stringm_strID;stringm_strName;intm_nWant;
stringm_strNum;stringm_strStart;
stringm_strEnd;stringm_strTime;intm_nCount;intm_nLeftCount;
4:
程序要用到类作用域的知识。
类可以被看成是一组有名成员的集合,类X的成员M具有
类的作用域,对M的访问形式如下:
如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成
员也就是说M在这样的函数中都起作用,类的封装作用就在于限制数据的作用域。
通过表达式x.M或者x:
:
M,这正是程序中访问对象成员的最基本方法。
通过prt->M这样的表达式,其中prt为指向X类的一个对象的指针。
pA->SetNum;//新航班编号
pA->SetStart(start);//pA->SetEnd(end);//pA->SetTime(time);//pA->SetCount(count);//pA->SetLeftCount(count);//vec_Air->push_back(pA);
5:
任务书中要求要用switch,在选择菜单时可以加入。
(1)switch(choice){
case
‘1':
{break;
}
case
‘2':
{
break;
}
case
‘3':
{break;
}
case
‘4':
{
Break;
}
case
‘0':
{
}
(2)cin>>choice;
switch(choice)
{
case'1':
//输入航班信息
{
NewAirInfo(&vec_Air);
break;
}
case'2':
//查询航班
{
AirFindInfo(vec_Air);break;
}
case'3':
//订票业务
{
BookAirInfo(&vec_Air);
break;
}
case'4':
//退票业务
{
CancelAirlnfo(&vec_Air);break;
}
case'5':
//所有航班记录存盘
{
SaveAirlnfo(vec_Air);break;
}
case'O':
break;〃退出本系统
}
}
6:
文件的读写。
程序需要将文件保存以及读写
voidSaveAirlnfo(vector
{
fstreamout;//文件对象
out.open("Airlnfo.txt",ios:
:
out);}〃打开存盘文件
out.close();〃关闭文件,保存完闭
四:
上机调试过程
在调试过程中,我遇到了不少麻烦,因为此程序包含的成员函数,数据太多,程序的顺序我不能很清晰的把握,在设计算法时,例如设计计算航班余票时,写不出一个正确的算法来实现计算余票的功能,以至于到现在此功能都未能实现。
另外,由于我对链表不熟悉,所以在程序中我未用到链表。
在用文件导入数据时,也出现了麻烦。
五:
测试结果及其分析
1:
最初界面
2:
选择一个菜单:
1输入航班信息
F:
\»eW\alrvlane£3:
ft.eze
[•输入肌班信息
3.1T™M
S.保存
MWWW!
Bru含肥学院
百-退出
9 (XX耳K耳NJfKm<>f冥算英超蛙超悅箕乔胃弭廉梵盟算愿弭梵风梵耳梵诞址耳■: 連NXHX英>i3(超耳 您确 请输人斯机址我編号: 1 请输,扎新航斫的的起点站;twijing 请请 III人斯航班的的纯点站: 讦鼻njhai了人新範班的的起飞叶间: ■砸 请夠入斯航班的的总要数江胴 3 (2)查询航班 (3)订票 (4)退票 (5)保存 运行过程中出现的问题: 运行过程我出现了一个问题,至今仍未解决,当初此输入新客户订票信息时,计算余票功能 可以实现,但是,当在此基础上再次输入一个新的订票客户时,计算余票数的功能就不能实现了, 调试了很多仍然不能实现。 估计是算法有问题。 我会在以后的学习中尽快解决。 出现的问题实物图 经验和体会: 通过这次的课程设计,我可谓是获益匪浅。 了解到很多新知识的使用,巩固了一些原本的旧知识。 与此同时,在做课程设计时一定要有耐心。 我就曾遇到过在编译时出现错误的情况,当时很烦躁,但也没办法,只好硬着头皮,从头根据所知示的位置一步一步进行查找, 在本次的课程设计当中,要想完善自己的要求,就必须有扎实的基础,只有拥有了扎实的基础,才能更完美的完成自己的课程设计,在学习中要学会对知识的拓展,不能局限于课本的知识,而要自己多学一些课本上没有的知识,来扩充自己的大脑,了解更多的编程技巧和编程知识而且自 己要学会独立去完成自己的作业和课程设计,在程序设计中,每个人都会碰到难过的坎,自己也曾经想到了放弃,认为自己没有自己解决这个难题的实力,就会多次依赖于别人的帮助,而自己也渐渐的学会不假思索的去进去别人的意见,没有自己的一点主张,完全依赖于别人。 本次程序设计中要利用的知识很多,我们也同时有很多中选法去解决课程设计。 除此之外,仔细也是很重 要的,因为你的一个小疏忽,就可能导致,一连串的问题,会影响继续编译的心情,还会影响编译速度。 我在编译时用的是分块处理的方法,我觉得不失为一个好办法。 六: 参考书目: [1]郑莉等编著《C+■语言程序设计(第三版)》北京: 清华大学出版社 [2]郑莉等编著《C++语言程序设计(第三版)学生用书》北京: 清华大学出版社 [3]刘振安等编著《C++程序设计课程设计》机械工业出版社 [4]吴乃陵等编著《C++程序设计》北京: 高等教育出版社 ⑸李春葆等编著《C++程序设计学习与上机实验指导》北京: 清华大学出版社 ⑹范辉等编著《VisualC++6.0程序设计简明教程》高等教育出版社 七: 附录(源程序) #include #include #include #include classCustomer// { public: stringm_strID;// stringm_strName;//intm_nWant;// }; 客户类 客户ID号客户姓名客户要订的票数 /////////////////////////////////////////////////////////// classAirInfo//航班信息 { stringm_strNum;//stringm_strStart;//stringm_strEnd;// stringm_strTime;// 航班号航班起点站航班终点站航班起飞时间日期 intm_nCount;//航班票数 intm_nLeftCount;//剩余票数 public: vector AirInfo(); voidSetNum(string&n);//voidSetStart(string&start);//voidSetEnd(string&end);//voidSetTime(string&time);//voidSetCount(intcount);//voidSetLeftCount(intleft);//voidSetHavingBookCustomer(CstringGetTime();//intGetLeftCount();//stringGetStart();//stringGetEnd();// stringGetNum();// 设计航班号 设计航班起飞点设计航班终点地设计航班起飞时间设计航班票数设计航班剩余票数 ;//设计已订票的客户获取航班起飞时间日期航班剩余票数获取该航班起飞地获取该航班终点地获取该航班号 intGetCount();//获取该航班总票数 voidPrintInfo();//打印该航班的信息 ~AirInfo(){} }; voidAirInfo: : SetHavingBookCustomer(Customer&p)// { m_haveBook.push_back(p);//记录已订票的客户 } intAirInfo: : GetLeftCount() { returnm_nLeftCount; } stringAirInfo: : GetTime() { returnm_strTime; } voidAirInfo: : SetLeftCount(intleft) { m_nLeftCount=left; } AirInfo: : AirInfo() { 航班号 航班起点站航班终点站航班起飞时间航班票数剩余票数 //初始化为空m_strNum="";//m_strStart="";//m_strEnd="";//m_strTime="";//m_nCount=0;//m_nLeftCount=0;// } intAirInfo: : GetCount() { returnm_nCount; } stringAirInfo: : GetNum() { returnm_strNum; } stringAirInfo: : GetEnd() { returnm_strEnd; } stringAirInfo: : GetStart() { returnm_strStart; } voidAirInfo: : SetCount(intcount) { m_nCount=count; } voidAirInfo: : SetTime(string&time) { m_strTime=time; } voidAirInfo: : SetEnd(string&end) { m_strEnd=end; } voidAirInfo: : SetStart(string&start) { m_strStart=start; } voidAirInfo: : SetNum(string&n) { m_strNum=n; } voidAirInfo: : PrintInfo()//打印本航班信息 cout< cout<<"\t航班号: "< "< "< cout<<"\t起飞时间: "< cout<<"\t航班总票数: "< "< if(m_haveBook.size()! =0) { cout<<"\t该航班有"< "< for(inti=0;i { cout<<"客户ID号: "< cout<<"客户姓名: "< cout<<"订票数量: "< } cout<<"\t\t**********"< } voidLoadData(vector { AirInfo*pA;//航班信息指针 fstreamdateFile; dateFile.open("AirInfo.txt",ios: : in);//打开航班信息数据文件 } vec_Air->push_back(pA);//把本航班的整条信息记录放入模板里(用作航班信息暂存器) } dateFile.close();//关闭文件 } voidNewAirInfo(vector AirInfo*pA; charyes='n'; cout<<"您确定要录入新的航班信息吗? (y/n): "; cin>>yes; if(yes=='n'||yes=='N')return; cout< stringnum,start,end,time;intcount; /**************** 开始录入航班信息*****************/ cout<<"请输入新航班的编号: ";cin>>num; cout< cout<<"请输入新航班的的起点站cin>>start; cout< cout<<"请输入新航班的的终点站cin>>end; cout<<"请输入新航班的的起飞时间 cin>>time; cout< cout<<"请输入新航班的的总票数 cin>>count; cout< //申请新航班内存空间 新航班编号新航班起点站新航班终点站新航班起飞日期新航班总票数新航班剩余票数 pA=newAirInfo();pA->SetNum(num);//pA->SetStart(start);//pA->SetEnd(end);//pA->SetTime(time);//pA->SetCount(count);//pA->SetLeftCount(count);// vec_Air->push_back(pA); cout< cout<<"\t录入新航班信息成功,请查看! "< "; cin.get();cin.get(); /**************** 结束录入航班信息*****************/ voidAirFindInfo(vector { cout< charchoice; while(choice! ='y') { cout< cout<<"\t\t1按航班编号查询"<<"\t\t2.按起点站查询"< cout<<"\t\t请选择(0-4): "; cin>>choice; switch(choice) { case'1': //按航班编号查询 { stringnum; cout<<"\t请输入要查询的航班编号: "; cin>>num; for(inti=0;i { if(vec_Air[i]->GetNum()==num)//是否有相应的航班编号 { vec_Air[i]->PrintInfo();//打印输出相应航班的所有信息break; } } if(i==vec_Air.size()) {//如果找到所有记录最后还没有找到要找的航班编号,则表示没有此航班cout<<"\t对不起,没有找到该编号的航班信息! "; } cin.get(); cin.get(); break; } case'2': //按起点站查询 { intflag=0; stringstart; cout<<"\t请输入要查询起点站: "; cin>>start; for(inti=0;i { if(vec_Air[i]->GetStart()==start) {vec_Air[i]->PrintInfo();flag=1;//说明起码找到一条相应的记录 } } if(flag==0)//没有此航班记录 { cout<<"\t对不起,没有找到该起飞站航班信息! "; } cin.get(); cin.get(); break; } case'3': //按终点站查询 { intflag=0; stringend; cout<<"\t请输入要查询航班终点站: "; cin>>end; for(inti=0;i if(vec_Air[i]->GetEnd()==end) { vec_Air[i]->PrintInfo();//打印输出航班信息 flag=1;//说明起码找到一条相应的记录 } } if(flag==0) { cout<<"\t对不起,没有找到该终点站航班信息! "; } cin.get(); cin.get(); break; } case'4': //按起飞时间(日期) { intflag=0; stringtime; cout<<"\t请输入要查询航班起飞日期: "; cin>>time; for(inti=0;i { if(vec_Air[i]->GetTime()==time) { vec_Air[i]->PrintInfo(); flag=1; } } if(flag==0) { cout<<"\t对不起,没有找到该起飞日期的航班信息! "; cin.get(); cin.get(); break; } cin.get(); cin.get(); break; } case'0': //返回 { cout< break; } } } } ///////////////////////////////////////////////// voidBookAirInfo(vector {intcount; vector : iteratorv_Iter;//当作指针用 cout< stringnum;//航班号 cout<<"\t请输入要订票的航班号: "; cin>>num; for(v_Iter=vec_Air->begin();v_Iter! =vec_Air->end(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统 实验 报告