/*设计内容:一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),
固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如
班次发车时间起点站终点站行车时间额定载量已定票人数
18:00郫县广汉24530
26:30郫县成都0.54040
37:00郫县成都0.54020
410:00郫县成都0.5402
三、 任务和要求
(一)功能要求:用c/c设计一系统,能提供下列服务:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,
则显示\"此班已发出\"的提示信息)。
(3)查询路线:可按班次号查询,可按终点站查询
(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数*/
#include\"iostream.h\"
#include\"fstream.h\"
#include\"time.h\"
#include\"string.h\"
classBusticket_Control
{
public:
Busticket_Control(void);//构造函数
~Busticket_Control();//析构函数
boolptime(void);//判断时间
voidinput(void);//录入班次信息
voidoutput(void);//浏览班次信息
voidsale(void);//售票
voidback(void);//退票
stringget_place_end(void)const;//返回终点站
voidinput(ifstream//读取
voidoutput(ofstream//写入
private:
staticintcount;//统计Busticket_Control的数量
intbus_order;//班次
inthour_start;//发车时间(小时)
intminute_start;//发车时间(分钟)
charplace_start[10];//起点站
charplace_end[10];//终点站
floathour_running;//行车时间
intoverload;//额定载量
intticketed;//已定票人数
};
intBusticket_Control::count=1;
voidBusticket_Control::Busticket_Control(void)
{
count;
ticket=0;
}
Busticket_Control::~Busticket_Control()
{
count--;
}
boolBusticket_Control::ptime(void)
{
structtm*local;
time_tt;
t=time(NULL);
local=localtime(
if((local-hourhour_start)hour==hour_start||local-minuteminute_start)
return1;
else
return0;
}
voidBusticket_Control::input(void)
{
cout\"*****请按提示输入*****\"endl;
cout\"请输入班次\"endl;
cinbus_order;
cout\"请输入发车时间的小时(格式00)\"endl;
cinhour_start;
cout\"请输入发车时间的分钟(格式00)\"endl;
cinminute_start;
cout\"请输入起点站\"endl;
cinpalce_start;
cout\"请输入终点站\"end;
cinpalce_end;
cout\"请输入行车时间\"endl;
cinhour_running;
cout\"请输入额定载量\"endl;
cinoverlaod;
cout\"请输入已定票人数\"endl;
cinticketed;
}
voidBusticket_Control::output(void)
{
cout\"班次:\"bus_orderendl;
cout\"发车时间:\"hour_start\":\"minute_startendl;
cout\"起点站:\"palce_startendl;
cout\"终点站:\"palce_endendl;
cout\"额定载量:\"overloadendl;
cout\"已定票人数:\"ticketedendl;
if(ptime())
cout\"**此班已发出**\"endl;
else
cout\"**此班未发出**\"endl;
}
voidBusticket_Control::sale(void)
{
if((ticketedoverload)||ptime())
{
ticketed;
cout\"成功售出一张车票\"endl;
}
else
cout\"售票失败\";
}
voidBusticket_Control::back(void)
{
if(ptime())
cout\"退票失败,班次已发出\"endl;
else
{
ticketed--;
cout\"退票成功\"endl;
}
}
voidBusticket_Control::input(ifstreambus_orderhour_startminute_startplace_startplace_endhour_runningoverloadticketed;
is.get();
}
voidBusticket_Control::ouput(ofstreamsew(6)bus_ordersew(15)hour_startsew(15)minute_startsew(15)place_startsew(15)place_endsew(15)hour_runningsew(15)overloadsew(15)ticketedendl;
}
stringBusticket_Control::get_place_end(void)
{
stringend=place_end;
returnend;
}
classBus_Link
{
public:
Bus_Link()
{
head=newBusticket_Control;
head-next=NULL;
}
~Bus_Link()
{
deletehead;
}
voidinput(void);
voidshow(void);
voidfound(void);
intfind(Busticket_Control**p1,intnum,char*pn);
voidsale(void);
voidback(void);
voidsave(void);
voidclear(void);
voidbegin(void);
voidmenu(void);
private:
Busticket_Control*head;
};
voidBus_Link::input(void)
{
Busticket_Control*p,*p2;
intn=1;
p=head;
while(p-next)
{
p=p-next;
}
while(n)
{
p2=newBusticket_Control;
p2-input();
p-next=p2;
p2-next=NULL;
p=p-next;
cout\"继续输入请按1,否则请按0退去\"endl;
cinn;
}
}
voidBus_Link::show(void)
{
Busticket_Control*p;
p=head;
while(p-next)
{
(p-next)-output();
p=p-next;
}
}
intBus_Link::find(Busticket_Control**p1,intnum,char*pn)
{
Busticket_Control*p;
p=head;
intm=0;
while(p-next)
{
(*p1)=p;
if((p-next)-bus_order==num||(p-next)-get_place_end==pn)
{
(p-next)-output();
m=1;
}
p=p-next;
}
returnt;
}
voidBus_link::found(void)
{
Busticket_Control*p;
intn,num;
charname[10];
cout\"按班次查找请按1,按终点查找请按2\"endl;
cinn;
if(n==1)
{
cout\"请输入班次\"endl;
cinnum;
}
if(n==2)
{
cout\"请输入终点站\"endl;
cinname;
}
if(!find(\"没有你要查找的信息\"endl;
}
}
voidBus_Link::sale(void)
{
Busticket_Control*p;
intn,num;
cout\"确定购票?(是请按1,否请按2)\"endl;
cinn;
if(n==1)
{
cout\"请输入班次\"endl;
cinnum;
if(!find(\"没有你要找的班次\"endl;
}
p=p-next;
if(!p-ptime())
{
cout\"次班次已发出\"endl;
}
p-sale();
}
|