现在的位置: 首页 > 综合 > 正文

用三维饼图分析各阶段人数比例

2013年09月07日 ⁄ 综合 ⁄ 共 2843字 ⁄ 字号 评论关闭

 ‘设计一程序,用三维饼图表达考试成绩分别在 优秀、良好、中等、及格和不及格 5个区间的学生人数比例关系(程序运行界面已上传至相册VB6)

Option Base 1
Private Sub Command1_Click()
Dim map(5) As Single, total!, i%, j%
For i = 1 To 5
 map(i) = Val(Text1(i - 1))          ' 将各文本框中的数据存入数组map中
 If map(i) = 0 Then j = j + 1
 total = total + map(i)
Next
 If total = 0 Or j > 1 Then
  MsgBox "至少要输入2个区间段的人数!!"
  Exit Sub
 End If
For i = 1 To 5
 map(i) = map(i) / total
Next
Call drawcake(map)          ' 调用画图过程,实参为数组
End Sub

Private Sub Command2_Click()
Unload Me              ’强制退出程序 或者用 end
End Sub

 

Private Sub Form_Activate()
 Text1(0).SetFocus
End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
 KeyAscii = 0        '如果按非数字键或退格键,取消按键
End If
End Sub

Public Sub drawcake(map() As Single)
 Const pi! = 3.1415926
 Dim i%, rate!, mx!, my!, mr!
 mx = 2500: my = 1200                 ' 圆心坐标
 mr = 2000                            ' 圆的半径
 rate = 0.4                           ' 椭圆的短轴与长轴之比
 Picture1.Cls
 Picture1.FillStyle = 0            ' 完全填充
 For i = 1 To 200    '用循环语句画200个圆 从而实现从二维图到三维图的转化
 If map(1) > 0 Then
  Picture1.FillColor = RGB(208, 128, 128)      '设定所画区域填充红色
  Picture1.Circle (mx, my - i), mr, vbRed, -2 * pi, -2 * pi * map(1), rate '画出所占比例部分扇形
 End If
 If map(2) > 0 Then
  Picture1.FillColor = RGB(240, 240, 128)    '设定所画区域填充黄色
  Picture1.Circle (mx, my - i), mr, vbYellow, -2 * pi * map(1), -2 * pi * (map(2) + map(1)), rate '画出所占比例部分扇形
 End If
If map(3) > 0 Then
  Picture1.FillColor = RGB(128, 128, 240)  '设定所画区域填充蓝色
  Picture1.Circle (mx, my - i), mr, vbBlue, -2 * pi * (map(1) + map(2)), -2 * pi * (map(3) + map(2) + map(1)), rate
 End If
   If map(4) > 0 Then
  Picture1.FillColor = RGB(240, 0, 208) '设定所画区域填充紫红色
  Picture1.Circle (mx, my - i), mr, vbMagenta, -2 * pi * (map(1) + map(2) + map(3)), -2 * pi * (map(4) + map(3) + map(2) + map(1)), rate
 End If
  If map(5) > 0 Then
  Picture1.FillColor = RGB(128, 240, 128) '设定所画区域填充绿色
  Picture1.Circle (mx, my - i), mr, vbGreen, -2 * pi * (map(1) + map(2) + map(3) + map(4)), -2 * pi * (map(5) + map(4) + map(3) + map(2) + map(1)), rate
  End If
 Next
 
 For i = 1 To 5         ' 设定各区间人数所占百分比的数据据式
  map(i) = Val(Format(map(i) * 100, "0.0"))
 Next
  Picture1.FillColor = RGB(208, 128, 128) ' 设定同色的方块填充色----------- 红色
  Picture1.Line (1600, 2700)-(1900, 2400), , B               ' 画小方块
  Picture1.Print Space(3); "优秀:"; map(1) & "%", "(" & Text1(0) & "人)"            '输出标注信息
  
    Picture1.FillColor = RGB(240, 240, 128)  ' 设定同色的方块填充色----------- 黄色
  Picture1.Line (1600, 3200)-(1900, 2900), , B               ' 画小方块
  Picture1.Print Space(3); "良好:"; map(2) & "%", "(" & Text1(1) & "人)"              '输出标注信息
 
     Picture1.FillColor = RGB(128, 128, 240)  ' 设定同色的方块填充色----------- 蓝色
  Picture1.Line (1600, 3700)-(1900, 3400), , B               ' 画小方块
  Picture1.Print Space(3); "中等:"; map(3) & "%", "(" & Text1(2) & "人)"              '输出标注信息
 
     Picture1.FillColor = RGB(240, 0, 208) ' 设定同色的方块填充色----------- 紫红色
  Picture1.Line (1600, 4200)-(1900, 3900), , B               ' 画小方块
  Picture1.Print Space(3); "及格:"; map(4) & "%", "(" & Text1(3) & "人)"              '输出标注信息
 
     Picture1.FillColor = RGB(128, 240, 128) ' 设定同色的方块填充色----------- 绿色
  Picture1.Line (1600, 4700)-(1900, 4400), , B               ' 画小方块
  Picture1.Print Space(3); "不及格:"; map(5) & "%", "(" & Text1(4) & "人)"              '输出标注信息
End Sub

抱歉!评论已关闭.