学生信息管理系统总结

 

(一)逻辑篇

 

一、系统设计

 

二、数据库设计

1.数据库需求分析:无非是增删改查四大块:添加信息、删除信息、修改信息、查找信息。

2.数据库概念结构设计:四大实体:学生、班级、课程、年级。

3.数据库逻辑结构设计:数据库中表以及各个表之间的关系。

 

三、数据库结构的实现

1.创建数据库

2.配置SQLserver

 

四、学生管理系统主窗体 

1.创建主窗体菜单——frmMain

 

2.创建公用模块——Module

 

五、系统用户管理模块

 

1.用户登录

 

 

①若用户连续输入密码不正确超过三次,则自动退出系统。

If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
            OK = True
            mrc.Close
            Me.Hide
            FrmMain.Show
            username = Trim(txtUserName.Text)
        Else
            miCount = miCount + 1
                If miCount = 1 Then
                        MsgBox "用户名或密码错误!您还有两次机会!", 48, "警告"
                Exit Sub
                End If
                     
                If miCount = 2 Then
                        MsgBox "用户名或密码错误!您还有一次机会!", 48, "警告"
                Exit Sub
                End If
                    
                If miCount = 3 Then
                        MsgBox "用户名或密码错误!即将关闭程序!", 48, "警告"
                        Me.Hide
                Exit Sub
                End If

②为了使用户登录更加人性化,添加了注册账号和找回密码服务,点击后会自动跳转到相应的窗体。

此功能直接添加标签并编写它的Click事件即可。

 

③注意用户名和密码的字符限制:用户名只能输入汉字或字母,密码只能输入数字、字母和某些符号。

此功能用到Ascii码表,需要注意不同的数值对应着不同的意义。

'密码输入框中只能输入数字和字母或特殊字符
Private Sub txtpassword_KeyPress(KeyAscii As Integer)
    If KeyAscii >= 33 And KeyAscii <= 126 Then
    Else
        MsgBox "密码格式不正确,请输入字母和数字或个别特殊字符!", vbOKOnly + vbExclamation, "提示"
        KeyAscii = 0
        txtPassword.Text = ""
        txtPassword.SetFocus
    End If
End Sub

'用户名输入框中只能输入汉字和字母
Private Sub txtUserName_KeyPress(KeyAscii As Integer)
    If KeyAscii >= -20319 And KeyAscii <= -3652 Or KeyAscii >= 65 And KeyAscii <= 90 Or KeyAscii >= 97 And KeyAscii <= 122 Then
    Else
        MsgBox "用户名格式不正确,请输入汉字和字母!", vbOKOnly + vbInformation, "提示"
        KeyAscii = 0
        txtUserName.Text = ""
        txtUserName.SetFocus
    End If
End Sub

2.添加用户

①不可添加重复用户名

 txtSQL = "select * from user_Info"
        Set mrc = ExecuteSQL(txtSQL, MsgText)                          '执行查询语句
        While (mrc.EOF = False)                                                          '判断数据集是否为空
            If Trim(mrc.Fields(0)) = Trim(txtUserName.Text) Then       '判断是否有重复记录
                MsgBox "用户已经存在,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
                txtUserName.SetFocus
                txtUserName.Text = ""                                                      '清空文本框
                txtPassword1.Text = ""
                txtPassword2.Text = ""
                Exit Sub
            Else
                mrc.MoveNext                                                                   '移动到下一条记录
            End If
        Wend

②在添加成功后也需要清空文本框,方便用户操作。

 

六、学籍管理模块

1.添加学籍

①班号:查找数据库中class表中读取班号字段的数据

    txtSQL = "select * from class_Info"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    For i = 1 To mrc.RecordCount        '添加内容到列表框中
        ComboClassNo.AddItem mrc.Fields(0)
        mrc.MoveNext
    Next i
    mrc.Close       '关闭数据集对象

②日期:入校日期不能在出生日期之前且两个日期均不能超过当前日期

'使用DateTimePicker控件的closeup事件判断时间范围是否符合
Private Sub DTPBorndate_CloseUp()
    '判断选择的日期是否大于系统日期
    If DTPBorndate.Value > Date Then
        MsgBox "选择的日期不能在当前日期之后!", vbOKOnly + vbInformation, "提示"
        '若大于当前日期的话则选中当前日期
        DTPBorndate.Value = Date
        Exit Sub
    End If
End Sub
Private Sub DTPRudate_CloseUp()
    '判断选择的日期是否大于系统日期
    If DTPRudate.Value > Date Then
        MsgBox "选择的日期不能在当前日期之后!", vbOKOnly + vbInformation, "提示"
        '若大于当前日期的话则选中当前日期
        DTPRudate.Value = Date
        Exit Sub
    End If
End Sub
Private Sub DTPRudate_change()
    If DTPRudate.Value <= DTPBorndate.Value Then
        MsgBox "入校日期不能在出生日期之前!", vbOKOnly + vbInformation, "提示"
    Else
        '格式化日期
        DTPBorndate = Format(DTPBorndate, "yyyy-mm-dd")
        DTPRudate = Format(DTPRudate, "yyyy-mm-dd")
    End If
End Sub

2.修改学籍

①逻辑图:

 

   ② '避免没记录时报错"3021"

    If mrc.BOF = True Or mrc.EOF = True Then
        MsgBox "没有记录!", 48, "提示"
        Exit Sub
    End If

3.查询学籍

设置查询方式——点击查询——按条件搜索数据库中student表的数据——显示在Flexgrid控件中

 

七、班级管理模块

1.添加班级

2.修改班级

八、课程设置模块

1.添加课程

2.修改课程

3.设置年级课程

①逻辑图:

②点击 → 按钮,将左边控件数据添加到右边控件

Private Sub cmdAdd_Click()
    Dim i As Integer
    '将左边控件数据添加到右边控件
    If ListAllCourse.ListIndex > -1 Then
        If ListSelectCourse.ListCount > 0 Then
            For i = 0 To ListSelectCourse.ListCount - 1
                If (Trim(ListSelectCourse.List(i)) = ListAllCourse.List(ListAllCourse.ListIndex)) Then
                    MsgBox "课程已添加!", vbOKOnly + vbExclamation, "警告"
                    Exit Sub
                End If
            Next i
        End If 
        ListSelectCourse.AddItem ListAllCourse.List(ListAllCourse.ListIndex)
    Else
        MsgBox "请先选中一门课程!", vbOKOnly + vbExclamation, "警告"
    End If
End Sub

 

九、成绩管理模块

1.添加成绩

①逻辑图

②选择班号后的Click事件:

Private Sub ComboClassNo_Click()
    Dim mrc As ADODB.Recordset
    Dim txtSQL As String
    Dim MsgText As String
    ComboSID.Clear
    ComboCourse.Clear

    '添加学号
    txtSQL = "select * from student_Info where class_No='" & Trim(ComboClassNo.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    While (mrc.EOF = False)
        ComboSID.AddItem mrc!student_ID
        mrc.MoveNext
    Wend
    mrc.Close
    '获得年级信息
    txtSQL = "select * from class_Info where class_No='" & Trim(ComboClassNo.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
        Grade = mrc!Grade
        mrc.Close
    '添加相关课程
   txtSQL = "select * from course_Info"                              
   Set mrc = ExecuteSQL(txtSQL, MsgText)
    While (mrc.EOF = False)
        ComboCourse.AddItem mrc!course_Name
        mrc.MoveNext
    Wend
    mrc.Close
    Flagselect = True
End Sub

③加载学号对应的姓名:

Private Sub ComboSID_Click()
    Dim mrc As ADODB.Recordset
    Dim txtSQL As String
    Dim MsgText As String
    
    txtSQL = "select * from student_Info where student_ID='" & ComboSID.Text & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    txtName.Text = mrc!student_Name
    mrc.Close
End Sub

 

2.修改成绩

 ①全部记录删除后设置窗体隐藏或关闭,可以用计时器Timer:

Private Sub Timer1_Timer()
    Dim txtSQL As String
    Dim MsgText As String
    txtSQL = "select * from result_Info "
    Set mrc = ExecuteSQL(txtSQL, MsgText)

    If mrc.EOF = False Then
        mrc.MoveFirst
        Call viewData

        myBookmark = mrc.Bookmark
        ComboExamtype.ListIndex = 0
        ComboClassNo.ListIndex = 0
    Else
        MsgBox "没有记录!", vbOKOnly + vbExclamation, "警告"
            Me.Hide
            Description.Show
            mcclean = True  '给标志赋初值
    End If
    Timer1.Enabled = False
End Sub

3.查询成绩

 

十、帮助和使用说明

 

(二)错误篇

“实时错误“3704”,对象关闭时,不允许操作”

“编译错误:未找到方法或数据成员”

“实时错误'424'”

"文本框的ScrollBars属性不管用"

“实时错误'-2147217887”

 "编译错误:无效限定符”​​​​​​

"编译错误:参数不可选​​​​​​​"

". 与 ! 的区别"​​​​​​​

"On error 的用法"​​​​​​​

"EOF 和 BOF 的区别"

 

posted @ 2018-11-25 15:03  肥宅快乐鼠  阅读(171)  评论(0)    收藏  举报