课程设计
来源:互联网 发布: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
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- HDU 4366 Successor
- 中缀表达式转换成前缀表达式和后缀表达式
- ssh安装 和 scp命令 使用
- 新媒体爆发时代:顶级时尚博主年入百万美元
- 截获消息
- 课程设计
- 我的c++贪吃蛇代码
- 三层架构下实现用户登陆C#
- JBoss AS 7之目录结构(The Return Of The King)
- [C/C++]随机生成信息,并保存到文件中
- css sprites
- 三星数码相机误删照片怎么找回来
- document.write()使用实例
- nodejs安装和配置