田伟博客

此博客着重于记录日常生活中的大大小小事,偶尔用来发发牢骚.

身体质量指数

        VB视频教程前十课已经学习完了,今天索性亲自动手用VB写了一个小程序 - 身体质量指数,也叫体重指数,英文名叫Body mass index,简称BMI。灵感来自于我手机上同样一个计算BMI的程序,BMI公式已经在网上找好了,还找了一张BMI相关的图片。

我的设计步骤:

1.找到并运行VB(我用的是VB6.0中文企业版),首先新建一个“标准 EXE”,如果已经有做好的工程,可以在“现存”中打开。

 BMI指数计算

2.在FORM1上添加两个TextBox控件,一个Picturebox控件,两个CommandButton,效果如下图。可以根据自己喜好布局。

 BMI指数计算

3.更改控件的标题(Caption),更改完后添加一个"Image",在FORM1的任意位置添加都可以,加好后在“Image”属性窗口找到"Picture"选项,这里可以打开更改FORM的背景图片,然后添加两个Lable并且更改其Caption,我改的是“身高(CM)”“体重(KG)”。FORM最上端的“身体质量指数”“BMI测试”也是两个Lable控件,改下标题属性和字体就能达到下面截图效果。

BMI指数计算

4.上面的步骤做好后就可以编写代码了,编写代码这一步也可以在第二步的时候做。当然编写好代码后我们还要进行调试,尽量找出BUG。

BMI计算公式:BMI=体重/身高2

体重:单位:公斤 (Kg) 身高:单位:米 (M)

正常范围:18.5≤BMI < 24
体重过重:24≤BMI < 27
轻度肥胖:27≤BMI < 30
中度肥胖:30≤BMI < 35
重度肥胖:BMI≥35

下面是我写的代码,主要是加入了一些取值判断,比如不能为负数,不能小于或者大于莫数值

Private Sub Command1_Click()
Dim x
If Text1.Text = "" Or Text2.Text = "" Then
    Picture1.Print "请将数据填写完整"
Exit Sub
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Text1.Text < 55 Or Text1.Text > 300 Then        '解决当身高(TEXT1)不满足条件但
Picture1.Print vbCrLf; "身高取值范围:55-300"       '体重满足(TEXT2)条件时点击计算
Command1.Enabled = False                           '显示结果的BUG.
Exit Sub                                           '
End If                                             '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
x = Round(Val(Text2.Text / (Text1.Text / 100) ^ 2), 2)
Picture1.Cls
If 20 <= x And x <= 22 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:最佳"
ElseIf 18.5 <= x And x < 20 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:正常体重"
ElseIf 22 < x And x < 24 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:正常体重"
ElseIf x < 18.5 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:偏瘦"
ElseIf 24 <= x And x < 27 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:体重超重"
ElseIf 27 <= x And x < 30 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:轻度肥胖"
ElseIf 30 <= x And x < 35 Then
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:中度肥胖"
Else
Picture1.Print vbCrLf; "BMI值:" & x; vbCrLf; vbCrLf; "测试结果:重度肥胖"
End If
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Text1_Change()
Picture1.Cls
If Text1.Text = "" Then
Picture1.Print vbCrLf; "身高取值不能为空"
Command1.Enabled = False
ElseIf Text1.Text < 55 Or Text1.Text > 300 Then
Picture1.Print vbCrLf; "身高取值范围:55-300"
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub

Private Sub Text2_Change()
Picture1.Cls
If Text2.Text = "" Then
Picture1.Print vbCrLf; "体重取值不能为空"
Command1.Enabled = False
ElseIf Text2.Text <= 0 Or Text2.Text > 600 Then
Picture1.Print vbCrLf; "体重取值范围:1-600"
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub


5.代码编写好后,就编译测试,看有无语法错误等。编译测试通过就可以生成EXE可执行文件。下图中,鼠标放在文本框显示身高取值范围:55-300这个效果是在文本框属性窗口中的ToolTipText里面设置或更改。

BMI指数计算

6.取值判断,身高取值范围我设置的是55-300厘米,世界上目前还没超过3米的人。

体重数值:这里我设置的范围是1-600公斤,目前世界上最重的人已经打破500公斤。

如果没有达到取值范围的要求,计算按钮将是灰色不可用的。

BMI指数计算

7.最终运行效果如下,欢迎大家指点。

BMI指数计算

                        (VB 身体质量指数BMI计算小程序)

虽然这样的小工具网上也有不少,但是用自己做出来的和使用别人做的感觉都不一样,小小的成就感吧,如果有同学需要可以给我留言。

« 网站空间异常田伟周边 »
  • 相关主题:
    Gravatar头像
  • quote 7.sheep
  • 2010-4-1 17:57:53 回复
  • 写代码很累人 不过挺有前途的哦
    Gravatar头像
  • quote 6.且听风吟
  • 2010-4-1 13:35:22 回复
  • 一直很佩服自己写代码的人,太强了!
    tianwei 于 2010-4-1 13:59:22 回复
    以后就写代码了.....
    Gravatar头像
  • quote 5.平凡
  • 2010-3-30 11:14:47 回复
  • 说实话,我对VB是一窍不通啊!呵呵……开过这门课,但是不感兴趣,没学!
    Gravatar头像
  • quote 4.猪猪
  • 2010-3-30 10:32:47 回复
  • 额,真强。
    感觉vc写出来也应该比较简单,但是不知道怎么弄成这样的界面……杯具,现在读书就是读了之后不知道怎么用Cry
    田伟 于 2010-3-30 11:05:47 回复
    Hehe 呵呵
    Gravatar头像
  • quote 3.sheep
  • 2010-3-30 10:30:28 回复
  • 有成就感就对了 继续努力
    Gravatar头像
  • quote 2.贝贝beibei
  • 2010-3-30 10:09:06 回复
  • 呵呵,不要,我也要写一个!
    田伟 于 2010-3-30 10:10:05 回复
    Hehe
    Gravatar头像
  • quote 1.扒哥
  • 2010-3-29 23:42:20 回复
  • 很复杂 一向对数字敏感 看见就头疼

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关注我

网站分类

热文排行

最新评论及回复

最近留言

文章归档

热门标签

控制面板

Powered By Z-Blog 1.8 Walle Build 100427

Copyright © 2009-2015 田伟博客
蜀ICP备09018418号