|
|
@ -219,17 +219,17 @@ Random::Random(bool pseudo)
|
|
|
|
# 3. 系统实现
|
|
|
|
# 3. 系统实现
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该程序使用C++语言,主要用到了STL中的queue队列和cmath库中的exp()函数等。开发工具是CodeBlocks和VS Code。
|
|
|
|
###该程序使用C++语言,主要用到了STL中的queue队列和cmath库中的exp()函数等。开发工具是CodeBlocks和VS Code。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
项目的文件结构如下:
|
|
|
|
###项目的文件结构如下:
|
|
|
|
main.cpp:主程序文件,包含程序的主函数和主要逻辑。
|
|
|
|
main.cpp:主程序文件,包含程序的主函数和主要逻辑。
|
|
|
|
Random.h和Random.cpp:随机数生成的类,包含生成随机数和泊松分布的函数。
|
|
|
|
Random.h和Random.cpp:随机数生成的类,包含生成随机数和泊松分布的函数。
|
|
|
|
plane.h:飞机结构体的定义。
|
|
|
|
plane.h:飞机结构体的定义。
|
|
|
|
README.md:项目文档,包含程序的介绍和使用说明。
|
|
|
|
README.md:项目文档,包含程序的介绍和使用说明。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
程序的主要函数包括:
|
|
|
|
###程序的主要函数包括:
|
|
|
|
Random():构造函数,初始化随机数生成器。
|
|
|
|
Random():构造函数,初始化随机数生成器。
|
|
|
|
random_real():生成0~1之间的随机实数。
|
|
|
|
random_real():生成0~1之间的随机实数。
|
|
|
|
poisson():生成泊松分布的随机数。
|
|
|
|
poisson():生成泊松分布的随机数。
|
|
|
@ -254,7 +254,7 @@ struct plane{
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该程序中使用的队列数据结构具有以下特点:
|
|
|
|
### 该程序中使用的队列数据结构具有以下特点:
|
|
|
|
1.先进先出:队列是一种先进先出(FIFO)的数据结构,元素在队列中的顺序是按照进入队列的顺序决定的。在该程序中,飞机进入队列后就不能直接访问,需要按照队列中的顺序依次处理。
|
|
|
|
1.先进先出:队列是一种先进先出(FIFO)的数据结构,元素在队列中的顺序是按照进入队列的顺序决定的。在该程序中,飞机进入队列后就不能直接访问,需要按照队列中的顺序依次处理。
|
|
|
|
2.可以动态增长:队列的容量可以动态增长,队列中的元素数量不受空间限制。
|
|
|
|
2.可以动态增长:队列的容量可以动态增长,队列中的元素数量不受空间限制。
|
|
|
|
3.可以通过指针实现链式存储:队列可以通过指针实现链式存储,不需要连续的存储空间,因此可以更加灵活地管理内存空间,避免内存浪费。
|
|
|
|
3.可以通过指针实现链式存储:队列可以通过指针实现链式存储,不需要连续的存储空间,因此可以更加灵活地管理内存空间,避免内存浪费。
|
|
|
@ -264,7 +264,9 @@ struct plane{
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该程序的核心算法主要是实现飞机的降落和起飞过程的模拟。具体来说,可以将核心算法分成以下几个部分:
|
|
|
|
###该程序的核心算法主要是实现飞机的降落和起飞过程的模拟。具体来说,可以将核心算法分成以下几个部分:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.生成随机数:程序使用泊松分布的随机数生成算法来模拟飞机的到达时间。该算法需要生成一系列随机实数,因此生成随机数的过程可以看作是核心算法的一部分。
|
|
|
|
1.生成随机数:程序使用泊松分布的随机数生成算法来模拟飞机的到达时间。该算法需要生成一系列随机实数,因此生成随机数的过程可以看作是核心算法的一部分。
|
|
|
|
2.处理降落队列:程序在每个单位时间内,会从降落队列中取出第一架等待降落的飞机,并根据降落时间模拟飞机降落的过程。如果降落队列为空,则不进行任何操作。
|
|
|
|
2.处理降落队列:程序在每个单位时间内,会从降落队列中取出第一架等待降落的飞机,并根据降落时间模拟飞机降落的过程。如果降落队列为空,则不进行任何操作。
|
|
|
|
3.处理起飞队列:程序在处理完降落队列中的飞机后,会从起飞队列中取出第一架等待起飞的飞机,并根据起飞时间模拟飞机起飞的过程。如果起飞队列为空,则不进行任何操作。
|
|
|
|
3.处理起飞队列:程序在处理完降落队列中的飞机后,会从起飞队列中取出第一架等待起飞的飞机,并根据起飞时间模拟飞机起飞的过程。如果起飞队列为空,则不进行任何操作。
|
|
|
@ -299,9 +301,11 @@ int main()
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 系统测试
|
|
|
|
# 4. 系统测试
|
|
|
|
|
|
|
|
|
|
|
|
为了测试该程序的正确性,我们可以采用以下思路和方法:
|
|
|
|
###为了测试该程序的正确性,我们可以采用以下思路和方法:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
先使用一组小数据量进行测试,检查程序是否能正常运行并输出正确的结果。
|
|
|
|
先使用一组小数据量进行测试,检查程序是否能正常运行并输出正确的结果。
|
|
|
|
使用多组数据进行测试,包括一些边界值、特殊情况以及大量数据的情况,以检验程序的性能。
|
|
|
|
再使用多组数据进行测试,包括一些边界值、特殊情况以及大量数据的情况,以检验程序的性能。
|
|
|
|
对于每组测试数据,记录输入和预期结果,并与程序输出的结果进行比较,以确定程序是否通过测试。
|
|
|
|
对于每组测试数据,记录输入和预期结果,并与程序输出的结果进行比较,以确定程序是否通过测试。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|