📄 火车.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
const seat_number=100;
int inquire_menu();
class inquire;
class ticket;
class list;
int book_or_inquire(inquire A,ticket B,ticket C,ticket D);
void book_ticket(inquire A,ticket B,ticket C,ticket D,list bh9,list rh9,list bh12,list rh12,list bh5,list rh5,list bn9,list rn9,list bn12,list rn12,list bn5,list rn5,list bs9,list rs9,list bs12,list rs12,list bs5,list rs5);
void return_ticket(inquire A,ticket B,ticket C,ticket D,list bh9,list rh9,list bh12,list rh12,list bh5,list rh5,list bn9,list rn9,list bn12,list rn12,list bn5,list rn5,list bs9,list rs9,list bs12,list rs12,list bs5,list rs5);
int menu_select()//主菜单
{
int a;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~这里是广州火车站售票系统~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<" 欢迎使用火车售票系统!"<<endl;
cout<<" 1.查询剩余票数:"<<endl;
cout<<" 2.进行订票服务:"<<endl;
cout<<" 3.进行退票服务:"<<endl;
cout<<" 4.退出系统:"<<endl;
do
{
cout<<" 请选择你要得服务:";
cin>>a;
}while(a<0||a>4);
return a;
}
class list {
protected:
struct node {
int entry; //数据域
node *next; //指针域
node():next(0) {}
node(const int &le, node* link= NULL):entry(le), next(link){}
};
int count,n;
node *head;
node *p;
public:
list()
{head=NULL;count=0;n=0;}
int size()
{return n;}
int empty()
{
if (n==0)
return 1;
else
return 0;
}
void insert(int x)
{
if(count<0)
{cout<<"错误";}
node *s;
s=new node;
s->entry=x;
if(count==0)
{head=s;
head->next=NULL;}
if(count>0)
{
p=head;
for(int i=0;i<count;i++)
{if(head->entry>s->entry)
{s->next=head;
head=s;}
else
{ if(p->next==NULL&&p->entry<s->entry)
{p->next=s;s->next=NULL;}
else if(p->entry<s->entry && p->next->entry>s->entry)
{ s->next=p->next;
p->next=s;
}
}
}
}
count++;
n++;
}
void remove(int x)
{
list A;
if(count==0)
{cout<<"没有可以退票的"<<endl;}
if(count>0)
{
p=head;
for(int i=0;i<count;i++)
{
if(p->entry!=x)
{ p=p->next;}
else
{ if(p==head)
head=p->next;
p=p->next;
count--;}
}
if(i==n+1)
cout<<"此票未出售"<<endl;
else
{n--;
cout<<"成功!!"<<endl;
A.insert(x);}
}
}
int get_head()
{return head->entry;}
};
class ticket //车票
{
private:
int seat_number;
int i,j,k;
char *m1,*m2,*m3;
public:
ticket(int seat_number=0)
{
m1=new char;
for(i=1;i<=seat_number;i++)
{*(m1+i)=i+1;}
m2=new char;
for( j=1;j<=seat_number;j++)
{*(m2+j)=j+1;}
m3=new char;
for( k=1;k<=seat_number;k++)
{*(m3+k)=k+1;}
}
int get_ticket1()
{return (i++);
}
int get_ticket2()
{
return (j++);
}
int get_ticket3()
{
return (k++);
}
int ticket_leaving1()
{return (100-i+1);}
int ticket_leaving2()
{return (100-j+1);}
int ticket_leaving3()
{return (100-k+1);}
int get_i()
{return i-1;}
int get_j()
{return j-1;}
int get_k()
{return k-1;}
};
int inquire_menu() //查询菜单
{
int a;
cout<<" 请选择查询方式!"<<endl;
cout<<" 1.车站."<<endl;
cout<<" 2.出发时间."<<endl;
cout<<" 3.返回主菜单进行其他服务"<<endl;
do
{
cout<<" 请选择你要的查询方式:";
cin>>a;
}while(a<0||a>3);
return a;
}
class inquire{ //查询实现
public:
int station() //车站查询
{
int a;
cout<<"请输入你要查询/订票/退票的车站∶"<<endl;
cout<<"1.杭州,2.宁波,3.上海,4,返回上一单元"<<endl;
do
{
cout<<" 请选择你查询/订票/退票的车站:";
cin>>a;
}while(a<0||a>4);
return a;
}
int train_time()//时间查询
{
int a;
cout<<"请输入你查询/订票/退票火车的时间∶"<<endl;
cout<<"1. 9:30,2. 12:30,3. 15:30,4,返回上一单元"<<endl;
do
{
cout<<" 请选择你查询/订票/退票的时间:";
cin>>a;
}while(a<0||a>4);
return a;
}
friend void menu_case1(inquire A,ticket B,ticket C,ticket D,list bh9,list rh9,list bh12,list rh12,list bh5,list rh5,list bn9,list rn9,list bn12,list rn12,list bn5,list rn5,list bs9,list rs9,list bs12,list rs12,list bs5,list rs5);
};
void menu_case1(inquire A,ticket B,ticket C,ticket D,list bh9,list rh9,list bh12,list rh12,list bh5,list rh5,list bn9,list rn9,list bn12,list rn12,list bn5,list rn5,list bs9,list rs9,list bs12,list rs12,list bs5,list rs5)
{
switch(inquire_menu())
{
case 1:
switch(A.station())
{case 1:cout<<"去杭州的剩余的车票为:"<<300-bh9.size()-bh12.size()-bh5.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 2:cout<<"去宁波的剩余的车票为:"<<300-bn9.size()-bn12.size()-bn5.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 3:cout<<"去上海的剩余的车票为:"<<300-bs9.size()-bs12.size()-bs5.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 4:menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;}
break;
case 2:
switch(A.train_time())
{case 1:cout<<"9:30杭州火车剩余车票:"<<100-bh9.size()<<"张"<<endl;
cout<<"9:30宁波火车剩余车票:"<<100-bn9.size()<<"张"<<endl;
cout<<"9:30上海火车剩余车票:"<<100-bs9.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 2:cout<<"12:30杭州火车剩余车票:"<<100-bh12.size()<<"张"<<endl;
cout<<"12:30宁波火车剩余车票:"<<100-bn12.size()<<"张"<<endl;
cout<<"12:30上海火车剩余车票:"<<100-bs12.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 3:cout<<" 5:30杭州火车剩余车票:"<<100-bh5.size()<<"张"<<endl;
cout<<"5:30宁波火车剩余车票:"<<100-bn5.size()<<"张"<<endl;
cout<<"5:30上海火车剩余车票:"<<100-bs5.size()<<"张"<<endl;
cout<<"你还可以继续查询"<<endl;
cout<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 4:menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
}break;
case 3:
switch(menu_select())
{case 1:menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 2:book_ticket(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 3:return_ticket(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 4: cout<<"程序已结束"<<endl;
exit(0);break;
}
break;
}
}
void book_ticket(inquire A,ticket B,ticket C,ticket D,list bh9,list rh9,list bh12,list rh12,list bh5,list rh5,list bn9,list rn9,list bn12,list rn12,list bn5,list rn5,list bs9,list rs9,list bs12,list rs12,list bs5,list rs5)
{
cout<<"欢迎使用订票系统"<<endl;
switch(A.station())
{case 1:switch(A.train_time())
{case 1:
if(rh9.empty()==1)
{cout<<"订票成功,你的车票是2005.8.6,广州到杭州,上午9:30,票号"<<B.get_ticket1()<<endl;
bh9.insert(B.get_i());}
else {cout<<"订票成功,你的车票是2005.8.6,广州到杭州,上午9:30,票号"<<rh9.get_head()<<endl;
bh9.insert(rh9.get_head());
rh9.remove(rh9.get_head());
}
switch(book_or_inquire(A,B,C,D))
{
case 1:cout<<"请查询剩余票数"<<endl;
menu_case1(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 2:cout<<"继续订票"<<endl;
book_ticket(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
case 3:cout<<"继续退票"<<endl;
return_ticket(A,B,C,D,bh9,rh9,bh12,rh12,bh5,rh5,bn9,rn9,bn12,rn12,bn5,rn5,bs9,rs9,bs12,rs12,bs5,rs5);break;
}
break;
case 2:
if(rh12.empty()==1)
{cout<<"订票成功,你的车票是2005.8.6,广州到杭州,中午12:30,票号"<<B.get_ticket2()<<endl;
bh12.insert(B.get_j());}
else {cout<<"订票成功,你的车票是2005.8.6,广州到杭州,中午12:30,票号"<<rh12.get_head()<<endl;
bh12.insert(rh12.get_head());
rh12.remove(rh12.get_head());
}
switch(book_or_inquire(A,B,C,D))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -