机票预定系统课程设计说明书.docx
- 文档编号:12661646
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:27
- 大小:163.63KB
机票预定系统课程设计说明书.docx
《机票预定系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《机票预定系统课程设计说明书.docx(27页珍藏版)》请在冰豆网上搜索。
机票预定系统课程设计说明书
广西工学院
c++面向对象课程设计
说明书
设计题目:
航空客运订票系统
系别计算机系
专业班级
学生姓名
学号
指导教师
日期2005-12-25
完成飞机订票系统设计
.
设计目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
问题描述:
航空客运订票的业务活动包括:
查询航线、客票预定和办理退票等。
本课程设计一个航空客运订票系统,用标准的面向对象c++语言使上述业务可以借助计算机在vc++平台上操作实现
基本要求:
a)要求利用面向对象的方法以及算法思想来完成系统的设计;
b)要求在设计的过程中,建立清晰的功能结构图;
c)在系统中要求使用文件存贮数据;
d)在系统的设计中,要设计完备的程序流程图。
关键字:
Customer,AirInfo,飞机信息包括乘客的基本信息,班机剩余的机票等
——装订线——
主要功能描述:
i.每条航线所涉及的信息有:
终点名、航班号、飞机号、飞行时间、订票数余票量、已订票的客户名单:
包括姓名、订票量、以及等候替补的客户名单(包括姓名、所需票量);
ii.系统能实现的操作和功能如下:
(1)输入航班信息 :
主要有 航班号,航班起点站,和终点站,起飞的时间,飞行总时间,余票数和订票数。
(2)查询航班:
根据旅客提出的1航班号,2终点站,3航线名查找输出下列信息:
(航班号、起点站、终点站,飞行时间,余票数;如果没有你查找的信息或查找完毕,输出询问信息是否继续查找用Y和N回答。
)
(3)订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出信息;若已满员或余票少于订票额,则重新询问客户要求。
若需要,可登记排队候补;
(4)退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补的客户。
(5)修改航班信息 :
对各航班信息进行修改,如航班号,航班起点站,和终点站,起飞的时间,飞行的时间,余票数和订票数。
(6)f删除航班信息
(7)g航班信息保存
(8)h退出订票系统
模块设计的思想:
i.程序程序建立所需的.txt文件。
运行程序时,若找不到初始化所需文件,程序将视所有数据为空,即所有班机的机票都未被预定。
例如,首次运行该程序,不采取任何操作或加入若干信息后可从wait.txt文件导出文件已存有的信息。
ii.在查询模块中可根据程序给出的功能进行查询,然后输入要查询的信息,在输出界面上显示已订票的客户和正在排队等待的订票客户的所有信息,按任意键返回主界面。
iii.订票功能模块中,输入要订票的航班信息,输出界面显示已订票的客户或正在排队等待的订票客户信息,如已有等待订票客户,则显示暂时不能满足新的订票客户的需求,询问是否进入等待队列,是输入y和n确定,是的话输入客户的ID信息和所需的航班信息。
iv.退票的模块:
输入要退票的航班信息,显示航班信息,已订票的客户和正在排队等待订票的客户信息,对两类客户(已订票的客户和正在排队等待订票的客户)都进行询问是哪类客户需要退票服务?
选择确定然后输入要退票的客户ID,程序输出显示客户信息,并接着输出显示进行退票业务修改后的航班信息。
v.修改功能模块可对航班信息和客户的所有信息进行修改。
vi.及时存储,程序种只要内容进行了改动,就及时的保存入文件,从而加大了程序的安全性,减小了对各种不安全因素可能引起的损失。
vi.
vii.
viii.
ix.
主要类的设计描述:
classCustomer//////////////////////////////////////////////客户类
{
public:
stringm_strID;//客户ID号
stringm_strName;//客户姓名
intm_nWant;//客户要订的票数
};
classAirInfo//////////////////////////////////////////航班信息类
{
stringm_strNum;//航班号
stringm_strStart;//航班起点站
stringm_strEnd;//航班终点站
stringm_strTime;//航班起飞时间日期
stringm_strFlyTime;//飞行时间
intm_nCount;//航班票数
intm_nLeftCount;//剩余票数
public:
vector
vector
AirInfo();
voidSetNum(string&n);//设计航班号
voidSetStart(string&start);//设计航班起飞点
voidSetEnd(string&end);//设计航班终点地
voidSetTime(string&time);//设计航班起飞时间
voidSetCount(intcount);//设计航班票数
voidSetLeftCount(intleft);//设计航班剩余票数
voidSetFlyTime(string&time);//设计航班飞行总时间
voidSetWait(Customer&p);//设计航班的等候订票队列,每次进一个人
voidSetHavingBookCustomer(Customer&p);//设计已订票的客户
stringGetFlyTime();//获取航班飞行总时间
stringGetTime();//获取航班起飞时间日期
intGetWaitCount();//获取等侯订票队列人数
intGetLeftCount();//航班剩余票数
stringGetStart();//获取该航班起飞地
stringGetEnd();//获取该航班终点地
stringGetNum();//获取该航班号
intGetCount();//获取该航班总票数
voidPrintInfo();//打印该航班的信息
~AirInfo(){}
}
功能实现流程图:
数据测试进入主界面:
查询界面:
订票界面:
退票界面:
分析总结:
通过对C++面向对象此次课题的课程设计,加强了我对C++知识的掌握,特别是对面向对象的重载性、继承性、多态性有了比较熟练的掌握以及对模板应用进一步加强,给本人积累了丰富的编程经验和大大提高了我的动手能力,最后通过不少的数据测试运行,结果表明:
各项数据在界面的传递正常,能达到预期效果。
通过这一课题的研究,使我受益非浅
优点:
本系统的特点是条理清晰,而且界面友善,大方,简单易用,美观。
类与类的关系明了,每个类都有头文件与实现文件分开。
缺点:
界面是控制台的界面。
根据要求我觉得这是本程序的一个小缺陷。
致谢:
感谢李老师和王老师给传输给我们的知识及你们的耐心指导。
同时也感谢身边同学给我提供各种帮助,特别是编程能力很强的那些同学给我的帮助,都是他们在我做这个课程设计过程中遇到问题时都教会我解决的方法。
参考文献:
附录:
程序关键源代码:
voidAirInfo:
:
SetHavingBookCustomer(Customer&p)///记录已订票的客户
intAirInfo:
:
GetLeftCount()
intAirInfo:
:
GetWaitCount()
stringAirInfo:
:
GetTime()
stringAirInfo:
:
GetFlyTime()
voidAirInfo:
:
SetWait(Customer&p)//每次进入一个等侯订票的客户,让客户排在队列后面
voidAirInfo:
:
SetFlyTime(string&time)
voidAirInfo:
:
SetLeftCount(intleft)
AirInfo:
:
AirInfo()
{
//初始化为空
m_strNum="";//航班号
m_strStart="";//航班起点站
m_strEnd="";//航班终点站
m_strTime="";//航班起飞时间
m_strFlyTime="";//飞行时间
m_nCount=0;//航班票数
m_nLeftCount=0;//剩余票数
}
intAirInfo:
:
GetCount()
stringAirInfo:
:
GetNum()
stringAirInfo:
:
GetEnd()
stringAirInfo:
:
GetStart()
voidAirInfo:
:
SetCount(intcount)
voidAirInfo:
:
SetTime(string&time)
voidAirInfo:
:
SetEnd(string&end)
voidAirInfo:
:
SetStart(string&start)
voidAirInfo:
:
SetNum(string&n)
voidAirInfo:
:
PrintInfo()//打印本航班信息
{
cout< cout<<"\t************************航班信息********************"< cout<<"\t航班号: "< "< "< cout<<"\t起飞时间: "< "< cout<<"\t航班总票数: "< if(m_haveBook.size()! =0) { cout<<"\t该航班有"< "< cout<<"\t\t"; for(inti=0;i { cout<<"客户ID号: "< <<"客户姓名: "< <<"订票数量: "< cout< } cout< } cout<<"\t\t**********"< if(m_wPerson.size()! =0) { cout<<"\t该航班有"< "< cout<<"\t\t"; for(inti=0;i { cout<<"客户ID号: "< <<"客户姓名: "< <<"订票数量: "< cout< } cout< } cout<<"\t*****************************************************"< } voidLoadData(vector { AirInfo*pA;//航班信息指针 fstreamdateFile; dateFile.open("AirInfo.txt",ios: : in);//打开航班信息数据文件 stringtem;//临时变量 intwait=0;//等待订票的客户数 intdate=0; inthavedBook=0;//已订票和客户数 while(dateFile>>tem)//从文件里导入数据 { //处理一条航班记录 {//动态创建 pA=newAirInfo();//在内存申请一块空间 pA->SetNum(tem);//设计航班编号 //正在对一条记录处理,不能跳到另外一条记录 } ///////////////////////////////对数字处理 { dateFile>>tem; date=atoi(tem.c_str());//把字符串转换成整形int pA->SetCount(date);//设计航班票数 dateFile>>tem; date=atoi(tem.c_str()); pA->SetLeftCount(date);//设计航班剩余票数 //////对已订票的客户处理 dateFile>>tem; havedBook=atoi(tem.c_str()); for(intj=0;j { CustomerhavedPerson; dateFile>>tem; havedPerson.m_strID=tem;//客户ID dateFile>>tem; havedPerson.m_strName=tem;//客户名字 dateFile>>tem; havedPerson.m_nWant=atoi(tem.c_str());//客户要订票的数目 pA->SetHavingBookCustomer(havedPerson); } ////////////////////////////////////////////////////////////////////////////对等候客户的数据导入 dateFile>>tem; wait=atoi(tem.c_str());//本航班有wait个客户等候排队订票 for(inti=0;i { Customerperson; dateFile>>tem; person.m_strID=tem;//客户ID dateFile>>tem; person.m_strName=tem;//客户名字 dateFile>>tem; person.m_nWant=atoi(tem.c_str());//客户要订票的数目 pA->SetWait(person); } } vec_Air->push_back(pA);//把本航班的整条信息记录放入模板里(用作航班信息暂存器) } dateFile.close();//关闭文件 } voidFindAirInfo(vector voidBookAirInfo(vector { vector : iteratorv_Iter;//当作指针用 system("cls");//清屏 cout< stringnum;//航班号 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_Air->end())//如果找到记录最后还没有找到此航班的记录 { cout<<"\t对不起,暂时没有此航班号! "; cin.get(); cin.get(); return; } if((*v_Iter)->m_wPerson.size()! =0)//是否有客户在等候订票 { for(inti=0;i<(*v_Iter)->m_wPerson.size();i++) { //如果第一个客户所订票数小于此航班所剩余的票数,则询问此客户是否要订票 if((*v_Iter)->m_wPerson[0].m_nWant<(*v_Iter)->GetLeftCount()) { cout<<"\t请先核对并满足排队等候本航班的客户! "< //计算剩余票数 intleft=(*v_Iter)->GetLeftCount()-(*v_Iter)->m_wPerson[0].m_nWant; charmeet;//满足要求 cout<<"\t可以满足等候本航班的第一个客户的订票数,是否要订票? (y/n): "; cin>>meet; if(meet=='y')//满足此客户的订票需求 { vector : iteratorIter_person;//声明一个客户类型的指针 Iter_person=(*v_Iter)->m_wPerson.begin();//指向等候队列首地址 (*v_Iter)->SetLeftCount(left); cout<<"\t已经为等候本航班的第一个客户订票! 请通知该客户! "< CustomerPerson; Person.m_strID=(*v_Iter)->m_wPerson[0].m_strID; Person.m_strName=(*v_Iter)->m_wPerson[0].m_strName; Person.m_nWant=(*v_Iter)->m_wPerson[0].m_nWant; //把已满足的客户放入已订得票的客户记录 (*v_Iter)->m_haveBook.push_back(Person); //删除第一个已经满足订票的客户 (*v_Iter)->m_wPerson.erase(Iter_person); //输出修改后的本航班所有信息 (*v_Iter)->PrintInfo(); i--;//为了不错过每一个客户 } } } } if((*v_Iter)->m_wPerson.size()! =0)//还有客户等候本航班 { charwait='n'; cout<<"\t系统暂不能满足新客户的订票要求! 是否要排队等候? (y/n): "; cin>>wait; if(wait=='y') { Customerp;//声明一个要等候的客户对象 cout<<"\t请输入此客户的ID编号: "; cin>>p.m_strID; cout<<"\t请输入此客户的姓名: "; cin>>p.m_strName; cout<<"\t请输入要订票的数目: "; cin>>p.m_nWant; (*v_Iter)->m_wPerson.push_back(p);//进行排队等候 cout<<"\t此客户已经进入本航班的订票排队! "; } } else//新客户,本航班没有客户在等候排票 { intcount; cout<<"\t请输入新客户要订票的数量: "; cin>>count; if((*v_Iter)->GetLeftCount() { cout< cout<<"\t对不起,本航班已没有足够的票数"< cout<<"\t是否要进入排队等候? (y/n): "; charch; cin>>ch; if(ch=='y') { Customerp; cout< cout<<"\t请输入此客户的ID号: "; cin>>p.m_strID; cout< cout<<"\t请输入此客户的姓名: "; cin>>p.m_strName; p.m_nWant=count; (*v_Iter)->m_wPerson.push_back(p); cout<<"\t此客户已进入等候排队订票中! "< } else { cout< cout<<"\t您已取消了排队等候订票! "< } } else//可以满足订票要求,把新客户放入已订得票的客户记录里 { Customerperson; cout< cout<<"\t请输入新客户的ID号: "; cin>>person.m_strID; cout< cout<<"\t请输入新客户的姓名: "; cin>>person.m_strName; person.m_nWant=count; intleft=(*v_Iter)->GetLeftCount()-count;// (*v_Iter)->SetLeftCount(left);//设计本航班剩余票数 (*v_Iter)->m_haveBook.push_back(person);//记录可订得票的客户 cout< cout<<"\t成功为新客户订票! "< } } cout<<"\t按任意键返回主界面";/////////////////////
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机票 预定 系统 课程设计 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)