c课程设计车票管理系统.docx
- 文档编号:10287267
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:26
- 大小:21.50KB
c课程设计车票管理系统.docx
《c课程设计车票管理系统.docx》由会员分享,可在线阅读,更多相关《c课程设计车票管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
c课程设计车票管理系统
封面
作者:
PanHongliang
仅供个人学习
#include
#include
#include
#include
#include
usingnamespacestd。
//命名空间
classBus_infor
{
private:
staticintBus_No。
//静态数据成员,统计当前所有地Bus_infor对象地数目
charstart[20]。
//起点站
charend[20]。
//终点站
intBus_order。
//班次号
intall_tickted。
//额定载量
inttickted。
//已定票人数
intHour_start,Minute_start。
//发车时间
floatGoHour。
//行车时间
public:
Bus_infor()。
~Bus_infor()。
Bus_infor*next。
voidinput()。
//录入函数
voidinput(ifstream&is)。
//读取函数
voidoutput()。
//输出函数
voidoutput(ofstream&os)。
//写入函数
voidOrder_tickt(intn)。
//定票函数
voidUnorder_tickt(intn)。
//退票函数
voidGetTime_start()。
//获取发车时间函数
boolGetTime()。
//判断当前班次状况函数
intGet_all_tickted(){returnall_tickted。
}//内联函数,返回额定载量
intGet_tickted(){returntickted。
}//返回已定票人数
intGet_bus_order(){returnBus_order。
}//返回班次号
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()。 } else break。 } cout<<"请输入车地额定座位数: "。 while (1) { cin>>all_tickted。 if(cin.fail())//判断输入地数据类型是否有错 { cout<<"\n座位数输入错误,请重新输入: "。 cin.clear()。 cin.get()。 } else break。 } GetTime_start()。 cout<<"请输入行车时间: "。 while (1) { cin>>GoHour。 if(cin.fail())//判断输入地数据类型是否有错 { cout<<"\n行车时间输入错误,请重新输入: "。 cin.clear()。 cin.get()。 } else break。 } cout<<"请输入起始站与终点站: "。 cin>>start。 cin>>end。 cout<<"是否清空售票(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< if(! 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时间格式出错,请重新输入: "。 ////判断时间格式是否出错,小时不能小于大于,分钟不能小于大于 else break。 } } 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()。 //初始化车票信息 voidclear()。 //清除函数 voidabout()。 //关于车票信息 charmainmenu()。 //主菜单函数 voidsetkey(intk){key=k。 }//设置系统修改标志 intgetkey(){returnkey。 }//返回系统修改标志 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找不到你要删除地内容! "< return。 } 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)。 } } else cout<<"\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找不到你要修改地内容! "< return。 } (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找不到你要定票地车辆地内容! "< return。 } p=p->next。 if(! (p->GetTime()))//判断要定票地车辆是否已经出发,若已经出发则不允许定票 { cout<<"\n\t\t你要订票地车辆已出发! "< return。 } 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找不到你要退票地车辆地内容! "< return。 } 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<<"谢谢使用"< elsecout<<"\n\t\t\t输入字符不确定"< Bus_link: : setkey (1)。 } else cout<<"\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文件已保存! "< Bus_link: : setkey(0)。 } else cout<<"\n\t\t对不起,游客无法保存车票信息"< } voidBus_link: : about() { cout< cout<<"使用说明: "< <<"\t1.请按照操作提示输入正确地格式,以保证系统正常运行。 "< <<"\t2.当使用管理员登陆时,需输入密码,可进行对系统地所有操作。 "< <<"\t3.当使用游客身份登陆时,无需输入密码,但只能浏览和查询车票信息。 "< <<"\t4.车票信息用文本文档格式,保存在本程序文件夹目录下,可以直接打开查看."< <<"系统说明: "< <<"\t本系统为课程设计作品,可以简易地进行车票管理,欢迎提出意见和建议"< <<"\t内蒙古科技大学软件专业14届学生设计\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.录入车
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计车票管理系统 课程设计 车票 管理 系统