c++课程设计车票管理系统方案Word格式文档下载.docx
《c++课程设计车票管理系统方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c++课程设计车票管理系统方案Word格式文档下载.docx(25页珍藏版)》请在冰点文库上搜索。
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_No--;
voidBus_infor:
cout<
\t\t\t按提示输入:
endl;
输入班次:
"
while
(1)
{
cin>
Bus_order;
if(cin.fail())//判断输入的数据类型是否有错
{
cout<
\n班次输入错误,请重新输入:
cin.clear();
cin.get();
}
else
break;
}
请输入车的额定座位数:
all_tickted;
\n座位数输入错误,请重新输入:
GetTime_start();
请输入行车时间:
GoHour;
\n行车时间输入错误,请重新输入:
请输入起始站与终点站:
cin>
start;
cin>
end;
是否清空售票(y/n)?
chara;
a;
if(a=='
y'
||a=='
Y'
)tickted=0;
input(ifstream&
is)
is>
Bus_order>
Hour_start>
Minute_start>
start>
end>
GoHour>
all_tickted>
tickted;
is.get();
output()
Bus_order<
\t"
if(Minute_start==0)//判断发车时的分钟时刻,若为分则在后面多显示个,以符合时间格式
Hour_start<
Minute_start<
0\t"
else
start<
end<
GoHour<
\t"
all_tickted<
if(!
GetTime())
\t此班已出发"
\t此班未出发"
output(ofstream&
os)
os<
setw(6)<
Bus_order//setw()设置输出宽度
<
setw(15)<
Hour_start
Minute_start
start
end
GoHour
all_tickted
tickted
GetTime_start()
请输入始发时间(时分):
while
(1)
{
Minute_start;
if(cin.fail())//判断输入的数据类型是否有错
\n时间输入错误,请重新输入:
}
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<
Hour_start||(local->
tm_hour==Hour_start&
&
local->
tm_min<
=Minute_start))
return1;
//比较当前时间与发车时间,获得班次的当前状况,返回表示班次未出发
return0;
//返回表示班次已出发
Order_tickt(intn)
tickted=tickted+n;
Unorder_tickt(intn)
tickted=tickted-n;
stringBus_infor:
Get_end()const
strings=end;
returns;
classBus_link
Bus_link(){head=newBus_infor;
head->
key=0;
}//带参数的构造函数
~Bus_link(){deletehead;
}//析构函数
//录入车票信息
voidmend();
//修改车票信息
voiddel();
//删除车票信息
intfind(Bus_infor**p,intnum,char*pn);
//查找函数
voidfound();
//查询车票信息
voidshow();
//显示车票信息
voidOrder();
//定购车票信息
voidUnorder();
//退还车票信息
voidsave();
//保存车票信息
voidbegin();
//初始化车票信息
voidclear();
//清除函数
voidabout();
//关于车票信息
charmainmenu();
//主菜单函数
voidsetkey(intk){key=k;
}//设置系统修改标志
intgetkey(){returnkey;
}//返回系统修改标志
Bus_infor*head;
//链表指针
intkey;
//系统修改标志
intpassword;
//管理员登陆标志
if(password==1)
Bus_infor*p,*p2=NULL;
p=head;
intn=1;
//intn;
while(p->
p=p->
while(n)
p2=newBus_infor;
p2->
p->
Bus_link:
\t\t\t按继续,按返回:
if(!
cin)
throwstring("
数据输入错误"
);
\n\t\t对不起,游客不能录入车票信息"
show()
客车基本信息如下:
endl
班次发车时间起点站终点站行车时间额定载量已定票人数当前状况"
Bus_infor*p;
(p->
next)->
output();
found()
intnum,n;
charname[20];
do
\t\t1:
按班次查找,2:
按终点站查找:
if(!
}while(n<
1||n>
2);
if(n==1)
\t\t\t输入班次:
num;
if(n==2)
\t\t\t输入终点站:
name;
find(&
p,num,name))
\t\t找不到你要查找的容!
return;
intBus_link:
find(Bus_infor**p1,intnum,char*pn)
intt=0;
(*p1)=p;
if((p->
Get_bus_order()==num||(p->
Get_end()==pn)
{
<
(p->
t=1;
}
returnt;
del()
Bus_infor*p,*p2;
intnum;
charname[20];
\t\t\t输入班次号:
if(!
p,num,name))
\t\t找不到你要删除的容!
return;
}
\n\t\t\t确定删除(y/n)?
)
p2=p->
next=p2->
deletep2;
\n\t\t对不起,游客不能删除车票信息"
mend()
Bus_infor*p;
charname[20];
\t\t找不到你要修改的容!
\n\t\t对不起,游客不能修改车票信息"
Order()
\n\t\t\t确定购票(y/n)?
charX;
X;
if(X=='
||X=='
){
intnum;
\n\t\t\t输入班次号:
if(!
p,num,"
^"
))
cout<
\n\t\t找不到你要定票的车辆的容!
return;
(p->
GetTime()))//判断要定票的车辆是否已经出发,若已经出发则不允许定票
\n\t\t你要订票的车辆已出发!
\n\t\t\t输入要定的票数 "
intn;
if((p->
Get_tickted()+n)<
=p->
Get_all_tickted())
p->
Order_tickt(n);
elsecout<
\n\t\t对不起,没有足够的票数。
elseif(X=='
n'
N'
)cout<
使用"
elsecout<
\n\t\t\t输入字符不确定"
\n\t\t对不起,订购车票请在管理员处购买"
Unorder()
\n\t\t\t确定退票(y/n)?
\n\t\t找不到你要退票的车辆的容!
GetTime()))//判断要定票的车辆是否已经出发,若已经出发则不允许定票
\n\t\t你要退票的车辆已出发!
\n\t\t\t输入要退的票数 "
Get_tickted()-n)>
=0)
Unorder_tickt(n);
\n\t\t\t对不起,数据出错!
。
\n\t\t对不起,退还车票请在管理员处退还"
save()
ofstreamos("
bus.txt"
ios:
out);
//文件以输出方式打开
if(Bus_link:
getkey()==1)
while(p->
(p->
output(os);
p=p->
\t\t\t文件已保存!
setkey(0);
\n\t\t对不起,游客无法保存车票信息"
about()
endl<
关于车票管理系统"
────────"
使用说明:
\t1.请按照操作提示输入正确的格式,以保证系统正常运行;
\t2.当使用管理员登陆时,需输入密码,可进行对系统的所有操作;
<
\t3.当使用游客身份登陆时,无需输入密码,但只能浏览和查询车票信息;
\t4.车票信息用文本文档格式,保存在本程序文件夹目录下,可以直接打开查看."
系统说明:
\t本系统为课程设计作品,可以简易的进行车票管理,欢迎提出意见和建议"
endl
\t师学院计算机科学与工程系09非师四班\t"
begin()
password=0;
Bus_infor*p,*p2;
clear();
longt;
ifstreamis("
in);
//文件以输入方式打开
is)
//文件以输出方式打开
os.close();
//关闭文件
return;
intnum=-1;
num=-1;
t=is.tellg();
//记录下当前位置
is>
is.seekg(t);
//移动到原来位置
if(num<
0)
{
is.close();
input(is);
//输入is对象容
clear()
p=head->
while(p)
p2=p;
deletep2;
charBus_link:
mainmenu()
structtm