电梯调度程序

说明:

此次是结对编程项目,其实还是第一次接触。之前都是自己一个人闷头写,想实现什么功能就写什么。但这次接触到结对编程,发现和别人讨论的重要性。两个人商量着来,分析用户需求,完善功能。而且两个人商量也不会像一个人找bug时那么的焦虑、着急。同时,也是最重要的,结对编程的方式对程序的质量也会有很大的提高。

一、题目要求:

现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:


电梯编号


可服务楼层


最大乘客数量


最大载重量


1


全部楼层


10


800 kg


2


单层


10


800 kg


3


双层


20


1600 kg


4


全部楼层


20


2000 kg

其使用规定如下:

1、楼层号为0~20,其中0号为地下一层;

2、有楼层限制的电梯不在响应楼层停靠,如单双层;

3、所有电梯采用统一按钮控制

请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。

二、需求分析:

1、共有4部电梯,分单双层停靠和全部楼层都停靠。

2、用户在任意层请求,距离最近的电梯响应乘客要求。

3、随时显示各个电梯运行状态和所在层数。

4、判断电梯人数,防止超重。电梯如果超重不接受外部请求,只接受电梯内部请求。

三、功能实现:

1、电梯数据结构:

其中各个数据作用已在注释中说明

struct elevator{ int maxPeople;//电梯最大载重量 int nowPeople;//电梯目前装载4人数 int ifFloor;//是否超载(已满1、未满0) int serveFloor;//电梯服务楼层(全部3、单层1、双层0) int outPeople[21];//外部人按电梯请求楼层(数组下标表示楼层,数值值表示是否停靠。停靠1、不停靠-1) int inPeople[21];//电梯内部人按电梯请求楼层 int staut;//上升1、下降-1、停止0 int floor;//电梯目前楼层};

2、初始化函数

4部电梯最初都不处于服务状态。即outPeople[21]={-1}、inPeople[21]={-1};电梯内最初人数nowPeople=0;根据每部电梯的载重量和服务楼层再分别赋值。其中每部电梯的起始楼层是不同的,考虑用户请求要及时相应尽量等较少时间方面的考虑,一号电梯最初在20、二号在9、三号在10、四号在1。

void Iint()//各个电梯初始化
{
	for (int i=0; i < 4; i++)
	{
		for (int j = 0; j < 21; j++)
		{
			a[i].inPeople[j] = -1;
			a[i].outPeople[j] = -1;
		}
		a[i].nowPeople = 0;
		a[i].ifFloor = 0;
	}
	a[0].maxPeople = 10;
	a[0].serveFloor = 3;
	a[0].staut = 0;
	a[0].floor = 20;
	a[1].maxPeople = 10;
	a[1].serveFloor = 1;
	a[1].staut = 0;
	a[1].floor = 9;
	a[2].maxPeople = 20;
	a[2].serveFloor = 0;
	a[2].staut = 0;
	a[2].floor = 10;
	a[3].maxPeople = 20;
	a[3].serveFloor = 3;
	a[3].staut = 0;
	a[3].floor = 1;
}
时间: 2024-08-06 03:43:55

电梯调度程序的相关文章

Task 5.1 电梯调度程序需求调研报告

1.任务概述: 1.1任务背景:试想一下,石家庄铁道大学基础教学楼的电梯配置如下:大厦有1/层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤).其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯.可以对这些合理的假设.    电梯调度设计要求:    (1)每一对学生将设计一套接口和类定义这样一种算法提供者可以提供他/她实现“电梯调度程序”类.    (2)避免出现 “公共汽车”最坏情况的算法.该算法把电梯作为总线,它从底部到顶部,停在每

电梯调度程序3

MMP垃圾作业 GitHub 电梯调度程序 C++实现过程 这次作业我是在寒假作业的基础上改的(因为我第一次作业劣化了架构),为Elevator类添加了一个虚函数isPassengerCompatible(),然后创建了ElevatorOnlyOdd和ElevatorOnlyEvenAndOne继承自Elevator并实现了各自的isPassengerCompatible()来确定一名乘客是否能搭乘这台电梯,并将vector<Passenger> triggeredPassenger移到了El

结对编程 电梯调度程序

这次老师安排的是结对编程作业,也是第一次接触两人结对编程,感觉比较新鲜,有感觉难以入手,在经过协商之后,我们一起完成了我们的编程作业,感觉到很开心,也体会到合作的愉快,这是我们这次的成果. 这是这次的题目,感觉操控4个电梯比较困难,而且考虑情况很多,所以我们在做了很多的构想以后,我们才开始编写程序. 1 #include<iostream> 2 #include<Windows.h> 3 #include <conio.h> 4 using namespace std;

电梯调度程序结对编程

结对人员:马佐霖  王迪 1.结对编程    1.1结对编程优缺点 (1)首先应该是结对编程的高效率了,结对编程的时候,两个人可以分开做不同的unit,也可以同时做相同的unit.在项目的一些简单的unit,一个人能够很简单的unit就可以分给不同的人去做:对于核心的unit,比如说此次项目电梯调度的算法部分,这是一个核心的部分,需要我们共同讨论,经过讨论后再去实现,或者两个人分别写出自己的想法,用代码实现,这时候,综合两个人效率高的那个人的算法.另外,在结对编程时候,有一定相互监督作用,比起一

结对开发--电梯调度报告

“电梯调度”需求分析 一.项目背景 试想一下,石家庄铁道大学基础教学楼的电梯配置如下:大厦有18层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤).其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯.可以对这些合理的假设. 二.数据分析 我们随机选择了一天去现场调查基础教学楼电梯的使用情况,列表如下: 电梯名称 停靠层数 乘客限制 重量限制/kg 电梯开关时间/s 乘客进出电梯时间/s 电梯1 8-18层(双层) 15人 1150 4s

结对项目:电梯调度算法的实现和测试——报告

一.编程人员 徐方宇.陈少杰 二.工作照片 三.结对编程优缺点 优点: 1. 程序员互相帮助,互相教对方,可以得到能力上的互补. 2. 可以让编程环境有效地贯彻Design. 3. 增强代码和产品质量,并有效的减少BUG. 4. 降低学习成本.一边编程,一边共享知识和经验,有效地在实践中进行学习. 5. 在编程中,相互讨论,可能更快更有效地解决问题. 缺点: 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾. 两个人在一起工作可能会出现工作精力不能集中的情况.程序员可能会交谈一些与工作

“电梯调度”需求分析

“电梯调度”需求分析 一.项目背景 试想一下,石家庄铁道大学基础教学楼的电梯配置如下:大厦有18层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤).其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯.可以对这些合理的假设. 二.数据分析 我们随机选择了一天去现场调查基础教学楼电梯的使用情况,列表如下: 电梯名称 停靠层数 乘客限制 重量限制/kg 电梯1 8-18层(双层) 15人 1150 电梯2 8-18层(双层) 15人 1150

电梯调度设计

题目:电梯调度 设计:郭庆樑,张科 一.设计思路 1.问题描述: 说明:电梯调度算法的基本原则就是如果在电梯运行方向上有人要使用电梯则继续往那个方向运动,如果电梯中的人还没有到达目的地则继续向原方向运动.具体而言,如果电梯现在朝上运动, *  如果当前楼层的上方和下方都有请求,则先响应所有上方的请求,然后才向下响应下方的请求:如果电梯向下运动,则刚好相反. * 设计要求:每一对学生将设计一套接口和类定义这样一种算法提供者可以提供他/她实现“电梯调度程序”. 避免出现 “公共汽车”最坏情况的算法.

《团队开发二之电梯调度分析报告》

1.任务概述: 1.1任务背景:试想一下,石家庄铁道大学基础教学楼的电梯配置如下:大厦有18层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤).其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯.可以对这些合理的假设.    电梯调度设计要求:    (1)每一对学生将设计一套接口和类定义这样一种算法提供者可以提供他/她实现“电梯调度程序”类.    (2)避免出现 “公共汽车”最坏情况的算法.该算法把电梯作为总线,它从底部到顶部,停在每