一、开门见山,代码粘
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实现利用整型除法的弊端来解决了问题。得到了如下结果:
【软件工程】电梯调度的初步实现 李亚文&&郭莉莉的更多相关文章
-
【软件工程】电梯调度程序需求分析 李亚文&;&;郭莉莉
2014年3月4日(14:00-16:00) 为了进一步理解电梯工作的原理,我们特地到石家庄铁道大学春晖楼坐了电梯:春晖楼东办共有电梯两部,最高楼层为11层,最低楼层为-1,两电梯可共同使用.结合调查 ...
-
[软件工程] 查找二维数组最大子数组的之和 郭莉莉&;李亚文
一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...
-
电梯调度--c++--软件工程
一.设计思路 (1)将乘客要去的楼层数存起来. (2)假设yi为乘客要爬楼层数之和,yi=n1*|(n1-ni)|+n2*|(n2-ni)|+..+n18*|(n18-ni)| (3)比较y1到y18 ...
-
OO电梯调度
告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可 ...
-
OO第二次博客作业——电梯调度
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...
-
电梯调度编写(oo-java编程)
第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序 ...
-
OO第二单元总结(多线程的电梯调度)
经过第一单元作业的训练,在做第二单元的作业的时候,要更加的有条理.但是第二次作业多线程的运行,带来了更多的运行的不确定性.呈现出来就是程序会出现由于线程安全问题带来的不可复现的bug.本单元的作业也让 ...
-
电梯调度系统(界面由C图形库编绘)
1.编程题目 电梯调度系统 2.结对编程组员 黄冠译,刘畅 3.编程语言 C语言图形库 4题目要求 编写人员:刘畅,黄冠译 代码如下: # include <stdio.h> # incl ...
-
PairProject 电梯调度 【附加题】
[附加题] 改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 目前的设计有什么缺点, 你会如何改进它? 1.之前判断电梯是否闲置的函 ...
随机推荐
-
Swift与OC混编
OC调用Swift的方法:添加 import "xxxx-Swift.h" 头文件即可 Swift调用OC的方法:需要建立桥接: xxxx-Bridging-Header.h 头文 ...
-
禅道PMS兼容redmine用户认证接口
项目地址:https://github.com/web3d/zentao-redmine-userauth zentao-redmine-userauth 做了一个基本的用户认证接口,兼容redmin ...
-
java用代理访问
Properties prop = System.getProperties(); prop.setProperty("http.proxyHost", "localho ...
-
Promise 学习笔记
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息.Promise提供统一的API, ...
-
java实现Composite(组合)模式
组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组. Composite模式的设计意图在于:让所有的用户能够用统一的接口处理单个对象以及对象 ...
-
c语言技巧--长期更新
1. #define LOWER(c) (unsigned char)(c | 0x20) 换成小写 2. gcc -Wall -Werror //告警当成 错误来处理 ...
-
libconfig第二篇----两个小例子
本文只看粗体即可,太多catch语句.两个例子均来自libconfig包的example文件夹下面,. 例子一: #include <iostream> #include <ioma ...
-
Jetson TX1安装pyTorch
https://www.ncnynl.com/archives/201705/1629.html https://blog.csdn.net/qq_36302589/article/details/8 ...
-
[Swift]LeetCode832. 翻转图像 | Flipping an Image
Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resu ...
-
vue 实现聊天框滚动到底
在需要出现滚动条的 DOM上添加 v-scroll 属性: <div class="chat-box" v-scroll="{auto: true}"&g ...