c++长途客运车票管理系统docx.docx
- 文档编号:29753587
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:22
- 大小:47.78KB
c++长途客运车票管理系统docx.docx
《c++长途客运车票管理系统docx.docx》由会员分享,可在线阅读,更多相关《c++长途客运车票管理系统docx.docx(22页珍藏版)》请在冰豆网上搜索。
c++长途客运车票管理系统docx
#include
#include
#include
#include
#include
//数据流输入/输出
//文件输入/输出
//字符串操作
//参数化输入/输出
//时间库函数
//命名空间
classBus_infor
{
private:
staticintBus_No;charstart[20];charend[20];intBus_order;intall_tickted;inttickted;
//静态数据成员,统计当前所有的Bus_infor对象的数目//起点站
//终点站
//班次号
//额定载量
//已定票人数
intHour_start,Minute_start;//发车时间
floatGoHour;//行车时间
public:
Bus_infor();
~Bus_infor();
Bus_infor*next;
voidinput();//录入函数
voidinput(ifstream&is);//读取函数voidoutput();//输出函数
//写入函数
//定票函数
//退票函数
//获取发车时间函数//判断当前班次状况函数
}//内联函数,返回额定载量
//返回已定票人数
}//返回班次号
stringGet_end()const;
};
//返回终点站的字符串
intBus_infor:
:
Bus_No=1;
Bus_infor:
:
Bus_infor()
{
Bus_No++;tickted=0;
}
Bus_infor:
:
~Bus_infor()
{
Bus_No--;
}
voidBus_infor:
:
input()
{
cout<<"\t\t\t按提示输入:
"< cout<<"输入班次: ";while (1){ cin>>Bus_order; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n班次输入错误,请重新输入: ";cin.clear(); cin.get(); } elsebreak; } coutvv"请输入车的额定座位数: ";while (1) {cin>>all_tickted; if(cin.fail())//判断输入的数据类型是否有错 { coutvv"\n座位数输入错误,请重新输入: "; cin.clear();cin.get(); } elsebreak; } GetTime_start(); coutvv"请输入行车时间: "; while (1) {cin>>GoHour;if(cin.fail())//判断输入的数据类型是否有错 { coutvv"\n行车时间输入错误,请重新输入: "; cin.clear();cin.get(); } elsebreak; } coutvv"请输入起始站与终点站: "; cin>>start;cin>>end; coutvv"是否清空售票(y/n)? "; chara;cin>>a;if(a=='y'||a=='Y')tickted=0; } voidBus_infor: : input(ifstream&is){ is>>Bus_order>>Hour_start>>Minute_start>>start>>end>>GoHour>>all_tickted>>tickted; is.get(); } voidBus_infor: : output() { 以符合时间 cout<<""< if(Minute_start==0)//判断发车时的分钟时刻,若为分则在后面多显示个 格式 { cout< "< } else { cout< "< } cout< GetTime()) cout<<"\t此班已出发"< else cout<<"\t此班未出发"< } voidBus_infor: : output(ofstream&os) { os< < < < < < < } voidBus_infor: : GetTime_start() { cout<<"请输入始发时间(时分): "; while (1) { cin>>Hour_start>>Minute_start; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n时间输入错误,请重新输入: "; cin.clear(); cin.get(); } elseif(Hour_start<0||Hour_start>24||Minute_start<0||Minute_start>60) cout<<"\n时间格式出错,请重新输入: "; ////判断时间格式是否出错,小时不能小于大于,分钟 不能小于大于 elsebreak;} } boolBus_infor: : GetTime() { structtm*local; time_tt; t=time(NULL); local=localtime(&t);//获取当前系统时间 if(local->tm_hour return1;//比较当前时间与发车时间,获得班次的当前状况,返回表示班次未出发 else return0;//返回表示班次已出发 } voidBus_infor: : Order_tickt(intn) { tickted=tickted+n; } voidBus_infor: : Unorder_tickt(intn) { tickted=tickted-n; } stringBus_infor: : Get_end()const { strings=end; returns; } classBus_link {public: //带参数的构造函数 Bus_link(){head=newBus_infor;head->next=NULL;key=0;}~Bus_link(){deletehead;}//析构函数 voidinput();//录入车票信息 voidmend();//修改车票信息 voiddel();//删除车票信息 //查找函数 intfind(Bus_infor**p,intnum,char*pn); voidfound();voidshow();voidOrder(); voidUnorder();voidsave();voidbegin(); //查询车票信息 //显示车票信息 //定购车票信息 //退还车票信息 //保存车票信息//初始化车票信息 voidabout();//关于车票信息 private: Bus_infor*head;intkey; intpassword; //链表指针 //系统修改标志 //管理员登陆标志}; voidBus_link: : input() {if(password==1) { Bus_infor*p,*p2=NULL;p=head;intn=1;//intn;while(p->next)p=p->next; while(n) {p2=newBus_infor;p2->input();p->next=p2;p2->next=NULL;p=p->next;Bus_link: : setkey (1);cout<<"\t\t\t按继续,按返回: ";cin>>n;if(! cin) throwstring("数据输入错误"); } }else cout<<"\n\t\t对不起,游客不能录入车票信息"< voidBus_link: : show() { cout<<"客车基本信息如下: "< "< <<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况Bus_infor*p; p=head; while(p->next) { (p->next)->output(); p=p->next; voidBus_link: : found() { Bus_infor*p; intnum,n; charname[20]; do { cout<<"\t\t1: 按班次查找,2: 按终点站查找: "; cin>>n; if(! cin) throwstring("数据输入错误"); }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入班次: "; cin>>num; if(! cin) throwstring("数据输入错误"); } if(n==2) { cout<<"\t\t\t输入终点站: ";cin>>name; }if(! find(&p,num,name)) { cout<<"\t\t找不到你要查找的内容! "< return; } } intBus_link: : find(Bus_infor**p1,intnum,char*pn) { Bus_infor*p; p=head; intt=0; while(p->next) { (*p1)=p; if((p->next)->Get_bus_order()==num||(p->next)->Get_end()==pn) { cout<<"客车基本信息如下: "< "< <<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况(p->next)->output(); t=1; } p=p->next; } returnt; voidBus_link: : del() {if(password==1){ Bus_infor*p,*p2;intnum;charname[20];cout<<"\t\t\t输入班次号: ";cin>>num; if(! cin) throwstring("数据输入错误"); if(! find(&p,num,name)) { cout<<"\t\t找不到你要删除的内容! "< }cout<<"\n\t\t\t确定删除(y/n)? ";chara;cin>>a; if(a=='y'||a=='Y') {p2=p->next;p->next=p2->next;deletep2;Bus_link: : setkey (1); } }elsecout<<"\n\t\t对不起,游客不能删除车票信息"< } voidBus_link: : mend() {if(password==1){ Bus_infor*p;intnum;charname[20]; cout<<"\t\t\t输入班次号: ";cin>>num; if(! cin) throwstring("数据输入错误"); if(! find(&p,num,name)) { cout<<"\t\t找不到你要修改的内容! "< } (p->next)->input();Bus_link: : setkey (1); else cout<<"\n\t\t对不起,游客不能修改车票信息"< } voidBus_link: : Order() {if(password==1){ Bus_infor*p; cout<<"\n\t\t\t确定购票(y/n)? "; charX;cin>>X; if(X=='y'||X=='Y'){intnum;cout<<"\n\t\t\t输入班次号: ";cin>>num;if(! cin) throwstring("数据输入错误"); if(! find(&p,num,"")) { cout<<"\n\t\t找不到你要定票的车辆的内容! "< }p=p->next; 若已经出发则不允许定票 if(! (p->GetTime()))//判断要定票的车辆是否已经出发 { cout<<"\n\t\t你要订票的车辆已出发! "< }cout<<"\n\t\t\t输入要定的票数"; intn;cin>>n;if(! cin) throwstring("数据输入错误");if((p->Get_tickted()+n)<=p->Get_all_tickted())p->Order_tickt(n); elsecout<<"\n\t\t对不起,没有足够的票数。 "< } elseif(X=='n'||X=='N')cout<<"谢谢使用"< elsecout<<"\n\t\t\t输入字符不确定"< Bus_link: : setkey (1); } else cout<<"\n\t\t对不起,订购车票请在管理员处购买"< } voidBus_link: : Unorder() {if(password==1){ Bus_infor*p; cout<<"\n\t\t\t确定退票(y/n)? "; charX;cin>>X; if(X=='y'||X=='Y'){ intnum; cout<<"\n\t\t\t输入班次号: ";cin>>num; if(! cin) throwstring("数据输入错误"); if(! find(&p,num,"")) { cout<<"\n\t\t找不到你要退票的车辆的内容! "< 定票 } if(! (p->GetTime())) cout<<"\n\t\t你要退票的车辆已出发return; }cout<<"\n\t\t\t输入要退的票数intn;cin>>n; if(! cin) throwstring("数据输入错误");p=p->next;if((p->Get_tickted()-n)>=0)p->Unorder_tickt(n);elsecout<<"\n\t\t\t对不起,数据出错! 。 } //判断要定票的车辆是否已经出发 若已经出发则不允许 ! "< "< elseif(X=='n'||X=='N')cout<<"谢谢使用"< : setkey (1); }elsecout<<"\n\t\t对不起,退还车票请在管理员处退还"< voidBus_link: : save() { if(password==1) { Bus_infor*p; p=head; ofstreamos("bus.txt",ios: : out);if(Bus_link: : getkey()==1) { while(p->next) { //文件以输出方式打开 (p->next)->output(os); p=p->next; cout<<"\t\t\t文件已保存! "< : setkey(0); } elsecout<<"\n\t\t对不起,游客无法保存车票信息"< } voidBus_link: : about() { cout< cout<<"使用说明: "< <<"\t1.请按照操作提示输入正确的格式,以保证系统正常运行;"< <<"\t3.当使用游客身份登陆时,无需输入密码,但只能浏览和查询车票信息;"< <<"\t4.车票信息用文本文档格式,保存在本程序文件夹目录下,可以直接打开查看."< "< <<"\t本系统为课程设计作品,可以简易的进行车票管理,欢迎提出意见和建议"< } voidBus_link: : begin() { password=0; Bus_infor*p,*p2; p=head; clear(); longt; ifstreamis("bus.txt",ios: : in);//文件以输入方式打开 if(! is) { ofstreamos("bus.txt",ios: : out);//文件以输出方式打开 os.close();//关闭文件 return; } intnum=-1; while (1) { num=-1; t=is.tellg();//记录下当前位置 is>>num; is.seekg(t);//移动到原来位置 if(num<0) { is.close();return; } p2=newBus_infor;p2->input(is);//输入is对象内容p->next=p2; p2->next=NULL; p=p->next; } voidBus_link: : clear() { Bus_infor*p,*p2; p=head->next; while(p) { p2=p; p=p->next; deletep2; } } charBus_link: : mainmenu() { structtm*local; chars1[128]; time_tt; t=time(NULL); local=localtime(&t); strftime(s1,128,"%Y-%m-%d%H: %M",local);//按照指定的格式,把时间保存在s1字符串里面 strings;〃定义字符串s,来判断功能选择是否输入错误 cout<<"\n\n欢迎使用车票管理系统"< cout<<"1.录入车票信息\n"< cout<<"2.浏览车票信息\n"< cout<<"3.查询车票信息\n"< cout<<"4.删除车票信息\n"< cout<<"5.修改车票信息\n"< cout<<"6.定购车票信息\n"< cout<<"7.退还车票信息\n"< cout<<"8.保存车票信息\n"< cout<<"9.关于车票系统\n"< cout<<"0.退出系统\n"< cout<<"\t\t\t\t"< while(password==0) { cout<<"\t\t请选择用户名(1.管理员;2.游客): "; intn;cin>>n; if(! cin) throwstring("数据输入错误"); if(n==1) { cout<<"\n\t\t请输入管理员密码: "; intm;cin>>m; if(m==123456) password=1; cout< break; } else {cout<<"\n\t\t密码输入不正确\n"< } } else { password=2;//游客身份标志 break; } } cout<<"请选择功能按钮: ";while(true) { cin>>s; if(s.length()! =1||s[0]<'0'||s[0]>'9')//s.length()返回字符串的长度,即字符个数 coutvv"输入错误,请重新选择功能按钮: "; else break; } returns[0]; } intmain() { Bus_linkpp;intk=1;strings;pp.begin(); try { while(k==1){ //调用主菜单函数 //录入车票信息 //浏览车票信息 //查询车票信息 //删除车票信息 //修改车票信息 //保存车票信息 //退还车票信息 //保存车票信息//关于车票系统//退出系统 system("cls");s=pp.mainmenu(); switch(s[0]) { case'1': pp.input();break; case'2': pp.show();break; case'3': pp.found();break; case'4': pp.del();break; case'5': pp.mend();break; case'6': pp.Order();break; case'7': pp.Unorder();break; case'8': pp.save();break; case'9': pp.about();break;case'0': k=0;break; } if(k==1) { cout<<"\n\t\t\t是否返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 长途 客运 车票 管理 系统 docx