航空客运订票系统的设计与实现

1 设计要求
1.1 问题描述
实现航空系统客运订票的主要业务活动。例如,浏览和查询航班信息、机票预订和办理退票等。
1.2 需求分析
(1)航班管理。每条航班所涉及的信息有:目的地、航班号、航班日期、航班时间、乘员定额、余票量。
(2)客户管理。有关订票的客户信息(包括姓名、订票量、舱位等级(1,2和3)以及等候替补的客户名单(包括姓名、所需票量)。
(3)系统实现的主要操作和功能:
 查询航班。根据旅客提出的终点站名输出下列信息:航班号、飞行日期、余票额。
 承办订票业务。根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户需求;若需要,可等待排队候补。
 承办退票业务。根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所有退票额能满足该客户的要求,则为其办理订票手续,否则依次询问其他排队候补的客户。
2 概要设计
航空客运订票系统由航班管理系统、乘客订票系统、乘客退票系统、乘客管理系统、退出系统组成。
航班管理系统,主要完成添加航班、查看航班、查询航班、删除航班、返回主菜单功能。
乘客订票系统,主要完成乘客购票功能。
乘客退票系统,主要完成乘客退票和将满足要求的候补乘客变成航班乘客。
乘客管理系统,主要完成输出航班乘客信息、输出候补乘客信息、返回主菜单功能。
退出系统,退出航空客运订票系统。

下面为全部代码

#include<iostream>
#include<windows.h>   	//用到system("cls)清屏 system("pause")暂停
#include<iomanip>
#include<cstdlib>
using namespace std;
struct Cu {
   
	string name; //乘客名字
	int amount[3];//各个仓票数
	string number;//  手机号     
	string sfz; //身份证
	Cu *next;
};
struct  F {
   
	string zd; //航班终点
	string number;//航班号码
	string data;//航班日期
	string time;//航班时间
	int rs;//航班总载客人数
	int ws[3];//航班各个等级仓位人数
	int jg[3];//航班各个等级仓位价格
	Cu *have;//航班乘客链
	Cu *nohave;//候补乘客链
	F *next;
};
void shanchu(F *&f) {
       //删除航班
	system("cls");  //清屏
	cout << "请输入想删除的航班号:";
	string s;
	cin >> s;  //获取输入字符串,存输入的航班号 
	F *p = f;  //指向航班头结点
	F *pre = f->next;  //指向首结点
	for (; pre != NULL && pre->number != s; p = pre, pre = p->next); //找到目标航班结点和前一个结点
	if (pre != NULL) {
   
		Cu *t = pre->have;  //指向航班乘客链
		if (t != NULL) {
   
			for (Cu *tre = t->next; tre != NULL; t = tre, tre = t->next)
				delete t;
			delete t;   //删除航班乘客链所有结点
		}
		t = pre->nohave;    //指向航班候补乘客链
		if (t != NULL) {
   
			for (Cu *tre = t->next; tre != NULL; t = tre, tre = t->next)
				delete t;
			delete t;    //删除候补乘客链所有结点
		}
		p->next = pre->next;
		delete pre;          //删除该航班结点
		cout << "航班号为" << s << "的航班已被删除!" << endl;
		system("pause");//暂停
	}
}
void chaxun(F *f) {
       //查询航班
	while (1) {
   
		system("cls"); // 清屏
		cout << "1.按目的地查询" << endl    //查询航班界面
			<< "2.按航班号查询" << endl
			<< "3.按日期查询" << endl
			<< "4.返回" << endl
			<< "请输入数字:";
		int k;
		cin >> k;    //存输入的数,用于switch
		switch (k) {
   
			case 1: {
   
					system("cls"); // 清屏
					cout << "请输入目的地:";
					string s;
					cin >> s;    //输入字符串,存取航班目的地
					int i = 0;   //存取符合条件的航班数
					F *p = f;    //指向航班头结点
					cout << "目的地 航班号  日期  时间  头等舱座位数 普通舱座位数 经济舱座位数 头等舱价格 普通舱价格 经济舱价格" << endl;
					while (p != NULL) {
   
						if (p->zd == s) {
   
							cout << setw(6) << p->zd << setw(7) << p->number << setw(6) << p->data
								<< setw(6) << p->time << setw(12) << p->ws[0] << setw(13) << p->ws[1]
								<< setw(12) << p->ws[2] << setw(12) << p->jg[0] << setw(12) << p->jg[1]
								<< setw(10) << p->jg[2] << endl;   //输入符合条件的航班详细信息
							i++;  //有符合条件的航班,则总数加1
						}
						p = p->next; //移动到下一结点
					}
					printf("总共有%d条航班到达此地点\n", i);
					if (i == 0) {
   
						system("cls"); // 清屏
						cout << "没有到该地点的航班" << endl;
					}
					system("pause");//暂停
					break;
				}
			case 2: {
   
					system("cls"); // 清屏
					cout << "请输入航班号:";
					string s;
					cin >> s;     //获取输入的航班号
					int i = 0;    //存放符合条件的航班数
					F *p = f;     //指向航班
					cout << "目的地 航班号  日期  时间  头等舱座位数 普通舱座位数 经济舱座位数 头等舱价格 普通舱价格 经济舱价格" << endl;
					while (p != NULL) {
   
						if (p->number == s) {
   
							cout << setw(6) << p->zd << setw(7) << p->number << setw(6) << p->data
								<< setw(6) << p->time << setw(12) << p->ws[0] << setw(13) << p->ws[1]
								<< setw(12) << p->ws[2] << setw(12) << p->jg[0] << setw(12) << p->jg[1]
								<< setw(10) << p->jg[2] << endl;   //输出符合条件的航班的详细信息
							i++;  //符合条件,则符合航班总数加1
						}
						p = p->next;  //指向下一结点
					}
					if (i == 0) {
   
						system("cls"); // 清屏
						cout << "没有找到该航班" << endl;
					}
					system("pause"
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值