【学生信息管理系统】——优化篇(二)
优化内容
3、查询信息窗体——check复选框
界面简洁、设计美观,提供给用户需要的、满足用户的需求,给用户带来方便。所以,我在查询信息的窗体中,对于选查询方式,这部分做了一些改动。当加载完窗体时,因为用户还没有选择查询方式,为使界面简洁,满足用户所需要的需求即可,所以我将查询方式的check隐藏了起来。当用户设置某种查询方式时,check框便会出现,获得焦点,用户输入信息即可。当用户重新打开上次设置的查询方式时,为输入新的查询信息提供方便,所以将文本框清空,不保留上次输入的查询信息。实现功能的代码入下:
Private Sub Check1_Click(Index As Integer)
If Check1(0).Value = 0 Then '若check1(0)不被选中
txtSID.Visible = False '学号文本框不可见
Else '若check1(0)被选中
txtSID.Visible = True '学号文本框可见
txtSID.Text = "" '学号文本框清空
txtSID.SetFocus '学号文本框获得焦点
End If
If Check1(1).Value = 0 Then '若check1(1)不被选中
txtName.Visible = False
Else
txtName.Visible = True
txtName.Text = ""
txtName.SetFocus
End If
If Check1(2).Value = 0 Then '若check1(2)不被选中
txtClassno.Visible = False
Else
txtClassno.Visible = True
txtClassno.Text = ""
txtClassno.SetFocus
End If
End Sub
4、设置年级课程窗体——重复设置课程
套用源代码,当我们一次又一次单击设置课程按钮时,所有课程文本框的内容会发生更改,将所有课程又copy了一次又一次,显然这是不合理的,用户所能更改的是选择课程,而不是将已设置好的所有课程进行更改。按照源代码的方式,会出现的结果如图所示:
Private Sub cmdSet_Click()
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim MsgText As String
'使各个控件有效
Listallcourse.Enabled = True
Listselectcourse.Enabled = True
cmdModify.Enabled = True
'查询数据
txtSQL = "select * from course_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While (mrc.EOF = False)
'添加内容到列表中
listAllcourse.AddItem mrc.Fields(1)
mrc.MoveNext
Wend
mrc.Close
flagSet = True
End Sub
这段代码运行结果是:
要解决这个问题,我们先要对listbox控件有所了解。additem、removeitem方法要了解,listindex和listcount属性要知道。简单一点说,additem是将项添加到列表框中的,removeitem是将项从列表框中删除的,listindex返回的是列表框list中当前选择项目的索引号码,listcount返回的是列表框list中项目总数。当我们知道到了这些基本内容,再来看代码就比较容易理解了。我们要解决这个问题,就需要从while wend段中入手了,修改这段代码来去除重复设置问题。解决的具体方法如下代码:
While (mrc.EOF = False)
If Listallcourse.ListCount <> mrc.RecordCount Then
Listallcourse.AddItem mrc.Fields(1)
End If
mrc.MoveNext
Wend
mrc.Close
此外,还有重复添加某一相同课程。源代码实现的功能如下图所示:
Private Sub cmdAdd_Click()
If listAllcourse.ListIndex <> -1 Then
listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex)
End If
End Sub
运行结果:
我们想要的结果是,某一年级,同样的课程只需要添加一次即可,不需要同一年级重复添加某一课程。可以使用下面的代码片段解决这个问题:
'判断是否有内容被选中
If Listallcourse.ListIndex <> -1 Then
If Listselectcourse.ListCount = 0 Then
Listselectcourse.AddItem Listallcourse.List(Listallcourse.ListIndex)
End If
For i = 0 To Listselectcourse.ListCount - 1
If Listselectcourse.List(i) = Listallcourse.List(Listallcourse.ListIndex) Then
Exit Sub
End If
Next
Listselectcourse.AddItem Listallcourse.List(Listallcourse.ListIndex)
End If
5、日期问题——调用日期控件,为用户提供方便;设置出生日期早于入学日期,要符合现实情况
6、文本框输入文本的限制,可参看文本框的限制方法
7、还有其他的一些优化,需要设置控件的属性等,遇到某一具体的控件,我们可以多了解一下该控件的属性
上一篇: 这年头,有本事的都不换老婆,只换小-三