C++ 班车信息管理系统

2、班车信息管理

  一交通公司,班车系统的数据包括如下两部分:

①班车信息:班交及车号、最大载客数、起点、开车时间、终地点、到达终点站时间,单价;

② 乘客信息:车次及车号、身份证号码、姓名、性别、出生年月、座位号。

乘客订票的主要方式是:乘客提供起点、时间、终点、订票数等订票要求,根据事先保存的班数据决定乘客能否订票?只有全部满足了乘客的订票要求并且所订班次有足够的未订座位之后才能完成订票处理,并且修改该班次的未订座位数(每个班的未订座位数的初始值就是该班次的最大载客数);否则,订票失败,并且给出不能订票的原因。

功能要求 :

⑴ 增加班次记录。将新的次班记录增加到原有的次班数据中。在进行处理时必须检查所要增加的班次记录是否存在,如果已经存在,应给出提示信息后停止增加;

⑵ 班次取消。如果某班次的乘客数太少(已订票的少于本次班次最大载客数的10%),将取消该班次,但该班欠的记录仍然保存在原有的班数据中;

⑶ 班次查询。应该有以下几种基本的查询方式:按班次号、按起点和时间、按终地点,和时间;

⑷ 班次订票。按上述问题描述中的乘客订票方式完成班次订票处理。

⑸ 设计一个菜单,至少具有上述操作要求的基本功能。

#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();}  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值