欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-06 12:39:18
...

优化内容

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