VC++航空订票系统数据库设计 第5页
q->FreeTicket-=rep->Amount;
q->ReplName->next=q->ReplName->next->next;
q->ReplacePas--;
delete rep;
}
}
}
cout<<"2、退出姓名录入"<<endl;
cin>>i;
}
}
cout<<"1、返回主菜单"<<endl;
cin>>i;
}
}
8. BuyTicket(PFlight q,int Ticket_Amount)——买票
作为订票功能实现的核心之一,其思想是利用链表结构将买票乘客的信息添加到表中,具体实现如下:
void Buyticket(PFlight q,int Ticket_Amount) //买票
{
int n=Ticket_Amount;
Customer *Cus2;
Cus2=new Customer;
Cus2->SeatNum=q->Ration-q->FreeTicket+1;
strcpy(Cus2->FlightNum, q->FlightNum );
Cus2->Amount=Ticket_Amount;
cout<<"请输入姓名:"<<endl;
cin>>Cus2->Name;
cout<<"请输入舱位等级:"<<endl;
cin>>Cus2->Level;
cout<<"你的座位号为"<<endl;
for(int i=1;i<=Ticket_Amount;i++)
{
cout<<Cus2->SeatNum++<<" ";
}
cout<<endl;
if (q->CustName->next==NULL)
{
Cusrear=q->CustName;
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;
}
else{
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;
}
q->FreeTicket-=Ticket_Amount;
}
9. Buyreplace (PFlight q,int Ticket_Amount)——进入替补队列
同样是订票功能实现的核心之一,此方法利用队列的存储结构是要等候机票的乘客按照先来后到的次序入队,然后将这部分信息储存。在有已订票乘客退票时,根据队列中的信息依次出队,具体实现如下:
void Buyreplace(PFlight q,int Ticket_Amount,int n) //进入候补队列
{
Replace *Rep2;
Rep2=new Replace;
if(n==1)
{
q->ReplacePas+=Ticket_Amount;
strcpy(Rep2->FlightNum,q->FlightNum);
Rep2->Amount=Ticket_Amount;
cout<<"请输入姓名:"<<endl;
cin>>Rep2->Name;
cout<<"请输入舱位等级(1-3):"<<endl;
cin>>Rep2->Level;
if(q->ReplName->next==NULL)
{
Reprear=q->ReplName;
Reprear->next=Rep2;
Reprear=Rep2;
Reprear->next=NULL;
}
else{
Reprear->next=Rep2;
Reprear=Rep2;
Reprear->next=NULL;
}
}
}
10. Flightclean()——系统清空
本方法是将航班信息清空,主要思想是将头指针赋予下一个结点,然后将原来的头指针删除,具体代码如下:
void Flightclean()
{
head->next=rear->next;
cout<<"系统已经清空!"<<endl;
}
(一) Ticket.cpp,:
作为本程序的主函数,其完成的是各个函数的调用,来具体实现系统的功能:
#include "ticket.h"void main() //主程序
{
Cusrear=new Customer;
Reprear=new Replace;
head=rear=new Flight;
head->next=NULL;
void FlightInsert();
void FlightDelete();
void FlightLookup();
void FlightRework();
void FlightBuyticket();
void FlightCancelticket();
void Flightclean();
void MainMenu();
MainMenu();
}至此,本航空客运订票系统的详细设计介绍完毕。五 调试分析
在第一次调试时,当使用删除航班信息或清空系统时,虽然完成了指针的变换,但却没有将所要删除的结点彻底删除,还应用到delete()语句还完成。
但在尝试改进清空语句时,本想利用头结点的指针变换再结合delete()语句来一个个删除结点,但是所使用的 while(head->next!=rear->next)
{
head->next=head;
delete(head);
}
语句在运行时,出现了错误,在此就保留了起初使用的语句。
上一页 [1] [2] [3] [4] [5] [6] 下一页