做学生信息管理系统已经很长时间了,在这几天一直在整理师傅给指出的待优化问题,当然还有几个没有优化完,把已经解决了的整理出来分享一下:
1、文本框输入字符长度的限制。在添加内容时,我们不能无限制的输入下去,这就涉及到输入字符的长度限制,说两种方法吧:(1)也是最直接方便的方法:将控件的MaxLength属性值改为你所想要限定的长度就OK了;(2)因为考虑到当超过字符限制时用户无法得知什么问题导致不能继续输入,本着全心全意为人民服务的原则,我特意添加了提醒窗口,代码如下:
'限制字符串的输入长度 If Len(txtname.Text) > 20 Then MsgBox "字符长度过长!", vbOKOnly + vbCritical, "提示" txtname.Text = "" txtname.SetFocus Exit Sub End If将以上代码编写到单击事件中,就可以轻松提醒用户了;
2、文本框输入的字符格式限制。相信我们都可以理解这个问题,比如,在学号的输入框中,我们不能输入成文字或字母,只能是有数字组成,对于这个问题,我也添加了代码来限制输入字符的格式。我们需要先在通用中声明一个变量:
Const xstr As String = "0123456789" '先声明一个变量,把想禁用或允许的输入的内容赋值给他然后在控件单击事件中编写如下代码:
'限制文本框输入内容的字符格式,只能输入数字以外的字符 KeyAscii = IIf(InStr(xstr, Chr(KeyAscii)), 0, KeyAscii)
这个是使其输入非数字的字符,另外还有只允许输入数字时:
'只能输入数字 KeyAscii = IIf(InStr(xstr & Chr(8), Chr(KeyAscii)), KeyAscii, 0)这样我的输入格式问题就解决了。
3、添加学籍时,入校日期不能早于出生日期。这个问题确实挺搞笑的,还没有出生怎么可能已经入学,给的源码中也没有这方面的限定,我们当然不能出这种滑稽的问题,在两者时间出现早晚问题时,我们同样可以添加提示框,提醒用户输入的错误。从同学那里借鉴了一些内容解决的,添加如下代码:
Private Sub txtRudate_Change() Dim a As Boolean '判断入学日期是否大于出生日期 a = True If IsDate(txtRudate.Text) And IsDate(txtBorndate.Text) Then If CDate(txtRudate.Text) < CDate(txtBorndate.Text) Then '比较日期大小 a = False End If End If If a = False Then '如果入学日期小于出生日期,提示! MsgBox "入学日期不能小于出生日期!", vbOKOnly + vbExclamation, "警告" Exit Sub End If End Sub4、 在查询信息是,去掉单选框的对勾,使其后文本框中的内容同时消失。这一点在平时使用的软件中都会有,开始自己也注意到了这个问题,看了看也没当回事。但验收时师傅提出来了,就算只是一个小系统,也应该为用户着想,做到使用最优化。其实问题还是很好解决的,当初就因为自己犯了个懒,给系统添加了不足。代码极其简单,正如以下所示:
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 txtCourse.Text = " " End If End Sub5、 将combo控件设置为只可选下拉框内容,不可随意添加。这一点是很重要的,举个例子来说,在添加成绩信息时是需要填写班级的, 如果我们可以随意添加的话,就算你所写的班号在数据库中并没有,但信息仍可以成功添加,这种关系是不成立的,当然我们要添加成绩,这个班级在数据库中就必须要存在。对于这个问题,我们只要将combo控件的style属性设置为2就可以了,由于style为2时,combo为只读属性,其内容不可随意更改,我们还需要将窗体中的combo.text=""一类的语句删除掉。
6、课程可以重复添加的问题。在设置课程窗体中,如果我们重复添加课程,同样也可以添加成功,这种现象绝不可以发生。参考了多位同学的总结,算是把这个问题解决的不错。代码如下:
Private Sub cmdAdd_Click() Dim selectcourse As Integer Dim i As Integer '定义两个整型变量 Dim j As Integer For selectcourse = 0 To listAllcourse.ListCount - 1 If listAllcourse.Selected(selectcourse) = True Then listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex) '向listselectcourse列表中添加课程 For i = 0 To listSelectcourse.ListCount - 1 For j = i + 1 To listSelectcourse.ListCount '判断 在list列表中是否有相同的名称 If listSelectcourse.List(i) = listSelectcourse.List(j) Then listSelectcourse.RemoveItem j MsgBox "已添加此课程!", vbOKOnly, "提示" Exit Sub End If Next j Next i End If Next selectcourse End Sub大概内容就这些吧,当然还有很多,希望能帮到同学们的优化。也让我们的系统真正的接近全心全意为人民服务。