算法与数据结构
课程设计报告设计题目:
专业
班级
学生
学号
指导教师
2014年第 1学期
第一部分:需求分析
1、系统名称:航空客运订票系统
航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2、要求:
(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户(包括、订票量)以及等候替补的客户(包括、所需票量)。
(2)作为模拟系统,全部数据可以只存放在存中。
(3)通过此系统可以实现如下功能:
①录入功能:可以录入航班情况
②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(、终点站名、订票数量)查询该航班的余票量情况。如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:根据客户提供的情况(、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
第二部分:系统设计图样
一:设计说明
1:添加航班:
整个航班的信息保存在一个结构体flight
中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。
航班信息通过lulu()函数进行添加。添加的信息保存在航班flight
结构体数组中。
2
:查询航班:查询板块分为两个部分,按查找和按站名查找。
按查找:通过所输入的和已定客户的相匹配,匹配成功则查找成功。
按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。
3:订票功能:根据用户的和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。若所查找的航班的余票不满足客户的需求,则提醒用户是否需要进入到等候用户的里,等候用户信息保存在Wait结构体数组中,每添加一个信息,该数组则会生成一个记录。
4:退票功能:根据用户的和航班号进行退票,如果用户输入的和航班号在已定客户的结构体数组中能找到该记录,则在已定客户的数组中删除此条记录,
并且将该条记录的票数添加到flight中该航班的余票中去。
5:浏览航班:该功能分为三个板块:显示已定客户信息,显示等候客户,显示所有航班信息。
显示已定客户信息:通过格式化输出,将已定客户Customer结构体数组中的信息利用一个循环输出。
显示等候客户:通过格式化输出,将等候客户Wait结构体数组中的信息利用一个循环进行输出。
显示所有航班信息:铜锁格式化输出,将所有航班信息flight结构体数组中的信息利用一个循环进行输出。
6:安全退出:通过exit函数进行退出程序。
第三部分:实现
1、头文件部分
#include"stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
2、函数体部分
const int MAX_POSSIBILITY = 100;
using namespace std;
static string title[6]={"航班号", "起飞时间","降落时间","起飞城市", "降落城市", "余票量"};
static int wid[6]={8,10,10,10,10,8};
static string title1[9]={"客户","座位号","航班号","证件号","订票数","降落时间","起飞时间","起飞城市","降落城市"};
static int wid1[9]={8,9,8,8,8,11,11,11,11};
static string title2[5]={"客户","起飞城市","降落城市","客户 ID","预订票数"};
static int wid2[5]={8,10,10,10,10};
extern int len=0;
extern int A=0;
extern int max1=0;
struct flight //航班号
{
int a1; //航班号
string a2; //起飞时间
string a3; //降落时间
string a4; //起飞城市
string a5; //降落城市
int a6; //余票
}fl[50];
struct customer //客户信息
{
string name; //客户
int seat; //座位号
int num; //航班号
string no; //证件号
int ps; //订票数
string jls; //降落时间
string qfs; //起飞时间
string qfd; //起飞城市
string jld; //降落城市
}cu[100];
struct wait
{
string b1; //客户
string b2; //起飞城市
string b3; //降落城市
string no; //客户ID
int num; //订票数
}Wa[50];
void luru(); //声明录入航班信息函数void chaxun(); //声明查询函数
void dingpiao(); //声明订票函数
bool tuipiao(); //声明退票函数
void tuichu(); //声明退出函数
void menu(); //声明主菜单函数
void chaxun1(); //声明按航班号查询void chaxun2(); //声明按城市查询
void visit(); //声明预览菜单
void visit1();
void visit2();
void visit3();
void fresh();
void luru()
{
cout<<"**********请输入航班信息**********"< cout<<"请输班号:"; cin>>fl[len].a1; cout<<"起飞时间:"; cin>>fl[len].a2; cout<<"降落时间:"; cin>>fl[len].a3; cout<<"起飞城市:"; cin>>fl[len].a4; cout<<"降落城市:"; cin>>fl[len].a5; cout<<"剩余票量:"; cin>>fl[len].a6; len++; cout<<"请选择所要进行的操作"< menu(); } void visit() { cout<<"1:显示已定航班信息"< cout<<"2:显示等候客户信息"< cout<<"3:显示所有航班信息"< cout<<"请选择..."; end:int s; cin>>s; switch(s) { case 1:visit1(); //显示已定客户信息 break; case 2:visit2(); //显示等候客户信息 break; case 3:visit3(); //显示所有航班信息 break; default:cout<<"******请重新输入******"< goto end; //break; } return; } void visit1() { cout<<"**********已定客户信息**********"< for(int i=0;i<9;i++)