#include
#include
#include//设置后面的setw()之类的
#include
usingnamespacestd;
classBus_ticket//------------类_1
{
private:
intnum;//班次号
staticintbus_num;//静态数据成员,统计当前所有的bus_ticket对象的数目
charstart[20];//起始站
charend[20];//终点站
intbus_order;//班次号
intall_ticket;//载量
intticket;//已定票人数
inthour_start,minutes_start;//起始时间
inthour_end,minutes_end;//到站时间
inthour,minutes;//行车时间
public:
Bus_ticket();
~Bus_ticket();
Bus_ticketnext;
voidinput();//录入函数
voidoutput();//输出函数
voidSetTimeStart();//录入发车时间
voidSetTimeEnd();//录入到站时间
voidSetAddre();//录入起始点
voidSetTime();//获取行车时间
voidOrderTicket(intn);//订票函数
voidQuitTicket(intn);//退票函数
intGetNum(){returnnum;}//返回班次号
intGetAll_ticket(){returnall_ticket;}//返回载量
intGetTicket(){returnticket;}//返回已定票人数
charGetStart(){returnstart;}//返回发车时间
charGetEnd(){returnend;}//返回到站时间
voidGetTime();//显示行车时间
intGetBus_order(){returnbus_order;}//返回当前所有的bus_ticket对象的数目
};
intBus_ticket::bus_num=1;
Bus_ticket::Bus_ticket()
{
num=bus_num++;
ticket=0;
}
Bus_ticket::~Bus_ticket()
{
bus_num--;
}
voidBus_ticket::input()
{
system("cls");
cout<<"请按提示输入:"< cout<<"输入车次(整数3位):";
cin>>bus_order;
cout<<"输入车的限定载量(整数):"< cin>>all_ticket;
SetTimeStart();
SetTimeEnd();
SetTime();
GetTime();
SetAddre();
chara;
cout<<"是否清空售票(y/n):";
cin>>a;
if(a==''y''||a==''Y'')
ticket=0;
}
voidBus_ticket::SetTimeStart()//录入发车时间
{
intnewH=0,newM=0;
cout<<"请输入发车时间(如:1120):"< cin>>newH>>newM;
hour_start=newH;
minutes_start=newM;
}
voidBus_ticket::SetTimeEnd()//录入到站时间
{
intnewH=0,newM=0;
cout<<"请输入到站时间(如:1310):"< cin>>newH>>newM;
hour_end=newH;
minutes_end=newM;
}
voidBus_ticket::SetTime()//获得行车时间
{
if(minutes_end>=minutes_start)
{
minutes=minutes_end-minutes_start;
hour=hour_end-hour_start;
}
else
{
minutes=minutes_end+60-minutes_start;
hour=hour_end-1-hour_start;
}
}
voidBus_ticket::GetTime()//显示行车时间
{
cout<<"显示行车时间:"< cout< }
voidBus_ticket::SetAddre()//录入起始点和终点站
{
cout<<"请输入起始站和终点站:"< chara[20],b[20];
cin>>a;
cin>>b;
strcpy(start,a);
strcpy(end,b);
}
voidBus_ticket::output()
{
cout<<"客车基本信息:"< cout<<"车次发车时间到站时间行车时间限定载量已订票人数起始站终点站"< cout< setw(7)< setw(8)< setw(8)< setw(8)< setw(10)< setw(12)< setw(9)<
}
voidBus_ticket::OrderTicket(intn)//订票函数
{
ticket+=n;
}
voidBus_ticket::QuitTicket(intn)//退票函数
{
ticket-=n;
}
/-----------------------------------/
classBus_link//------------类_2
{
private:
Bus_tickethead;//链表指针
intkey;//系统修改标志
public:
Bus_link();
voidInput();//录入车票信息
voidMend();//修改车票信息
voidDel();//删除车票信息
intFind(Bus_ticketpl,intnum,charpn);//查找函数
voidFound();//查询车票信息
voidShow();//显示车票信息
voidOrder();//订购车票信息
voidQuit();//退购车票信息
voidClear();//清除函数
charMenu();//主菜单函数
voidSetkey(intk){key=k;}//设置系统修改标志
intGetkey(){returnkey;}//返回系统修改标志
};
Bus_link::Bus_link()
{
head=newBus_ticket;
head->next=NULL;
key=0;
}
voidBus_link::Input()
{
Bus_ticketp,p2=NULL;
p=head;
intn;
while(p->next)//当下一个节点存在时,继续指向下一个节点
p=p->next;
while(n)
{
p2=newBus_ticket;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
Bus_link::Setkey(1);
cout<<"按1继续,按0返回:";
cin>>n;
if(!cin)//此处的含义很特殊
{
cout<<"输入数据错误!请重新输入:";
cin>>n;
}
system("cls");
}
}
voidBus_link::Order()
{
Bus_ticketp;
cout<<"确定购票(y/n):";
charX;
cin>>X;
system("cls");
if(X==''y''||X==''Y'')
{
intnum;
cout<<"输入车次号:";
cin>>num;
if(!Find(&p,num,"^"))
{
cout<<"找不到你要订票的车辆的内容!"< return;
}
cout<<"请输入要订得票数:";
intn;
cin>>n;
p=p->next;
if((p->GetTicket()+n)<=(p->GetAll_ticket()))
{
p->OrderTicket(n);//
cout<<"购票成功,请及时上车:"< }
else
cout<<"对不起,没有足够的票数!"< }
elseif(X==''n''||X==''N'')
cout<<"谢谢使用!"< else
cout<<"输入字符不确定!"< Bus_link::Setkey(1);
}
voidBus_link::Quit()
{
Bus_ticketp;
cout<<"确定退票(y/n):";
charX;
cin>>X;
system("cls");
if(X==''y''||X==''Y'')
{
intnum;
cout<<"输入车次号:";
cin>>num;
if(!Find(&p,num,"^"))
{
cout<<"找不到你要退票车辆的内容!"< return;
}
cout<<"请输入要退得票数:";
intn;
cin>>n;
p=p->next;
if((p->GetTicket()-n)>=0)
{
p->QuitTicket(n);
cout<<"退票成功!"< }
else
cout<<"对不起,数据出错!"< }
elseif(X==''n''||X==''N'')
cout<<"谢谢使用!"< else
cout<<"输入字符不确定!"< Bus_link::Setkey(1);
}
voidBus_link::Found()
{
Bus_ticketp;
intnum=-1,n=9;
charname[20]="^";
do
{
cout<<"1.按车次查找,2.按终点站查找:";
cin>>n;
}while(n<1||n>2);
system("cls");
if(n==1)
{
cout<<"输入车次:";
cin>>num;
}
if(n==2)
{
cout<<"输入终点站:";
cin>>name;
}
if(!Find(&p,num,name))
{
cout<<"找不到你要查找的内容!"< return;
}
}
intBus_link::Find(Bus_ticketpl,intnum,charpn)
{
Bus_ticketp;
p=head;
intt=0;
while(p->next)
{
pl=p;
if(((p->next)->GetBus_order()==num)||(!strcmp((p->next)->GetEnd(),pn)))
{
(p->next)->output();
t=1;
break;
}
p=p->next;
}
returnt;
}
voidBus_link::Del()
{
Bus_ticketp,p2;
intnum;
cout<<"输入车次号:";
cin>>num;
if(!Find(&p,num,"^"))
{
cout<<"找不到你要删除的内容!"< return;
}
p2=p->next;
p->next=p2->next;
deletep2;
cout<<"删除成功!"< Bus_link::Setkey(1);
}
voidBus_link::Show()
{
Bus_ticketp;
p=head;
while(p->next)
{
(p->next)->output();
p=p->next;
}
}
voidBus_link::Mend()
{
Bus_ticketp;
intnum=-1;
charname[20]="^";
cout<<"输入车次号:";
cin>>num;
if(!Find(&p,num,name))
{
cout<<"找不到你要的修改的内容!"< return;
}
(p->next)->output();
(p->next)->input();
Bus_link::Setkey(1);
}
voidBus_link::Clear()
{
Bus_ticketp,p2;
p=head->next;
while(p)
{
p2=p;
p=p->next;
deletep2;
}
}
charBus_link::Menu()
{
charn[20];
cout<<"\n\n欢迎使用车票管理系统\n\n";
cout<<"1.录入车票信息2.浏览车票信息"< cout<<"3.查询车票信息4.删除车票信息"< cout<<"5.修改车票信息6.订购车票信息"< cout<<"7.退购车票信息"< cout<<"0退出系统"< cout<<""< cout<<"请选择功能按钮:"< cin>>n;
returnn[0];
}
intmain(
{
Bus_linkpp;
charn;
while(1)
{
n=pp.Menu();
switch(n)
{
case''1'':pp.Input();break;
case''2'':pp.Show();break;
case''3'':pp.Found();break;
case''4'':pp.Del();break;
case''5'':pp.Mend();break;
case''6'':pp.Order();break;
case''7'':pp.Quit();break;
case''0'':
system("cls");
cout<<""< cout<<"\t谢谢使用车票管理系统!"< cout<<""< system("pause");
system("cls");
break;
}
}
getch();
return0;
}
/有一个很大的缺点:就是不知道怎么退出系统!最后那个0健不成功:谢谢/
|
|