课程设计

来源:互联网 发布:java fork join 区别 编辑:程序博客网 时间:2024/05/21 10:54
#include<stdio.h>#include<stdlib.h>#include<io.h>#include<conio.h>#include<string>#include<iostream>using namespace std;#define MAX 30typedef struct Arra//判断座位的状态{    int flag;    char name[8];}Arra;typedef struct Train{    Arra arra[MAX+1];    char *TrainNum;    char *Dest;    int Price; char *Time;}Train;typedef struct List{    Train *elem;    int length;    int listsize;}List;void Initial(List &L)//初始化线性表{    L.length=5;    L.elem=new Train[5];    for(int i=0;i<5;i++)    L.elem[i].arra[0].flag=0;    if(!L.elem)    cout<<"存储分配失败!"<<endl; else {    L.elem[0].Dest="北京";    L.elem[0].TrainNum="T1101";    L.elem[0].Price=120; L.elem[0].Time="2:00";    L.elem[1].Dest="上海";    L.elem[1].TrainNum="T1102";    L.elem[1].Price=150; L.elem[1].Time="3:00";    L.elem[2].Dest="郑州";    L.elem[2].TrainNum="T1103";    L.elem[2].Price=160; L.elem[2].Time="4:30"; L.elem[3].Dest="广州";    L.elem[3].TrainNum="T1104";    L.elem[3].Price=200; L.elem[3].Time="14:20"; L.elem[4].Dest="青岛";    L.elem[4].TrainNum="T1105";    L.elem[4].Price=220; L.elem[4].Time="23:10"; }}void book(List &L,int j,char sn[],int k,int sl){    int i=1;    int m=j-1; int n=1; if(sl>k)  cout<<"   所剩余票不足,请重新选择!"<<endl; else {    while(i<=sl)    {        while(L.elem[m].arra[n].flag)        n++;        strcpy(L.elem[m].arra[n].name,sn);         L.elem[m].arra[n].flag=1;        i++;        L.elem[m].arra[0].flag++;    } cout<<"              *****订票信息******  "<<endl;    cout<<"      姓名            车次         目的地          票价           时间 "<<endl;    cout<<endl;    for(int b=1;b<=MAX;b++)    {  if(strcmp(L.elem[m].arra[b].name,sn)==0)  {        cout<<"      "<<L.elem[m].arra[b].name<<"           "<<L.elem[m].TrainNum        <<"           "<<L.elem[m].Dest<<"           "<<L.elem[m].Price<<"           "<<L.elem[m].Time<<endl;        cout<<endl;  } }}     }void Order(List &L)//订票{    char sn[8];    int sl;//每个客户所需的票数    int j;    int k; //用来记录余票数目    cout<<"请输入姓名 :     ";    cin>>sn;    cout<<endl;    cout<<"                    ***  1.北京  2.上海  3.郑州    4.广州    5.青岛   ***"<<endl;    cout<<endl;    cout<<"请输入对目的地的选择         ";    cin>>j;    cout<<endl;    switch(j)    {        case 1:        cout<<"请输入所需的车票数 :        ";//输入每个人的订票数        cin>>sl;        k=MAX-L.elem[j-1].arra[0].flag;        book(L,j,sn,k,sl);        break;        case 2:        cout<<"请输入所需的车票数 :       ";//输入每个人的订票数        cin>>sl;        k=MAX-L.elem[j-1].arra[0].flag;        book(L,j,sn,k,sl);        break;        case 3:        cout<<"请输入所需的车票数 :       ";//输入每个人的订票数        cin>>sl;        k=MAX-L.elem[j-1].arra[0].flag;        book(L,j,sn,k,sl);        break;  case 4:        cout<<"请输入所需的车票数 :       ";//输入每个人的订票数        cin>>sl;        k=MAX-L.elem[j-1].arra[0].flag;        book(L,j,sn,k,sl);        break;  case 5:        cout<<"请输入所需的车票数 :       ";//输入每个人的订票数        cin>>sl;        k=MAX-L.elem[j-1].arra[0].flag;        book(L,j,sn,k,sl);        break;        default:        cout<<"   Warning :!!输入错误 !!"<<endl;  break;    }}void back(List &L)//退票{    char *Dest=new char[8];    char sn[8];    int k=0;    int i;//标记下标    int j=0;    int q[30];    int bl;//用来记录所退的票数目    cout<<" 请输入目的地 :         ";    cin>>Dest;    while(strcmp(L.elem[k].Dest,Dest)!=0)    {        k++;    } if(k>2)  cout<<"无此终点站 !"<<endl; else { cout<<endl;    cout<<" 请输入姓名:      ";    cin>>sn; int r=0;    for(int p=1;p<=MAX;p++)    {        if(!strcmp(L.elem[k].arra[p].name,sn))        {   q[r]=p;   r++;  }    } cout<<endl; cout<<"此客户订了"<<r<<"张票!"<<endl;    if(r>1)//如果该客户所定的票数大于1    {          cout<<"请输入所要退还的票得数目:         ";        cin>>bl;           }        else        bl=1;  if(bl>r)//输入数据有误        cout<<"输入错误 !"<<endl;  else  {        i=1;  int y;        while(i<=bl)//如果没有退完,继续进行退票        {           y=q[r-1];            L.elem[k].arra[y].flag=0;   strcpy(L.elem[k].arra[y].name,"");   r--;             i=i+1;        }        cout<<"成功退票! "<<endl;        L.elem[k].arra[0].flag=L.elem[k].arra[0].flag-bl;  } }}void Display(List &L)//查询客户订票信息{    char sn[8];    char *Dest=new char[8];    int k=0; cout<<endl;    cout<<" 请输入目的地 :";    cin>>Dest;    while(strcmp(L.elem[k].Dest,Dest)!=0)    {        k++;    } if(k>2)  cout<<"无此终点站 !"<<endl; else { cout<<endl;    cout<<"请输入所要查询的客户姓名 :";    cin>>sn;    int i=1;    while(strcmp(sn,L.elem[k].arra[i].name))    {        i++;    }    if(i>MAX)        cout<<"该客户没有订票!"<<endl;    else    {        int p=0;        cout<<"     姓名 :     "<<L.elem[k].arra[i].name<<endl;        cout<<"     车次 :     "<<L.elem[k].TrainNum<<endl;        cout<<"     目的地 :    "<<L.elem[k].Dest<<endl;  cout<<"     时间 :     "<<L.elem[k].Time<<endl;        cout<<"     票价 :     "<<L.elem[k].Price<<endl;        cout<<"     订票数量: ";  for(int m=i;m<=MAX;m++)  {        if(strcmp(L.elem[k].arra[i].name,sn)==0)        {            i++;            p++;        }  }        cout<<p<<endl;        cout<<"     总票价 : "<<L.elem[k].Price*p<<endl;    } }}void Search(List &L)//查询余票{    int k;    int j; cout<<"           *********       车票信息       ***************"<<endl;    for(j=0;j<5;j++)    {        k=MAX-L.elem[j].arra[0].flag;        cout<<"   车次       目的地        时间       票价       订票数量        余票数量"<<endl;  cout<<endl;        cout<<"   "<<L.elem[j].TrainNum<<"       "<<L.elem[j].Dest<<"        "<<L.elem[j].Time        <<"         "<<L.elem[j].Price<<"           "<<L.elem[j].arra[0].flag<<"             "<<k<<endl;  cout<<endl;    }}void SystemInit()//系统初始化{    List L;    Initial(L);    int select;    int i;    int flag=1;    for(int j=0;j<5;j++)    {        for(i=0;i<=MAX;i++)//初始化座位分配数组        {            L.elem[j].arra[i].flag=0;            strcpy(L.elem[j].arra[i].name,"");        }    }     cout<<"             *******************************************************\n"        <<"             ***************   欢迎使订票系统   ********************\n"        <<"             *******************************************************\n";    cout<<"             ***************     本站车票信息   ********************"<<endl<<endl;    cout<<"           *       车次       目的地         票价          时间          *"<<endl<<endl;    for(int c=0;c<L.length;c++)    {        cout<<"           *    "<<L.elem[c].TrainNum<<"         "<<L.elem[c].Dest<<"          "<<L.elem[c].Price<<"            "<<L.elem[c].Time<<"      * "<<endl<<endl;    }    while(flag)    {        cout<<"           *****1. 订票  2. 退票 3. 查询客户订票 4.查询余票  5.退出系统*****        \n"            <<"请输入你的选择:   ";        cin>>select;        cout<<endl;        switch(select)        {            case 1:Order(L);                   break;            case 2:back(L);                   break;            case 3:Display(L);                   break;            case 4:Search(L);                   break;            case 5:flag=0;                   break;            default:cout<<"ERROR!\n"<<endl;                   break;        }    }}int main(){    SystemInit();    return 0;}

  

菜单:


 订票:


退票:


查询客户订票:


查询余票:


退出系统:



0 0
原创粉丝点击