【学生信息管理系统】——优化篇(二)

优化内容

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、还有其他的一些优化,需要设置控件的属性等,遇到某一具体的控件,我们可以多了解一下该控件的属性

猜你喜欢

转载自blog.csdn.net/LZ15932161597/article/details/82179557
今日推荐