C++火车票课设.docx
- 文档编号:9414044
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:59
- 大小:416.34KB
C++火车票课设.docx
《C++火车票课设.docx》由会员分享,可在线阅读,更多相关《C++火车票课设.docx(59页珍藏版)》请在冰豆网上搜索。
C++火车票课设
面向对象课程设计
火车票务管理系统
一.题目及要求.............................................................................................
2.需求分析
1.题目及要求
1.题目
火车票包括硬座硬卧和软卧,实现火车票信息的增加删除修改销售统计查询灯捻功能,程序需以菜单方式工作
2.要求
(1)源文件采用多文件的工程结构
(2)数据存储采用文件形式
(3)标准的C++输入输出
(4)功能完善,适当的注释
(5)关于文件的内容需要自学
2.需求分析
系统的要求如下:
需求描述:
1.系统功能
(1)火车信息录入。
包括车次、日期、级别起点、终点、开车时间、行车时间、票价额定载量已订票人数。
数据存入数据文件huoche.txt中。
(2)火车信息浏览
(3)火车信息查询。
按照车次查询
按终点查询
按起点查询
(4)删除火车票信息
(5)修改火车票信息
(6)订购火车票
(7)退还火车票
(8)保存火车票信息
(9)统计
按终点统计车次
按起点统计车次
2.系统主界面应有以下功能选项
录入火车时刻信息
火车信息浏览
查询火车时刻信息
删除火车票信息
修改火车票信息
订购火车票
退还火车票
保存火车票信息
统计火车车次
退出
3.概要设计
1./*头文件*/
#include
#include
#include
#include
#include
2.火车票信息录入类和函数的定义
classTrian_infor
{
intNo;//信息个数
staticintTrian_No;//车次
charjibie[20];//级别
charstart[20];//起点
charend[20];//终点
intdata;//日期
intTrian_order;//订票
intall_tickted;//额定载量
inttickted;//已订票人数
intHour_start,Minute_start,Hour_end,Minute_end;//开车时间(时分)行车时间(时分)
intHour;//时
intMinute;//分
intprice;//票价
public:
Trian_infor*next;
Trian_infor();
~Trian_infor();
intGet_no();
intGet_trian_order();
intGet_data();
intGet_price();
char*Get_jibie();
char*Get_start();
char*Get_end();
intGet_all_tickted();
intGet_tickted();
voidaddr();
voidOrder_tickt(intn);//订票
voidUnorder_tickt(intn);//退票
voidGetTime_start();
voidGetTime_end();
voidShowTime();
voidGetTime();
voidShow_infor();//信息浏览
3.火车票信息实现功能的类
classTrian_link//链表
{
public:
Trian_link(){head=newTrian_infor;head->next=NULL;key=0;}
voidinput();//录入
voidmend();//修改
voidsee();
voiddel();//删除
intfind(Trian_infor**p,intnum,char*pn);
intfind1(Trian_infor**p,intnum,char*pn);
voidfound();//查询
voidtongji();//统计
voidshow();//浏览
voidOrder();//订票
voidUnorder();//退票
voidsave();//保存信息
voidbegin();
voidclear();
charmainmenu();//菜单
intgetkey(){returnkey;}
voidsetkey(intk){key=k;}
private:
Trian_infor*head;
intkey;
};
4.详细设计
#include
#include
#include
#include
#include
usingnamespacestd;
classTrian_infor
{
intNo;//信息个数
staticintTrian_No;//车次
charjibie[20];//级别
charstart[20];//起点
charend[20];//终点
intdata;//日期
intTrian_order;//订票
intall_tickted;//额定载量
inttickted;//已订票人数
intHour_start,Minute_start,Hour_end,Minute_end;//开车时间(时分)行车时间(时分)
intHour;//时
intMinute;//分
intprice;//票价
public:
Trian_infor*next;
Trian_infor();
~Trian_infor();
intGet_no();
intGet_trian_order();
intGet_data();
intGet_price();
char*Get_jibie();
char*Get_start();
char*Get_end();
intGet_all_tickted();
intGet_tickted();
voidaddr();
voidOrder_tickt(intn);//订票
voidUnorder_tickt(intn);//退票
voidGetTime_start();
voidGetTime_end();
voidShowTime();
voidGetTime();
voidShow_infor();//信息浏览
voidinput()//信息输入
{
cout<<"按提示输入:
"< cout<<"输入车次: "; cin>>Trian_order; cout<<"输入日期: "; cin>>data; cout<<"请输入级别: "; cin>>jibie; cout<<"输入票价: "; cin>>price; GetTime_start(); GetTime_end(); addr(); cout<<"请输入车的额定载量: "; cin>>all_tickted; chara; cout<<"是否清空售票(y/n)? "< cin>>a; if(a=='y')tickted=0; } voidinput(ifstream&is) { is>>Trian_order>>data>>jibie>>price>>Hour_start>>Minute_start>>Hour_end>>Minute_end>>start>>end>>all_tickted>>tickted; is.get(); } voidoutput()//信息的输出 { cout<<"\t\t\t列车基本信息如下: "< cout<<"车次: "< <<"\t日期: "< <<"\t级别: "< <<"\t票价: "< <<"\t发车时间: "< "< <<"\t行车时间"< "< <<"\t起点站: "< <<"\t终点站: "< <<"\t额定载量"< "< } voidoutput(ofstream&os) { os< < < < < < < < < < < < < } }; intTrian_infor: : Trian_No=0; voidTrian_infor: : GetTime_start()//开车时间的输入 { intNewH=0,NewM=0; cout<<"请输入开车时间: "< cin>>NewH>>NewM; Hour_start=NewH; Minute_start=NewM; } voidTrian_infor: : GetTime_end()//行车时间的输入 { intNewH=0,NewM=0; cout<<"请输入行车时间: "< cin>>NewH>>NewM; Hour_end=NewH; Minute_end=NewM; } voidTrian_infor: : GetTime()//得时间 { if(Minute_end>=Minute_start){Minute=(Minute_end-Minute_start);Hour=(Hour_end-Hour_start);} else{Minute=(Minute_end-Minute_start+60);Hour=(Hour_end-Hour_start-1);} } voidTrian_infor: : ShowTime()//显示时间 { cout< "< cout< "< cout< "< } voidTrian_infor: : Show_infor()//显示火车信息 { cout< cout< cout< cout< cout< "< cout< "< cout< "< cout< cout< cout< cout< } Trian_infor: : Trian_infor()//火车信息的个数的加 { No=Trian_No++; tickted=0; } Trian_infor: : ~Trian_infor()//火车信息的个数的减 {Trian_No--;} voidTrian_infor: : addr()//输入起点和终点 { cout<<"请输入起点站: "< chara[20]; cin>>a; strcpy(start,a); cout<<"请输入终点站: "< charb[20]; cin>>b; strcpy(end,b); } intTrian_infor: : Get_no()//获得信息个数 { returnNo; } intTrian_infor: : Get_trian_order()//获得订票信息 { returnTrian_order; } intTrian_infor: : Get_data()//获得日期信息 { returndata; } char*Trian_infor: : Get_jibie()//获得级别信息 { returnjibie; } intTrian_infor: : Get_price()//获得票价信息 { returnprice; } char*Trian_infor: : Get_start()//获得起点信息 { returnstart; } char*Trian_infor: : Get_end()//获得终点信息 { returnend; } intTrian_infor: : Get_all_tickted()//获得额定载量信息 { returnall_tickted; } intTrian_infor: : Get_tickted()//获得已订票认数信息 { returntickted; } voidTrian_infor: : Order_tickt(intn)//订票数 { tickted=tickted+n; } voidTrian_infor: : Unorder_tickt(intn)//退票数 { tickted=tickted-n; }; classTrian_link//链表 { public: Trian_link(){head=newTrian_infor;head->next=NULL;key=0;} voidinput();//录入 voidmend();//修改 voidsee(); voiddel();//删除 intfind(Trian_infor**p,intnum,char*pn); intfind1(Trian_infor**p,intnum,char*pn); voidfound();//查询 voidtongji();//统计 voidshow();//浏览 voidOrder();//订票 voidUnorder();//退票 voidsave();//保存信息 voidbegin(); voidclear(); charmainmenu();//菜单 intgetkey(){returnkey;} voidsetkey(intk){key=k;} private: Trian_infor*head; intkey; }; voidTrian_link: : input()//链接输入 { Trian_infor*p,*p2=NULL; p=head; intn=1; while(p->next) p=p->next; while(n) { p2=newTrian_infor; p2->input(); p->next=p2; p2->next=NULL; p=p->next; Trian_link: : setkey (1); cout<<"\t\t\t按1继续,按0返回: "; cin>>n; } } voidTrian_link: : Order()//连接订票 { Trian_infor*p; cout<<"确定购票(y/n)? "< charX;cin>>X; if(X=='y'){ intnum; cout<<"\t\t\t输入车次号: "; cin>>num; if(! find1(&p,num,"^")) { cout<<"\t\t找不到你要定票的火车的内容! "< return; } cout<<"输入要定的票数 "; intn;cin>>n; p=p->next; if((p->Get_tickted()+n)<=p->Get_all_tickted()) {p->Order_tickt(n); cout<<"谢谢使用"< elsecout<<"对不起,没有足够的票数。 "< } elseif(X=='n')cout<<"谢谢使用"< elsecout<<"输入字符不确定"< Trian_link: : setkey (1); } voidTrian_link: : Unorder()//链接退票 { Trian_infor*p; cout<<"确定退票(y/n)? "< charX;cin>>X; if(X=='y'){ intnum; cout<<"\t\t\t输入车次号: "; cin>>num; if(! find1(&p,num,"^")) { cout<<"\t\t找不到你要定票的火车的内容! "< return; } cout<<"输入要退的票数 "; intn;cin>>n; p=p->next; if((p->Get_tickted()-n)>=0) p->Unorder_tickt(n); elsecout<<"对不起,数据出错! 。 "< } elseif(X=='n')cout<<"谢谢使用"< elsecout<<"输入字符不确定"< Trian_link: : setkey (1); } voidTrian_link: : found()//查询链接 { Trian_infor*p; intnum=-1,n=9; charname1[20]=""; charname2[20]=""; do { cout<<"\t\t1: 按车次查找,2: 按起点点站查找,3: 按终点站查找: "; cin>>n; }while(n<1||n>3); if(n==1) { cout<<"\t\t\t输入车次: "; cin>>num; } if(n==2) { cout<<"\t\t\t输入起点站: "; cin>>name1; } if(n==3) { cout<<"\t\t\t输入终点站: "; cin>>name2; } if(! find(&p,num,name1)) { cout<<"\t\t找不到你要查找的内容! "< return; } } voidTrian_link: : tongji()//统计链接 { Trian_infor*p; intnum=-1,n=10; charname[20]="^"; do { cout<<"\t\t1: 按起点统计车次数,2: 按终点统计车次数: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入起点站: "; cin>>name; } if(n==2) { cout<<"\t\t\t输入终点站: "; cin>>name; } if(! find(&p,num,name)) { cout<<"\t\t找不到你要查找的内容! "< return; } } intTrian_link: : find(Trian_infor**p1,intnum,char*pn)//查找车次起点终点 { Trian_infor*p; p=head; intt=1; while(p->next) { (*p1)=p;if((p->next)->Get_trian_order()==num||! strcmp((p->next)->Get_start(),pn)||! strcmp((p->next)->Get_end(),pn)) { (p->next)->output(); t=1; } p=p->next; } returnt; } intTrian_link: : find1(Trian_infor**p1,intnum,char*pn)//查找车次起点终点 { Trian_infor*p; p=head; intt=0; while(p->next) { (*p1)=p; if((p->next)->Get_trian_order()==num||! strcmp((p->next)->Get_start(),pn)||! strcmp((p->next)->Get_end(),pn)) {return1;} p=p->next; } return0; } voidTrian_link: : del()//删除链接 { Trian_infor*p,*p2; intnum; cout<<"\t\t\t输入车次号: "; cin>>num; if(! find(&p,num,"^")) { cout<<"\t\t找不到你要删除的内容! "< return; } p2=p->next; p->next=p2->next; deletep2; Trian_link: : setkey (1); } voidTrian_link: : show()//浏览链接 { Trian_infor*p; p=head; while(p->next) { (p->next)->output(); p=p->next; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 火车票