VC++航空订票系统数据库设计 第2页
四 详细设计
本航空客运售票系统分为两个文件:1. 头文件Ticket.h,用来存放系统中数据结构的结构体,以及所要到的方法及函数。 2.C++文件 Ticket.cpp.,本文件主要是本系统的主函数,其中调用头文件,来实现系统的功能。具体实现如下:
(一) Ticket.h,:
在前文中已介绍过,本文件是头文件,将售票系统的数据中的结构体定义在其中,并且利用所定义的结构来编写函数、方法来实现系统的功能。
首先采用链式结构,定义出三个结构体:
1. 航线的结构体:
typedef struct Flight //航线信息
{
char Des[10]; //终点站名
char FlightNum[10]; //航班号
char PlaneNum[10]; //飞机号
char Week; //飞行周日
int Ration; //乘员定额
int FreeTicket; //剩余票数
float Price[3]; //舱位等级的价格
int ReplacePas; //候补乘客数
Replace *ReplName; //该航班的候补乘客名单
Customer *CustName; //该航班的已定票乘客名单
struct Flight *next; //指示下一航线结点
}Flight,*PFlight;
2. 乘客结构体:
typedef struct Customer //已定票乘客信息
{
char Name[10]; //姓名
int Amount; //定票数
int Level; //舱位等级
int SeatNum; //座位号
char FlightNum[10]; //所定航班号
struct Customer *next;
}Customer;
3. 替补乘客结构体:
typedef struct Replace //替补乘客信息
{
char Name[10]; //姓名
int Amount; //定票数
int Level; //舱位等级
char FlightNum[10]; //所定航班号
struct Replace *next;
}Replace;
以上三个结构体是以乘客信息、替补乘客信息为基础、再此之上有定义了飞机航线的结构体以及结点类型指针的结构体。并在后者结构中引入了前两种结构体。并且单独定义了两个指向Flight的指针,作为头只指针和尾指针:
Flight *head; //建立航线头结点
Flight *rear; //建立航线尾结点
以及乘客队列的指针:
Customer *Cusrear;
Replace *Reprear;
为今后的程序设计奠定了基础。
其次,编写实现各个功能的函数与方法:
1. MainMenu()——系统主菜单
此函数设计了本系统的界面,是程序的开始,具体实现如下:
void MainMenu()
{
char i='0';
while (i!='8')
{
cout<<" ***********南昌航空公司客运定票系统V1.0***********"<<endl;
cout<<" * 1、增加航线 5、预订机票 *"<<endl;
cout<<" * 2、查询航线 6、退订机票 *"<<endl;
cout<<" * 3、修改航线 7、清空系统 *"<<endl;
cout<<" * 4、删除航线 8、退出系统 *"<<endl;
cout<<" **************************************************"<<endl;
cin>>i;
switch(i)
{
case '1':FlightInsert();break;
case '2':FlightSearch();break;
case '3':FlightRework();break;
case '4':FlightDelete();break;
case '5':FlightBuyticket();break;
case '6':FlightCancelticket();break;
case '7':Flightclean();break;
case '8':;break;
default:cout<<"error\n";break;
}
}
}
2. void FlightInsert()——添加航班信息
此方法主要用到链表的思想,类似于链表中的插入属性。与一般链表不同的是,此方法设置了一个表尾指针,便于航班信息的添加,具体实现如下:
void FlightInsert() //添加航班信息
{
Flight *p;
p=new Flight;
cout<<"请输入终点站名:"<<endl;
cin>>p->Des;
cout<<"请输入航班号:"<<endl;
cin>>p->FlightNum;
cout<<"请输入飞机号:"<<endl;
cin>>p->PlaneNum;
cout<<"请输入飞行周日:"<<endl;
cin>>p->Week;
cout<<"请输入乘员定额:"<<endl;
cin>>p->Ration;
p->FreeTicket=p->Ration;
cout<<"请输入舱位等级的价格:"<<endl;
cout<<"头等舱价格"<<endl;
cin>>p->Price[0];
cout<<"普通舱价格"<<endl;
cin>>p->Price[1];
cout<<"经济舱价格"<<endl;
cin>>p->Price[2];
p->ReplName=new Replace;
p->CustName=new Customer;
p->CustName->next=NULL;
p->ReplName->next=NULL;
p->ReplacePas=0;
rear->next=p;
rear=p;
rear->next=NULL;
}
3. FlightDelete()——删除航班信息
类比于上述的添加航班信息,删除航班同样是依靠了链表的思想来完成。不同的是,在删除方面用到了表头指针这个工具,来定位索要删除的航班信息,具体实现如下:
void FlightDelete() //删除航班信息
{
Flight *p,*q;
char FlightNum[10];
p=head;
int i=0;
while (i!=1)
{
cout<<"请输入需要删除的航班号:"<<endl;
cin>>FlightNum;
while (p->next&&strcmp(p->next->FlightNum,FlightNum))
{ p=p->next;
上一页 [1] [2] [3] [4] [5] [6] 下一页