1.功能展示
- 电梯调度的初始界面
- 电梯外部上下键功能展示
- 电梯内部按钮功能展示
2.实现功能的核心代码及其分析
亮点一:模拟真实电梯运动
通过panel容器利用两个图片,用panel表示电梯lift两个图片来表示两扇门。在运行过程中通过对panel的location做出改变来实现电梯运动,调用opendoor和closedoor对两个图片做出处理实现开关门动作。
if (NumFloor < l.Num) { lblup.ForeColor = Color.Red; for (int i = panel3.Height - NumFloor * n; i >= getfloorLength(); i--) { lift.Location = new Point(3, i); //判断有没有请求 //if(isRequest[NumFloor-1]==1) // MessageBox.Show("有人出"); System.Threading.Thread.CurrentThread.Join(10); } }
亮点二:支持多楼层按钮输入
首先实现一个楼层的按钮输入即l.num来存储按钮发出请求的楼层数。然后我们利用数组来存储多楼层按钮的发出请求的楼层数,通过对21求余来有序的存储。利用数组Squeue.msg[]对l.num进行赋值,这里遇到的问题是在还未运动到目标楼层时l.num值已经被其他楼层覆盖导致未实现目标功能。我们的处理办法是在l.num中已赋值目标楼层数后强行跳出赋值循环,在运动至目标楼层后,继续赋下一个目标楼层的值。
while (k < 21) { k++; if (Squeue.msg[k] != 0) { l.Num = Squeue.msg[k]; lbNum.Text = l.Num.ToString(); lbFloorNum.Text = l.Num.ToString(); move.Interval = 1000; move.Start(); break; } } if (k >= 21) k = 0;
3.项目说明
项目时间管理
3月12号~3月14号进行单电梯的基本功能实现
3月15号~3月17号对单电梯基本功能的完善以及已知道的部分bug进行修复,如按钮颜色改变问题以及电梯门的开关时间问题
项目进度说明
已基本实现项目功能,未实现四部电梯的联合调度问题,在3月18号到3月20号我们将完善这一缺陷