课程设计
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; }
菜单:
订票:
退票:
查询客户订票:
查询余票:
退出系统:
相关文章推荐
- 课程设计
- 操作系统课程设计完成了
- 计算机网络的课程设计作业之Sniffer和IP攻击
- 终于把数据结构课程设计搞定
- [数据结构]课程设计:链表的维护与文件形式的保存
- c++程序课程设计的内容--职工工资管理系统
- 一个OOP的课程设计,不难实现,贴出来请大家指正。
- VB课程设计选题与需求
- 编译原理课程设计_C--编译器_语法分析&代码生成
- 学校课程设计之我见
- 图的遍历的演示(c 语言 数据结构课程设计题)
- 同学Tomholmes对SAD课程设计的需求分析
- 计算机图形学的课程设计作业
- 四则运算实现(c 语言 数据结构课程设计题)
- 课程设计中~快乐的课设~
- Webcast:C#面向对象设计模式纵横谈系列课程
- vc+sqlserver最简单的方法,应付课程设计够了
- 数据库课程设计
- 数据结构课程设计
- 电话费管理系统:清华大学课程设计