您的位置:首页 > 其它

学生信息管理系统之改进

2014-07-25 20:28 288 查看
当学生信息管理系统接近尾声时,突然发现自己有好多收获,拿出来晒晒别在我这里发霉了。

1、


在这个窗体中当姓名输入完成后按下tab键到性别时,能自动出现“男”这个默认选项。

<span style="font-size:18px;">'当姓名框失去焦点,并且性别框后面的文本框内容为空时,性别框自动出现默认选项。</span>
<span style="font-size:18px;">Private Sub txtName_LostFocus()
If txtBornDate.Text = "" And ComboClassno.Text = "" And _
txtTel.Text = "" And txtRuDate.Text = "" And _
txtComment.Text = "" And txtAddress.Text = "" Then
comboSex.Text = "男"
End If
End Sub</span>


2、


检查班号为空和检查班号是不是数字,这两段代码的相对位置关系的调整。

源代码中是对每个文本框都进行一遍是否为空的检查,然后又反过头来查看班号文本框的内容是不是数字,这样就会有一个麻烦。假如用户在第一个文本框的内容是空,最后一个文本框也是空,其他的都是有效内容。这样第一次提醒用户输入第一个文本框,然后用户输入了无效字符,却没有在第一个文本框提示错误,而是最后一个提示错误。当用户输入最后一个文本框后,你又告诉用户第一个输入的不符合要求,还让用户返回头再输。

本着全心全意为人民服务的心态,我认为在软件设计中,当要对多个控件进行多个功能项的检查时,可以按照控件的顺序来逐个检查,而不是按照功能项来检查。

3、with块的使用

当对同一个控件进行多个连续的操作时,利用with块可以减少代码量。

4、窗体的font属性

当对窗体上多个控件要求统一字体时,可以在添加窗体前,先设置窗体的font属性,这样再添加控件后,字体自然就统一了。一定程度减少了我们的工作量。

5、要求输入年份,要能自动添加“-”而且具备一定的纠错能力。

'文本框的输入事件。
Private Sub txtBornDate_KeyPress(KeyAscii As Integer)
’如果正好是输入了一个年份(四个数字),如2000。那么判断四个字符是不是数字并且输入的年份小于当前年份。当满足要求后
’自动在年份后面加上“-”。
If (Len(Trim(txtBornDate.Text)) = 4) Then
If IsNumeric(Trim(txtBornDate.Text)) And Val(Trim(txtBornDate.Text)) < Year(Now) Then
txtBornDate = txtBornDate & "-"
txtBornDate.SelStart = 6
Else
MsgBox "年份输入错误,请重新输入!", TiShi, JingGao
txtBornDate.SetFocus
txtBornDate.SelLength = 4
End If
End If
'如果输入了两位数的月份,这时总的字符为7个,输入的月份是数字并且大于0小于13,那么直接在月份后面加上“-”。
If (Len(Trim(txtBornDate.Text)) = 7) Then
If IsNumeric(Mid(Trim(txtBornDate.Text), 6, 2)) And _</span>
<span style="white-space:pre">	</span>Val(Mid(Trim(txtBornDate.Text), 6, 2)) > 0 And _
Val(Mid(Trim(txtBornDate.Text), 6, 2)) < 13 Then
txtBornDate = txtBornDate & "-"
txtBornDate.SelStart = 9
Else
MsgBox "月份输入错误!", TiShi, JingGao
txtBornDate.SetFocus
txtBornDate.SelStart = 5
txtBornDate.SelLength = 2
End If
End If
’如果输入了两位日期,这时文本框共10个字符。判断输入的日期是否是数字并且数字大于0小于32。
If (Len(Trim(txtBornDate.Text)) = 10) Then
If IsNumeric(Mid(Trim(txtBornDate.Text), 9, 2)) And _
<span style="white-space:pre">		</span>Val(Mid(Trim(txtBornDate.Text), 9, 2)) > 0 And _
<span style="white-space:pre">		</span>Val(Mid(Trim(txtBornDate.Text), 9, 2)) < 32 Then
Else
MsgBox "日期输入错误!", TiShi, JingGao
txtBornDate.SetFocus
txtBornDate.SelStart = 9
txtBornDate.SelLength = 2
End If
End If
End Sub</span>

6、修改类型的窗体添加错误处理。原因是当从来没有添加过数据时就直接点击修改数据当然不可避免会出现记录集为空的错误。

Err_Deal:
If Err.Number = 3021 Then
MsgBox "出现错误,请确认您已经添加过学籍信息", vbOKOnly + vbExclamation, "警告"
MSOK = False
Exit Sub
Else
MsgBox "出现异常错误,请重新进入!", vbOKOnly + vbExclamation, "警告"
MSOK = False
Exit Sub
End If
End Sub


7、selstart和sellength的使用
例如:

If (Len(Trim(txtRuDate.Text)) = 10) Then
If IsNumeric(Mid(Trim(txtRuDate.Text), 9, 2)) And Val(Mid(Trim(txtRuDate.Text), 9, 2)) > 0 And _
<span style="font-family: Arial, Helvetica, sans-serif;">                Val(Mid(Trim(txtRuDate.Text), 9, 2)) < 32 Then</span>
txtRuDate = txtRuDate & "-"
Else
MsgBox "日期输入错误!", TiShi, JingGao
txtRuDate.SetFocus
txtRuDate.SelStart = 9
txtRuDate.SelLength = 2
End If
End If

8、


查询时,多个查询项时,注意把没有选择的查询项后面的文本框清空。

Private Sub Check1_Click(Index As Integer)
If Check1(0).Value = False Then
txtSID.Text = ""
End If

If Check1(1).Value = False Then
txtName.Text = ""
End If

If Check1(2).Value = False Then
txtClassNo.Text = ""
End If
End Sub</span>

9、


这个窗体中,有一个值得思考的问题,就是如何防止listbox控件产生重复项。我解决的方法是不加限制的添加选项,然后编写一个过程,这个过程用来判断和删除list控件里的重复项。由于两个listbox控件都需要判断,在这里只列举后一个。

Private Sub CheckSelect()
Dim i As Integer
Dim j As Integer
’通过二重循环,找出重复项。注意这里removeitem事件不能删除i,只能是j。
For i = 0 To listSelectCourse.ListCount - 1
For j = i + 1 To listSelectCourse.ListCount - 1
If listSelectCourse.List(i) = listSelectCourse.List(j) Then
listSelectCourse.RemoveItem j
End If
Next j
Next i
End Sub

10、把文本框和选择框的内容清空,我们可以把这个功能封装起来。每次需要时仅一条语句就OK了,还是比较省时省力的。这个函数定义在标准模块里面。

Public Sub QingKong(CT As Form)
Dim ctr1 As Control
For Each ctr1 In CT.Controls
If TypeOf ctr1 Is TextBox Then
ctr1.Text = ""
End If
Next

Dim ctr2 As Control
For Each ctr2 In CT.Controls
If TypeOf ctr2 Is ComboBox Then
ctr2.Text = ""
End If
Next
End Sub
调用的方法也很简单,调用代码如下:

Call QingKong(Me)

11、在学生信息管理系统中,combobox控件一定不能手动输入,否则会引起数据库中数据不一致。解决办法

(1)style属性设置成2-Dropdown list

(2)在combobox的keypress事件中,设置keyASCII=0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息