zoukankan      html  css  js  c++  java
  • 学生信息管理系统总结

     

    (一)逻辑篇

    一、系统设计

     

    二、数据库设计

    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 的区别"

     

  • 相关阅读:
    Spring AOP中pointcut expression表达式解析
    java中Action层、Service层和Dao层的功能区分
    vim对erlang语法支持
    svn跳过某个目录
    时间,闰秒,及NTP
    grep
    【转】MySql数据库--mysql_real_escape_string()函数
    Linux sed 批量替换多个文件中的字符串
    求最大公约数
    怎么利用SQL语句查询数据库中具体某个字段的重复行
  • 原文地址:https://www.cnblogs.com/txge/p/13973644.html
Copyright © 2011-2022 走看看