⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 火车.cpp

📁 自己编的一个火车售票系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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 + -