内容正文:
2.5
制作电子储物柜(二)
可视化编程应用基础——visual Basic (陈建军)
1
电子储物柜——视频
2
简易型储物柜
本节课将先介绍简易型储物柜的功能,具体如下:(图片链接源程序)
本课任务
取物、查看柜子状态
3
知识回顾:InputBox函数
在程序运行过程中有时需要用户输入数据,程序再根据用户输入的数据来决定程序的执行,或者有时需要比较简单地临时要求用户输入一个数据,此时可以利用InputBox函数来实现,如:
格式:
a=InputBox(提示文字,[,标题,默认值])
说明:产生一个输入对话框,其中提示文字必须要有,后面两个参数可以省略。该函数返回一个字符型的值。如以上格式中输入的字符串会存储到变量a中。
4
知识讲解:Print语句
Print语句是传统的经典输出语句,其输出时可以采用标准打印格式和紧凑打印格式两种,其中标准打印格式采用逗号“,”分隔,紧凑打印格式采用分号“;”分隔。如下例:
任务1:界面设计(基于上节课程序)
6
任务2、取物过程实现
成功
错误,重新输入
输入柜子密码
循环匹配密码
取物、初始化柜子状态和 密码
流程如下:
(1)利用InputBox函数接收用户输入的密码
(2)利用循环语句遍历密码数组进行匹配
(3)匹配成功,跳出物品名称对话框,并初始化柜子状态和密码
(4)匹配不成功,返回输入框重新输入。
实现代码:
Dim mm As Integer '临时存放顾客输入的柜子密码
Dim i As Integer '循环控制变量
mm = Val(InputBox("请输入寄存物品的柜子密码"))
For i = 1 To 16
If gzmm(i) = mm Then Exit For '找到与输入的密码匹配的柜子
Next
If i <= 16 Then '找到与输入的密码匹配的柜子,打开柜子供顾客取物
MsgBox "您寄存的物品是" + gznr(i), vbOKOnly, "柜号:" & i
gznr(i) = "" '模拟柜子为空
gzmm(i) = -1 '初始密码
gzzt(i) = True '柜子状态为可用
Else
MsgBox "您输入的密码不正确,请重试"
End If
7
任务3:查看柜子状态
实现:循环遍历,以紧凑型和标准两种格式打印出所有柜子当前状态、密码和存储物品名称。
For i = 1 To 16
Print i;gzzt(i); gzmm(i); gznr(i) ‘紧凑格式打印柜子状态,标准格式为:Print i, gzzt(i), gzmm(i), gznr(i)
Next
紧凑格式
标准格式
8
任务4:过程封装
所谓过程封装是指将某个程序块以子程序块的形式呈现,从而被其他程序调用。如本例中可以将查看柜子状态程序块封装成过程ckgzzt()。实现如下:
Private ckgzzt()
{
For i = 1 To 16
Print I;gzzt(i); gzmm(i); gznr(i)
Next
}
其他程序可以call ckgzzt()的形式调用。
9
作业
本任务实施过程中,存在随机产生相同密码的风险,如何避免这一风险,请思考并编码实现。
具体可采用以下方法之一实现:
(1)利用int(rnd*1000)+1+i*1000
产生柜子密码,这样第1个柜子密码为1XXX,第2个柜子密码为2XXX……,第16个柜子密码为16XXX;
(2)取物时要求用户同时输入柜子号和密码;
(3)产生密码时判断是否重复。(该方法供有兴趣的同学自行探究学习)。
10
$