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

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

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

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

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<<"1.录入车

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

当前位置:首页 > 自然科学 > 物理

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

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