VC++航空订票系统数据库设计 第2页

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] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有