这次的课程设计花了我四天才完成,但是可能还有几个不大不小的bug,在这里贴出来仅供大家参考
/*航空客运订票系统 //管理员账号123 密码123
航班管理
每条航班的信息
客户管理
客户的信息 //管理员
查询航班
订票业务
退票业务 //顾客
航班管理:增删改查航班
每条航班信息:起飞时间、乘客人数、到达时间、起点、终点
客户管理: 购票顾客的信息(哪一个航班、座位号)
查询航班:起飞时间、总人数、剩余票数、到达时间、起点、终点
订票:座位号
退票:座位号
链表1:(顾客用)存储顾客
链表2: (管理员用) 增删改查航班信息,打印全部航班信息,管理客户信息
struct a{
string name;//旅客姓名
string name1;// 航班编号
string name2;// 航班起点
string name3;//航班终点
int num; //航班总人数
int seat; //座位号
string time1; //出发时间
string time2; // 到达时间
structa *next //链接地址
}
struct b{
char name1[10]; //航班起始
char name2[10]; //航班终点
int num; // 航班总人数
int seat; // 座号
string time1; //航班起始时间
string time2; //航班到达时间
sturct b *next;
}
cout<<setw(18)<<setiosflags(ios::left) 左对齐,每个输出占18格
全部函数均有两个参数 struct lvke *head,struct guanliyuan *head
维护a的同时维护b
结构体中含有string时,给其分配空间时不能用malloc,只能用new(malloc中无法为string类型的数据分配地址,故会造成地址错误)
*/
using namespace std;
int flag=0;
struct guanliyuan{
string name;//航班号
string name1;//起点
string name2;//终点
int num;//航班总人数
int seat;//座位编号
string time1;//起始时间
string time2;//终点时间
string state;//航班状态
//数据域
struct guanliyuan *next;//指针域
};
struct lvke{
string name; //旅客姓名
string name1; //航班编号
string name2; //航班起点
string name3; //航班终点
int seat; //座号
string time1; //欺起飞时间
string time2; //到达时间
//数据域
struct lvke *next;//指针域
};
void denglu(struct lvke *head1,struct guanliyuan *head2);//登录界面
void lvkemenu(struct lvke *head1 ,struct guanliyuan *head2);//旅客菜单界面
void guanliyuanmenu(struct lvke *head1,struct guanliyuan *head2);//管理员菜单界面
void chaxunhangban1(struct lvke *head1,struct guanliyuan *head2); //管理员查询航班
void chanxunhangban2(struct lvke *head1,struct guanliyuan *head2); //旅客查询航班
void dingpiao(struct lvke *head1,struct guanliyuan *head2); //旅客端订购机票
void printhangban2(struct lvke *head1,struct guanliyuan *head2); //管理员查询航班
void printhangban1(struct lvke *head1,struct guanliyuan *head2){ //顾客查询航班
struct guanliyuan *p2;
p2=head2->next;
flag=0;
while(p2->next!=NULL){
if(flag==0){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
flag=1;
}
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
p2=p2->next;
if(p2->next==NULL){
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
}
}
system("pause");
lvkemenu(head1,head2);
}
void printhangban2(struct lvke *head1,struct guanliyuan *head2){ //顾客查询航班
struct guanliyuan *p2;
p2=head2->next;
flag=0;
while(p2->next!=NULL){
if(flag==0){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:"; // 左对齐每个输出占18格
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
flag=1;
}
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
p2=p2->next;
if(p2->next==NULL){
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
}
}
system("pause");
guanliyuanmenu(head1,head2);
}
void tuipiao(struct lvke *head1,struct guanliyuan *head2){
printf("请输入您的姓名\n");
string a;
cin>>a;
struct lvke *p1,*p3;
struct guanliyuan *p2;
p1=head1;
p3=head1->next;
p2=head2->next;
flag=0;
while(p3!=NULL){
if(p1->next->name==a){
flag=1;
printf("已找到该机票!\n");
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->next->time2<<"\n";
printf("输入1确认删除,输入0返回\n");
break;
}
p1=p1->next;
p3=p3->next;
}
if(flag==0){
printf("未找到该顾客信息,请检查后重试\n");
system("pause");
lvkemenu(head1,head2);
}
while(1){
cin>>a;
if(a=="1"||a=="0"){
break;
}
else{
printf("您的输入有误,请检查后重新输入\n");
}
}
if(a=="1"){
if(p1->next->next==NULL){
free(p3);
p1->next=NULL;
printf("删除成功!\n");
}
else{
p1->next=p3->next;
struct lvke *p4;
p4=p1->next;
while(p4!=NULL){
p4->seat--;
p4=p4->next;
}
while(p2!=NULL){
if(p2->name==p1->next->name1){
p2->seat++;
break;
}
p2=p2->next;
}
free(p3);
printf("删除成功!\n") ;
}
system("pause");
lvkemenu(head1,head2);
}
else if(a=="1"){
lvkemenu(head1,head2);
}
}
void dingpiao(struct lvke *head1,struct guanliyuan *head2){ //顾客订票
printf("请输入您要定的航班编号或目的地!\n");
string a;
cin>>a;
struct lvke *p1;
struct lvke *p;
p=new lvke();
p1=head1;
flag=0;
struct guanliyuan *p2;
p2=head2->next;
while(p2->next!=NULL){
if(p2->name==a||p2->name2==a){
printf("已成功查询到该航班!\n");
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
if(p2->seat>p2->num){
cout<<"该航班旅客已满请重新输入\n";
lvkemenu(head1,head2);
}
printf("请输入您的姓名!\n");
cin>>a;
while(p1->next!=NULL){
p1=p1->next;
}
p->name=a;
p->name1=p2->name;
p->name2=p2->name1;
p->name3=p2->name2;
p->time1=p2->time1;
p->time2=p2->time2;
p->seat=p2->seat++;
}
p2=p2->next;
if(p2->next==NULL){
if(p2->name==a||p2->name2==a){
printf("已成功查询到该航班!\n");
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat+1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
if(p2->seat>p2->num){
cout<<"该航班旅客已满请重新输入\n";
lvkemenu(head1,head2);
}
printf("请输入您的姓名!\n");
cin>>a;
while(p1->next!=NULL){
p1=p1->next;
}
p->name=a;
p->name1=p2->name;
p->name2=p2->name1;
p->name3=p2->name2;
p->time1=p2->time1;
p->time2=p2->time2;
p->seat=p2->seat++;
p1->next=p;
p1=p;
p1->next=NULL;
}
}
}
if(flag==1){
printf("订票成功!\n");
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p->name;
cout<<setw(18)<<setiosflags(ios::left)<<p->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p->time2<<"\n";
system("pause");
lvkemenu(head1,head2);
}
else {
printf("未找到该航班,请检查后重新输入\n");
system("pause");
lvkemenu(head1,head2);
}
}
void zengjiahangban(struct lvke *head1,struct guanliyuan *head2);//管理员增加航班
void shanchuhangban(struct lvke *head1,struct guanliyuan *head2); //管理员删除航班
void xiugaihangban(struct lvke *head1,struct guanliyuan *head2);//管理员修改航班信息
void chaxunhangban(struct lvke *head1,struct guanliyuan *head2);//管理员查询航班信息
void kehuguanli(struct lvke *head1,struct guanliyuan *head2); //管理员查看顾客信息
void kehuguanli(struct lvke *head1,struct guanliyuan *head2){
struct lvke *p1;
struct guanliyuan *p2;
p1=head1->next;
p2=head2->next;
printf("输入0查看所有旅客信息,输入1查看单个航班旅客信息\n");
string a;
flag=0;
while(1){
cin>>a;
if(a=="0"||a=="1"){
break;
}
}
if(a=="0"){
if(p1==NULL){
printf("未储存顾客信息\n");
system("pause");
guanliyuanmenu(head1,head2);
}
if(p1->next==NULL){
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time2<<"\n";
system("pause");
guanliyuanmenu(head1,head2);
}
while(p1->next!=NULL){
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time2<<"\n";
p1=p1->next;
if(p1->next==NULL){
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time2<<"\n";
}
}
}
else {
printf("请输入您要查询的航班编号或目的地\n");
cin>>a;
if(p1==NULL){
printf("未储存顾客信息\n");
system("pause");
guanliyuanmenu(head1,head2);
}
if(p1->next==NULL&&p1->name1==a||p1->name3==a){
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time2<<"\n";
system("pause");
guanliyuanmenu(head1,head2);
}
while(p1!=NULL){
if(p1->name1==a||p1->name3==a){
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"姓名:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"座号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p1->name;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p1->name3;
cout<<setw(18)<<setiosflags(ios::left)<<p1->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p1->time2<<"\n";
}
p1=p1->next;
}
}
if(flag==1){
system("pause");
guanliyuanmenu(head1,head2);
}
else if(flag==0){
printf("暂无旅客信息\n");
system("pause");
guanliyuanmenu(head1,head2);
}
}
void hangbanguanlimenu(struct lvke *head1,struct guanliyuan *head2){
system("cls");
printf(" ****************************************\n");
printf(" * 航班管理菜单界面 *\n");
printf(" * 请输入相应按键获取相应功能 *\n");
printf(" * 1.增加航班信息 *\n");
printf(" * 2.删除航班信息 *\n");
printf(" * 3.修改航班信息 *\n");
printf(" * 4.查询航班信息 *\n");
printf(" * 5.返回上级 *\n");
printf(" ****************************************\n");
printf("请输入你想办理的业务\n");
string a;
while(1){
cin>>a;
if(a=="1"||a=="2"||a=="3"||a=="4"||a=="5"){
break;
}
else{
printf("您的输入有误,请重新输入!\n");
}
}
if(a=="1"){
flag=0;
while(1){
if(flag==1){
break;
}
printf("输入新增航班信息,按0结束\n");
zengjiahangban(head1,head2);
}
printf("增加成功\n!");
hangbanguanlimenu(head1,head2);
}
else if(a=="2"){
shanchuhangban(head1,head2);
}
else if(a=="3"){
xiugaihangban(head1,head2);
}
else if(a=="4"){
chaxunhangban1(head1,head2);
}
else if(a=="5"){
guanliyuanmenu(head1,head2);
}
}
void guanliyuanmenu(struct lvke *head1, struct guanliyuan *head2){
system("cls");
printf(" ****************************************\n");
printf(" * 功能菜单界面 *\n");
printf(" * 请输入相应按键获取相应功能 *\n");
printf(" * 1.航班管理 *\n");
printf(" * 2.航班信息 *\n");
printf(" * 3.客户管理 *\n");
printf(" * 4.返回上级 *\n");
printf(" ****************************************\n");
printf("请输入你想办理的业务\n");
string a;
while(1){ //防止客户乱输入
cin>>a;
if(a=="1"||a=="2"||a=="3"||a=="4"||a=="5"){
break;
}
else{
printf("您的输入有误,请检查后重新输入\n");
}
}
if(a=="1"){
hangbanguanlimenu( head1,head2);
}
else if(a=="2"){
printhangban2(head1,head2);
}
else if(a=="3"){
kehuguanli(head1,head2);
}
else if(a=="4"){
denglu(head1,head2);
}
}
struct guanliyuan *chushihua(){
struct guanliyuan *head;
struct guanliyuan *p1,*p2;
head=new guanliyuan();
head->next=NULL;
p1=head;
for(int i=1;i<5;i++){
p2=new guanliyuan();
if(i==1){
p2->name="G23232";
p2->name1="姜营机场";
p2->name2="阿克苏机场";
p2->num=31;
p2->seat=1;
p2->time1="09:55";
p2->time2="20:05";
p2->state="正常";
}
else if(i==2){
p2->name="CZ3342";
p2->name1="姜营机场";
p2->name2="咸阳国际机场";
p2->num=31;
p2->seat=1;
p2->time1="12:05";
p2->time2="13:55";
p2->state="正常";
}
else if(i==3){
p2->name="GJ8983";
p2->name1="姜营机场";
p2->name2="姜营机场";
p2->num=30;
p2->seat=1;
p2->time1="11:10";
p2->time2="20:45";
p2->state="正常";
}
else if(i==4){
p2->name="G54902";
p2->name1="姜营机场";
p2->name2="萧山国际机场";
p2->num=40;
p2->seat=1;
p2->time1="18:35";
p2->time2="00:50";
p2->state="正常";
}
p1->next=p2;
p1=p2;
p1->next=NULL;
}
return head;
}
void shanchuhangban(struct lvke *head1,struct guanliyuan *head2){
printf("请输入要删除的航班编号或者终点\n");
string s;
cin>>s;
struct guanliyuan *p1,*p2;
p1=head2;
p2=head2->next;
flag=0;
while(p1->next!=NULL){
if(p1->next->name==s||p1->next->name2==s){
p1->next=p2->next;
free(p2);
printf("删除成功!\n");
system("pause");
flag=1;
break;
if(p1->next==NULL){
if(p1->name==s||p1->name2==s){
free(p1);
printf("删除成功!\n");
system("pause");
flag=1;
}
}
}
p1=p1->next;
p2=p2->next;
}
if(flag==0){
printf("未找到该航班,请检查后重新输入\n");
system("pause");
}
hangbanguanlimenu(head1,head2);
}
void xiugaihangban(struct lvke *head1,struct guanliyuan *head2){
printf("请输入要修改航班的编号或者终点!\n");
string s;
cin>>s;
struct guanliyuan *p2;
p2=head2->next;
flag=0;
while(p2->next!=NULL){
if(p2->name==s||p2->name2==s){
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
printf("要修改航班状态请输入0,修改航班信息请输入1\n");
cin>>s;
if(s=="0"){
p2->state="因特殊原因航班延迟";
}
else{
printf("请输入航班总人数\n");
scanf("%d",&p2->num);
printf("请输入航班的起点\n");
cin>>p2->name1;
printf("请输入航班的终点\n");
cin>>p2->name2;
printf("请输入航班起飞时间\n");
cin>>p2->time1;
printf("请输入航班到达时间\n");
cin>>p2->time2;
p2->seat=1;
p2->state="正常";
}
printf("修改成功!\n");
system("pause");
}
p2=p2->next;
if(p2->next==NULL){
if(p2->name==s||p2->name2==s){
flag=1;
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
printf("要修改航班状态请输入0,修改航班信息请输入1\n");
cin>>s;
if(s=="0"){
p2->state="因特殊原因航班延迟";
}
else{
printf("请输入航班总人数\n");
scanf("%d",&p2->num);
printf("请输入航班的起点\n");
cin>>p2->name1;
printf("请输入航班的终点\n");
cin>>p2->name2;
printf("请输入航班起飞时间\n");
cin>>p2->time1;
printf("请输入航班到达时间\n");
cin>>p2->time2;
p2->seat=1;
p2->state="正常";
}
printf("修改成功!\n");
system("pause");
}
}
}
if(flag==0){
printf("未找到该航班,请检查后重试!\n");
system("pause");
}
hangbanguanlimenu(head1,head2);
}
void zengjiahangban(struct lvke *head1,struct guanliyuan *head2){
struct guanliyuan *p2;
struct guanliyuan *add;
add=new guanliyuan();
if(head2->next!=NULL)
p2=head2->next;
while(p2->next!=NULL){
p2=p2->next;
}
printf("请输入航班编号\n");
cin>>add->name;
if(add->name=="0"){
flag=1;
return;
}
printf("请输入航班总人数\n");
scanf("%d",&add->num);
printf("请输入航班的起点\n");
cin>>add->name1;
printf("请输入航班的终点\n");
cin>>add->name2;
printf("请输入航班起飞时间\n");
cin>>add->time1;
printf("请输入航班到达时间\n");
cin>>add->time2;
add->seat=1;
add->state="正常";
p2->next=add;
add->next=NULL;
printf("已经成功增加!\n");
}
void chaxunhangban1(struct lvke *head1,struct guanliyuan *head2){
printf("请输入要查询航班的编号或终点!\n");
string a;
cin>>a;
flag=0;
struct guanliyuan *p2;
p2=head2->next;
while(p2->next!=NULL){
if(p2->name==a||p2->name2==a){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
system("pause");
flag=1;
break;
}
p2=p2->next;
if(p2->name==a||p2->name2==a){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
system("pause");
flag=1;
break;
}
}
if(flag==0){
printf("未查询到该航班!,请检查后重新尝试\n");
hangbanguanlimenu(head1,head2);
}
else {
system("cls");
hangbanguanlimenu(head1,head2);
}
}
void chaxunhangban2(struct lvke *head1,struct guanliyuan *head2){
printf("请输入要查询航班的编号或终点!\n");
string a;
cin>>a;
flag=0;
struct guanliyuan *p2;
p2=head2->next;
while(p2->next!=NULL){
if(p2->name==a||p2->name2==a){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
system("pause");
flag=1;
break;
}
p2=p2->next;
if(p2->name==a||p2->name2==a){
cout<<setw(18)<<setiosflags(ios::left)<<"航班编号:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班终点:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班总人数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班剩余座位数:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班起始时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班到达时间:";
cout<<setw(18)<<setiosflags(ios::left)<<"航班状态:"<<"\n";
cout<<setw(18)<<setiosflags(ios::left)<<p2->name;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->name2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num;
cout<<setw(18)<<setiosflags(ios::left)<<p2->num-p2->seat;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time1;
cout<<setw(18)<<setiosflags(ios::left)<<p2->time2;
cout<<setw(18)<<setiosflags(ios::left)<<p2->state<<"\n";
system("pause");
flag=1;
break;
}
}
if(flag==0){
printf("未查询到该航班!,请检查后重新尝试\n");
lvkemenu(head1,head2);
}
else {
system("cls");
lvkemenu(head1,head2);
}
}
void lvkemenu(struct lvke *head1,struct guanliyuan *head2){
system("cls");
printf(" ****************************************\n");
printf(" * 功能菜单界面 *\n");
printf(" * 请输入相应按键获取相应功能 *\n");
printf(" * 1.显示所有航班 *\n");
printf(" * 2.查询机票 *\n");
printf(" * 3.订票业务 *\n");
printf(" * 4.退票业务 *\n");
printf(" * 5.返回上级 *\n");
printf(" ****************************************\n");
printf("请输入你想办理的业务\n");
string a;
while(1){
cin>>a;
if(a=="1"||a=="2"||a=="3"||a=="4"||a=="5"){
break;
}
else{
printf("您的输入有误,请检查后再次输入\n");
}
}
if(a=="1"){
printhangban1(head1,head2);
system("pause");
lvkemenu(head1,head2);
}
else if(a=="2"){
chaxunhangban2(head1,head2);
}
else if(a=="3"){
dingpiao(head1,head2);
}
else if(a=="4"){
tuipiao(head1,head2);
}
else if(a=="5"){
denglu(head1,head2);
}
}
void denglu(struct lvke *head1,struct guanliyuan *head2){ //登录界面
system("cls");
printf("\t\t\t欢迎使用自助订票机\t\t\t\n");
printf("\n\n\t\t\t管理员登录请按1\n");
printf("\n\n\t\t\t旅客查询请按2\n");
printf("\n\n\t\t\t退出程序请按3\n");
string guanli="1";
string lvke="2";
string a;
printf("\n\n\n");
printf("\t\t\t\t");
cin>>a;
if(a==guanli){
char zhanghao1[20]="123";
char mima1[20]="123";
while(1){
system("cls");
printf("请输入账号,输入0返回上一级\n");
char zhanghao[20];
char mima[20];
cin>>zhanghao;
int x=strlen(zhanghao);
if(x==1&&zhanghao[0]=='0'){
denglu(head1,head2);
}
printf("请输入密码\n");
int i=0;
do{ //模拟密码星号实现
mima[i]=getch();
if(mima[i]=='\r'){
break;
}
if(mima[i]=='\b'){
if(i==0){
printf("\a");
continue;
}
i=i-1;
printf("\b");
}
else{
i=i+1;
printf("*");
}
}while(mima[i]!='\n'&&i<20);
mima[i]='\0';
if(strcmp(zhanghao,zhanghao1)==0&&strcmp(mima,mima1)==0){
system("cls");
printf("欢迎使用南工航空管理系统\n");
system("pause");
break;
}
else{
printf("\n\n");
printf("账号或密码错误,请重试\n");
system("pause");
}
}
guanliyuanmenu(head1,head2);
}
else if(a=="2"){
lvkemenu(head1,head2);
}
else if(a=="3"){
system("cls");
printf("感谢您的使用,再见!\n");
return ;
}
else {
printf("输入错误,请检查后重试\n");
system("pause");
denglu(head1,head2);
}
}
int main()
{
system("mode con cols=150 lines=30"); //黑框的长和宽
lvke *s1;
guanliyuan *s2;
s1=new lvke(); //初始化旅客链表
s1->next=NULL;
s2=chushihua();//初始化管理员链表
denglu(s1,s2);
}