一、开门见山,代码粘

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace lift
{
public partial class Form1 : Form
{
int destion = ;//目的楼层
int number = ;//所到楼层
public Form1()
{
InitializeComponent();
//this.skinEngine1.SkinFile = "Vista2_color5.ssk";
} private void button21_Click(object sender, EventArgs e)
{
if (destion == )
{
lblWarming.Visible = true;
}
else
{
tmrSeconds.Start();
} } private void lift_click(object sender, EventArgs e)
{
if (destion == )
{
destion = Convert.ToInt32(((Button)sender).Tag);
((Button)sender).BackColor = Color.Red;
if (destion > )
{
number = destion / * + number;
}
}
else
{
MessageBox.Show("你只能选择一个楼层","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
} private void tmrSeconds_Tick(object sender, EventArgs e)
{ if (number < destion)
{
// FormmoveUp();
number++;
foreach (Control item in this.Controls)
{ if (item is Button)
{
if(number<=destion)
{
item.BackColor = Color.LightGray;
}
int index = Convert.ToInt32(item.Tag);
if (index == number)
{
item.BackColor = Color.Green;
}
}
}
lblPostion.Text = (number%).ToString();
}
else if(number>destion)
{
// FormmoveDown();
number--;
foreach (Control item in this.Controls)
{
if (item is Button)
{
//number=destion / 100 * 100 + number;
if (number >= destion)
{
item.BackColor = Color.LightGray;
}
int index = Convert.ToInt32(item.Tag);
if (index == number)
{
item.BackColor = Color.Green;
}
}
}
lblPostion.Text = (number%).ToString();
}
else
{
tmrSeconds.Stop();
foreach(Control item in this.Controls )
{
if (item is Button)
{
int index = Convert.ToInt32(item.Tag);
if (index == destion)
{
item.BackColor = Color.LightGray;
}
}
}
MessageBox.Show(destion%+"层到了", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
destion = ;
number = number % ;
}
} private void button21_MouseLeave(object sender, EventArgs e)
{
lblWarming.Visible = false;
} private void lblWarming_Click(object sender, EventArgs e)
{ } }
}

二、实现思路

1、首先考虑一部电梯运行的情况,乘客上电梯后,通过按按钮确定目的楼层,因此,按钮的click事件是同一个道理,因此用一个函数实现即lift_click;

2、其次考虑按下按钮后,电梯上升和下降,首先比较当前楼层与目的楼层的数值大小,如果目的楼层destion大于当前楼层number,则上升一层则number(所到楼层)加一,否则number-1,将按钮变成绿色表示到达该楼层;

3、然后思考当到达该楼层时候,给出提示框提示。

4、最后考虑四部电梯的情况。

三、开发日志

3月12日 星期三 14:00-16:30

万事开头难,我们今天讨论了具体思路和编程的策略,并且查找了很多资料,做了个界面:

3月13日星期四 16:30-18:50

一部电梯调度的click事件,界面很简单,做好界面以后开始写函数,完成如下:

private void lift_click(object sender, EventArgs e)
{
if (destion == )
{
destion = Convert.ToInt32(((Button)sender).Tag);
((Button)sender).BackColor = Color.Red;
}
else
{
MessageBox.Show("你只能选择一个楼层","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

3月14日 星期五 18:00-22:00

按下电梯运行按钮,实现了电梯上下楼的功能:

 private void tmrSeconds_Tick(object sender, EventArgs e)
{ if (number < destion)
{
FormmoveUp();
number++;
foreach (Control item in this.Controls)
{
if (item is Button)
{
if(number<=destion)
{
item.BackColor = Color.LightGray;
}
int index = Convert.ToInt32(item.Tag);
if (index == number)
{
item.BackColor = Color.Green;
}
}
}
lblPostion.Text = number.ToString();
}
else if(number>destion)
{
FormmoveDown();
number--;
foreach (Control item in this.Controls)
{
if (item is Button)
{
if (number >= destion)
{
item.BackColor = Color.LightGray;
}
int index = Convert.ToInt32(item.Tag);
if (index == number)
{
item.BackColor = Color.Green;
}
}
}
lblPostion.Text = number.ToString();
}
else
{
tmrSeconds.Stop();
foreach(Control item in this.Controls )
{
if (item is Button)
{
int index = Convert.ToInt32(item.Tag);
if (index == destion)
{
item.BackColor = Color.LightGray;
}
}
}
MessageBox.Show(destion+"层到了", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
destion = ;
}
}

这样程序已经可以运行了:

运行结果如下

2014年3月16日 14:00-18:00

编写四个电梯的程序,首先修改界面,但是遇到了很大的问题,如果复制粘贴以后的按钮属性全都相同,四个电梯就像一个电梯一样,后来我们看了半天也没找到解决方案,于是放弃了。界面修改如下:

2014年3月17日 星期一  18:00-23:00

提交程序在即,但是我们还是一个电梯,我们本来想就此罢手,但是我们能这么做吗?不能!!!!!!我们于是仔细看了问题的症结,发现只要修改Tag值和number值就可以达到效果,于是,将第二个电梯的值加了100,第三个电梯的值加了200,第四个电梯Tag值加了300然后修改了number让他变成postion/100*100+number实现利用整型除法的弊端来解决了问题。得到了如下结果:

【软件工程】电梯调度的初步实现 李亚文&&郭莉莉的更多相关文章

  1. 【软件工程】电梯调度程序需求分析 李亚文&&郭莉莉

    2014年3月4日(14:00-16:00) 为了进一步理解电梯工作的原理,我们特地到石家庄铁道大学春晖楼坐了电梯:春晖楼东办共有电梯两部,最高楼层为11层,最低楼层为-1,两电梯可共同使用.结合调查 ...

  2. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  3. 电梯调度--c++--软件工程

    一.设计思路 (1)将乘客要去的楼层数存起来. (2)假设yi为乘客要爬楼层数之和,yi=n1*|(n1-ni)|+n2*|(n2-ni)|+..+n18*|(n18-ni)| (3)比较y1到y18 ...

  4. OO电梯调度

    告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...

  5. OO第二次博客作业——电梯调度

    OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...

  6. 电梯调度编写(oo-java编程)

    第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序 ...

  7. OO第二单元总结(多线程的电梯调度)

    经过第一单元作业的训练,在做第二单元的作业的时候,要更加的有条理.但是第二次作业多线程的运行,带来了更多的运行的不确定性.呈现出来就是程序会出现由于线程安全问题带来的不可复现的bug.本单元的作业也让 ...

  8. 电梯调度系统(界面由C图形库编绘)

    1.编程题目 电梯调度系统 2.结对编程组员 黄冠译,刘畅 3.编程语言 C语言图形库 4题目要求 编写人员:刘畅,黄冠译 代码如下: # include <stdio.h> # incl ...

  9. PairProject 电梯调度 【附加题】

    [附加题] 改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 目前的设计有什么缺点, 你会如何改进它? 1.之前判断电梯是否闲置的函 ...

随机推荐

  1. HDFS介绍

    一.HDFS概述 1.HDFS设计思想来源于Google的GFS,是GFS的开源实现. 2.HDFS要解决的问题: -存储超大文件,比如TB级别 -防止文件丢失. 3.HDFS的特点 -可以存储超大文 ...

  2. javaScript 1

    js 字符串 1. 必须在写在一行,写在多行会报错,可以用 / 分开写在多行 也可以用 “+” 连接 . ===> /转义字符   /r/n:  (以下来在百度) \r是回车,英文是Carria ...

  3. How to Allow MySQL Client to Connect to Remote MySql

    How to Allow MySQL Client to Connect to Remote MySQ By default, MySQL does not allow remote clients ...

  4. 【转】编译quickfast解析库(沪深level2行情转码库)

     转自http://blog.csdn.net/hacode/article/details/7065889 编译quickfast解析库(沪深level2行情转码库) 目录(?)[-] 1 下载源代 ...

  5. putty连接ubuntu虚拟机缓慢问题的解决

    vmware安装系统使用了ubuntu,安装后每次用PUTTY登录发现都到等很久,经过上网搜索,发现是Ubuntu安全机制导致的连接缓慢问题,   解决方法如下;   1. sudo vim /etc ...

  6. xml 解析

    例:解析以下片段 <font> <name>Helvetica</name> <size units="pt">36</siz ...

  7. less笔记

    koala工具 注释:    1./**/,可以被编译    2.//,不可以被编译 申明变量:    @box_width:300px;    .box{        width:@box_wid ...

  8. centos 7 下安装Nginx

    下载Nginx wget nginx.tar.gz http://nginx.org/download/nginx-1.11.3.tar.gz 解压源码 .tar.gz 然后进入目录编译安装 cd n ...

  9. django时区设置

    1. 创建web目录 django-admin.py startproject mysite 2. 启动web服务 python manage.py runserver python manage.p ...

  10. XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.创建新的虚拟机 ...