结对编程—电梯调度

电梯调度

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


电梯编号


可服务楼层


最大乘客数量


最大载重量


1


全部楼层


10


800 kg


2


单层


10


800 kg


3


双层


20


1600 kg


4


全部楼层


20


2000 kg

其使用规定如下:

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

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

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

请根据上述要求设计并实现一个电梯控制程序,

程序思想及解决办法

1.楼层问题及解决办法:先定义一个结构体,把电梯的属性都定义在一个结构体中这样以后想要使用电梯属性的话,很容易就从结构体中用。之后就是考虑楼层了。如果上来3个人按了分别不同的按钮,我要先判断哪个最近然后,开始运行电梯。所以,楼层这个方面我用了链表来完成,用链表的好处在于,

数组在内存中是逐个存放的,也就是说倘若数组的第一个元素在地址A,则数组第二个元素就在地址A+1。

而链表则不是,链表每个节点没有相对固定的位置关系。某个节点在地址A其后的节点不一定是A+1,而在内存的其他空闲区域,呈现一种随机的状态。

数组一旦显式的被申明后,其大小就固定了,不能动态进行扩充。而链表则可以,可以动态生成节点并且添加到已有的链表后面。这样就解决了电梯楼层的问题。如下为代码和效果图

struct elevator*Create(struct elevator*head)//创建链表
{
struct elevator*p1, *p2;
p1=p2=(struct elevator*)malloc(sizeof(struct elevator));
printf("\t\t请输入楼层*回车继续输入*按-1表示结束");
scanf("%d",&p1->floor);
p1->pNext = NULL;
while (p1->floor > -1)
{
if (head== NULL)
head = p1;
else
p2->pNext = p1;
p2 = p1;
p1 = (struct elevator*)malloc(sizeof(struct elevator));
printf("\t\t请输入楼层,按-1表示结束");
scanf("%d", &p1->floor);
}
free(p1); //申请到的没录入,所以释放掉
p1 = NULL; //使指向空
p2->pNext = NULL; //到表尾了,指向空
printf("\t\t楼层输入结束(END)\n");
return head;
}

2.然后需要解决的就是,电梯超载。这个问题就相对简单。题中要求的载重数,我为了方便按每个人65kg的体重算,所以,在程序执行的途中加入一个if判断语句就OK如下为程序代码和效果图

int elevatorONE()//一号电梯函数
{
int a = 0;
struct elevator elevator1;
printf("\t\t\t欢迎使用一号电梯系统\n");
printf("\t请输入一使用一号电梯系统*若想退出一号电梯系统请按2*");
while (a=1)
{
scanf_s("%d", &a);
if (a == 1)
{
printf("\t\t\t请输入人数;");
scanf_s("%d", &elevator1.outnumber);
if (elevator1.outnumber > 12 || elevator1.outnumber < 1)
{
printf("\t\t一号电梯最多承载人数为12人,请您谅解\n");

}
else
{
printf("\t\t提示**一号电梯提供1—21层的服务**\n");
struct elevator *head;
head = NULL;
head = Create(head);
printf(head);
printf("\t\t如果继续请按1否则请按0");
}
}
else
break;
}
printf("\t\t感谢使用一号电梯系统");
printf("\t\t如果继续请按1否则请按0");
return 0;
}

3。然后题中要求2号 和3号电梯分别是单层和双层电梯,所以电梯运行时需要判断输入的是否正确。如下为代码和截图

void printfF(struct elevator*head)//三号电梯的输出函数,判断输入是否为双层
{

struct elevator *three;
three = head;
printf("\t\t电梯开始运行\n");
while (three->floor%2==0)
{
Sleep(N);
printf("\a");
printf("\t\t到达您所输入的楼层%30d楼\n", three->floor);
printf("是否有请求*有请求请按1否则请按0");
int a = 0;
scanf_s("%d", &a);
if (a == 1)
{
break;
}
else
{
printf("\n");
three = three->pNext;
}
}
printf("\t\t您输入有误三号电梯只提供双层服务\n");

4.如果有个人在1楼到5楼 但是途中在3楼有人要使用电梯的话怎么办呢? 这个问题我用了比较笨的办法就是,电梯每到一个楼层我就进行一次提示是否有请求,如果有请求就可以中途使用电梯,就是可以在3楼进入这个电梯系统。如果没有就继续上升到5楼。代码和效果图如下。

跟小伙伴的合影:

* 对这次结对编程的感想*

刚开始,老师说这次作业要进行结对编程,我是拒绝的,从大一开始敲代码开始都是自己一个人写,突然让跟别的人一起写真有点不适应。刚开始我俩都很不怎么达标自己的想法。可是随着时间的推移,慢慢的程序的轮廓出来之后,我们两个交流也多了起来。给我最大的感受就是,一个人写代码发现不足点很少,两个人写可以从更广阔的视野下写程序,这样写出来的程序可以更好地被大多数人所接受,我想这就是老师让我们的做团队合作的原因吧。毕竟人是群居动物(虽然我们是程序猿~~)。还有,因为我俩实力有限对这次编程也不是很满意,没有做出图形出来(主要是对图形学一窍不通啊~~~).....还有就是无法让四个电梯同时运行。希望以后通过自己的努力学习能过弥补不足做出更好的程序。

时间: 2024-10-06 21:59:43

结对编程—电梯调度的相关文章

结对编程-电梯调度

这次编程和前几次不同,这次是结对编程,就是一个人编码,一个人负责审查,两个人编程过程中要交换角色,不能全程一个人编程而另一个人只审查.我的结对队员是张心语.他是一个活泼开朗的大男孩,也是一个文艺小青年.可能是考研的原因,或者是其它什么原因,这次结对效果不是太理想,我多次找过他但他说有事,所以整个结对编程基本就是我一人在整,就连最后拍的结对照片也是为了满足老师的要求.虽然没有达到老师期望的结果,但我依然收获很大.从一开始看的题目的无从下手,到与人交流,再到最后编码,成长了很多,编程能力也得到了进一

结对编程————电梯调度

作业内容:电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800 kg 2 单层 10 800 kg 3 双层 20 1600 kg 4 全部楼层 20 2000 kg 其使用规定如下: 1.楼层号为0~20,其中0号为地下一层: 2.有楼层限制的电梯不在响应楼层停靠,如单双层: 3.所有电梯采用统一按钮控制 请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了. 这次作业是结对

结对编程——电梯调度 总结

结对成员:口平音 阮磊 coding系统地址:https://coding.net/user?key=2e63bb37-ddda-401d-8763-5c9ce6b1e8e7 口平音cnblogs主页地址:http://home.cnblogs.com/u/199489KPY/ 注:关于这次结对编程的程序我觉着我的队友口平音同学(请允许我下文用“口”来代替,日常习惯于这样称呼)已经进行了详细的解释,请老师点击 http://www.cnblogs.com/199489KPY/p/5364383.

结对编程-电梯调度2

这次老师布置的是结队编程作业,这样我就可以了解一下别人的编程习惯和方法了,从而认识到自己的不足之处,学到更多有用的东西. 一.题目要求 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800 kg 2 单层 10 800 kg 3 双层 20 1600 kg 4 全部楼层 20 2000 kg 其使用规定如下: 1.楼层号为0~20,其中0号为地下一层: 2.有楼层限制的电梯不在响应楼层停靠,如单双层

结对编程——电梯调度系统 的 感想与总结

对于这次的结对任务,因为本身自己不在学校,所以没有很好的办法和我的队友们进行沟通交流,所以我的任务是确立实现方法,和提出算法,这里非常感谢我的两个队友,他们非常的负责,作为一个TEAM,非常好的完成了这里任务,将自己的力量发挥到了最大. 对这次任务的感触就是,以前都是自己一个人做一个程序啊,任务啊,很少和一个或者几个人来进行这种合作,大家的意见非常的重要,只有互相沟通,交流才能提出最好的意见和看法. 对于我的队友张腾宵同学对于bug修改的态度,非常的让我感动,为了一个bug,反复进行研究,这种态

结对编程 电梯调度程序

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

结对作业--电梯调度

结对编程 结对成员:王长(2011040101179)CODING:https://coding.net/u/smile-wang  高庆阳(2013040101173) 博客:http://www.cnblogs.com/gaoqingyang1994/   CODING:https://coding.net/u/gaoqingyang1994 结对编程的优缺点 在结对编程模式下,一对程序员可以平等的.互补地进行开发工作:他们一起分析,一起设计,一起写测试用例,一起编码,一起做测试...这样在

结对项目————电梯调度系统

本次作业是结对编程,是在团队项目之前的一个小型项目,旨在考验团队协作能力与锻炼个人编程能力,其实一开始我拿到这个题目还以为是一个很简单的问题,因为觉得电梯的运作方式很“傻瓜”,但是我的队友魏鑫磊(http://www.cnblogs.com/wxl530/)却并不是这么想的,在这里真的要感谢我的队友,磊姐想的太全面了!磊姐想到了这个项目最好应该是软硬件相结合,尤其是一些电梯控制超载,图形显示,传感器肯定是要有硬件实现,经过讨论,我才发现我想的真是太简单了....(差距啊= =)但是由于客观条件不

结对编程--电梯调度算法

1.需求分析: 实现电梯调度算法,预先输入乘坐电梯人数.每个人的起始楼层和到达楼层以及当前电梯所在楼层,电梯会根据算法依次将所有人员接入电梯并送至其重点楼层. 2.代码截图 3.约定的规范 使用Tab制表符 每行不超过100 {}另起一行 规范示例: 4.记录时间 命题讨论:1h 思路分析:1h 代码编写:24h 程序测试:2h 博客记录:1h 5.心得体会 结对编程可以通过自己的parterner来发现自己之前的不足,矫正错误 通过电梯调度算法,复习了数据结构和C语言的指针,结构体等