C++编写一个简单的机票预订系统。该程序显示一个带有下列选项的菜单:预订机票、取消预订、查看某人是否预定了机票,以及显示预订乘客。这些信息保存在一个按照字母排列的名字链表中。在程序的简化版中,假设只为一趟航班预订机票。在完全版中不再限制航班的数目。创建一个航班链表,其中每个节点都指向乘客链表的指针。
/*******************list.h**********************/
#include
#include
#include
using namespace std;
typedef struct TK{
char Name[20];
int SeatId;
struct TK *next;
}Ticket;
typedef struct FLY
{
char FlightId[10];
int Seat[50];
Ticket *PersonHead;
struct FLY *next;
}Flight;
class Person{
public:
void ListInitiate(Flight **head);
bool Check(int *Seat,int Ch);
void Insert(Flight *head);
int Delete(Flight *head);
void show(Flight *head);
void Search(Flight *head);
void AddFlght(Flight *head);
void DeleteFlght(Flight *head);
};
/*******************************main.cpp**********************/
#include "list.h"
int menu()
{
int option;
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cin>>option;
getchar();
cout<
if(option>=0&&option<=6)
return option;
else
return -1;
}
int main()
{
cout<航班管理系统<<<
cout<
Flight *head;
Person P;
P.ListInitiate(&head);
while(true)
{
switch(menu( ))
{
case 1:P.Insert(head);break; //预订
case 2:P.Delete(head);break; //取消
case 3:P.show(head);break; //显示
case 4:P.Search(head);break; //查询
case 5:P.AddFlght(head);break; //添加航班
case 6:P.DeleteFlght(head);break; //删除航班
case 0:exit(0);
default:cout<
}
}
return 0;
}
/*****************************************passenger.cpp*************************/
#include "List.h"
void Person::ListInitiate(Flight **head)
{
int count=0;
*head = (Flight *)malloc(sizeof(Flight));
(*head)->PersonHead=(Ticket *)malloc(sizeof(Ticket));
(*head)->PersonHead->next=NULL;
(*head)->next=NULL;
for(int i=0;i<50;i++)
{
(*head)->Seat[i]=0;
}
}
bool Person::Check(int *Seat,int Ch)
{
int i;
for(int i=0;i<50;i++)
{
if(Ch==i&&Seat[i]!=1)return 1;
}
return 0;
}
Flight* Index(Flight *head,char *Id)
{
Flight *p=head->next;
while(p)
{
if(strcmp(p->FlightId,Id)==0)
{
return p;
}
p=p->next;
}
return NULL;
}
/*******************************预定******************************/
void Person::Insert(Flight *head)
{
int count=0;
int Ch;
Flight *s=head;
if(s->next==NULL)
{
cout<
return ;
}
cout<
s=s->next;
while(s!=NULL)
{
puts(s->FlightId);
count++;
if(count%5==0)
cout<
s=s->next;
}
count=0;
char FID[10];
cout<
gets(FID);
s=Index(head,FID);
if(s==NULL)
{
cout<
return;
}
cout<
cout<
for(int i=0;i<50;i++)
{
if(s->Seat[i]!=1)
{
cout<
count++;
if(count%5==0)
cout<
}
}
cout<
cout<
cin>>Ch;
getchar();
if(!Check(head->Seat,Ch))
{
cout<
return ;
}
s->Seat[Ch]=1;
char name[20];
cout<
cout<
gets(name);
Ticket *p=s->PersonHead,*q;
while(p->next!=NULL)
{
if(strcmp(p->next->Name,name)>0)
break;
p=p->next;
}
q=(Ticket *)malloc(sizeof(Ticket));
q->next=p->next;
p->next=q;
strcpy(q->Name,name);
q->SeatId=Ch;
}
/*******************************取消预定******************************/
int Person::Delete(Flight *head)
{
char name[20],FID[10];
cout<
gets(name);
getchar();
Flight *s;
cout<
gets(FID);
s=Index(head,FID);
if(s==NULL)
{
cout<
return 0;
}
Ticket *p=s->PersonHead->next,*pre=s->PersonHead;
int flag=0;
while(p!=NULL)
{
if(strcmp(p->Name,name)==0){
flag=1;
break;
}
pre=p;
p=p->next;
}
if(flag==1){
pre->next=p->next;
s->Seat[p->SeatId]=0;
free(p);
cout<
}
else
{
cout<
return 0;
}
return 1;
}
/*******************************显示信息******************************/
void Person::show(Flight *head)
{
Flight *s;
char FID[10];
cout<
gets(FID);
s=Index(head,FID);
if(s==NULL)
{
cout<
return;
}
Ticket *p=s->PersonHead->next;
if(p==NULL)
{
cout<
return;
}
while(p!=NULL)
{
cout<Name<SeatId;
p=p->next;
}
}
/*******************************查询相关信息******************************/
void Person::Search(Flight *head)
{
char name[20];
cout<
gets(name);
Flight *s;
char FID[10];
cout<
gets(FID);
s=Index(head,FID);
if(s==NULL)
{
cout<
return;
}
Ticket *p=s->PersonHead->next;
int flag=0;
while(p!=NULL)
{
if(strcmp(p->Name,name)==0){
flag=1;
break;
}
p=p->next;
}
if(flag==1){
cout<
}
else
{
cout<
}
}
/*******************************增加航班**********************************/
void Person::AddFlght(Flight *head)
{
char FlightID[10];
Flight *p=head,*q;
cout<
gets(FlightID);
while(p->next)
{
p=p->next;
}
ListInitiate(&q);
p->next=q;
strcpy(q->FlightId,FlightID);
cout<
}
/**********************************删除航班*******************************************/
void Person::DeleteFlght(Flight *head)
{
char FlightID[10];
int flag=0;
Flight *p=head->next,*q=head;
int count=0;
Flight *s=head;
if(s->next==NULL)
{
cout<
return ;
}
cout<
s=s->next;
while(s!=NULL)
{
cout<FlightId<
count++;
if(count%5==0)
cout<
s=s->next;
}
cout<
gets(FlightID);
while(p)
{
if(strcmp(p->FlightId,FlightID)==0)
{
flag=1;break;
}
q=p;
p=p->next;
}
if(flag==0)
{
cout<
return ;
}
q->next=q->next->next;
free(p);
cout<
}
效果如下:
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: C++实现机票预订系统
本文地址: /ruanjian/c/250892.html