车票管理系统.docx
- 文档编号:24051819
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:26
- 大小:22.56KB
车票管理系统.docx
《车票管理系统.docx》由会员分享,可在线阅读,更多相关《车票管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
车票管理系统
/*车票管理系统*/
#include
#include
#include
#include
#include
usingnamespacestd;//命名空间
classBus_infor//车辆信息类
{
protected:
intnum;//班次
stringstart;//起点站
stringend;//终点站
intall_tickted;//额定载量
inttickted;//已定票人数
intHour,Minute;//发车时间
floatGoHour;//行车时间
public:
Bus_infor*next;
voidinput();//录入函数
voidinput(ifstream&infile);//读取函数
voidoutput();//输出函数
voidoutput(ofstream&outfile);//写入函数
voidOrder_tickt(intn);//定票函数
voidUnorder_tickt(intn);//退票函数
voidGo_start();//获取发车时间函数
boolGo();//判断当前班次状况函数
intGet_all_tickted(){returnall_tickted;}//返回额定载量
intGet_tickted(){returntickted;}//返回已定票人数
intGet_bus_num(){returnnum;}//返回班次号
stringGet_end();//返回终点站的字符串
};
classBus_do//信息处理类
{
public:
Bus_do(){head=newBus_infor;head->next=NULL;g=0;}//带参数的构造函数
~Bus_do(){deletehead;}//析构函数
voidinput();//录入车票信息
voidmend();//修改车票信息
voiddel();//删除车票信息
Bus_infor*find(intnum);//查找函数
Bus_infor*find(stringgold);
voidfound();//查询车票信息
voidshow();//显示车票信息
voidOrder();//定购车票信息
voidUnorder();//退还车票信息
voidsave();//保存车票信息
voidbegin();//初始化车票信息
voidclear();//清除函数
voidabout();//关于车票信息
charmainmenu();//主菜单函数
voidsetg(intk){g=k;}//设置系统修改标志
intgetg(){returng;}//返回系统修改标志
boolland();//管理员登陆
voidselect(int);//选择功能
private:
intg;//系统修改标志
Bus_infor*head;
};
Bus_dod;
voidBus_do:
:
about()//系统说明
{
system("cls");//清屏
cout< <<"──────────────────────────────"< cout<<"使用说明: "< <<"\t1.请按照操作提示正确输入,以保证系统正常运行。 "< <<"\t2.管理员登陆时,需输入密码。 "< <<"\t3.车票信息保存于本程序目录下,可以参考。 "< <<"\t4.如果密码输入错误三次则系统自动退出,防止他人乱改信息导致系统瘫痪。 "< <<"\t5.录入信息后记得保存,系统不会自动保存。 "< <<"\t6.本系统并非对所有的误输都有恰当的处理,还请按提示输入。 "< <<"\t7.可以多次订票,班次也可以有多种。 "< <<"\t8.作者水平不高,还请多提建议,以便日后改进。 "< <<"──────────────────────────────"< } boolBus_do: : land()//管理员登录 { Bus_dob;//定义处理类对象 b.about();//输出系统说明 strings; inti=0;//计数变量 cout<<"请输入管理员密码: "< while (1) { cin>>s; if(s=="123456")//输入正确 returntrue;//返回正确 else//输错了 { cout<<"输入密码错误,请重新输入: ";//输出提示信息 i++;//计数变量自加 if(i>=3)//连输三次错误 break;//跳出循环 } } cout<<"输入错误三次! 系统自动退出! "< system("pause");//显示暂停 returnfalse;//返回错误 } voidBus_do: : begin()//文件初始化链表 { Bus_infor*p,*p2;//定义两信息类指针 p=head;//p指向头结点 ifstreaminfile("bus.txt",ios: : in);//文件以输入方式打开 if(! infile)//文件打开失败 { ofstreamoutfile("bus.txt",ios: : out);//若无此文件文件以输出方式打开为了建立新文档 outfile.close();//关闭文件 return;//函数调用结束 } while(! infile.eof()) { p2=newBus_infor; p2->input(infile); p->next=p2; p2->next=NULL; p=p->next; } infile.close(); p=head; while(p->next) { p2=p; p=p->next; } p2->next=NULL; } voidBus_do: : select(intk) { chars; d.begin(); while(k) { system("cls");//清屏 s=d.mainmenu();//调用主菜单函数 switch(s) { case'1': d.input();break;//录入车票信息 case'2': d.show();break;//浏览车票信息 case'3': d.found();break;//查询车票信息 case'4': d.del();break;//删除车票信息 case'5': d.mend();break;//修改车票信息 case'6': d.Order();break;//保存车票信息 case'7': d.Unorder();break;//退还车票信息 case'8': d.save();break;//保存车票信息 case'9': d.about();break;//关于车票系统 case'0': return;//退出系统 } cout<<"\n\t\t\t是否返回主菜单? 1┄是0┄不是: "; cin>>k; } } voidBus_infor: : input()//无参输入函数用于录入班次信息 { cout<<"请输入班次: ";//设置班次 while (1) { cin>>num;//输入班次 if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n班次输入错误,请重新输入: "; cin.clear();//清除错误状态 cin.get();//重输 } elsebreak;//输入正确则跳出循环 } cout<<"请输入车的额定座位数: ";//设置额定座位 while (1) { cin>>all_tickted;//输入额定座位 if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n座位数输入错误,请重新输入: "; cin.clear();//清除错误状态 cin.get();//重输 } elsebreak;//输入正确则跳出循环 } Go_start();//调用始发时间函数设置始发时间 cout<<"请输入行车时间: ";//设置行车时间 while (1) { cin>>GoHour; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n行车时间输入错误,请重新输入: "; cin.clear(); cin.get(); } elsebreak; } cout<<"请输入起始站: ";//设置起始站 while (1) { cin>>start; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n起点输入错误,请重新输入: "; cin.clear(); cin.get(); } elsebreak; } cout<<"请输入终点站: ";//输入终点站 while (1) { cin>>end; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n终点站输入错误,请重新输入: "; cin.clear(); cin.get(); } elsebreak; } cout<<"请输入已售票数: ";//输入已售票数 while (1) { cin>>tickted; if(cin.fail()||tickted>all_tickted) { cout<<"\n已售票数输入错误,请重新输入: "; cin.clear(); cin.get(); } elsebreak; } } voidBus_infor: : input(ifstream&infile)//带参录入函数向链表输入 { infile>>num>>Hour>>Minute>>start>>end>>GoHour>>all_tickted>>tickted; } voidBus_infor: : output() { cout< cout< (2)< "< (2)< cout< if(! Go())//调用Go函数判断汽车状态 cout<<"\t此班已出发"< else cout<<"\t此班未出发"< } voidBus_infor: : output(ofstream&outfile)//向文件输出信息 { outfile< < < < < < < < < } voidBus_infor: : Go_start()//设置始发时间 { cout<<"请输入始发时间(时分24h制): ";//输出提示信息 while (1) { cin>>Hour>>Minute; if(cin.fail())//判断输入的数据类型是否有错 { cout<<"\n时间输入错误,请重新输入: "; cin.clear(); cin.get(); } elseif(Hour<0||Hour>24||Minute<0||Minute>60) cout<<"\n时间格式出错,请重新输入: ";//判断时间格式是否出错,小时不能小于0大于24,分钟不能小于0大于60 else break; } } boolBus_infor: : Go()//判断汽车是否发出 { structtm*local;//定义tm结构体指针 time_tt;//定义time_t类型指针 t=time(NULL);//初始化为空指针 local=localtime(&t);//获取当前系统时间,并赋值给local指针 if(local->tm_hour else returnfalse;//返回表示班次已出发 } voidBus_infor: : Order_tickt(intn)//订票处理函数 { tickted=tickted+n;//已定票数加上刚定票数 } voidBus_infor: : Unorder_tickt(intn)//退票处理函数 { tickted=tickted-n;//已定票数更改 } stringBus_infor: : Get_end()//获取终点站 { strings=end; returns;//返回end } voidBus_do: : input()//向链表尾部录入车票信息 { system("cls");//清屏 cout<<"当前车票销售信息: "< Bus_do: : show();//调用show函数显示当前车辆信息 Bus_infor*p1,*p2=NULL;//定义对象指针 p1=head;//将头指针赋给p1 intn=1;//定义循环控制变量 while(p1->next)//当头结点后有数据时执行循环,头结点为空也不会执行循环 p1=p1->next; while(n){ p2=newBus_infor; p2->input(); p1->next=p2;p2->next=NULL; p1=p1->next; Bus_do: : setg (1); cout<<"\t\t\t按1继续,按0返回: ";cin>>n; if(! cin) throwstring("输入错误"); } } voidBus_do: : show()//显示车辆信息 { system("cls");//清屏 cout<<"客车基本信息如下: "< <<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"< Bus_infor*p;//定义车辆信息类对象指针 p=head;//指向链表头部,启用链表信息 while(p->next)//只要下一结点不为空则执行循环 {//此循环功能在于输出所有车辆信息 p=p->next;//P指向下一节点 p->output();//调用next所指对象的输出信息函数,头结点未存放数据只是初始化了next } } voidBus_do: : found()//信息分类查找函数 { system("cls");//清屏 intm,n;//定义辅助变量 stringgold;//定义字符串存放终点站 cout<<"\t\t1: 按班次查找,2: 按终点站查找: ";//输出提示信息 cin>>n;//输入选择 if(! cin) throwstring("输入错误"); if(n==1)//表示按班次查找 { cout<<"\t\t\t输入班次: ";//输出提示信息 cin>>m; if(! cin) throwstring("输入错误"); if(! find(m))//调用find函数查找 { cout<<"\t\t找不到你要查找的内容! "< return;//函数调用结束 } return;//函数调用结束 } if(n==2)//表示按终点站查找 { cout<<"\t\t\t输入终点站: ";//输出提示信息 cin>>gold;//输入终点站 if(! find(gold))//调用find函数,完成查找和输出 { cout<<"\t\t找不到你要查找的内容! "< return;//函数调用结束 } return;//函数调用结束 } } Bus_infor*Bus_do: : find(intnum) { system("cls");//清屏 Bus_infor*p;//定义辅助指针 p=head;//指向链表头结点 while(p->next)//当链表未至尾部时执行循环 { if((p->next)->Get_bus_num()==num)//班次匹配上则输出所查到的车辆信息 { cout<<"客车基本信息如下: "< <<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"< (p->next)->output();//调用输出函数 returnp;//表示找到,返回的是目标结点的前一结点 } p=p->next;//指向下一节点 } returnNULL; } Bus_infor*Bus_do: : find(stringgold) { system("cls");//清屏 Bus_infor*p;//定义辅助指针 p=head;//指向链表头结点 while(p->next)//当链表未至尾部时执行循环 { if((p->next)->Get_end()==gold)//班次匹配上则输出所查到的车辆信息 { cout<<"客车基本信息如下: "< <<"班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"< (p->next)->output();//调用输出函数 returnp;//表示找到,返回的是目标结点的前一结点 } p=p->next;//指向下一节点 } returnNULL; } voidBus_do: : del()//删除车辆信息函数 { system("cls");//清屏 Bus_infor*p1,*p2,*p3;//定义两对象指针用于链表操作 intm; stringgold;//定义相应变量 cout<<"\t\t\t输入班次号: ";//输出提示信息 cin>>m; if(! cin) throwstring("输入错误"); p1=find(m);//调用查找函数 if(! p1)//判断函数返回值是否为NULL { cout<<"\t\t找不到你要删除的内容! "< return;//函数调用结束 } cout<<"\n\t\t\t确定删除(y/n)? ";//显示将要删除数据信息供用户核对 chara; cin>>a;//输入指示 if(a=='y'||a=='Y') {//因为头结点为空仅有next域所以只要考虑被删结点是中间结点和尾结点情况 if((p1->next)->next==NULL)//目标结点为尾结点时 { p2=p1->next;//p2指向目标结点 p1->next=NULL;//p1连接目标结点的next域重新赋值为空指针 deletep2;//释放目标空间 } else {//目标结点为中间节点时 p2=p1->next;//p2指向目标结点 p3=(p1->next)->next;//p3指向目标结点下一结点 p1->next=p3;//连接目标结点前后结点 deletep2;//释放目标结点 } Bus_do: : setg (1);//标记为修改 } } voidBus_do: : mend()//修改函数 { system("cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车票 管理 系统