航空售票系统
来源:互联网 发布:java打印空心菱形图案 编辑:程序博客网 时间:2024/05/16 18:11
代码:
/***************************************************** * 版权所有(C)2016 *文件名称:航空售票系统 *文件标识:无 *内容摘要:航空售票系统 *其他说明:无 *当前版本:V1.0 *作者:房斐 *完成日期:2015.12.30 *****************************************************/a.h
#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED #include<iostream> #include <windows.h> #include<fstream> //文件下的类和函数 using namespace std; #include<stdlib.h> #include<string.h> void sleep1(); void sleep2(); /***************************************************** *功能描述:定义客户信息 *输入参数:name,id,line_num,time1,time2,seat_num *输出参数:client ******************************************************/ typedef struct client { char name[20];//顾客名 char id[10];//顾客证件号 char line_num[10];//航班号 char time1[10];//起飞时间 char time2[10];//降落时间 int seat_num;//座位号 struct client *next;//下一个结点 } client; //头结点 typedef struct clienthead { int count; client *next; } clienthead; /***************************************************** *功能描述:定义航班信息 *输入参数:line_num,time1,time2,start_place,end_place,total,money. *输出参数:airline ******************************************************/ typedef struct airline { char line_num[10];//航班号 char start_place[20];//起飞地 char end_place[20];//目的地 char time1[10];//起飞时间 char time2[10];//降落时间 int total;//座位总数 int left;//剩余座位 int money;//票价 struct airline *next;//下一个结点 } airline; //头结点 typedef struct airlinehead { int count; airline *next; } airlinehead; airlinehead* import(int n,airlinehead *pheadline);//录入航班函数: n为所要录入航班的数量: airline* query(airlinehead *phead );//查询航班情况 void display_line(airline *node);//输出一个航班结点的所有信息到屏幕 void display_all_line(airlinehead *headline); 输出所有航班结点的所有信息到屏幕 void display_client(client *node);//输出一个客户节点的信息到屏幕。 void display_all_client(clienthead *headclient);//输出所有客户信息到屏幕。。 int bookticket(airlinehead * headline,clienthead *headclient);//订票 int returnticket(airlinehead * headline,clienthead *headclient);//退票。 #endif //BTREE_H_INCLUDEDa.cpp
#include "a.h" #include <stdio.h> /***************************************************** *功能描述:录入航班函数 *输入参数:line_num,start_place,end_place,time1,time2,total,left,money. *输出参数:第i+1个航班录入 ******************************************************/ airlinehead* import(int n,airlinehead *pheadline)//录入航班函数: n为所要录入航班的数量: { airline *temp = new airline; temp->next=NULL; //尾链表插入 pheadline->next=temp; pheadline->count = n; //航班数 for(int i=0; i<n; i++) { cout<<"请输入第"<<i+1<<"个航班的航班号 "; cin>>temp->line_num; cout<<"请输入第"<<i+1<<"个航班的起飞地 "; cin>>temp->start_place; cout<<"请输入第"<<i+1<<"个航班的目的地 "; cin>>temp->end_place; cout<<"请输入第"<<i+1<<"个航班的起飞时间"; cin>>temp->time1; cout<<"请输入第"<<i+1<<"个航班的降落时间"; cin>>temp->time2; cout<<"请输入第"<<i+1<<"个航班的座位总数 "; cin>>temp->total; cout<<"请输入第"<<i+1<<"个航班的票价 "; cin>>temp->money; temp->left=temp->total; //剩余数初定义 cout<<"第"<<i+1<<"个航班成功录入。"<<endl; if(i<n-1) { temp->next = new airline; if(temp->next == NULL) { cout<<"分配内存失败"<<endl; exit(1); } temp->next->next=NULL; temp = temp->next; } } return pheadline; } /***************************************************** *功能描述:查询航班功能 *输入参数:select1,select2 *输出参数:航班号,起飞地,抵达地,起飞时间,降落时间,座位数,剩余座数 ,票价 *返回值:temp-成功,NULL-失败 ******************************************************/ airline* query(airlinehead *phead )//查询航班情况 { airline *find=NULL; airline *temp; cout<<"**********************************"<<endl; cout<<"* 1,按航班号查询航班情况。 *"<<endl; cout<<"* 2,按起飞抵达城市查询航班情况。 *"<<endl; cout<<"**********************************"<<endl; cout<<"请选择:"; int select; cin>>select; cout<<endl; switch(select) { case 1: { cout<<"请输入航班号:"; char line_num[10]; cin>>line_num; temp = phead->next; while(temp ) { if(strcmp(temp->line_num,line_num) == 0)//输出航班信息 { find= temp; return temp; break; } else //向下继续搜索 { temp = temp->next; } } if(!temp) { cout<<"没有找到该航班的信息。"<<endl; return NULL; } break; } case 2: { char start_place[20];//起飞地 char end_place[20];//目的地 cout<<"请输入起飞地址:"; cin>>start_place; cout<<"请输入目的地:"; cin>>end_place; temp=phead->next; while(temp) { if(strcmp(temp->start_place,start_place)==0 && strcmp(temp->end_place,end_place)==0) { find=temp; break; } temp = temp->next; } if(!temp) { cout<<"没有找到该航班的信息。"<<endl; return NULL; } break; } default: cout<<"输入错误。"<<endl; break; } return find; } /***************************************************** *功能描述:输出航班信息功能 *输入参数:select1,select2 *输出参数:航班号,起飞地,抵达地,起飞时间,降落时间,座位数,剩余座数 ,票价 ******************************************************/ void display_line(airline *node)//输出一个航班结点的所有信息到屏幕 { if(node==NULL) { cout<<"参数为空!输出失败."<<endl; return; } cout<<endl; cout<<"航班号:"<<node->line_num<<endl; cout<<"起飞地:"<<node->start_place<<endl; cout<<"目的地:"<<node->end_place<<endl; cout<<"起飞时间:"<<node->time1<<endl; cout<<"降落时间:"<<node->time2<<endl; cout<<"座位数:"<<node->total<<endl; cout<<"剩余座位:"<<node->left<<endl; cout<<"票价:"<<node->money<<endl; } /****************************************************** *功能描述:输出所有的航班信息到屏幕 *输入参数:无 *输出参数:headline *******************************************************/ void display_all_line(airlinehead *headline) { cout<<endl; airline *node; //初定义node node = headline->next; if(!node) { cout<<"当前没有航班信息"<<endl; return ; } cout<<"航班数目: "<<headline->count<<endl; while(node) { display_line(node); //调用单个航班信息输出函数 node=node->next; } } /***************************************************** *功能描述:输出一个客户信息到屏幕 *输入参数:无 *输出参数:姓名,证件号码,座号,航班号。 ******************************************************/ void display_client(client *node)//输出一个客户节点的信息到屏幕。 { if(node==NULL) { cout<<"参数为空!输出失败。"<<endl; return; } cout<<endl; cout<<"姓名:"<<node->name<<endl; cout<<"证件号码:"<<node->id<<endl; cout<<"座号:"<<node->seat_num<<endl; cout<<"航班号:"<<node->line_num<<endl; } /***************************************************** *功能描述:输出全部客户信息到屏幕 *输入参数:无 *输出参数:姓名,证件号码,座号,航班号。 ******************************************************/ void display_all_client(clienthead *headclient)//打印所有客户信息到屏幕。。 { client *node=headclient->next; if(!node) { cout<<"当前没有客户信息。"<<endl; return ; } while(node) { display_client(node); //调用单个客户信息输出 node=node->next; } } /***************************************************** *功能描述:订票 *输入参数:line_num,id *输出参数: *返回值:1-正确,0-错误 ******************************************************/ int bookticket(airlinehead * headline,clienthead *headclient)//订票 { cout<<"请输入航班号: ";//检测目标航班是否有余票 char line_num[10] ; cin>>line_num; int num; airline *temp; temp=headline->next; while(temp) { if(strcmp(temp->line_num,line_num)==0) { break; } temp=temp->next; } if(!temp) { cout<<"未找到该航班"<<endl; return 0; } if(temp->left==0) { cout<<"对不起,该航班票已经售完。"<<endl; cout<<"请选择其他合适的航班."<<endl; } if(temp!=NULL && temp->left!=0) { client *custom=new client; cout<<"请输入你的证件号码: "; cin>>custom->id; cout<<"请输入你的姓名:"; cin>>custom->name; cout<<endl; for(int i=1;i<=temp->total;i++)//每个人从第一个位置开始寻找,找到位置没人输出 { client *client1; client1=headclient->next; if(headclient->count==0) //第一次执行,航班没人时执行,输出第一个位置。 { num=i; break; } while(client1) // { if(client1->seat_num==i)//位置有人 break;//跳出for循环 client1=client1->next;//没人时指向下一个客户 } if(!client1) //没有冲突,没有人占位,输出位置。 { num=i; //位置赋值 break; } // 冲突时执行下一个i // 没冲突时执行下一个client(该次的i直至执行到最后一个client时没冲突 num=i 直接退出 ) //最后一个之前有冲突 从头开始 执行下一个i } custom->seat_num=num; //座位号按购票顺序排序 strcpy(custom->line_num,line_num); //保存客户航班号 custom->next=NULL; temp->left--;//余票-1 headclient->count++; //客户+1 custom->next = headclient->next;//头插法增加客户 headclient->next = custom; cout<<"订票成功!祝您旅途愉快~~"; cout<<endl; return 1; } } /***************************************************** *功能描述:退票 *输入参数:id *输出参数: *返回值:1-正确,0-错误 ******************************************************/ int returnticket(airlinehead * headline,clienthead *headclient)//退票。 { cout<<"请输入顾客的证件号码:id: "; char id[10]; cin>>id; airline *airlinetemp= headline->next; client *clienttemp= headclient->next; if(NULL==airlinetemp) { cout<<"当前没有客户信息。"<<endl; return 0; } char line_num[10]; client *delnext ; if(strcmp(clienttemp->id,id)==0)//要删除的节点为第一个时。。。 { strcpy(line_num,clienttemp->line_num); headclient->next=clienttemp->next;//删除节点的下一个连上headclient下一位 delete clienttemp; while(airlinetemp)//修改对票客户所对应的航班的售票信息。 { if(strcmp(line_num,airlinetemp->line_num)== 0 ) { airlinetemp->left++; break; } airlinetemp = airlinetemp->next; } cout<<"退票成功!希望有机会与您继续合作。"; cout<<endl; return 1; } while(clienttemp->next)//要删除 的节点不是第一个时。。。 { if(strcmp(clienttemp->next->id,id)==0) { strcpy(line_num,clienttemp->next->line_num); delnext = clienttemp->next->next;//定义为删除节点的下一个 delete clienttemp->next; //删除 clienttemp->next=delnext; //链接 while(airlinetemp)//修改对票客户所对应的航班的售票信息。 { if(strcmp(line_num,airlinetemp->line_num)== 0 ) { airlinetemp->left++; break; } airlinetemp = airlinetemp->next; } cout<<"退票成功!有机会继续合作。"<<endl<<endl; return 1; break; } clienttemp = clienttemp->next; } cout<<"未找到该客户的信息。"<<endl; return 0; }
main.cpp
#include "a.h" #include <stdio.h> //主函数 void main_menu() { system("color 0B"); cout<<"******************** 欢迎使用飞机售票系统************************"<<endl<<endl; cout<<"** 1---- 录入航班信息。"<<endl<<endl; cout<<"** 2---- 查询航线信息。"<<endl<<endl; cout<<"** 3---- 客户订票。"<<endl<<endl; cout<<"** 4---- 客户退票。"<<endl<<endl; cout<<"** 5---- 输出所有航班信息。"<<endl<<endl; cout<<"** 6---- 输出所有顾客信息。"<<endl<<endl; cout<<"** 0---- 退出系统 。"<<endl<<endl; cout<<"****************************************************************"<<endl<<endl; } void main() { printf(" ************* \n"); printf(" * * * * \n"); printf(" * * * * \n"); printf(" * ************** * \n"); printf(" * * * * \n"); printf(" * ******* * \n"); printf(" * * * * \n"); printf(" * ******* * \n"); printf(" ************* \n"); printf(" \n\n\n 正在加载 ING~~~ \n\n\n"); sleep1(); airlinehead *headline=new airlinehead; headline->count=0; //航班数初始化 headline->next=NULL; clienthead *headclient=new clienthead; headclient->count=0; //客户数初始化 headclient->next=NULL; while(1) { main_menu(); int n; cout<<"请选择您要进行的操作: "; cin>>n; cout<<endl; switch(n) { case 1: int num; cout<<"请选择您要录入的航班的数目: "; cin>>num; cout<<endl; import(num,headline); cout<<endl; cout<<"航班信息成功录入。。"; cout<<endl<<endl; sleep1(); break; case 2: airline *find; find=query(headline); if(find) { display_line(find); } sleep2(); break; case 3: bookticket( headline,headclient); sleep1(); break; case 4: returnticket(headline,headclient); sleep1(); break; case 5: display_all_line(headline); sleep2(); break; case 6: display_all_client(headclient); sleep2(); break; case 0: exit(1); break; } } } void sleep1() { for(int j=0;j<70;j++) { Sleep(20); printf(">"); } system("cls"); } void sleep2() { for(int j=0;j<70;j++) { Sleep(40); printf(">"); } system("cls"); }
操作页面
录入信息
安航班号查询航班信息
按起始地目的地查询航班信息
订票
查询航班信息
查询客户信息
退票
0 0
- 航空售票系统
- 航空售票系统
- C语言航空售票系统
- 航空售票系统--数据库代码部分
- 2009年航空售票招生简章
- 急需一个 关于航空售票的原程序
- 售票系统
- 售票系统
- 售票系统
- 售票系统
- 售票系统
- 航空售票例子之服务器端的线程设计
- 航空订票系统
- 航空订票系统总结
- 航空订票系统
- 航空客运订票系统
- 航空订票系统
- 奥运网站售票系统
- Leetcode Path Sum III
- JavaScript中“null”和“undefined”的区别
- Unity设计模式:观察者模式
- Receiver 无法接收service传递的消息
- 请问在handleMessage里能不能使用Canvas画图
- 航空售票系统
- Chrome插件开发
- 回头看一看我的2016年
- maven(14)-nexus仓库基本用法
- Centos 下安装Ruby和rubygems
- 有将屏幕坐标转换为相对View坐标的好方法吗?
- BZOJ 3083 遥远的国度 树链剖分
- Redis浅析
- Ubuntu手动(编译)安装qtcreator后.pro文件关联