航空售票系统试验报告_第1页
航空售票系统试验报告_第2页
航空售票系统试验报告_第3页
航空售票系统试验报告_第4页
航空售票系统试验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合肥学院计算机科学与技术系课程设计报告20082009学年第二期课程程序设计语言n课程设计课程设计名称航空售票系统学生姓刘艺学号0804032025专业班级网络工程(2)指导教师身玲玲、李红2009年6月一:课程设计题目:航班售票系统实验要求:设计一个航班售票系统系统,能够对航空公司的售票进行管理。航空公司的售票系统主要包括:航线信息、订票业务、退票业务1:航线信息包括航班号,飞机号,目白地,订票数,余票数,共 5项.现有3条航线:目的 地北京,上海,广州。飞机可乘 100人(初始定票数为0,余票数为100)。将这些信息存入文件 airline.dat 中。2:订票业务:(1) .客户信息包括

2、姓名,航班号,假设已有3个客户信息存入文件 customer.dat 。(2) .有新客户订票时,先输入姓名和航班号,查询情况,如果还有余票,就为这个客户办理订票手续,分给客户一个座位号,然后写入文件costomer.dat ,并修改文件,若无余票,则输出客户已满3:退票业务:根据客户提出的航班号,办理退票,从airline.dat 文件中删除 这个客户的信息,并修改airline.dat中相应的航线的订票数和余票数输出全部航线的信息和全部客户信息,退出系统。二:问题分析:实验的准备工作:(1)、仔细阅读课程设计任务书,明确实验设计的目的、实验内容、实验要求、所需知识点等。(2)、阅读教材及相

3、关材料,更深入的了解所需知识点,并与其它知识点能够融会贯通,加深 对各知识点的了解,使得在进行课程设计的时候能够更好的运用各知识点。根据题目要求,先定义一个customer类,声明类中的成员,包括name(姓名),ID (证件号码),want(客人要订的票数)。再定义一个AirInfo 类,此类中包括三个成员函数,分别实 现1 :航班信息.2 :订票业务.3:退票业务的功能.航线信息中要包括 Num(g班号),Start( 航班起飞点),End(航班终点地),Time(航班 起飞时间),Count(航班票数),LeftCount( 航班剩余票数),havingBookCustomer( 已订票

4、的 客户).订票业务中需要用到类的调用,调用customer类,访问类中的公有成员 name,ID,want,输入订票客户信息,订票成功.退票业务中同样需要类的调用,调用customer类,访问类中的公有成员 name,ID,want,输入退票客户信息,退票成功.还要在类中声明一些成员函数,有设计航班号,设计航班起飞点,设计航班终点地,设计航班起飞时间,设计航班票数,设计航班剩余票数,设计已订票的客户,获取航班起飞 时间日期,航班剩余票数,获取该航班起飞地,获取该航班终点地,获取该月班号,打印该航 班的信息的函数.输入新的航班信息,查询航班信息,这些函数均要实现此系统的功能.三:算法的设计1

5、、通过分析实验要求的功能,确定所需函数,两者结合来分析所需的算法及算法该如何实现。2在函数中用到了 for循环来实现对对象的操作,再此过程中,for循环中每加一,实现对下一个对象进行操作,在每个对象中进行添加,删除,修改等功能。3:需用到声明类的成员函数的知识,类的成员函数描写的是类的行为,例如SetNum,SetStart , GetLeftCount , SetHavingBookCustomer等,函数的原型声明要写在类体重,原型说明了函数的参数表和返回值类型,而函数的具体实现是在类之外的,其具体形式为 返回值类型 类名二函数成员名(参数表) (函数体(1) );Customer类str

6、ing m_strID;string m_strName;int m_nWant;4:程序要用到类作用域的知识。类可以被看成是一组有名成员的集合,类X的成员M具有类的作用域,对M的访问形式如下: 如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员M=也就是说M在这样的函数中都起作用,类的封装作用就在于限制数据的作用域。通过表达式x.M或者x:M ,这正是程序中访问对象成员的最基本方法。通过prt->M这样的表达式,其中 prt为指向X类的一个对象的指针。程序中在访问下面函数时均需用到新航班编号新航班起点站新航班终点站 新航班起飞日期 新航班总票数新航班剩余票数

7、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 '

8、 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':/退票业务(CancelAirInfo(&vec_Air); break;)case '

9、;5':/所有航班记录存盘(SaveAirInfo(vec_Air); break;)case '0':break;/ 退出本系统)6:文件的读写。程序需要将文件保存以及读写void SaveAirInfo(vector<AirInfo*> vec_Air)/所有航班信息记录存盘(fstream out;/文件对象out.open("AirInfo.txt",ios:out);/打开存盘文件out.close();/关闭文件,保存完闭四:上机调试过程在调试过程中,我遇到了不少麻烦,因为此程序包含的成员函数,数据太多,程序的顺序我不能 很清

10、晰的把握,在设计算法时,例如设计计算航班余票时,写不出一个正确的算法来实现计算余 票的功能,以至于到现在此功能都未能实现。另外,由于我对链表不熟悉,所以在程序中我未用 到链表。在用文件导入数据时,也出现了麻烦。五:测试结果及其分析1:最初界面2:选择一个菜单:1输入航班信息iF:、刘艺课程设甘MiebusairvlaneSfflft. exe合肥筋1.输入航班信息3市票救£.快存0-退出-is4-iF您确请镯入新而班的编号:请输入新航班的的起点站:乩3 j "i n 9请请|U人新貌班的的终点站:外刁n jhai 卜人新藐班的的起飞时间辿:酬清瑜入新航班的的总祟数式萌录入新

11、An班信息成功,ip查聿 按任意健返回主界加3(2)查询航班(3)订票(4)退票(5)保存与校求系刘艺的.退出合肥学院计弊初科运行过程中出现的问题:运行过程我出现了一个问题,至今仍未解决,当初此输入新客户订票信息时,计算余票功能可以实现,但是,当在此基础上再次输入一个新的订票客户时,计算余票数的功能就不能实现了,调试了很多仍然不能实现。估计是算法有问题。我会在以后的学习中尽快解决。出现的问题实物图c< "F : 刘艺课程设计、纸靖料1)©1)11暮出”>1311©量新版一区匕请输入要订票的航班号门 KiMllEXM;-注菁* *:3<琛=1*&g

12、t;6,冗田|壬'息.KM MUM XX JIM UMM: M KUMM: XXJK 航班号式速飞站;baijing终点站;shsmsrhai一飞时回*08航班息祟数二100列锣数:858993560覆航班看1个客户已订桌其信息如下:客户 ID 号:3404031989 鲍 26辱R姓屯门口上丁票数量:-35g993460请输入新客户的姓名、经验和体会:通过这次的课程设计,我可谓是获益匪浅。了解到很多新知识的使用,巩固了 一些原本的旧知识。与此同时,在做课程设计时一定要有耐心。我就曾遇到过在编译时出现错误 的情况,当时很烦躁,但也没办法,只好硬着头皮,从头根据所知示的位置一步一步进行查

13、找, 在本次的课程设计当中,要想完善自己的要求,就必须有扎实的基础,只有拥有了扎实的基础, 才能更完美的完成自己的课程设计,在学习中要学会对知识的拓展,不能局限于课本的知识,而 要自己多学一些课本上没有的知识,来扩充自己的大脑,了解更多的编程技巧和编程知识而且自 己要学会独立去完成自己的作业和课程设计,在程序设计中,每个人都会碰到难过的坎,自己也 曾经想到了放弃,认为自己没有自己解决这个难题的实力,就会多次依赖于别人的帮助,而自己 也渐渐的学会不假思索的去进去别人的意见,没有自己的一点主张,完全依赖于别人。本次程序 设计中要利用的知识很多,我们也同时有很多中选法去解决课程设计。除此之外,仔细也

14、是很重要的,因为你的一个小疏忽,就可能导致,一连串的问题,会影响继续编译的心情,还会影响编 译速度。我在编译时用的是分块处理的方法,我觉得不失为一个好办法。六:参考书目:1郑莉 等编著C+镭言程序设计(第三版)北京:清华大学出版社2郑莉等编著C+诩言程序设计(第三版)学生用书北京:清华大学出版社3刘振安 等编著C+锂序设计课程设计机械工业出版社4吴乃陵 等编著C+锂序设计北京:高等教育出版社5李春葆 等编著C+锂序设计学习与上机实验指导北京:清华大学出版社6范辉等编著Visual C+6.0 程序设计简明教程高等教育出版社七:附录(源程序)#include <iostream>#i

15、nclude <string>#include <vector>#include <fstream> using namespace std;客户类客户ID号客户姓名客户要订的票数class Customer /public:string m_strID; /string m_strName; / int m_nWant; /;/class AirInfo/航班信息string m_strNum;/航班号string m_strStart;/航班起点站string m_strEnd;/航班终点站string m_strTime;/航班起飞时间日期int m_

16、nCount;/航班票数int m_nLeftCount;/剩余票数public:vector<Customer> m_haveBook;/已订票客户AirInfo();void SetNum(string &n);/设计航班号void SetStart(string &start);/设计航班起飞点void SetEnd(string &end);/设计航班终点地void SetTime(string &time);/设计航班起飞时间void SetCount(int count);/设计航班票数void SetLeftCount(int left

17、);/设计航班剩余票数void SetHavingBookCustomer(Customer &p);/ 设计已订票的客户stringGetTime();/获取航班起飞时间日期intGetLeftCount();/航班剩余票数stringGetStart();/获取该航班起飞地stringGetEnd();/获取该航班终点地stringGetNum();/获取该航班号/intGetCount();voidPrintInfo();/AirInfo()获取该航班总票数打印该航班的信息;void AirInfo:SetHavingBookCustomer(Customer &p)/

18、m_haveBook.push_back(p);/记录已订票的客户int AirInfo二GetLeftCount()return m_nLeftCount;string AirInfo:GetTime()return m_strTime;void AirInfo:SetLeftCount(int left)m_nLeftCount=left;AirInfo:AirInfo()/初始化为空m_strNum="" / m_strStart="" / m_strEnd="" / m_strTime="" /m_nCou

19、nt=0;航班号航班起点站航班终点站航班起飞时间/航班票数m_nLeftCount=0; /剩余票数int AirInfo二GetCount()return m_nCount;string AirInfo:GetNum()return m_strNum;string AirInfo:GetEnd()return m_strEnd;)string AirInfo:GetStart()(return m_strStart;)void AirInfo:SetCount(int count)(m_nCount=count;)void AirInfo:SetTime(string &time)(

20、m_strTime=time;)void AirInfo:SetEnd(string &end)(m_strEnd=end;)void AirInfo:SetStart(string &start)(m_strStart=start;)void AirInfo:SetNum(string &n)(m_strNum=n;)void AirInfo:PrintInfo()打印本航班信息cout<<endl;cout<<"t*航班信息*"<<endl;cout<<"t 航班号:"<&

21、lt;m_strNum<<"t"<<"起飞站:"<<m_strStart<<"t 终点立:"<<m_strEnd<<endl;cout<<"t 起飞时间:"<<m_strTime<<endl;cout<<"t 航班总票数:"<<m_nCount<<"t 剩余票数:"<<m_nLeftCount<<endl;if

22、(m_haveBook.size()!=0)(cout<<"t 该航班有"<<m_haveBook.size()<<" 个客户已订票,其信息如下:"<<endl; cout<<"tt"for(int i=0;i<m_haveBook.size();i+) (cout<<"客户 ID 号:"<<m_haveBooki.m_strID<<endl;cout<<"客户发4名:"<&l

23、t;m_haveBooki.m_strName<<endl;cout<<"订票数量:"<<m_haveBooki.m_nWant<<endl;)cout<<"tt*"<<endl;)void LoadData(vector<AirInfo*> *vec_Air)/从文件导入数据(AirInfo* pA; /航班信息指针fstream dateFile;dateFile.open("AirInfo.txt",ios:in);打开航班信息数据文件strin

24、g tem; / int date=0;int havedBook=0; / while(dateFile>>tem) / (/处理一条航班记录临时变量已订票和客户数 从文件里导入数据/动态创建pA=new AirInfo();/ 在内存申请一块空间pA->SetNum(tem); /设计航班编号/正在对一条记录处理)vec_Air->push_back(pA);/器),不能跳到另外一条记录把本航班的整条信息记录放入模板里(用作航班信息暂存)dateFile.close(); /关闭文件)void NewAirInfo(vector<AirInfo*> *v

25、ec_Air)/输入新的航班信息AirInfo* pA;char yes='n'cout<<"您确定要录入新的航班信息吗?(y/n):"cin>>yes;if(yes='n'|yes='N')return ;cout<<endl;string num,start,end,time;int count;/*开始录入航班信息cout<<"请输入新航班的编号:";*/cin>>num;cout<<endl;cout<<"

26、请输入新航班的的起点站 cin>>start;cout<<endl;cout<<"请输入新航班的的终点站cin>>end;cout<<"请输入新航班的的起飞时间cin>>time;cout<<endl;cout<<"请输入新航班的的总票数cin>>count;cout<<endl;/申请新航班内存空间 pA=new AirInfo();pA->SetNum(num); / pA->SetStart(start); / pA->S

27、etEnd(end);/pA->SetTime(time);/pA->SetCount(count); / pA->SetLeftCount(count); /新航班编号新航班起点站新航班终点站 新航班起飞日期 新航班总票数 新航班剩余票数vec_Air->push_back(pA);cout<<endl;cout<<"t录入新航班信息成功,请查看!"<<endl;cout<<"t按任意键返回主界面!"cin.get();cin.get();/*结束录入航班信息*/void AirF

28、indInfo(vector<AirInfo*> vec_Air)/查询航班信息cout<<endl;char choice;while(choice!='y')cout<<endl;cout<<"tt1按航班编号查询"<<"tt2. 按起点站查询"<<endl;cout<<"tt3. 按终点站查询"<<"tt4.按起飞时间(日期)"<<endl;cout<<"t0.返回

29、主界面"<<endl<<endl;cout<<"tt请选择(0-4):"cin>>choice;switch(choice)case '1':/按航班编号查询string num;cout<<"t请输入要查询的航班编号:"cin>>num;for(int i=0;i<vec_Air.size();i+)(if(vec_Airi->GetNum()=num)/是否有相应的航班编号(vec_Airi->PrintInfo();/打印输出相应航班

30、的所有信息break; if(i=vec_Air.size() /如果找到所有记录最后还没有找到要找的航班编号,则表示没有此航班 cout<<"t对不起,没有找到该编号的航班信息!" cin.get(); cin.get(); break; case '2:11 按起点站查询 int flag=0; string start; cout<<"t请输入要查询起点站:";cin>>start; for(int i=0;i<vec_Air.size();i+)把所有起点站相同的航班找出来 if(vec_Airi

31、->GetStart()=start) vec_Airi->PrintInfo(); flag=1; /说明起码找到一条相应的记录 if(flag=0)/没有此航班记录 cout<<"t对不起,没有找到该起飞站航班信息!" cin.get(); cin.get(); break; case '3':/ 按终点站查询 int flag=0;string end;.11.cout<<"t请输入要查询航班终点站cin>>end;for(int i=0;i<vec_Air.size();i+)/把所有终

32、点站相同的航班找出来(if(vec_Airi->GetEnd()=end)(vec_Airi->PrintInfo();/打印输出航班信息flag=1;/说明起码找到一条相应的记录if(flag=0)(cout<<"t对不起,没有找到该终点站航班信息!"cin.get();cin.get();break;case '4':/按起飞时间(日期)(int flag=0;string time;cout<<"t请输入要查询航班起飞日期:"cin>>time;for(int i=0;i<vec

33、_Air.size();i+)(if(vec_Airi->GetTime()=time)(vec_Airi->PrintInfo();flag=1;if(flag=0)(cout<<"t对不起,没有找到该起飞日期的航班信息!"cin.get();cin.get();break;cin.get();cin.get();break;case '0':/ 返回(cout<<endl; break; ) ) ) ) / void BookAirInfo(vector<AirInfo*> *vec_Air)/订票 int

34、 count;vector<AirInfo*>:iterator v_Iter;/当作指针用cout<<endl;string num;/ 航班号cout<<"t请输入要订票的航班号:";cin>>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter+) if(*v_Iter)->GetNum()=num)/找到相应的航班号 (*v_Iter)->PrintInfo();/输出航班信息break; ) ) if(v_Iter=vec_

35、Air->end()/如果找到记录最后还没有找到此航班的记录 cout<<"t 对不起,暂时没有此航班号!" cin.get(); cin.get(); return ; ) Customer person; cout<<endl; cout<<"t 请输入新客户的姓名:"; cin>>person.m_strName; cout<<endl; cout<<"t请输入新客户的ID号:";cin>>person.m_strID; cout<&

36、lt;"t请输入新客户的订票数:" cin>>person.m_nWant;int left=(*v_Iter)->GetLeftCount();(*v_Iter)->SetLeftCount(left); /设计本航班剩余票数(*v_Iter)->m_haveBook.push_back(person); /记录可订得票的客户cout<<endl;cout<<"t成功为新客户订票!"<<endl;) / cout<<"t按任意键返回主界面"cin.get(

37、);cin.get();)/void CancelAirInfo(vector<AirInfo*> *vec_Air)/取消订票(航班) char choice;vector<AirInfo*>:iterator v_Iter;/指针system("cls"); cout<<endl;string num;/ 航班号cout<<"t请输入要取消订票的航班号:";cin>>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_

38、Iter+) if(*v_Iter)->GetNum()=num)/找到相应的航班号 (*v_Iter)->PrintInfo();/输出航班信息break; ) ) if(v_Iter=vec_Air->end()/如果找到最后还没找到相应的航班记录 cout<<"t对不起,暂时没有此航班号!"cin.get(); cin.get(); return ; ) if(*v_Iter)->m_haveBook.size()/订票的客户,不在等候队列里(即已经得到票) string strID;/ 客户 ID cout<<&quo

39、t;t请输入要退票的客户ID:"cin>>strID;for(int i=0;i<(*v_Iter)->m_haveBook.size();i+)/查找队列是否有此ID 的客户if(*v_Iter)->m_haveBooki.m_strID=strID)/找到有此 ID 的客户 cout<<"t所找的客户信息如下:"<<endl;/cout<<"t 客户 ID:"<<(*v_Iter)->m_haveBooki.m_strID<<"t&qu

40、ot;<<"姓名:"<<(*v_Iter)->m_haveBooki.m_strName<<"t"<<"所订票数:"<<(*v_Iter)->m_haveBooki.m_strName<<endl;cout<<"t 确定要取消此客户的订票业务吗?(y/n):"cin>>choice;if(choice='y') 取消订票intleft=(*v_Iter)->GetLeftCount()-

41、(*v_Iter)->m_haveBooki.m_nWant;(*v_Iter)->SetLeftCount(left);/vector<Customer>:iterator v;v=(*v_Iter)->m_haveBook.begin()+i;(*v_Iter)->m_haveBook.erase(v);cout<<"t成功完成此客户的退票业务设计剩余票数删除此客户所有信息!"<<endl;cout<<"t修改订票业务后的本航班信息如下:"<<endl;(*v_Ite

42、r)->PrintInfo();/ break;if(i=(*v_Iter)->m_haveBook.size() 输出取消订票业务后的此航班记录信息cout<<"t 对不起,没有此客户在已订票客户记录里!"<<endl;int count;cout<<"t 请输入要取消的已订票数量cin>>count;要取消的订票数量count=(*v_Iter)->m_haveBooki.m_nWant; count+=(*v_Iter)->GetLeftCount(); (*v_Iter)->Se

43、tLeftCount(count); / cout<<"t 成功取消订票业务!"<<endl;(*v_Iter)->PrintInfo();/.11.得到以前的剩余票数并加上新退回票数 重新设计本航班的剩余票数输出取消订票业务后的此航班记录信息elsecout<<"t本航班没有任何客户!"<<endl;cout<<endl;cout<<"t按任意键返回主界面"cin.get();cin.get();所有航班信息记录存盘/ void SaveAirInfo(v

44、ector<AirInfo*> vec_Air)/打开存盘文件*/格式化存盘fstream out;/ 文件对象 out.open("AirInfo.txt",ios:out);/ /* 保存航班信息到文件 for(int i=0;i<vec_Air.size();i+)/ (航班号起飞站终点站起飞时间航班票数剩余票数已订票的客户数out<<vec_Airi->GetNum()<<"t" out<<vec_Airi->GetStart()<<"t"/ out<<vec_Airi->GetEnd()<<"t&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论