结对开发之电梯调度最终稿(徐梦迪&刘博)
2014年3月18日 星期二下午19:00-21:00
我们明确了未来几天的工作任务
电梯调度这个程序我们已经弄了一周了,在这一周里我们网上搜索了好多相关的东西,找了很多的资料,一开始做出来的电梯只有一部电梯,而且存在很多很多的缺陷,很多要求的功能都不能实现,而且一筹莫展,所以我们讨论了接下来的这几天的主要任务,如下:
1、实现4部电梯共同运作
2、实现电梯门的开关控制的动画效果
3、实现控制电梯人数以及体重
4、实现多人同时上电梯
2014年3月19日 星期三 下午14:00-18:30
我们今天的任务是努力实现电梯门的控制,实现按电梯按钮等电梯到了目标层就可以使电梯门自动打开然后在自动关上,由于我们是使用的C#,一开始的时候我们不懂怎么才能弄出来动画效果,所以在实现对电梯门的控制的时候想了很久,后来才知道在对电梯门开关的动画效果只需要使用延时就可以了,但是控制门的变化需要改变框体的大小,电梯门分为两个部分,对于左边的门,只要根据时间的变化,控制它的宽度变化就可以实现左边的门的开启与闭合,对于右边的门,在控制它的开启与闭合,不仅需要根据时间控制它的大小,还要根据时间控制它的位置变化,所以右边的电梯门比较复杂。
int NumFloor = 1; int time = 0; int temp = 0; int k = 0,k1=0; //int flagColor = 1;//按钮改变颜色 //int isDoorOpen = 0;//0为关门,1为开门 int maxPerson = 0;//实时人数 int[] isRequest = new int[23]; public static liftC l = new liftC(); public queue Squeue = new queue(); public control c = new control(); public const int n = 34; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); } //--------------时间控件 ---------------------------------- private void openDoor_Tick(object sender, EventArgs e) { for (int bdx = 52; bdx >= 1; bdx--) { doorLeft.Width = bdx; doorRight.Width = bdx; doorRight.Location = new Point(53 + 52 - bdx, 0); System.Threading.Thread.CurrentThread.Join(10); } //flagColor = 1; openDoor.Stop(); } private void closeDoor_Tick(object sender, EventArgs e) { for (int bdx = 0; bdx <= 52; bdx++) { doorLeft.Width = bdx; doorRight.Width = bdx; doorRight.Location = new Point(106 - bdx, 0); System.Threading.Thread.CurrentThread.Join(10); } //flagColor = 0; closeDoor.Stop(); } private void move_Tick(object sender, EventArgs e) { 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); } } else { lbldown.ForeColor = Color.Red; for (int i = panel3.Height - NumFloor * n; i <= getfloorLength(); i++) { lift.Location = new Point(3, i); System.Threading.Thread.CurrentThread.Join(10); } } openDoor.Interval = 500; openDoor.Start(); this.Focus(); System.Threading.Thread.CurrentThread.Join(1000); NumFloor = l.Num; lblup.ForeColor = Color.DimGray; lbldown.ForeColor = Color.DimGray; lbUp.ForeColor = Color.DimGray; lbDown.ForeColor = Color.DimGray; // closeDoor.Interval = 500; // closeDoor.Start(); this.Focus(); move.Stop(); }
3月20日星期四16:30—22:00
我们的电梯只是一个虚架子,它在运行的时候有很多很多的毛病,不符合实际的情况,虽然界面上我们做了四部电梯,但是这四部电梯不能同时运行,只有一步电梯可以动,哪怕同时点击四部电梯,也是只有一部电梯可以运行,我们知道这是十分不符合实际情况的,因为没有一栋楼的多部电梯是不可以同时运行的,老师提示我们四部电梯其实就是一部电梯,因为电梯是并联的,如果你对其中的一部电梯进行操作,比如让它下降到你所在的楼层,不可能四部电梯同时下降到你所在的楼层,所以四部电梯的本质就是一部电梯,只不过集成在了同一个界面上,但是其设计思路与代码是相同的。
根据要求,我们还需要实现,人员超重的报警,因为在实际情况中,电梯是不可能载重无数人的,所以,当电梯承载人数过多的时候,电梯会发出报警信号,但是由于重。我们技术有限,不能发出报警信号,只能实现提示超重。