diff --git a/README.md b/README.md index 0a9ef27..49b64b2 100644 --- a/README.md +++ b/README.md @@ -95,37 +95,127 @@ int Random::poisson(double mean) ## 2.2 数据结构设计 -首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。 +以下是用到的数据结构: -### (1)xxx结构 +飞机:设计一个结构体或类来表示飞机,包括飞机的编号、起降状态、起飞时间、降落时间、所属航班等信息。 -给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。多个数据结构,逐一列出。 +航线:设计一个结构体或类来表示航线,包括航班编号、起降机场、航班状态、预计起飞时间、预计降落时间等信息。 -### (2)xxx结构 +排队队列:设计一个队列结构来存储飞机的起飞或降落排队队列信息。 -给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。 - -### +栈:用来存储已经起飞或降落的飞机信息,方便回退操作。 +###(1)queue队列结构 +设计一个队列结构来存储飞机的起飞或降落排队队列信息。 +``` +queue q1; //q1是准备降落的飞机队列 +queue q2; //q2是准备起飞的飞机队列 +``` +###(2)Random结构 +生成随机数: +``` +class Random{ + public: + Random(bool pseudo=true); + double random_real(); + int poisson(double mean); + private: + int reseed(); + int seed, + multiplier,add_on; +}; +``` +###(3)plane结构 +``` +struct plane{ + int name; + int in_queue_time; +} plane; +``` ## 2.3 算法设计 -首先,分析对比几种可选的算法设计方案。如是否排序,广度优先或深度优先搜索等。给出每一种设计方案的特点(优势、不足)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。 -### (1)XXX算法 -给出核心算法的设计,包括伪代码或流程图。多个核心算法,逐一列出。只列举解决问题的核心算法,重点讲清楚是如何解决问题的。 +### (1)泊松分布实现随机数生成算法 +``` +class Random{ + public: + Random(bool pseudo=true); + double random_real(); + int poisson(double mean); + private: + int reseed(); + int seed, + multiplier,add_on; +}; -### (2)XXX算法 +int Random::reseed() +{ + seed=seed*multiplier + add_on; + return seed; +} -给出核心算法的设计,包括伪代码或流程图。 +Random::Random(bool pseudo) +{ + if(pseudo) + seed=1; + else + seed=time(NULL)%INT_MAX; + multiplier=2743; + add_on=5923; +} +double Random::random_real() +{ + double max=INT_MAX + 1.0; + double temp=reseed(); + if(temp<0) + temp=temp+max; + return temp/max; +} + +int Random::poisson(double mean) +{ + double limit=exp(-mean); + double product=random_real(); + int count=0; + while(product>limit){ + count++; + product*=random_real(); + } + return count; +} +``` +### (2)排队算法 +``` + if(!q1.empty()){ + temp=q1.front(); + wait_time=i-temp.in_queue_time-1; + come_wait_time+=wait_time; + printf("\n\n##%d号时间##\n%d号飞机降落了,等了%d个单位时间。\n", i, temp.name , wait_time); + q1.pop(); + } + else if(!q2.empty()){ + temp=q2.front(); + wait_time=i-temp.in_queue_time-1; + go_wait_time+=wait_time; + printf("\n\n##%d号时间##\n%d号飞机飞走了,等了%d个单位时间。\n", i, temp.name , wait_time); + q2.pop(); + } + else { + printf("\n\n##%d号时间##\n没有飞机降落,也没有飞机起飞,此时跑道为空。\n",i); + spare_time++; + } +``` -# 3. 系统实现 -说明所使用的语言、开发工具等。 -介绍项目的文件结构,以及主要函数的功能。 +# 3. 系统实现 +#####系统使用C++语言进行开发,使用VScode作为开发工具。 +#####项目的文件结构如下: + c.cpp:主程序文件,包含程序的主函数和主要逻辑。 + README.md:项目文档,包含程序的介绍和使用说明。 ## 3.1 核心数据结构的实现 @@ -169,52 +259,125 @@ void bubble_sort(T a[], int n) # 4. 系统测试 ``` —————————————————————————————————————————————— -|请输入飞机场运行的时间。 -|3 -|请输入降落和起飞队列最多容纳的飞机数。 -|3 -|请输入平均每个单位时间请求降落的飞机数。 -|3 -|请输入平均每个单位时间请求起飞的飞机数。 -|3 -—————————————————————————————————————————————— -—————————————————————————————————————————————— -|##0号时间## -|没有飞机降落,也没有飞机起飞,此时跑道为空。 -| -| -|##1号时间## -|没有飞机降落,也没有飞机起飞,此时跑道为空。 -|0号飞机请求降落,并进入降落队伍。 -|1号飞机请求降落,并进入降落队伍。 -|2号飞机请求降落,并进入降落队伍。 -|3号飞机请求降落但被拒绝了。 -|4号飞机请求起飞,并进入起飞队伍。 -|5号飞机请求起飞,并进入起飞队伍。 -|6号飞机请求起飞,并进入起飞队伍。 -|7号飞机请求起飞但被拒绝了。 -|8号飞机请求起飞但被拒绝了。 -|9号飞机请求起飞但被拒绝了。 -| -| -|##2号时间## -|0号飞机降落了,等了0个单位时间。 -|历经3个单位时间,机场停止接收请求。 -| -| -|一共收到了10架飞机的请求。 -|一共有4架请求降落。其中有3架被接受了,1架被拒绝了。 -|一共有6架请求起飞。其中有3架被接受了,3架被拒绝了。 -| -|成功降落了1架,还有2架在排队等待降落。 -|成功起飞了0架,还有3架在排队等待起飞 -| -|轨道有66.67%的时间是空闲的。 -|降落平均要等0.00个单位时间。 -|起飞平均要等0.00个单位时间。 -| -|这个机场平均每个单位时间收到1.33个降落请求。 -|这个机场平均每个单位时间收到2.00个起飞请求。 +请输入飞机场运行的时间。 +20 +请输入降落和起飞队列最多容纳的飞机数。 +5 +请输入平均每个单位时间请求降落的飞机数。 +0.4 +请输入平均每个单位时间请求起飞的飞机数。 +0.5 + + +##0号时间## +没有飞机降落,也没有飞机起飞,此时跑道为空。 + + +##1号时间## +没有飞机降落,也没有飞机起飞,此时跑道为空。 +0号飞机请求起飞,并进入起飞队伍。 + + +##2号时间## +0号飞机飞走了,等了0个单位时间。 + + +##3号时间## +没有飞机降落,也没有飞机起飞,此时跑道为空。 +1号飞机请求降落,并进入降落队伍。 +2号飞机请求起飞,并进入起飞队伍。 + + +##4号时间## +1号飞机降落了,等了0个单位时间。 + + +##5号时间## +2号飞机飞走了,等了1个单位时间。 +3号飞机请求起飞,并进入起飞队伍。 + + +##6号时间## +3号飞机飞走了,等了0个单位时间。 + + +##7号时间## +没有飞机降落,也没有飞机起飞,此时跑道为空。 +4号飞机请求起飞,并进入起飞队伍。 + + +##8号时间## +4号飞机飞走了,等了0个单位时间。 + + +##9号时间## +没有飞机降落,也没有飞机起飞,此时跑道为空。 +5号飞机请求起飞,并进入起飞队伍。 +6号飞机请求起飞,并进入起飞队伍。 + + +##10号时间## +5号飞机飞走了,等了0个单位时间。 +7号飞机请求起飞,并进入起飞队伍。 + + +##11号时间## +6号飞机飞走了,等了1个单位时间。 +8号飞机请求起飞,并进入起飞队伍。 +9号飞机请求起飞,并进入起飞队伍。 + + +##12号时间## +7号飞机飞走了,等了1个单位时间。 +10号飞机请求降落,并进入降落队伍。 + + +##13号时间## +10号飞机降落了,等了0个单位时间。 +11号飞机请求起飞,并进入起飞队伍。 + + +##14号时间## +8号飞机飞走了,等了2个单位时间。 +12号飞机请求降落,并进入降落队伍。 + + +##15号时间## +12号飞机降落了,等了0个单位时间。 + + +##16号时间## +9号飞机飞走了,等了4个单位时间。 + + +##17号时间## +11号飞机飞走了,等了3个单位时间。 +13号飞机请求降落,并进入降落队伍。 + + +##18号时间## +13号飞机降落了,等了0个单位时间。 +14号飞机请求起飞,并进入起飞队伍。 + + +##19号时间## +14号飞机飞走了,等了0个单位时间。 +历经20个单位时间,机场停止接收请求。 + + +一共收到了15架飞机的请求。 +一共有4架请求降落。其中有4架被接受了,0架被拒绝了。 +一共有11架请求起飞。其中有11架被接受了,0架被拒绝了。 + +成功降落了4架,还有0架在排队等待降落。 +成功起飞了11架,还有0架在排队等待起飞 + +轨道有25.00%的时间是空闲的。 +降落平均要等0.00个单位时间。 +起飞平均要等0.60个单位时间。 + +这个机场平均每个单位时间收到0.20个降落请求。 +这个机场平均每个单位时间收到0.55个起飞请求。 ———————————————————————————————————————————————————————— ```