|
|
|
|
# 项目名称
|
|
|
|
|
|
|
|
|
|
董函铄 胡煜男 于博 袁楷昊
|
|
|
|
|
|
|
|
|
|
**摘要**:本项目针对在机场中飞机的降落或起飞问题,实现了对处理的飞机总数进行统计、飞机降落或起飞请求等功能。为了有效地存储和处理飞机总数,请求降落或起飞的飞机数,接受起飞或降落的飞机数,拒绝起飞或降落的飞机数,实际起飞或降落的飞机数等数据,采用了线性表、队列、排序、随机数等数据结构。为了解决时间单位内,飞机的降落或起飞问题,采用了c++算法,算法效率中等,项目的整体效果较好。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
任务分工及完成情况:
|
|
|
|
|
|
|
|
|
|
| 任务 | 人员 |
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
| 文档资料查询 | 胡煜男 、袁楷昊 |
|
|
|
|
|
| 文档汇总 | 董函铄、胡煜男 |
|
|
|
|
|
| 代码资料查询 | 董函铄、于博、胡煜男、袁楷昊 |
|
|
|
|
|
| 代码开发 | 于博、董函铄、胡煜男、袁楷昊 |
|
|
|
|
|
| 代码测试 | 袁楷昊、胡煜男 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
工作量占比:
|
|
|
|
|
|
|
|
|
|
| 董函铄 | 胡煜男 | 于博 | 袁楷昊 |
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
| 25 | 25 | 25 | 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1. 系统分析
|
|
|
|
|
|
|
|
|
|
## 1.1 问题描述
|
|
|
|
|
|
|
|
|
|
考虑一个繁忙的小型机场仅有一个跑道。在每个单位时间内,只有一架飞机可以降落或起飞,但不能同时进行。随时有飞机准备着降落或起飞,因此在任何给定的时刻,跑道可能是空闲的,或者一架飞机正在降落或起飞,也可能有几架飞机等待着降落或起飞。在模拟中,我们特别关注飞机在起飞或降落时需要排队等待的时间,因此,测量时间对我们的程序至关重要。我们将模拟时间划分为单位,使得在任何给定的时间单位内,只有一架飞机可以利用跑道进行起飞或降落。
|
|
|
|
|
|
|
|
|
|
## 1.2 可行性分析
|
|
|
|
|
|
|
|
|
|
机场只有一个跑道,准备降落的飞机和准备起飞的飞机分别组成一个队列,排队等待降落和起飞。
|
|
|
|
|
|
|
|
|
|
机场只有一个跑道,准备降落的飞机和准备起飞的飞机分别组成一个队列,排队等待降落和起飞。
|
|
|
|
|
|
|
|
|
|
## 1.3 需求分析
|
|
|
|
|
|
|
|
|
|
### (1)输入和输出
|
|
|
|
|
|
|
|
|
|
####输入:
|
|
|
|
|
请输入飞机场运行的时间。
|
|
|
|
|
请输入降落和起飞队列最多容纳的飞机数。
|
|
|
|
|
请输入平均每个单位时间请求降落的飞机数。
|
|
|
|
|
请输入平均每个单位时间请求起飞的飞机数。
|
|
|
|
|
|
|
|
|
|
####输出:
|
|
|
|
|
x号时间x号飞机降落了,等了x个单位时间。
|
|
|
|
|
x号时间x号飞机飞走了,等了x个单位时间。
|
|
|
|
|
x号时间没有飞机降落,也没有飞机起飞,此时跑道为空。
|
|
|
|
|
x号飞机请求降落,并进入降落队伍。
|
|
|
|
|
x号飞机请求降落但被拒绝了。
|
|
|
|
|
x号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
x号飞机请求起飞但被拒绝了。
|
|
|
|
|
历经d个单位时间,机场停止接收请求。
|
|
|
|
|
一共收到了d架飞机的请求。
|
|
|
|
|
一共有d架请求降落。其中有d架被接受了,d架被拒绝了。
|
|
|
|
|
一共有d架请求起飞。其中有d架被接受了,d架被拒绝了。
|
|
|
|
|
成功降落了d架,还有d架在排队等待降落。
|
|
|
|
|
成功起飞了d架,还有d架在排队等待起飞。
|
|
|
|
|
轨道有d的时间是空闲的。
|
|
|
|
|
降落平均要等d个单位时间。
|
|
|
|
|
起飞平均要等f个单位时间。
|
|
|
|
|
这个机场平均每个单位时间收到f个降落请求。
|
|
|
|
|
这个机场平均每个单位时间收到f个起飞请求。
|
|
|
|
|
|
|
|
|
|
### (2)数据字典
|
|
|
|
|
|
|
|
|
|
飞机场运行时间;
|
|
|
|
|
降落和起飞队列最多容纳的飞机数;
|
|
|
|
|
平均每个单位时间请求降落的飞机数;
|
|
|
|
|
平均每个单位时间请求起飞的飞机数;
|
|
|
|
|
每个单位时间内,平均起飞(降落)的飞机数。
|
|
|
|
|
|
|
|
|
|
### (3)数据文件
|
|
|
|
|
|
|
|
|
|
无数据文件,系统直接产生随机数
|
|
|
|
|
|
|
|
|
|
### (4)参数设定
|
|
|
|
|
|
|
|
|
|
请输入飞机场运行的时间:24
|
|
|
|
|
请输入降落和起飞队列最多容纳的飞机数:6
|
|
|
|
|
请输入平均每个单位时间请求降落的飞机数:3
|
|
|
|
|
请输入平均每个单位时间请求起飞的飞机数:2
|
|
|
|
|
每个单位时间内,平均起飞(降落)的飞机数:系统随机产生
|
|
|
|
|
|
|
|
|
|
### (5)处理已经在队列里的飞机的功能
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
输出:
|
|
|
|
|
|
|
|
|
|
##0号时间##
|
|
|
|
|
没有飞机降落,也没有飞机起飞,此时跑道为空。
|
|
|
|
|
|
|
|
|
|
##1号时间##
|
|
|
|
|
没有飞机降落,也没有飞机起飞,此时跑道为空。
|
|
|
|
|
0号飞机请求降落,并进入降落队伍。
|
|
|
|
|
1号飞机请求降落,并进入降落队伍。
|
|
|
|
|
2号飞机请求降落,并进入降落队伍。
|
|
|
|
|
3号飞机请求降落,并进入降落队伍。
|
|
|
|
|
4号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
5号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
6号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
7号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
8号飞机请求起飞,并进入起飞队伍。
|
|
|
|
|
```
|
|
|
|
|
###(6)系统汇总功能
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
输出:
|
|
|
|
|
一共收到了106架飞机的请求。
|
|
|
|
|
一共有60架请求降落。其中有27架被接受了,33架被拒绝了。
|
|
|
|
|
一共有46架请求起飞。其中有6架被接受了,40架被拒绝了。
|
|
|
|
|
|
|
|
|
|
成功降落了22架,还有5架在排队等待降落。
|
|
|
|
|
成功起飞了0架,还有6架在排队等待起飞
|
|
|
|
|
|
|
|
|
|
轨道有8.33%的时间是空闲的。
|
|
|
|
|
降落平均要等3.88个单位时间。
|
|
|
|
|
起飞平均要等0.00个单位时间。
|
|
|
|
|
|
|
|
|
|
这个机场平均每个单位时间收到2.50个降落请求。
|
|
|
|
|
这个机场平均每个单位时间收到1.92个起飞请求。
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 2. 系统设计
|
|
|
|
|
|
|
|
|
|
## 2.1 概要设计
|
|
|
|
|
|
|
|
|
|
系统划分为五个模块,包括随机数的生成和泊松分布的实现,相关数据的输入,处理已经在队列里的飞机,处理请求,数据汇总。
|
|
|
|
|
###(1)随机数的生成和泊松分布的实现:随机产生单位时间,随机产生需要处理的飞机总数,随机产生平均起飞或降落的飞机数。
|
|
|
|
|
###(2)相关数据的输入:输入飞机场运行的时间、降落和起飞队列最多容纳的飞机数、平均每个单位时间请求降落的飞机数和平均每个单位时间请求起飞的飞机数。
|
|
|
|
|
###(3)处理已经在队列里的飞机:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 2.2 数据结构设计
|
|
|
|
|
|
|
|
|
|
首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
|
|
|
|
|
|
|
|
|
|
### (1)xxx结构
|
|
|
|
|
|
|
|
|
|
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。多个数据结构,逐一列出。
|
|
|
|
|
|
|
|
|
|
### (2)xxx结构
|
|
|
|
|
|
|
|
|
|
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。
|
|
|
|
|
|
|
|
|
|
###
|
|
|
|
|
|
|
|
|
|
## 2.3 算法设计
|
|
|
|
|
|
|
|
|
|
首先,分析对比几种可选的算法设计方案。如是否排序,广度优先或深度优先搜索等。给出每一种设计方案的特点(优势、不足)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
|
|
|
|
|
|
|
|
|
|
### (1)XXX算法
|
|
|
|
|
|
|
|
|
|
给出核心算法的设计,包括伪代码或流程图。多个核心算法,逐一列出。只列举解决问题的核心算法,重点讲清楚是如何解决问题的。
|
|
|
|
|
|
|
|
|
|
### (2)XXX算法
|
|
|
|
|
|
|
|
|
|
给出核心算法的设计,包括伪代码或流程图。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 系统实现
|
|
|
|
|
|
|
|
|
|
说明所使用的语言、开发工具等。
|
|
|
|
|
|
|
|
|
|
介绍项目的文件结构,以及主要函数的功能。
|
|
|
|
|
|
|
|
|
|
## 3.1 核心数据结构的实现
|
|
|
|
|
|
|
|
|
|
描述数据结构的实现方法。
|
|
|
|
|
|
|
|
|
|
可以配合程序代码加以说明。如:
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
struct LNode {
|
|
|
|
|
E data; // 数据元素
|
|
|
|
|
LNode *next; // 指向下一个结点的指针
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对该数据结构的特点进行分析。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
|
|
|
|
|
|
描述算法的实现方法。
|
|
|
|
|
|
|
|
|
|
可以配合程序代码加以说明。如:
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
// 冒泡排序
|
|
|
|
|
void bubble_sort(T a[], int n)
|
|
|
|
|
{
|
|
|
|
|
......
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对该算法的时间和空间复杂度进行分析。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 系统测试
|
|
|
|
|
|
|
|
|
|
描述测试的思路和方法。比如,先用小数据量进行测试,再用真实数据进行测试。
|
|
|
|
|
|
|
|
|
|
测试应考虑到输入数据的特殊情况。
|
|
|
|
|
|
|
|
|
|
给出若干测试用例,包括输入、预期结果、运行结果或是否通过测试。运行结果和预期结果一致,为通过测试。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 总结
|
|
|
|
|
|
|
|
|
|
概况项目和完成情况。
|
|
|
|
|
|
|
|
|
|
遇到的问题和解决方法。
|
|
|
|
|
|
|
|
|
|
个人小结:
|
|
|
|
|
|
|
|
|
|
成员1:
|
|
|
|
|
|
|
|
|
|
成员2:
|
|
|
|
|
|
|
|
|
|
成员3:
|
|
|
|
|
|
|
|
|
|
成员4:
|
|
|
|
|
|
|
|
|
|
成员5:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 参考文献
|
|
|
|
|
|
|
|
|
|
列出参考的文献资料,根据情况自行添加。
|
|
|
|
|
|
|
|
|
|
[1] 严蔚敏, 吴伟民. 数据结构(C语言版). 北京: 清华大学出版社, 2007.
|
|
|
|
|
|