车站管理系统

#include<iostream.h>
void menu();      //主界面菜单
void fanhui();    //返回上一级
void fn1();      //管理员操作
void fn2();      //客户操作
void dingpiao();
void tuipiao();
void watch(); 
void browseticket();
void change(); 
struct b          //定义一结构体,储存班次信息
{ char *banci;
  int fajishijian; 
  int hangxingshijian;
  int piaojia; }; 

class p               //定义一类型,储存订票信息
{private: 
 char *name;       //名字 
 char *banci;      //班次
 int piaoshu;       //票数 
public: 
 void set(char*pname,char*pbanci,int n);      //输入储存定购票信息
 void del(char*pname,char*pbanci,int n);      //删除储存已订购车票信息
 void play();                                 //打印出已订购车票信息
};
  void p::set(char*pname,char*pbanci,int n)    //定购票
  { name=pname; 
    banci=pbanci; 
    piaoshu=n;   }

void p::del(char*pname,char*pbanci,int n) // 反退票
{ 
 name=pname; 
 banci=pbanci;
 piaoshu=n; } 

void p::play()                        //打印出已订购票信息
{ 
	cout<<endl<<"您的姓名是:"<<name<<endl
      <<"您定的班次是:"<<banci<<endl
      <<"您所要的票数是:"<<piaoshu<<endl<<endl;
}

void menu()
{
	int a,b; 
	  cout<<"\n ---------------------------------$\n";
      cout<<"**欢迎该管理系统**\n";
      cout<<"---------------------------------\n\n";
	  cout<<"1.管理员"<<endl
	      <<"2.乘客";
	  cin>>a;
 if(a!=1&&a!=2)
 {
   cout<<"输入错误,请重新输入";
   menu();
 } 
 if(a==1)
 { 
    cout<<"请输入密码并以回车键结束:";
	cin>>b;
	if(b!=8888)
	{
       cout<<"密码错误!\n请重新选择:";
	   menu();}
  else fn1();
 }
     else
     fn2();
}
void dingpiao(p pperson)          //定购票
{
	cout<<"\n欢迎订购车票!"<<endl;
	cout<<"请输入您的名字:";
	char n[10];
	cin>>n;
    cout<<"请输入您要的班次号:";
	char b[10]; 
    cin>>b;
    cout<<"请输入您要的票数:";
	int k;
	cin>>k;
 pperson.set(n,b,k);
 pperson.play();
 cout<<"\n无论何时!\n我们都会为您提供优质的服务!\n"<<endl;
 int j=1;            //返回上一级。用变量j循环完成返回上一级,j为真时,循环 
 while(j)           //直到j重新输入为0时,跳出循环。而重新上一级的循环,达到返回上一级的功能 
 {  cout<<"返回上一级,请选择按键(0):";
     cin>>j;
	 if(j!=0)
 { 
       cout<<"输入错误,请按键(0)返回上一级。"<<endl; 
	 }
 }
}

void tuipiao(p pperson)                         // 返退机票 
{ cout<<"\n即将为您提供退票服务!"<<endl;
cout<<"请输入您的名字:";
char n[10];
cin>>n;
cout<<"请输入您要退的班次号:";
char b[10];
cin>>b;
cout<<"请输入您要退的票数:";
int k;
cin>>k;
pperson.set(n,b,k);
cout<<"您已退票\n欢迎下次光临!";
cout<<"\n无论何时\n我们都会为您提供优质的服务!\n"<<endl;
int j=1;                         //返回上一级
while(j)
{
	cout<<"返回上一级,请选择按键(0):";
	cin>>j;
	if(j!=0)
{
	cout<<"sorry!输入错误,请按键(0)返回上一级。"<<endl;
	}
}

}
void change(b pbanji[])                    //修改航班信息
{  
	cout<<"\n修改机票信息!"<<endl;
	cout<<"请输入班次序号(0--4)";
	int a;
	cin>>a;
	cout<<"客车班次:"<<pbanji[a].banci<<endl
        <<"发车时间:"<<pbanji[a].fajishijian<<endl
		<<"到站时间:"<<pbanji[a].hangxingshijian<<endl
        <<"票价:"<<pbanji[a].piaojia<<endl;
 
	cout<<"请您修改信息"<<endl
		<<"客车班次:";
	char p[3];
	cin>>p;
pbanji[a].banci=p;
cout<<"发车时间:";
int m;
cin>>m;

pbanji[a].fajishijian=a;
cout<<"到站时间:";
int n; 
 cin>>n; 
 pbanji[a].hangxingshijian=n;
 cout<<"票价:";
 int k;
 cin>>k;
 pbanji[a].piaojia=k;
 cout<<"\n无论何时\n我们都会为您提供优质的服务!\n"<<endl; 
 int j=1;                                          //返回上一级
 while(j)
	
 { 
     cout<<"返回上一级,请选择按键(0):";
	 cin>>j;
	 if(j!=0) 
 { 
     cout<<"sorry!输入错误,请按键(0)返回上一级。"<<endl;


}

 }
}

fanhui(int &j)                       //返回主页面函数
{  while(j)
{
     cout<<"返回上一级,请选择按键(0):";

         cin>>j;
 if(j!=0)
 {
         cout<<"sorry!输入错误,请按键(0)返回上一级。"<<endl;

}
}

return j;
}

void fn1() 
{ int j,c; 
     b pbanji[5]={{"A",1,6,1000},{"B",2,7,1500},{"C",3,8,2000},{"D",4,9,2500},{"D",5,10,3000}};
p pperson; 
 while(j)                                                                        //用变量j循环完成返回上一级,j为真时,循环

                                                                                //直到j重新输入为0时,跳出循环。而重新q的循环,即返回主页面 
cout<<"1.定购机票"<<endl
    <<"2.反退机票"<<endl 
	<<"3.查看班次信息"<<endl
	<<"4.查询班次信息"<<endl
	<<"5.修改班次信息"<<endl
	<<"0.返回主界面"<<endl
	<<"请按键选择(0--5):";
     cin>>c;
 
if(c!=0&&c!=1&&c!=2&&c!=3&&c!=4&&c!=5)
{
	cout<<"您输入的选项不存在,请重新输入:";
     fanhui(j);
       break;}
  else 
   switch(c)
{
   case 1:dingpiao(pperson);break;           //定购票
   case 2:tuipiao(pperson);break;            //反退票
                 //查看班次信息
          //查询班次信息
   case 5:change(pbanji);break;              //修改班次信息
   case 0:menu();break;
}   
}
} 

void fn2() 
{ 
 int j,c; 
 b pbanji[5]={{"A",1,6,1000},{"B",2,7,1500},{"C",3,8,2000},{"D",4,9,2500},{"D",5,10,3000}};
 p pperson; 
 while(j)
 {
      cout<<"1.定购车票"<<endl
		  <<"2.反退车票"<<endl
		  <<"3.查看班次信息"<<endl
		  <<"4.查询班次信息"<<endl
		  <<"0.返回主界面"<<endl
          <<"请按键选择(0--4):";
      
	  cin>>c;
        if(c!=0&&c!=1&&c!=2&&c!=3&&c!=4)
		{
             cout<<"您输入的选项不存在,请重新输入:";
			 fanhui(j);break;
		}
  else 
  switch(c) 
		{
           case 1:dingpiao(pperson);break;              //定购票
           case 2:tuipiao(pperson);break;               //反退票
		                     //查看航班信息
		             //查询航班信息 
           case 0:menu();break;                         //返回主页面函数
  }

}
}
void main()
{
  menu();}







  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#这只是一个半成品,只是实现了,一个完整的订票过程,对于,如果刷票,自己研究 #简单过程 # 第一、getRandAndCookie() 获得cook 和一个随机数用于登录 # 第二、getEnterRandCode() 得到登录时的识别码 # 第三、setuseandpassword(randcode,use,password) 发送随机数、识别码和用户及密码。由于随机数只在内部使用,所以定义成了全局变量, # 第四、GetTrainList() 得到所有车站列表,'@bjb|北京北|VAP|beijingbei|bjb|0' 其中有中文、拼音、拼音缩写、所一个ID(唯一),其主要是可以,通过上面的列表,找到它的唯一ID,TranCityToId('南昌') # 第五、GetTrainNumList(date,fromstationid,tostationid,starttime) 得到哪到哪的所在车次,消息格式如下,其中所以,一下车次的的ID:"id":"650000K1060I" # {"end_station_name":"北京西","end_time":"16:18","id":"650000K1060I","start_station_name":"深圳","start_time":"10:54","value":"K106"} # 通过ChangeToTrainNumId('K106')得到车次ID # 第六、QueryTrain(fromstationid,tostationid,date,stationNum,starttime) 就是点击查询按键,得到是否有能预订,格式如下 #       南昌         20:12,    北京西        07:38,11:26,--,--,--,--,10,有,有,--,有,有,--,<a name='btn130_2' class='btn130_2' # 通过choiceSubmitNum(stationNum,trainsubmitinfo)提取出getSelected()消息 # 第七、submitRequest(choiceSubmitNum(stationNum,trainsubmitinfo),date,starttime) 就是点击预订按钮 # 第八、getrandCheckCode()得到提交订单的识别码 # 第十、CheckInMyTicket(info,randcode,peoples)点击提交,如果成功的话,就会返回{"errMsg":"Y"} # 出于,网络是UTF8格式,所以,必须# -*- coding: utf-8 -*-,(当然,自己转换也是可以的) # 出于这一个控制台信息,所以,识别码的图片在脚本同一目录 #得到头信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值