c课程设计车票管理系统.docx

上传人:b****3 文档编号:6979617 上传时间:2023-05-10 格式:DOCX 页数:22 大小:21.36KB
下载 相关 举报
c课程设计车票管理系统.docx_第1页
第1页 / 共22页
c课程设计车票管理系统.docx_第2页
第2页 / 共22页
c课程设计车票管理系统.docx_第3页
第3页 / 共22页
c课程设计车票管理系统.docx_第4页
第4页 / 共22页
c课程设计车票管理系统.docx_第5页
第5页 / 共22页
c课程设计车票管理系统.docx_第6页
第6页 / 共22页
c课程设计车票管理系统.docx_第7页
第7页 / 共22页
c课程设计车票管理系统.docx_第8页
第8页 / 共22页
c课程设计车票管理系统.docx_第9页
第9页 / 共22页
c课程设计车票管理系统.docx_第10页
第10页 / 共22页
c课程设计车票管理系统.docx_第11页
第11页 / 共22页
c课程设计车票管理系统.docx_第12页
第12页 / 共22页
c课程设计车票管理系统.docx_第13页
第13页 / 共22页
c课程设计车票管理系统.docx_第14页
第14页 / 共22页
c课程设计车票管理系统.docx_第15页
第15页 / 共22页
c课程设计车票管理系统.docx_第16页
第16页 / 共22页
c课程设计车票管理系统.docx_第17页
第17页 / 共22页
c课程设计车票管理系统.docx_第18页
第18页 / 共22页
c课程设计车票管理系统.docx_第19页
第19页 / 共22页
c课程设计车票管理系统.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c课程设计车票管理系统.docx

《c课程设计车票管理系统.docx》由会员分享,可在线阅读,更多相关《c课程设计车票管理系统.docx(22页珍藏版)》请在冰点文库上搜索。

c课程设计车票管理系统.docx

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_hourtm_hour==Hour_start&&local->tm_min<=Minute_start))

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2