《学生管理系统(VB).pdf》由会员分享,可在线阅读,更多相关《学生管理系统(VB).pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学生管理系统一 系统功能分析系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。主要功能有:1 有关学籍等信息的输入,包括输入学生基本信息,所在班级,所学课程和成绩等。2 学生信息的查询,包括查询学生基本信息,所在班级,已学课程,和成绩等3 学生信息修改4 班级管理信息的输入,包括输入班级设置,年级信息等。5 班级管理信息查询6 班级管理信息修改7 学校基本课程信息输入8 基本课程信息修改9 学生课程的设置和修改10 学生成绩信息的输入11 学生成绩信息的修改12 学生成绩信息的查询13 学生成绩信息的统计112 系统功能模块设计先设置班级,再添加学生情况和课程情况,再进行年级课程设
2、置,就可以进行学生成绩的录入了。二 数据库设计学生信息管理系统成绩信息管理课程信息管理班级信息管理学籍信息管理系统管理成绩信息查询成绩信息修改成绩信息添加年级课程设置课程信息修改课程信息添加班级信息修改班级信息添加学籍信息查询学籍信息修改学籍信息添加密码管理用户管理1.2.1 数据库需求分析1 学生基本信息:学号,姓名,性别,出生日期,班号,电话,入校日期,家庭住址,备注等。2 班级信息:班号,所在年级,班主任姓名,所在教室3 课程基本信息:课程号,课程名称,课程类别,课程描述4 课程设置信息:年级信息,所学课程等。5 学生成绩信息:考试编号,所在班级,学生学号,学生姓名,所学课程,考试分数1
3、.2.2 数据库概念结构设计根据数据库的设计规划出的实体有:学生实体,班级实体,年级实体,课程实体各个实体具体的描述E-R 图如下学生注册基本信息输入成绩信息输入班级课程设置学籍信息管理成绩信息管理班级课程管理课程基本信息班级设置班级管理实体和实体之间的关系E-R 如下学生成绩信息学 生学生基本信息学生班级信息学生课程信息班级班号所在年级班主任课程课程编号课程名称课程类型年级年级名称包括班级设置课程所在教室课程描述三数据库结构的实现1.3.1 创建数据库和数据表1 创建系统用户表格user-Info CREAT TABLE dbo.user-info(user-ID char(10)COLLA
4、TE Chinese-PRC-CI-AS NOT NULL,user-PWD char(10)COLLA TE Chinese-PRC-CI-AS NULL,user-Des char(10)COLLA TE Chinese-PRC-CI-AS NULL,)ON PRIMARY 2 创建学生基本信息表格student_Info CREATE TABLE dbo.student_Info(student_ID int NOT NULL,student-ID char(10)COLLATE Chinese-PRC-CI-AS NULL,student-Sex char(2)COLLA TE Chi
5、nese-PRC-CI-AS NULL,born_Date datetime NULL,class_NO int NULL,tele_Number char(10)COLLATE Chinese-PRC-CI-AS NULL,ru_Date datetime NULL,address varchar(50)COLLA TE Chinese-PRC-CI-AS NULL,comment varchar(200)COLLATE Chinese-PRC-CI-AS NULL,)ON PRIMARY 3 创建班级信息表格class_Info CREAT TABLE dbo.class-info(cla
6、ss_No int NOT NULL,grade char(10)COLLA TE Chinese-PRC-CI-AS NULL director char(10)COLLATE Chinese-PRC-CI-AS NULL classroom_No char(10)COLLATE Chinese-PRC-CI-AS NULL)ON PRIMARY 班级设置学 生年级课程班 级年级设置课程设置考核过程4 创建课程基本信息表course_Info CREAT TABLE dbo.course-info(course_No int NOT NULL,course_Name char(10)COLL
7、A TE Chinese-PRC-CI-AS NULL course_Type char(10)COLLA TE Chinese-PRC-CI-AS NULL course_Des char(50)COLLA TE Chinese-PRC-CI-AS NULL)ON PRIMARY 5 创建年级课程设置信息表gradecourse_Info CREAT TABLE dbo.gradecourse-info(grade char(10)COLLA TE Chinese-PRC-CI-AS NULL course_Name char(10)COLLA TE Chinese-PRC-CI-AS NU
8、LL)ON PRIMARY 6 创建学生成绩信息表result_Info CREAT TABLE dbo.result-info(exam_No char(10)COLLATE Chinese-PRC-CI-AS NOT NUL student_ID int NOT NULL student Name char(10)COLLA TE Chinese-PRC-CI-AS NULL class_No int NULL course_Name char(10)COLLA TE Chinese-PRC-CI-AS NULL result float NULL)ON PRIMARY 程序总体结构:St
9、udent_mis系统的 module1模块Public fMainForm As frmMain Public UserName As String Sub Main()Dim fLogin As New frmLogin fLogin.Show vbModal If Not fLogin.OK Then Login Failed so exit app End End If Unload fLogin Set fMainForm=New frmMain fMainForm.Show End Sub Public Function ConnectString()_ As Stringretu
10、rns a DB ConnectString ConnectString=FileDSN=studentinfo.dsn;UID=;PWD=End Function Public Function ExecuteSQL(ByV al SQL _As String,,MsgString As String)_ As ADODB.Recordset executes SQL and returns Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens()As String On Error GoTo
11、 ExecuteSQL_Error sTokens=Split(SQL)Set cnn=New ADODB.Connection cnn.Open ConnectString If InStr(INSERT,DELETE,UPDATE,_ UCase$(sTokens(0)Then cnn.Execute SQL MsgString=sTokens(0)&_ query successful Else Set rst=New ADODB.Recordset rst.Open Trim$(SQL),cnn,_ adOpenKeyset,_ adLockOptimistic rst.MoveLas
12、t get RecordCount Set ExecuteSQL=rst MsgString=查询到&rst.RecordCount&_ 条记录End If ExecuteSQL_Exit:Set rst=Nothing Set cnn=Nothing Exit Function ExecuteSQL_Error:MsgString=查询错误:&_ Err.Description Resume ExecuteSQL_Exit End Function Public Function Testtxt(txt As String)As Boolean If Trim(txt)=Then Testt
13、xt=False Else Testtxt=True End If End Function ODBC 配置四 系统用户管理模块的创建控件属性属性取值frmLogin(From)Name frmLogin Caption StartUpPostion CenterScreen WindowState Nomal txtUserName Name txtUserName txtpassword Name txtPassword Password*cmdOK Name cmdOK Caption 确定cmdCancel Name cmdCancel Caption 取消Label1 Caption
14、 学生信息管理系统Label2 Caption 用户名Label3 Caption 用户密码Label Caption 版权提供主要实现:1 用户登录2 添加用户3 修改用户密码系统启动后,将首先出现如下图所示的用户登录窗体,用户首先输入用户名,然后输入密码,如果用户3 次输入密码不正确,将退出程序。用户登录窗体中放置两个文本文档(TextBox),用来输入用户名和用户密码;两个按钮(CommandButton)用来确定或取消登录;4 个标签(Label)用来标示窗体的信息。为窗体定义全局变量OK,用来判断登陆是否成功;定义miCount,用来记载输入密码的次数,并且在载入窗体时初始化这两个变
15、量,代码如下:用户登录窗体创建强制变量声明代码实现如下:Option Explicit Public OK As Boolean 记录确定次数Dim miCount As Integer Private Sub Form_Load()OK=False miCount=0 End Sub Option Explicit 是用来规定所有变量使用前必须定义。这样可以避免由于输入错误而产生的新变量。当用户输入完用户名和用户密码,单击cmdOK 按钮将对用户输入信息进行判断。用户单击按钮,将触发按钮cmdOK 的 Click 事件,代码如下:Private Sub cmdOK_Click()用来存放SQ
16、L 语句Dim txtSQL As String 用来存放记录集对象Dim mrc As ADODB.Recordset 用来存放返回信息Dim MsgText As String ToDo:create test for correct password check for correct password UserName=If Trim(txtUserName.Text=)Then 判断输入用户名为空MsgBox 没有这个用户,请重新输入用户名!,vbOKOnly+vbExclamation,警告 txtUserName.SetFocus Else txtSQL=select*from
17、user_Info where user_ID=&txtUserName.Text&Set mrc=ExecuteSQL(txtSQL,MsgText)If mrc.EOF=True Then MsgBox 没有这个用户,请重新输入用户名!,vbOKOnly+vbExclamation,警告 txtUserName.SetFocus Else If Trim(mrc.Fields(1)=Trim(txtPassword.Text)Then OK=True mrc.Close Me.Hide UserName=Trim(txtUserName.Text)Else MsgBox 输入密码不正确,请
18、重新输入!,vbOKOnly+vbExclamation,警告 txtPassword.SetFocus txtPassword.Text=End If End If End If miCount=miCount+1 If miCount=3 Then Me.Hide End If Exit Sub End Sub 用户如果没有输入用户名密码,将出现消息框给予提示。如果输入的用户名在用户表格中没有找到,将提示重新输入用户名,文本档txtUserName 将重新获得输入焦点。如果用户输入密码不正确,文本档txtUserName 将重新获得输入焦点。用户登录成功,全局变量OK将被赋值为Ture;一
19、旦三次输入密码均不正确,全局变量OK 将被赋值为False。公用模块中的 Main 过程将根据OK 的值决定是退出,或者进入系统。如果用户取消登录,单击“取消”按钮,将触发按钮的Click 事件;代码如下:OK=False me.Hide Me 是 Visual Basic 中一个常用的对象,用来指代当前对象本身。添加用户窗体创建控件属性属性取值frmLogin(From)Name frmLogin Caption StartUpPostion CenterScreen WindowState Nomal txtUserName Name txtUserName Txtpassword1 Na
20、me txtPassword1 password*Name txtPassword Password*cmdOK Name cmdOK Caption 确定cmdCancel Name cmdCancel Caption 取消Label1 Caption Label2 Caption Label3 Caption 用户需要两次输入密码,用来确保输入密码的正确。用户输入信息完毕,单击“确定”按键将触发 Click 事件,代码如下:Private Sub cmdCancel_Click()Unload Me End Sub Private Sub cmdOK_Click()Dim txtSQL A
21、s String Dim mrc As ADODB.Recordset Dim MsgText As String If Trim(Text1(0).Text)=Then MsgBox 请输入用户名称!,vbOKOnly+vbExclamation,警告 Exit Sub Text1(0).SetFocus Else txtSQL=select*from user_Info Set mrc=ExecuteSQL(txtSQL,MsgText)判断数据集是否为空While(mrc.EOF=False)判断是否有重复记录If Trim(mrc.Fields(0)=Trim(Text1(0)Then
22、 MsgBox 用 户 已 经 存 在,请 重 新 输 入 用 户 名!,vbOKOnly+vbExclamation,警告 Text1(0).SetFocus Text1(0).Text=Text1(1).Text=Text1(2).Text=Exit Sub Else 移动到下一条记录mrc.MoveNext End If Wend End If 判断两次输入密码是否一致If Trim(Text1(1).Text)Trim(Text1(2).Text)Then MsgBox 两次输入密码不一样,请确认!,vbOKOnly+vbExclamation,警告 Text1(1).SetFocus
23、 Text1(1).Text=Text1(2).Text=Exit Sub Else 判断输入密码是否为空If Text1(1).Text=Then MsgBox 密码不能为空!,vbOKOnly+vbExclamation,警告 Text1(1).SetFocus Text1(1).Text=Text1(2).Text=Else mrc.AddNew mrc.Fields(0)=Trim(Text1(0).Text)mrc.Fields(1)=Trim(Text1(1).Text)mrc.Update mrc.Close Me.Hide MsgBox 添加用户成功!,vbOKOnly+vbE
24、xclamation,添加用户 End If End If End Sub 一旦输入密码完毕,系统将首先查询数据库中与新建用户名相同的记录,如果有相同的记录将提示用户重新输入用户名。但确定数据库中没有相同的用户名,并且两次输入密码一致的时候,将把该条记录添加到数据库中。单击取消按钮将取消添加用户的操作。修改用户密码窗体创建两次输入密码后,单击“确认”按钮,将触发Click 事件判断是否修改密码,代码如下控件属性属性取值frmLogin(From)Name frmLogin Caption 修改密码StartUpPostion CenterScreen WindowState Nomal txt
25、UserName Name txtUserName Txtpassword1 Name txtPassword1 password*Name txtPassword Password*cmdOK Name cmdOK Caption 确定cmdCancel Name cmdCancel Caption 取消Label1 Caption 请输入密码Label2 Caption 请确认密码Private Sub cudOK_Click()Dim txtSQL,MsgText As String Dim mrc ADODB.Recrodset 判断是否为空If Trim(Text(1).Text)T
26、rim(Text(2).Text)Then MsgBox“密码输入不正确!”,vbOKOnly+vbExclamation,“警告”Text(1).SetFocus Text(1).Text=“”Else txtSQL=”select*from user_Info where user_ID=”&UserName&”Set mrc=ExecuteSQL(txtSQL,MsgText)mrc.Fields(1)=Text(1).Text mrc.Update mrc.Close MsgBox”密码修改成功!”,vbOKOnly+vbExclamation,”修改密码”Me.hide End if
27、 End sub 学籍管理模块的创建控件属性属性取值txtSID Name txtSID txtTel Name txtTel txtRudate Name txtRudate txtAddress ScrollBars Vertical MultiLine True txtComment Name txtComment ScrollBars Vertical MultiLine True comboGender Name comboGender comboClassNo Name comboClassNo cmdFirst Name cndOK Caption 第一条记录cmdPreviou
28、s Name cmdNext Caption 上一条记录cmdNext Name cmdNext Caption 下一条记录cmdLast Name cmdLast Caption 最后一条记录cmdEdit Name cmdEdit Caption 修改记录cmdUpdate Name cmdUpdate Caption 更新记录cmdCancel Name cmdCancel Caption 取消修改记录cmdDelete Name cmdDelete Caption 删除记录Frame1 Caption 查看学籍信息Frame2 Caption 修改学籍信息Label1 Caption
29、学号Label2 Caption 姓名Label3 Caption 性别Label4 Caption 出生日期Label5 Caption 班号Label6 Caption 联系电话Label7 Caption 入校日期Label8 Caption 家庭住址Label9 Caption 备注功能如下1 添加学籍信息2 修改学籍信息3 查询学籍信息代码如下:添加学籍信息窗体创建Private Sub Command1_Click()定义数据集对象Dim mrc As ADODB.Recordset 定义字符串变量,表示查询语句Dim txtSQL As String 定义字符串变量,返回查询信息
30、Dim MsgText As String 是否输入学号If Not Testtxt(txtSID.Text)Then MsgBox 请输入学号!,vbOKOnly+vbExclamation,警告 txtSID.SetFocus Exit Sub End If If Not Testtxt(txtName.Text)Then MsgBox 请输入姓名!,vbOKOnly+vbExclamation,警告 txtName.SetFocus Exit Sub End If 判断是否输入姓名If Not Testtxt(comboSex.Text)Then MsgBox 请选择性别!,vbOKOn
31、ly+vbExclamation,警告 comboSex.SetFocus Exit Sub End If 判断是否输入性别If Not Testtxt(txtBorndate.Text)Then MsgBox 请输入出生日期!,vbOKOnly+vbExclamation,警告 txtBorndate.SetFocus Exit Sub End If 判断是否输入出生日期If Not Testtxt(comboClassno.Text)Then MsgBox 请选择班号!,vbOKOnly+vbExclamation,警告 comboClassno.SetFocus Exit Sub End
32、 If 判断是否选择班号If Not Testtxt(txtTel.Text)Then MsgBox 请输入联系电话!,vbOKOnly+vbExclamation,警告 txtTel.SetFocus Exit Sub End If 判断是否输入联系电话If Not Testtxt(txtRudate.Text)Then MsgBox 请输入入校日期!,vbOKOnly+vbExclamation,警告 txtRudate.SetFocus Exit Sub End If If Not Testtxt(txtAddress.Text)Then MsgBox 请输入家庭住址!,vbOKOnly
33、+vbExclamation,警告 txtAddress.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtSID.Text)Then MsgBox 请输入数字!,vbOKOnly+vbExclamation,警告 Exit Sub txtSID.SetFocus End If txtSQL=select*from student_Info where student_ID=&Trim(txtSID.Text)&Set mrc=ExecuteSQL(txtSQL,MsgText)If mrc.EOF=False Then MsgBox 学号重复
34、,请重新输入!,vbOKOnly+vbExclamation,警告 mrc.Close txtSID.SetFocus Else mrc.Close If Not IsDate(txtBorndate.Text)Then MsgBox 出 生 时 间 应 输 入 日 期 格 式(yyyy-mm-dd)!,vbOKOnly+vbExclamation,警告 txtBorndate.SetFocus Else txtBorndate=Format(txtBorndate,yyyy-mm-dd)If Not IsDate(txtRudate.Text)Then MsgBox 入校 时间应 输入日 期
35、格式(yyyy-mm-dd)!,vbOKOnly+vbExclamation,警告 txtRudate.SetFocus Else txtRudate=Format(txtRudate,yyyy-mm-dd)txtSQL=select*from student_Info Set mrc=ExecuteSQL(txtSQL,MsgText)mrc.AddNew mrc.Fields(0)=Trim(txtSID.Text)mrc.Fields(1)=Trim(txtName.Text)mrc.Fields(2)=Trim(comboSex.Text)mrc.Fields(3)=Trim(txtB
36、orndate.Text)mrc.Fields(4)=Trim(comboClassno.Text)mrc.Fields(5)=Trim(txtTel.Text)mrc.Fields(6)=Trim(txtRudate.Text)mrc.Fields(7)=Trim(txtAddress.Text)mrc.Fields(8)=Trim(txtComment.Text)mrc.Update MsgBox 添加学籍信息成功!,vbOKOnly+vbExclamation,警告 mrc.Close Me.Hide End If End If End If 程序首先对是否输入内容进行判断,然后进行格式
37、判断,使用了下面两个函数判断数据是否日期格式IsDate(txtBorndate.Text)判断数据是否日期格式IsDate(txtRudate.Text)判断是否有重复记录是很重要的,否则数据库中将发生错误。修改学籍信息窗体创建控件属性属性取值txtSID Name txtSID txtTel Name txtTel txtRudate Name txtRudate txtAddress ScrollBars Vertical MultiLine True txtComment Name txtComment ScrollBars Vertical MultiLine True comboG
38、ender Name comboGender comboClassNo Name comboClassNo cmdFirst Name cndOK Caption 第一条记录cmdPrevious Name cmdNext Caption 上一条记录cmdNext Name cmdNext Caption 下一条记录cmdLast Name cmdLast Caption 最后一条记录cmdEdit Name cmdEdit Caption 修改记录cmdUpdate Name cmdUpdate Caption 更新记录cmdCancel Name cmdCancel Caption 取消修
39、改记录cmdDelete Name cmdDelete Caption 删除记录Frame1 Caption 查看学籍信息Frame2 Caption 修改学籍信息Label1 Caption 学号Label2 Caption 姓名Label3 Caption 性别Label4 Caption 出生日期Label5 Caption 班号Label6 Caption 联系电话Label7 Caption 入校日期Label8 Caption 家庭住址Label9 Caption 备注定义数据集对象Dim mrc As ADODB.Recordset 定义书签,用来记载当前记录位置Dim myBo
40、okmark As V ariant 判断是否修改记录Dim mcclean As Boolean 程序在窗体载入时自动加入各条记录Private Sub editCommand_Click()mcclean=False Frame2.Enabled=False firstCommand.Enabled=False previousCommand.Enabled=False nextCommand.Enabled=False lastCommand.Enabled=False txtSID.Enabled=True txtName.Enabled=True comboSex.Enabled=T
41、rue txtBorndate.Enabled=True comboClassno.Enabled=True txtRudate.Enabled=True txtTel.Enabled=True txtAddress.Enabled=True txtComment.Enabled=True myBookmark=mrc.Bookmark End Sub Private Sub cancelCommand_Click()If Not mcclean Then Frame2.Enabled=True firstCommand.Enabled=True previousCommand.Enabled
42、=True nextCommand.Enabled=True lastCommand.Enabled=True txtSID.Enabled=False txtName.Enabled=False comboSex.Enabled=False txtBorndate.Enabled=False comboClassno.Enabled=False txtRudate.Enabled=False txtTel.Enabled=False txtAddress.Enabled=False txtComment.Enabled=False mrc.Bookmark=myBookmark Call v
43、iewData Else MsgBox 什么都没有修改,有什么好取消的!,vbOKOnly+vbExclamation,警告 End If End Sub Private Sub deleteCommand_Click()myBookmark=mrc.Bookmark str2$=MsgBox(是否删除当前记录?,vbOKCancel,删除当前记录)If str2$=vbOK Then mrc.MoveNext If mrc.EOF Then mrc.MoveFirst myBookmark=mrc.Bookmark mrc.MoveLast mrc.Delete mrc.Bookmark=m
44、yBookmark Call viewData Else myBookmark=mrc.Bookmark mrc.MovePrevious mrc.Delete mrc.Bookmark=myBookmark Call viewData End If Else mrc.Bookmark=myBookmark Call viewData End If End Sub Private Sub firstCommand_Click()mrc.MoveFirst Call viewData End Sub Private Sub Form_Load()SOL 语句Dim txtSQL As Strin
45、g Dim MsgText As String txtSQL=select*from student_Info 执行查询操作Set mrc=ExecuteSQL(txtSQL,MsgText)mrc.MoveFirst 显示数据Call viewData mcbookmark=mrc.Bookmark mcclean=True End Sub 由于程序各处需要显示数据,定义函数viewData Public Sub viewData()txtSID.Text=mrc.Fields(0)txtName.Text=mrc.Fields(1)comboSex.Text=mrc.Fields(2)tx
46、tBorndate.Text=Format(mrc.Fields(3),yyyy-mm-dd)comboClassno.Text=mrc.Fields(4)txtTel.Text=mrc.Fields(5)txtRudate.Text=Format(mrc.Fields(6),yyyy-mm-dd)txtAddress.Text=mrc.Fields(7)txtComment.Text=mrc.Fields(8)End Sub 单击“最后一条记录”,将显示最后一条记录Private Sub lastCommand_Click()移动到数据集的最后一条记录mrc.MoveLast Call vi
47、ewData End Sub Private Sub nextCommand_Click()mrc.MoveNext If mrc.EOF Then mrc.MoveFirst End If Call viewData End Sub Private Sub previousCommand_Click()mrc.MovePrevious If mrc.BOF Then mrc.MoveLast End If Call viewData End Sub 修改完毕后,单击“更新记录“按钮,将触发Click 事件Private Sub updateCommand_Click()Dim txtSQL
48、As String Dim MsgText As String Dim mrcc As ADODB.Recordset 判断是否处于修改状态If mcclean Then MsgBox 请先修改学籍信息,vbOKOnly+vbExclamation,警告 Exit Sub End If 判断数据是否为空If Not Testtxt(txtSID.Text)Then MsgBox 请输入学号!,vbOKOnly+vbExclamation,警告 txtSID.SetFocus Exit Sub End If 判断学号是否为空If Not Testtxt(txtName.Text)Then Msg
49、Box 请输入姓名!,vbOKOnly+vbExclamation,警告 txtName.SetFocus Exit Sub End If 判断姓名是否为空If Not Testtxt(comboSex.Text)Then MsgBox 请选择性别!,vbOKOnly+vbExclamation,警告 comboSex.SetFocus Exit Sub End If 判断性别是否为空If Not Testtxt(txtBorndate.Text)Then MsgBox 请输入出生日期!,vbOKOnly+vbExclamation,警告 txtBorndate.SetFocus Exit S
50、ub End If 判断出生日期是否为空If Not Testtxt(comboClassno.Text)Then MsgBox 请选择班号!,vbOKOnly+vbExclamation,警告 comboClassno.SetFocus Exit Sub End If 判断班号是否为空If Not Testtxt(txtTel.Text)Then MsgBox 请输入联系电话!,vbOKOnly+vbExclamation,警告 txtTel.SetFocus Exit Sub End If 判断联系电话是否为空If Not Testtxt(txtRudate.Text)Then MsgBo