航空公司管理系统(迷你版12306)

news2025/1/11 8:07:12

要求

今天分享一个之前辅导留学生的作业,作业要求如下:

Project E: Airways Management System
Overall description:
Your team is employed by an Airways company for the implementation of a computer
system responsible for a large part of the operation of the company.
Customer specifications:
The system must be able to store the information of planes, flights and passengers of
the company during the years of its operation. There are two types of planes P62 &
P124 with rectangular arrangements of 6*2 & 12*4 seats, respectively. The sources
and destinations of the currently available flights of the company (for simplicity,
assume only direct flights) are allocated from a set of city airports which can be
potentially extended. The different passengers can be allocated to specific flights and
seats.
The system should be able to provide functionality to the different users listed below:
1. An administrator who can include new flights, prices, dates, airports and perhaps
new planes for each of the two available types.
2. A ticket agent who can flexibly search for a specific flight inquired by a customer.
When the customer reserves or books a ticket, then the required details must be stored.
Such information includes flight id, payment details, expiration date of reservation,
route, allocated seat, viewing facilities of the seating plan, etc. Facilities to amend this
information must be provided.
3. A manager who can retrieve statistics about the company’s operation, such as the
number of planes for each type, total passengers per flight, total revenue, etc.

功能主要有3个模块:
1.管理员模块,管理员可以管理新航班、价格、日期、机场等。

2.票务代理模块,可以灵活搜索客户查询的航班信息。
这些信息包括航班id、付款详细信息、预订截止日期、,

路线、分配的座位、座位计划的观看设施等。

客户可以进行预定,修改以及退票操作。

3.统计模块:可以检索航空公司运营的统计数据,例如

每种类型的飞机数量、每次航班的乘客总数、总收入等。
 

核心代码

数据结构

struct Plane{
	string ID;
	int type;//the type of the plane, 1-P62,2-P124
	string src;//start city
	string dst;//destination city
	string time;//time to set out
	int seatNum;//number of seats in a compartment
	int remainTicket;//the remain ticket of a plane
	int price;//the price of a ticket
	Plane *next;
	Plane(){ next = NULL; }
};


struct Ticket
{
	string passengerName;//the passenger name
	string  planeID;
	int price;
	string expirationDate;//the expiration date of the ticket
	string src;//start city
	string dst;//destination city
	int seatNum; 
	Ticket* next;
	Ticket(){ next = NULL; }
};

struct PlaneHead{
	Plane *head;
	int num;
};

struct TicketHead{
	Ticket *head;
	int num;
};

增加航班

void addNewPlane(PlaneHead *pchead){
	string ID;
	Plane *temp;
	Plane *pc = pchead->head;
	int loopFlag = 0;
	cout << "Add a new plane!" << endl;
	cout << "input the new plane's ID:";
	cin >> ID;
	if (searchByPlaneID(pchead, ID) != NULL){
		cout << "This plane ID is existed! Fail to add a new plane, please retry!" << endl;
		return;
	}
	temp = new Plane;
	temp->ID = ID;
	do{
		cout << "Please input the new plane's type(1 or 2):";
		cin >> temp->type;
		loopFlag = 0;
		if (temp->type != 1 && temp->type != 2){
			cout << "error type!the type should be either 1 or 2,re-input." << endl;
			loopFlag = 1;
		}
	} while (loopFlag);
	do{
		cout << "Please input the new plane's start city:";
		cin >> temp->src;
		cout << "Please input the new plane's destination city:";
		cin >> temp->dst;
		loopFlag = 0;
		if (temp->src == temp->dst){
			cout << "the start city %s and destination %s are the same!,please re-input!" << endl;
			loopFlag = 1;
		}
	} while (loopFlag);
	cout << "Please input the new plane's start time(eg. 12:00 ):";
	cin >> temp->time;
	cout << "Please input the new plane's ticket price:";
	cin >> temp->price;
	if (temp->type == P62)
		temp->seatNum = 6 * 2;
	else
		temp->seatNum = 12 * 4;
	temp->remainTicket = temp->seatNum;
	temp->next = NULL;
	if (pc == NULL)
		pchead->head = temp;
	else
	{
		while (pc->next)
			pc = pc->next;
		pc->next = temp;
	}
	pchead->num++;
	cout << "Add the new plane successfully!" << endl;
}

修改航班

void changePlaneInfo(PlaneHead *pchead){
	int loopFlag = 0;
	string ID;
	char choose;
	Plane *pc;
	cout << "please input the plane's ID you want to change: ";
	cin >> ID;
	pc = searchByPlaneID(pchead, ID);
	if (pc == NULL){
		cout << "The plane ID is not existed!" << endl;
		return;
	}
	cout << "Tips:  you can only change a plane's ticket price,start time,start city and destination city information!" << endl;
	do{
		cout << "The plane " << ID << "'s start city: " << pc->src << " ,you want to change?(y/n) ";
		cin >> choose;
		if (choose == 'Y' || choose == 'y'){
			cout << "Please input the new start city: ";
			cin >> pc->src;
		}
		cout << "The plane " << ID << "'s destination: " << pc->dst << " ,you want to change?(y/n) ";
		cin >> choose;
		if (choose == 'Y' || choose == 'y'){
			cout << "Please input the new destination: ";
			cin >> pc->dst;
		}
		if (pc->src == pc->dst){
			cout << "the start city and destination are the same!" << endl;
			loopFlag = 1;
		}
	} while (loopFlag);
	cout << "The plane " << ID << "'s start time: " << pc->time << " ,you want to change?(y/n) ";
	cin >> choose;
	if (choose == 'Y' || choose == 'y'){
		cout << "Please input the new start time: ";
		cin >> pc->time;
	}
	cout << "The plane " << ID << "'s price: " << pc->price << " ,you want to change?(y/n) ";
	cin >> choose;
	if (choose == 'Y' || choose == 'y'){
		cout << "Please input the new price: ";
		cin >> pc->price;
	}
	cout << "change successfully!" << endl;
}

根据航班ID搜索航班

Plane *searchByPlaneID(PlaneHead *pchead, string ID){
	Plane *pc = pchead->head;
	while (pc)
	{
		if (pc->ID == ID)
			return pc;//find the ID
		pc = pc->next;
	}
	return NULL;
}

由于篇幅有限,此处不在贴代码了。如需要完整代码,可以搜索抖音:天天coding。

私信免费获得完整代码以及技术指导。

功能测试

可以搜索抖音:天天coding,观看完整演示视频。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万界星空科技MES系统怎么管理生产?

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;是一种用于管理和监控生产过程的软件系统。它通常与企业的ERP系统&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划&#xff09;集成&#xff0c;用于实时收集和分析…

MySQL——用户管理

目录 一.用户管理 二.用户 1.用户信息 2.创建用户 3.删除用户 4. 修改用户密码 三.数据库的权限 1.给用户授权 2.回收权限 一.用户管理 如果我们只能使用root用户&#xff0c;root的权限非常大,这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理&#xff…

机器学习实践

1.波士顿房价预测 波士顿房屋的数据于1978年开始统计&#xff0c;共506个数据点&#xff0c;涵盖了波士顿不同郊区房屋的14种特征信息。 在这里&#xff0c;选取房屋价格&#xff08;MEDV&#xff09;、每个房屋的房间数量&#xff08;RM&#xff09;两个变量进行回归&#xff…

2024--Django平台开发-基础信息(一)

一、前置知识点 - Python环境搭建 (Python解释器、Pycharm、环境变量等) - 基础语法(条件、循环、输入输出、编码等) - 数据类型(整型、布尔型、字符串、列表、字典、元组、集合等) - 函数(文件操作、返回值、参数、作用域等) - 面向对象 (类、对象、封装、继承、多态等)包和模…

用友GRP-U8 ufgovbank.class XXE漏洞复现

0x01 产品简介 用友GRP-U8R10行政事业财务管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10 ufgovbank.class 存在XML实体注入漏洞,攻击者可利用xxe漏洞获取服…

交换机04_远程连接

通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的&#xff0c;默认端口&#xff1a;23 采用的是明文密码方式 不是很安全&#xff0c;一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议&#xff0c;基于传输层的TCP协议&#x…

OpenSource - File Preview 文件预览组件

文章目录 file-preview-spring-boot-starterkkFileView file-preview-spring-boot-starter https://github.com/wb04307201/file-preview-spring-boot-starter https://gitee.com/wb04307201/file-preview-spring-boot-starter 一个文档在线预览的中间件&#xff0c;可通过简…

计算机毕业设计 基于javaweb的宠物认养系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

scanf函数和printf函数

1.scanf函数 int scanf ( const char * format, ... );函数功能&#xff1a; 从键盘读取数据如果读取成功&#xff0c;返回读取到的数据个数如果读取失败&#xff0c;返回EOF 不常见的读取格式&#xff1a; %md -->读取m个宽度的数据 int main() {int n 0;scanf("%4d&…

小家电type-c接口PD诱骗

小家电Type-C接口PD诱骗&#xff1a;未来充电的便捷与安全 随着科技的不断发展&#xff0c;Type-C接口已经成为了许多小家电产品的标配。而PD&#xff08;Power Delivery&#xff09;诱骗技术&#xff0c;作为一种新兴的充电技术&#xff0c;更是为小家电产品的充电带来了前所…

C++ 虚函数virtual的引入和应用

来回顾一下使用引用或指针调用方法的过程。请看下面的代码: BrassPlus ophelia; // 子类对象 Brass * bp; // 基类指针 bp &ophelia; // 让基类指针指向子类对象 bp->ViewAcct(); // ViewAcct() 如果基类和子类都有这个函…

基于冒泡排序思想的qsort函数的模拟实现

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

一文读懂傅里叶变换处理图像的原理 !!

傅里叶变换处理图像 文章目录 前言 快速傅里叶变换 第一步&#xff1a;计算二维快速傅里叶变换 第二步&#xff1a;将零频域部分移到频谱中心 编码 低通滤波器 高通滤波器 理想的滤波器 巴特沃思&#xff08;Btterworth&#xff09;滤波器 高斯&#xff08;Gaussian&#xff09…

jenkins安装报错:No such plugin: cloudbees-folder

jenkins安装报错&#xff1a;No such plugin: cloudbees-folder 原因是缺少cloudbees-folder.hpi插件 解决&#xff1a; 一&#xff0c;重新启动 http://xxx:8800/restart 二&#xff0c;跳到重启界面时&#xff0c;点击系统设置 三&#xff0c;找到安装插件&#xff0c;然…

CSS 实现两个圆圈重叠部分颜色不同

这是期望实现的效果&#xff0c;由图可知&#xff0c;圆圈底图透明度是0.4&#xff0c;左侧要求重叠部分透明度是0.7&#xff0c;所以不能通过简单的透明度叠加来实现最右侧的效果。 这就需要另外新建一个图层来叠加在两个圆圈重叠上方。 直接看代码 .circle_hight {width: 1…

【软考】项目活动图

目录 一、例题11.1 题目1.2 分析各个节点的最早开始时间1.3 最早开始时间分析思路1.4 项目完成最少时间1.5 关键路径1.6 松弛时间 一、例题1 1.1 题目 1.某软件项目的活动图如下图所示&#xff0c;其中顶点表示项目里程碑&#xff0c;连接顶点的边表示包含的活动&#xff0c;边…

KVM虚拟化技术

在当今的云计算时代&#xff0c;虚拟化技术已经成为了企业和个人用户的首选。而在众多虚拟化技术中&#xff0c;KVM&#xff08;Kernel-based Virtual Machine&#xff09;虚拟化技术因其高性能、低成本和灵活性而备受青睐。本文将介绍KVM虚拟化技术的原理、特点以及应用场景。…

服务器GPU温度过高挂掉排查记录

服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看&#xff1a; nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后&#xff0c;又能用一段时间。 shutdown -r now但是过了一个小…

【软件测试】学习笔记-测试覆盖率

测试覆盖率通常被用来衡量测试的充分性和完整性&#xff0c;从广义的角度来讲&#xff0c;测试覆盖率主要分为两大类&#xff0c;一类是面向项目的需求覆盖率&#xff0c;另一类是更偏向技术的代码覆盖率。 需求覆盖率 需求覆盖率是指测试对需求的覆盖程度&#xff0c;通常的做…

即时设计:设计流程图,让您的设计稿更具条理和逻辑

流程图小助手 在设计工作中&#xff0c;流程图是一种重要的工具&#xff0c;它可以帮助设计师清晰地展示设计思路和流程&#xff0c;提升设计的条理性和逻辑性。今天&#xff0c;我们要向您推荐一款强大的设计工具&#xff0c;它可以帮助您轻松为设计稿设计流程图&#xff0c;让…