您的位置:首页 > 其它

课程设计

2014-06-21 16:50 155 查看
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<conio.h>
#include<string>
#include<iostream>
using namespace std;
#define MAX 30
typedef 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
.flag)
n++;
strcpy(L.elem[m].arra
.name,sn);
L.elem[m].arra
.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;

9a6a
break;
}
}
}
int main()
{
SystemInit();
return 0;
}

  

菜单:



 订票:



退票:



查询客户订票:



查询余票:



退出系统:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: