结对作业
其实这个电梯的程序挺难得,其实老师布置的是4部电梯,然而写到今天才知道是4部电梯,然而我俩一直只写了1部。其实老师布置的要写22层(或更多层),然而我俩只写了5层,其实我俩觉得22层和5层,是一样的。其实我俩觉得这样偷工减料不好,其实我俩的能力还是有限的,其实我俩尽力了,其实我们是用MFC写的,其实我俩也就只能写成这个样子了。
其实我们的电梯是这样的:
1.详细设计
电梯分为电梯里和电梯外,其中每层都有个电梯外,而电梯里的空间只有一个。,而老师说要做界面,所以设计电梯里界面,和五层电梯口的界面。这些界面都放在一个菜单上进行管理。
假设有甲在1楼先按上键,乙在3楼,丙在5楼同时按下电梯,假设电梯在这一刻是向上运动在2楼,甲乙丙按下键后,电梯继续上行到请求最高的层数,5楼,然后在向下运动,等丙进电梯后按下要去的楼层,然后电梯就到达指定楼层后继续向下运动到请求的最底层,途中经过低3层,接乙下楼,到1楼在载甲上行,
电梯每一次到达最高,最低点后运动状态都变一次,
2. 我们的概要设计:(以下所有界面全都做过缩小处理)
我觉得电梯调度算法应该站在设计者的角度去调度电梯给人们服务(1.首先电梯分为电梯里面和各个等待电梯的电梯门外。如图2.1,为何要设楼外和电梯里 设楼外就是模仿有人在该层进行操作,对电梯有请求。这是一个菜单页面。
图2.1
2.①点一下各个按键,比如,点开电梯里,有下图2.2。
图2.2
在上图中,有各个按钮代表要去几层,编辑框代表电梯现在所处在的位置,名字为 “走起”的按键功能类似于关门键。Cancel按键在这没啥作用。
② 点开一楼外,有下图2.3,
图2.3
同样编辑框代表电梯现在所处在的位置,名字为走起 的按键功能类似于关门键。
但这里有一个向上的按键,表示该层有使用电梯的请求。Cancel按键在这没啥作用。
③所以同理其他几层的界面二三四楼都一样,五楼顶楼没有上键。
3.各界面具体实现
首先在菜单界面上定义一个电梯里的按钮,并设置按钮的ID(随便设,但必须大写)
再在对话框出新建一个对话框,设置ID为IDD_DIALOG1,然后右键,点击类向导,提 示建立一个新的类,建立新的类后在Class name栏里用视图类CELECT_ THREE View,绑 定该对话框的ID后Add Faction,再编辑代码。
进入编辑代码的函数内后,给这个类建一个对象,采用非模态对话框的方式,将菜单的 按钮和对话框绑定在一起,代码如下
void CELECT_THREEView::OnInElect()
{
/ TODO: Add your command handler code here
I N_ELECT *one=new IN_ELECT ();
one->Create(IDD_DIALOG1);
one->ShowWindow(SW_SHOWNORMAL);
} 特别注意,类视图的编辑代码出并没有应用上面那个对话框所对应了类,所以要加 上, #include "IN_ELECT.h" ,否则会出错,
同理,
总共建立的是6个界面,相对应的是6个类,分别是:
Class IN_ELECT -------电梯里的类
Class ELECT1 -------电梯口1楼的类
Class ELECT2 -------电梯口2楼的类
Class ELECT3 -------电梯口3楼的类
Class ELECT4 -------电梯口4楼的类
Class ELELCT5 -------电梯口5楼的类
其他几层的界面也是这样建出来的,使用非模态对话框的好处在于可以同时打开多个对 话框,下图是同时打开多个对话框的情况,代表有多层的人要请求用电梯。
4.遇到的问题
有时候明明已经给某个对话框建立了类,然后在点开类向导用CELECT_ THREE View类视图绑定对话框时,却弹出来说是不是要新建一个类,这是我就知道这个类,这个对话框失效了,
于是得重新建立一个对话框和他所对应的类。
剩下的工作有我的队友完成http://www.cnblogs.com/wodove/完成
感觉挺对不起自己的队友,自己太渣了,什么都不会,但现在自己正在自己学习以前落下的,希望自己可以进步
my patener