闭门造电梯

  

我们虽然分工明确,但我总觉得核心算法有点模糊。

多个类进行数据传递,想起友元函数,但没敢用,于是这里全是对文件的去写操作。

因为文件也能在各个函数里读写出数据,所以只要把数据写在文件中就行。

我们一直只在一个文件里进行编码,(不包括拷贝的文件)

看上去是面向对象的编程,其实是面向过程。

http://www.cnblogs.com/jingaaaaa/

上面介绍了李静同学写的具体内容,包括算法和界面的构建,在这里我就不多于的赘述了。

1.电梯里:

1. 首先,李静同学建立了6个界面并相对应定义了的是6个类,其中电梯里的class IN_ELECT类上设有楼层键,

如图

每一个按钮都单独建立一个函数,功能是把要去的楼层写入txt文件中,文件里写0表示第i层没有请求,写1,则表示第i层有人要用电梯的请求,无论电梯里是否有人,只要请求文件里写了1 ,则就是告诉电梯要运动某层,。

在这个界面上建立了5个保存各个楼层请求的文件,还有个now.txt文件,用来保存电梯现在的位置,取值分别为楼层数;此外,还有个up_down.txt文件,用来保存电梯现在的运动方向,文件里位1则代表电梯刺客在向上运动,位0表示电梯在向下运动。

在这个对话框上,还建立了一个全局变量,Frool[5],用来保存从文件里读出的各个楼层的请求,Frool [i]=0表示第i层没有请求,Frool[i]=1,则表示第i层有人要用电梯的请求。

当然,在面向过程的编程中,就直接赋值为1也无大碍。Frool数组主要在读取个楼层请求是起作用。

具体代码如下(以一楼为例):

void IN_ELECT::On_to_one()

{

// TODO: Add your control notification handler code here

Frool[0]=1;//去1楼

FILE *fp1;

fp1=fopen("1.txt","w");

fscanf(fp1,"%d",Frool[0]);

fclose(fp1);

}

把对1楼的请求写入文件1.txt中,表示电梯里有人要去1楼,

同理可得

其他楼层按钮也是将请求写入文件中。

2. 然后可以看到李静同学在电梯里的那个界面上各有个上下键,其实我某天在乘电梯特意看了一下电梯里的按钮,并没有上下键。所以这个界面上上下键没作用。

3. 然后是这个键,功能有点像是关门,并开始运行电梯。

具体是这样的:

1.已知前面建立了5个txt文件表示各个楼层的请求。首先将各个文件里的数字读出来,并保存在Frool[5],数组里,方法有点笨,反正也不是很长,

for(i=0;i<5;i++)

switch(i)

{

case 0:{fp4=fopen("1.txt","r");fscanf(fp4,"%d",&Frool[0]);fclose(fp4);continue;}

case 1:{fp4=fopen("2.txt","r");fscanf(fp4,"%d",&Frool[1]);fclose(fp4);continue;}

case 2:{fp4=fopen("3.txt","r");fscanf(fp4,"%d",&Frool[2]);fclose(fp4);continue;}

case 3:{fp4=fopen("4.txt","r");fscanf(fp4,"%d",&Frool[3]);fclose(fp4);continue;}

case 4:{fp4=fopen("5.txt","r");fscanf(fp4,"%d",&Frool[4]);fclose(fp4);continue;}

}

2.然后是找这一趟请求中,Frool数组中为1 的下标最大值和最小值,分别赋给man和min.

3.读文件up_down.txt,并赋值给updown,,这个变量表示电梯的运动方向,

4.紧接着,读文件now.txt,并赋值给一个字符ch,然后把它从字符用atoi()函数装为数字i,

5.判断电梯现在的状态,

  a) 如果电梯向下即,updown=0;则比较现在的位置i是否比最低层的请求min大,大则继续向下运动,执行IN_ELECT::DOWN(min),如果小,不用处理,等电梯下一趟在来处理。并把最低的楼层数传给IN_ELECT::DOWN(min);

  b)如果电梯向下即,updown=1;则比较现在的位置i是否比最高层的请求max小,大则继续向上运动,如果大,执行IN_ELECT::UP(max),不用处理,等电梯下一趟在来处理。并把最低的楼层数传给IN_ELECT::UP(max);

具体代码如下:

if(updown==0)///////////////////////初始状态电梯下行

if(i>min)///////////////////////电梯现在的位置高于最底层的请求,电梯下放

IN_ELECT::DOWN(min); //////////////电梯继续下行

else //初始状态电梯下行//电梯现在的高度低于最低请求层则电梯上行

if(i<max)

IN_ELECT::UP(max) ;

6.现在来介绍是向上运动的函数IN_ELECT::UP(int l) ;

  a)首先读出总共有多少层需要请求。保存在j变量里。

    for( i=0;i<5;i++)

    if(Frool[i]==1)

    j++;

  b)然后电梯在向上运动中一次到达各个需要请求的层数,并且对应第i层的数组Frool[i]清0;并且对请求文件i.txt文件写入0;然后先 UpdateData(true)刷新编辑框并显示楼层数i;然后在把i加1,后从新写入文件now.txt文件里。

到达顶(底)层后将电梯的运动方向翻转一下

用a)里统计的j变量判断是否到达这一趟中最后一个目的层。j=0就退出电梯停在。

具体代码如下:

for( i=0;i<l;i++)

{if(Frool[i]==1)

{

Frool[i]=0;//

switch(i)

{

case 0:{fp=fopen("1.txt","w");fprintf(fp,"%d",Frool[0]);fclose(fp);continue;}

case 1:{fp=fopen("2.txt","w");fprintf(fp,"%d",Frool[1]);fclose(fp);continue;}

case 2:{fp=fopen("3.txt","w");fprintf(fp,"%d",Frool[2]);fclose(fp);continue;}

case 3:{fp=fopen("4.txt","w");fprintf(fp,"%d",Frool[3]);fclose(fp);continue;}

case 4:{fp=fopen("5.txt","w");fprintf(fp,"%d",Frool[4]);fclose(fp);continue;}

}

itoa(i+1,ch1,10);

UpdateData(true); //还要埋一个时间种子,进行延时显示

SetDlgItemText(IDC_EDIT1,ch1); ///////////或者用循环执行空语句也行

fp=fopen("now.txt","w");

fscanf(fp,"%c",ch1);

fclose(fp);

j--;

if(j==0) ///是否是最后一个目的地

break;

else

continue;

}

}

7.

同理IN_ELECT::DOWN(int l)函数也是一样的功能

先读各个楼层请求数组Frool[5]中用j统计总共有几层有请求,在从该层向下运动,

(PS:发现一个问题,j可以在电梯到最后一层后终止运动,调用函数是传递来的参数l,也有同样的功能)

从最高请求层(不一定是楼层的最高层)开始向下运动---------即Frool[i],从最高请求层的下标一次递减经过其下面的各层,每经过一层UpdateData(true)刷新编辑框并调用显示函数SetDlgItemText(IDC_EDIT1,ch1)显示层数i;直到j=0,(j=0意味着所有请求都已经完成,break,电梯停止)

2电梯外

在Class  ELECT1,Class  ELECT2,Class  ELECT3,Class  ELECT4,Class  ELELCT5的类所对应界面中都有向上(下)的按钮,其实功能都一样,就是告诉电梯,待会经过这是顺便停一下(这里有个问题,电梯上下与人的上下不区分,)

电梯外电梯口:

按下电梯口上/下按钮,这会在对应层的请求文件中写入1 ,例如在1楼具体代码如下:

int a;

a=1;

FILE *fp1;

fp1=fopen("1.txt","w");

fscanf(fp1,"%d",a);

fclose(fp1);

CDialog::OnOK();

3电梯的位置显示

各层电梯口和电梯内多对应的类中有一个

void IN_ELECT::DoDataExchange(CDataExchange* pDX)函数,在这个函数内

写上读取文件now.txt,得到当前电梯位子并用SetDlgItemText(IDC_EDIT1,ch1)显示。

以下是我俩一起讨论是的照片

时间: 2024-10-31 06:20:43

闭门造电梯的相关文章

O2O们,与其闭门造环,不如开门交换

昨天,我发表了一篇关于自己对于O2O模式的见解的文章<不要再以中国式思维来运作O2O模式了>.今天不少的读者都蜂拥而至与我交流.有刚从电商公司跳出来的找我吐槽:有对O2O模式持有幻想的来找我理论:有O2O模式的创业者来找我交流经验:还有持有大量资金想要涉足O2O模式的投资人找我合作. 有读者的来访我自然是很高兴,这是对我思路的肯定.不过大家最先问的就是我现在在做创业吗?然后就是问是我自己开发的东西吗?当我说我现在是代理的一个平台之后,大家都变得兴趣缺缺了. 未免过多的重复解释,我先把我自己的情

宋词:一剪梅,雨打梨花深闭门。唐寅

一剪梅,雨打梨花深闭门  唐寅 红满苔阶绿满枝,杜宇声声,杜宇声归.交欢未久又分离,孤凤难飞,孤凤难栖. 别后相思是几时?后会难知,后会难期.此情何以表相思,一首情词,一首情诗. 雨打梨花深闭门,忘了青春,误了青春.赏心乐事共谁论?花下销魂,月下销魂. 愁聚眉峰尽日颦,千点啼痕,万点啼痕.晓看天色暮看云,行也思君,坐也思君. 唐寅,字伯虎,明中期姑苏人士,著名画家诗人.与祝枝山,文征明,徐祯卿合称江南四大才子(吴中四才子). 这首词的佳处不只在于词句之清圆流转,其于自然明畅的吟哦中所表现的空间阻

冰冻三尺非一日之寒之闭门打坐

第二章 1.列表的操作                                  2.元组的操作 3.字符串操作                                  4.字典的操作  The reason why people give up so quickly is because they look at how far they still have to go, instead of how far they have come ♣列表的操作: 列表:列表用于存储

万树IT:Spring Batch批处理框架技巧,让你不再重复造轮子

整理了Spring批处理框架的内容,掌握这些知识,可以帮你省去一些造轮子的过程,提高开发效率.本文由博主姚兆峰分享,小编整理后推送,希望对你的工作有帮助. Part.1 问题分析 在大型的企业应用中,或多或少都会存在大量的任务需要处理,如邮件批量通知所有将要过期的会员等等.而在批量处理任务的过程中,又需要注意很多细节,如任务异常.性能瓶颈等等.那么,使用一款优秀的框架总比我们自己重复地造轮子要好得多一些. AD 我所在的物联网云平台部门就有这么一个需求,需要实现批量下发命令给百万设备.为了防止枯

拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先要学会选包』,在这里不好评论对错.不过这句话里面,至少包含两层意思:首先 Java 有大量的现成的依赖包,不必要自己造轮子:其次,Java 的包存放较为集中,集成方式也方便. 笔者从事 Android 和 Java 开发以来,经历了几个阶段: 闭门造轮子 > 使用别人的轮子 > 开门造轮子 >

如果大家关注SOA的事务一致性的处理,那么不妨看看我们是怎么解决的

本文原文链接: http://www.itpub.net/forum.php?mod=viewthread&action=printable&tid=1570361 作者: efscao    时间: 2012-2-5 17:58     标题: 如果大家关注SOA的事务一致性的处理,那么不妨看看我们是怎么解决的 SOA的理念日渐深入人心,银行业务系统也必将转向SOA,这意味着今后绝大多数应用都要成为服务的集成者--这就带来一个非常关键的问题:如何解决集成服务应用普遍存在的一致性问题?当前

如何成为一名程序员

如 何 成 为 一 名 俣 序 员 为 什 么 会 有 这 篇 文 档 ? 之 前 有 幸 量 Eric Raymond( 埃 里 克 史 蒂 文 雷 蒙 德 ) 与 的 一 篇 文 章 < 如 何 成 为 一 名 黑 客 > , 感 觉 像 黑 夜 里 的 灯 塔 一 样 , 能 够 人 很 多 的 启 迪 在 计 算 机 这 条 道 路 上 , 无 论 是 程 序 员 , 黑 客 网 管 , 还 是 其 他 任 回 相 关 的 角 色 , 有 一 个 老 司 机 带 你 , 能 让 亻 亇

.Net Core Web Api实践之中间件的使用(一)

前言:从2019年年中入坑.net core已半年有余,总体上来说虽然感觉坑多,但是用起来还是比较香的.本来我是不怎么喜欢写这类实践分享或填坑记录的博客的,因为初步实践坑多,文章肯定也会有各种错误,跟别人优秀的文章比起来,好像我写的东西没有什么存在的价值.但是入坑.net core以来,这种思想开始慢慢改变了,毕竟我依靠别人解决问题的文章也不尽是教科书般的存在,但是很使用.所以,把自己的实践过程记录出来,一方面是巩固和完善自己的技术栈,另一方能帮助到其他人,或者跟他人共同探讨,也不算闭门造轮子,

人民日报:安倍只“慰灵”不道歉对遇难者造新屈辱z

"美丽皱纹·孝行天下"活动以中韩共同关注的孝文化为主题,成功入选"2016年中韩人文交流共同委员会交流合作项目".此次活动邀请了来自甘肃省积石山县和贵州省遵义市的感动妈妈在韩国进行为期5天的文化交流.1779年建造的运输罪犯的"海王号" 4.熊本发生大地震,华人驰援送爱心,展示守望相助社群精神.但是特朗普称他不会将自己极尽奢华的风格带到白宫."白宫是个特殊的地方,"特朗普说,"我将在那里办公而不是装修."