c课程设计车票管理系统.docx
- 文档编号:5427915
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:22
- 大小:21.36KB
c课程设计车票管理系统.docx
《c课程设计车票管理系统.docx》由会员分享,可在线阅读,更多相关《c课程设计车票管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计车票管理系统 课程设计 车票 管理 系统