首页 新闻 会员 周边 捐助

一个三层电梯的程序

0
悬赏园豆:50 [已关闭问题]

具体要求如下:

 软件设计用汇编语言或C语言

 三层电梯分别用1F2F3F表示1层、2层和3层。电梯必须具有如下功能:

1)电梯停于1F2F时,按3F按钮呼叫,电梯上升到3F才停止;

2)电梯停于2F3F时,按1F按钮呼叫,电梯下降到1F才停止;

3)电梯停于1F时,按2F按钮呼叫,电梯上升到2F停止;

4)电梯停于3F时,按2F按钮呼叫,电梯下降到2F停止;

5)电梯停于1F2F3F均有按钮呼叫,电梯先上升到2F,暂停2S,然后上升到3F停止;

6)电梯停于3F2F1F均有按钮呼叫,电梯先下降到2F,暂停2S,然后下降到1F停止;

7)电梯上升途中或下降途中,任何反方向按钮呼叫均无效;

8)每层楼之间到达时间应在12S内完成,否则电梯停机;

9)电梯内有意外,有声光报警。

我是个新手,不擅长C语言,也没学过汇编。

急着要,自己又不会,希望哪位好心的朋友帮我一下,小弟不胜感激!!!

 

问题补充: "刚刚"的回答,对于面向对象是非常好的,尤其是他的建议真的很值得我们去汲取。我会好好考虑的。但是现在我所需要的是朋友一个毕业设计里的程序,所需要的是用C语言或是汇编 但是我也不大会,所以发帖请大家提供思路以及解决办法
勇不言弃的主页 勇不言弃 | 初学一级 | 园豆:150
提问于:2008-12-22 09:50
< >
分享
其他回答(1)
1

很简单的题目呀。

我觉得如果这是您的作业或是考试题,或是参考书上的题目,那么还是您自己做此题比较好,完全的给您源码的人其实是害了您而自己还没有获益,施于鱼不如施于渔,您说呢?

另外给您点建议:不要总是说我是个新手(听上去像是不会做的借口,而且想一直使用这个借口),而应该要说我希望自己能成为老手,虽然两句话意思一样,都表示您现在还是个新手,但说出来的效果可大不相同。

提供一个面向对象的思想分析(可能有分析不全面的情况,希望有人更正补充),代码还是您根据分析自己写吧!

详细分析如下:

1、类:这里面有几个类呢?有电梯和楼层,这几个类。

2、对象:这里面有几个对象呢?有一个电梯、1F、2F、3F,这几个对象。

3、属性:每个对象的属性如何?在下面一一罗列出。

A、电梯:状态属性(上升状态、下降状态、暂停状态、停机状态),是否报警属性(是、否),运动计时属性(当前运动时间值,秒[s]为单位),总楼层(正整数,此题为3),当前所在楼层(正整数,此题为1或2或3);

B、楼层(1F、2F、3F共同属性):是否已呼叫(是、否);

4、事件或方法:每个对象的事件方法有哪些?在下面也一一罗列出。

(1)、电梯:

A、接收呼叫,B、响应呼叫,C、报警,D、停机

(2)、楼层公共方法

A、呼叫

5、派生方法:根据上述方法可以派生出更细化的方法。如:电梯:响应上升呼叫、响应下降呼叫;楼层公共方法:上升呼叫、下降呼叫。

6、比较关键的方法中的关键说明及伪代码:

(1)、响应上升呼叫:此方法中有几点是需要注意和判断的。

A、电梯在下降时,忽略呼叫。(也可以将此判断放到接收呼叫中,不过这样就需要判断接收呼叫中的是上升呼叫还是下降呼叫了)

B、电梯上升时,判断当前电梯当前所在楼层是否大于呼叫的楼层,如果大于则忽略呼叫,否则用呼叫楼层减去电梯当前所在楼层,看看电梯向上需要运动几层暂停。

C、伪代码:

Code
if(电梯.电梯状态 == "上升状态" && 呼叫 == "上升呼叫")
{

if(电梯.当前所在楼层 > 呼叫楼层)
{
//显示消息:对不起,楼层已过,呼叫被忽略!
}
else
{
//此处计算下一次该暂停在哪一个楼层上。
}
}

else
{

//显示消息:对不起,呼叫与运动方向相反,被忽略!
}

 

(2)、响应下降呼叫:分析与上一点相似。

其他方法都可以详细分析,从而得到好的结构。另外如果您是C语言的语法或汇编语言的语法不会,那建议您还是看些书籍学习学习!

刚刚 | 园豆:3151 (老鸟四级) | 2008-12-22 12:44

可以直接给个程序么。大神

支持(0) 反对(0) 啊实打实 | 园豆:200 (初学一级) | 2015-05-17 14:08
0

如果是作业题的话,这是考电梯调度算法。如果只有一个电梯的话比较简单,就是当上升的时候一直升到用户要求的最高楼层,然后再响应下降请求,同样下降到用户要求的最低楼层。

如果复杂些的话还有两台并联、三台以上群控的情况。楼主要是对这些不熟悉可以去电梯里实际操作一下^_^

如果是实际的控制程序的话可是没法用类的。要根据电梯的板子决定用什么编程工具。而且这种程序一般编完了就很少会改动,所以会做很多的考虑和优化.

1-2-3 | 园豆:200 (初学一级) | 2008-12-22 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册