溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++如何實(shí)現(xiàn)機(jī)票預(yù)訂系統(tǒng)

發(fā)布時(shí)間:2021-04-14 11:23:07 來(lái)源:億速云 閱讀:450 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹C++如何實(shí)現(xiàn)機(jī)票預(yù)訂系統(tǒng),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

C++編寫一個(gè)簡(jiǎn)單的機(jī)票預(yù)訂系統(tǒng)。該程序顯示一個(gè)帶有下列選項(xiàng)的菜單:預(yù)訂機(jī)票、取消預(yù)訂、查看某人是否預(yù)定了機(jī)票,以及顯示預(yù)訂乘客。這些信息保存在一個(gè)按照字母排列的名字鏈表中。在程序的簡(jiǎn)化版中,假設(shè)只為一趟航班預(yù)訂機(jī)票。在完全版中不再限制航班的數(shù)目。創(chuàng)建一個(gè)航班鏈表,其中每個(gè)節(jié)點(diǎn)都指向乘客鏈表的指針。

/*******************list.h**********************/
#include <iostream>
#include <malloc.h>
#include <string.h>
 
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<<endl<<endl;
 cout<<"主菜單"<<endl;
 cout<<" 1.Booking the ticket of flighting"<<endl;
 cout<<" 2.Cancel the flighting"<<endl;
 cout<<" 3.Display the information "<<endl;
 cout<<" 4.Search"<<endl;
 cout<<" 5.Add a Flight"<<endl;
 cout<<" 6.Delete a Flight"<<endl;
 cout<<" 0.Exit"<<endl<<endl;
 cout<<"Please input your option:";
 cin>>option;
 getchar();
 cout<<endl;
 if(option>=0&&option<=6)
 return option;
 else 
 return -1;
}
int main()
{ 
 
 cout<<"------------------------->航班管理系統(tǒng)<<<<-----------------------------"<<endl;
 cout<<"  歡迎你使用該航班系統(tǒng)"<<endl;
 Flight *head;
 Person P;
 P.ListInitiate(&head);
 while(true)
 {
 switch(menu( ))
 {
 case 1:P.Insert(head);break; //預(yù)訂
 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<<"Choice error!\n";
 }
 } 
 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;
}
/*******************************預(yù)定******************************/
void Person::Insert(Flight *head)
{
 int count=0;
 int Ch;
 Flight *s=head;
 
 if(s->next==NULL)
 {
 cout<<"暫無(wú)航班!"<<endl;
 return ;
 }
 cout<<"航班列表:"<<endl;
 s=s->next;
 while(s!=NULL)
 {
 puts(s->FlightId);
 count++;
 if(count%5==0)
 cout<<"\n";
 s=s->next;
 }
 count=0;
 char FID[10];
 cout<<"輸入航班ID:";
 gets(FID);
 s=Index(head,FID);
 if(s==NULL)
 {
 cout<<"輸入ID有誤"<<endl;
 return;
 }
 cout<<endl;
 cout<<"有以下座位可供選擇:"<<endl;
 for(int i=0;i<50;i++)
 {
 if(s->Seat[i]!=1)
 {
 cout<<i<<"號(hào)"<<"\t";
 count++;
 if(count%5==0)
 cout<<"\n";
 }
 }
 cout<<endl;
 cout<<"輸入座位號(hào):\n";
 cin>>Ch;
 getchar();
 if(!Check(head->Seat,Ch))
 {
 cout<<"This Seat have been booked or it is non-existent";
 return ;
 }
 s->Seat[Ch]=1;
 char name[20];
 cout<<endl;
 cout<<"Input your Name:";
 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;
}
 
/*******************************取消預(yù)定******************************/
int Person::Delete(Flight *head)
{
 char name[20],FID[10];
 cout<<"Input your Name:";
 gets(name);
 getchar();
 Flight *s;
 cout<<"Input the Flight ID:";
 gets(FID);
 s=Index(head,FID);
 if(s==NULL)
 {
 cout<<"輸入ID有誤"<<endl;
 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<<"你的機(jī)票已經(jīng)取消成功";
 }
 else 
 {
 cout<<"您還沒(méi)訂票\n";
 return 0; 
 }
 return 1;
}
/*******************************顯示信息******************************/
void Person::show(Flight *head)
{
 Flight *s;
 char FID[10];
 cout<<"Input The Flight ID:";
 gets(FID);
 s=Index(head,FID);
 if(s==NULL)
 {
 cout<<"輸入ID有誤"<<endl;
 return;
 }
 Ticket *p=s->PersonHead->next;
 if(p==NULL)
 {
 cout<<"還沒(méi)乘客訂票"<<endl;
 return;
 }
 while(p!=NULL)
 {
 cout<<"乘客: "<<p->Name<<" 座位號(hào):" <<p->SeatId;
 p=p->next;
 }
}
 
/*******************************查詢相關(guān)信息******************************/
void Person::Search(Flight *head)
{
 char name[20];
 cout<<"Input Your Name:";
 gets(name);
 Flight *s;
 char FID[10];
 cout<<"Input The Flight ID:";
 gets(FID);
 s=Index(head,FID);
 if(s==NULL)
 {
 cout<<"輸入ID有誤"<<endl;
 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<<name<<" 已訂機(jī)票"<<endl;
 }
 else 
 {
 cout<<name<<" 未訂機(jī)票"<<endl;
 }
}
/*******************************增加航班**********************************/
void Person::AddFlght(Flight *head)
{
 char FlightID[10];
 Flight *p=head,*q;
 cout<<" 輸入航班ID:";
 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<<" 暫無(wú)航班!"<<endl;
 return ;
 }
 cout<<" 航班列表:"<<endl;
 s=s->next;
 while(s!=NULL)
 {
 cout<<s->FlightId<<endl;
 count++;
 if(count%5==0)
 cout<<"\n";
 s=s->next;
 }
 cout<<" 輸入航班ID:";
 gets(FlightID);
 while(p)
 {
 if(strcmp(p->FlightId,FlightID)==0)
 {
 flag=1;break;
 }
 q=p;
 p=p->next;
 }
 if(flag==0)
 {
 cout<<" 該航班ID不存在!";
 return ;
 }
 q->next=q->next->next;
 free(p);
 cout<<" 航班已刪除!\n";
}

效果如下:

C++如何實(shí)現(xiàn)機(jī)票預(yù)訂系統(tǒng)

以上是“C++如何實(shí)現(xiàn)機(jī)票預(yù)訂系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI