#include<iostream>
#include<iomanip>
#pragma warning(disable:4996)
using namespace std;
struct user
{
user* next;
user* front;
user* rear;
char endname[20];
char linenumber[20];
char planenumber[20];
char weekday[20];
double price;
int lease;
char username[20];
int uservote;
char leave[20];
char candidate[20];
};
user* creatnode(user*& head, int n)
{
head = 0;
user* p,*q=head;
cout << "------------------------------------------------------------------------------" << endl;
cout << "|"; cout << setw(15) << "请输入" << n << "位客户的航班信息--------------------" << endl;;
cout << "|"; cout << " " << endl;
cout << "------------------------------------------------------------------------------" << endl;
cout << endl;
for (int i = 1; i <= n; i++)
{
cout << setw(16) << " 输入第" << i << "位客户航班信息---------------------" << endl;
cout << endl;
p = new user;
cout << setw(15) << "输入终点站号-----" << endl;
cin >> p->endname; //航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、
// 已定票的客户名单(包括姓名、定票量、舱位等级1,2或3)以及等候替补的客户名单。
cout << setw(15) << "输入飞机号-----" << endl;
cin >> p->planenumber;
cout << setw(15) << "输入飞行周日-----" << endl;
cin >> p->weekday;
cout << setw(15) << "输入乘员定额-----" << endl;
cin >> p->price;
cout << setw(15) << "输入余票量-----" << endl;
cin >> p->lease;
cout << setw(15) << "输入已订票的客户姓名----" << endl;
cin >> p->username;
cout << setw(15) << "输入订票量-----" << endl;
cin >> p->uservote;
cout << setw(15) << "输入舱位等级-----" << endl;
cin >> p->candidate;
cout << setw(15) << "输入等待替补的客户名单-----" << endl;
cin >> p->leave;
if (head == 0)
{
head= p;
head->front = p;
}
else
{
q->next = p;
}
q = p;
head->rear = p;
p->next = 0;
}
cout <<setw(15)<< "操作完成!!!" << endl;
cout << endl;
return head;
}
void InitQueue(user* Q)
{
Q->front = Q->rear = NULL;
}
int queueEmpty(user* q)
{
return (q->front == NULL && q->rear == NULL);
}
void EnQueue(user*&q)
{
user* p;
p = new user;
cout << endl;
cout << setw(15) << "给预定的客户录入航班信息----------------" << endl;
cout << setw(15) << "输入终点站号-----" << endl;
cin >> p->endname;
cout << setw(15) << "输入飞机号-----" << endl;
cin >> p->planenumber;
cout << setw(15) << "输入飞行周日-----" << endl;
cin >> p->weekday;
cout << setw(15) << "输入乘员定额-----" << endl;
cin >> p->price;
cout << setw(15) << "输入余票量-----" << endl;
cin >> p->lease;
cout << setw(15) << "输入已订票的客户姓名----" << endl;
cin >> p->username;
cout << setw(15) << "输入订票量-----" << endl;
cin >> p->uservote;
cout << setw(15) << "输入舱位等级-----" << endl;
cin >> p->candidate;
cout << setw(15) << "输入其他等待替补的客户名单-----" << endl;
cin >> p->leave;
if (queueEmpty(q))
{
q->front = q->rear = p;
}
else
{
q->rear->next = p;
q->rear = p;
q->rear->next = 0;
}
cout <<setw(15)<< "操作完成!!!" << endl;
cout << endl;
}
void Dequeue1(user*& q)
{
cout << endl;
cout << setw(15) << "办理退票处理------" << endl;
user* p;
p = q->front;
q->front = p->next;
if (q->rear == p)
{
q->rear = NULL;
}
cout << setw(15) << "显示客户登机信息,将其从安排中删除-----" << endl;
cout << endl;
cout << setw(15) << "已登机的客户姓名----" << p->username << endl;
cout << setw(15) << "订票量-----" << p->uservote << endl;
cout << setw(15) << "舱位等级-----" << p->candidate << endl;
delete p;
cout << setw(15) << "操作完成!!!" << endl;
cout << endl;
}
void print(user*&q)
{
user* m = q->front;
cout << endl;
cout << setw(15) << "打印航班信息如下-----------------------------------" << endl;
while (m != 0)
{
cout << endl;
cout << setw(15) << "终点站号-----" << m->endname << endl;
cout << setw(15) << "飞机号-----" << m->planenumber << endl;
cout << setw(15) << "飞行周日-----" << m->weekday << endl;
cout << setw(15) << "乘员定额-----" << m->price << endl;
cout << setw(15) << "余票量-----" << m->lease << endl;
cout << setw(15) << "已订票的客户姓名----" << m->username << endl;
cout << setw(15) << "订票量-----" << m->uservote << endl;
cout << setw(15) << "舱位等级-----" << m->candidate << endl;
cout << endl;
m = m->next;
}
cout << setw(15) << "操作完成!!!" << endl;
cout << endl;
}
void print1(user*& q)
{
cout << endl;
user* p = q->front,*k=q->front;
cout << setw(15) << "输入要查询的客户姓名------" << endl;
char name[20];
cin >> name;
while (k!= 0)
{
if (strcmp(name, k->username) == 0)
{
cout << endl;
cout << "查找成功!!!具体信息显示如下" << endl;
cout << setw(15) << "终点站号-----" << k->endname << endl;
cout << setw(15) << "飞机号-----" << k->planenumber << endl;
cout << setw(15) << "飞行周日-----" << k->weekday << endl;
cout << setw(15) << "乘员定额-----" << k->price << endl;
cout << setw(15) << "余票量-----" << k->lease << endl;
cout << setw(15) << "已订票的客户姓名----" << k->username << endl;
cout << setw(15) << "订票量-----" << k->uservote << endl;
cout << setw(15) << "舱位等级-----" << k->candidate << endl;
cout << endl;
break;
}
k = k->next;
}
cout << setw(15) << "操作完成!!!" << endl;
cout << endl;
}
int main()
{
user* head;
int n,m;
cout << setw(15) << "办理业务------------------" << endl;
cout << setw(15) << "输入1.查询个人航线--------" << endl;
cout << setw(15) << "输入2.客票预定------------" << endl;
cout << setw(15) << "输入3.办理退票------------" << endl;
cout << setw(15) << "输入4.查询所有航班信息----" << endl;
cout << setw(15) << "输入5.退出处理------------" << endl;
cout << endl;
cout << setw(15) << "先对已订票的客户信息进行录入" << endl;
cout << setw(15) << "输入人数------------------" << endl;
cin >> m;
creatnode(head, m);
cout << setw(15) << "请输入数字----------------" << endl;
while (cin >> n)
{
if (n == 1)
{
print1(head);
}
else if (n == 2)
{
EnQueue(head);
}
else if (n == 3)
{
Dequeue1(head);
}
else if (n == 4)
{
print(head);
}
else
break;
}
return 0;
}
假设创建两个客户航班,1与2,然后通过队列删掉1,接着通过print()显示全部信息时,则无法显示。