主题:自定义数据类型
题目要求:
①自定义一个职工数据类型,包含职工号、姓名、工资三项内容。在通用声明段声明一个职工类型的数组,可存放5个职工的数据。
②窗体中设计3个标签、3个文本框、2个命令按钮和1个图形框,文本框分别输入职工号、姓名、工;当单击“新增”按钮时,将文本框输入的内容添加到数组的当前元素中;当单击“排序”按钮时,将输入的内容按工资递减的顺序排序,并在图形框显示。
我的代码如下:
Private Type WorType '自定义职工类型
No As Long '职工号
Name As String * 5 '姓名
Salary As Long '工资
End Type
Dim n%
Dim Worker(4) As WorType '存放当前已输入的学生人数,多个事件过程共享
Private Sub Command1_Click() '将文本框的内容增加到数组的当前位置
If n >= 5 Then '最多可接受5个人数
MsgBox ("输入人数超过数组声明的个数")
Else
With Worker(n)
.No = Text1
.Name = Text2
.Salary = Text3
End With
Text1 = "": Text2 = "": Text3 = "" '清空三个文本框中的值
n = n + 1 '每增加一个职工信息n就加1
End If
End Sub
Private Sub Command2_Click()
Dim i%, j%, imax%, t As WorType
For i = 0 To n - 1 '进行n轮比较
imax = i '对第i轮比较时,初始值假定第i个元素最大
For j = i + 1 To n '在数组i+1到n个元素中选择最小元素的下标
If Val(Worker(j).Salary) > Val(Worker(imax).Salary) Then imax = j
Next j
t = Worker(i) 'i+1到n个元素中选出的最大元素与第i个元素交换
Worker(i) = Worker(imax)
Worker(imax) = t
Next i
Cls
Picture1.Print "职工号 姓名 工资"
Picture1.Print "--------------------------------------------"
For i = 0 To n - 1 '输出排序结果
With Worker(i)
Picture1.Print .No; Tab(9); .Name; Tab(9); .Salary
End With
Next i
End Sub
程序提示在If Val(Worker(j).Salary) > Val(Worker(imax).Salary) Then imax = j行有错
请大虾指点!
[fly]感谢各位大侠光临指导[/fly]
①自定义一个职工数据类型,包含职工号、姓名、工资三项内容。在通用声明段声明一个职工类型的数组,可存放5个职工的数据。
②窗体中设计3个标签、3个文本框、2个命令按钮和1个图形框,文本框分别输入职工号、姓名、工;当单击“新增”按钮时,将文本框输入的内容添加到数组的当前元素中;当单击“排序”按钮时,将输入的内容按工资递减的顺序排序,并在图形框显示。
我的代码如下:
Private Type WorType '自定义职工类型
No As Long '职工号
Name As String * 5 '姓名
Salary As Long '工资
End Type
Dim n%
Dim Worker(4) As WorType '存放当前已输入的学生人数,多个事件过程共享
Private Sub Command1_Click() '将文本框的内容增加到数组的当前位置
If n >= 5 Then '最多可接受5个人数
MsgBox ("输入人数超过数组声明的个数")
Else
With Worker(n)
.No = Text1
.Name = Text2
.Salary = Text3
End With
Text1 = "": Text2 = "": Text3 = "" '清空三个文本框中的值
n = n + 1 '每增加一个职工信息n就加1
End If
End Sub
Private Sub Command2_Click()
Dim i%, j%, imax%, t As WorType
For i = 0 To n - 1 '进行n轮比较
imax = i '对第i轮比较时,初始值假定第i个元素最大
For j = i + 1 To n '在数组i+1到n个元素中选择最小元素的下标
If Val(Worker(j).Salary) > Val(Worker(imax).Salary) Then imax = j
Next j
t = Worker(i) 'i+1到n个元素中选出的最大元素与第i个元素交换
Worker(i) = Worker(imax)
Worker(imax) = t
Next i
Cls
Picture1.Print "职工号 姓名 工资"
Picture1.Print "--------------------------------------------"
For i = 0 To n - 1 '输出排序结果
With Worker(i)
Picture1.Print .No; Tab(9); .Name; Tab(9); .Salary
End With
Next i
End Sub
程序提示在If Val(Worker(j).Salary) > Val(Worker(imax).Salary) Then imax = j行有错
请大虾指点!
[fly]感谢各位大侠光临指导[/fly]