学生信息管理系统设计与开发
河南工程学院
《数据库原理及应用》课程设计
成果报告
学生信息管理系统设计与开发
学生学号:
学生姓名:
学院:计算机学院
专业班级:
专业课程:数据库原理及应用课程设计
指导教师:
年月日
课程设计指导教师评分表
学生信息管理系统设计与开发
一、设计目的
设计目的:建立高效利用的学生信息管理系统,实现大量信息的规范管理、科学统计和快速查询,从而更好的减少管理方面的工作量。
学生信息管理系统提供了强大的学生信息管理功能,方便管理员对学生信息进行添加、修改、删除、查询、统计等操作。因此,学生信息管理系统能够满足学校的需要,简化学生信息的管理过程,提高管理效率,是学校学生信息管理的一种重要的工具。
二、系统实现思路
1、需求分析
本次的实训课程着手于学生信息管理系统,原因在于学校的规模不断扩大,学生数量也在急剧增加,有关学生的各种信息量也在成倍增长。对于庞大的信息量,一个高效的信息管理系统是能够很大程度上提高学生管理工作的效率。
2、总体设计
系统功能分析:
系统开发的目的是实现学生信息管理系统的关系化、规范化和自动化。学生信息管理系统主要提供对学生信息的管理、班级信息的管理、课程信息的管理以及学生成绩的管理。
主要功能有:
(1)有关学生信息的输入、修改和查询。(2)班级信息的输入、修改和查询。
(3)基本课程的输入、修改和查询。
(4)成绩的输入、修改和查询。
(5)学生成绩信息的统计。
(6)模拟用户登录操作。
系统功能模块设计:
图1 系统功能模块
三、系统数据库设计
1、数据需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本的数据、数据结构以及数据处理的流程,组成一份相近的数据字典,为后面的具体设计打下良好的基础。
2、概念结构设计(ER图)
图2 学生实体E-R图
图3
班级实体E-R图
图5 实体和实体之间E-R图
3、逻辑结构设计(规范化)
学生管理系统数据库中各个表格的设计如下所示:
表1 学生基本信息
表2 班级基本信息
表3 课程基本信息
表4 成绩基本信息
4、物理结构设计(索引)
图6 学生信息管理系统数据流程图
学生基本信息:包括学生学号、姓名、性别、出生日期、联系电话、家庭住址等。班级基本信息:包括班级号、班级名、班主任等。
课程基本信息:包括课程编号、课程名称、课程类型、学分等。
学生成绩信息:包括学生学号、课程编号和考试成绩等。
四、详细系统设计
针对此次学生信息管理系统,分为了学生信息管理,班级信息管理,课程信息管理和成绩信息管理界面,分多种功能操作,由于时间原因,简单针对学生信息管理进行了比较详细的功能操作测试,先是通过菜单编辑器实现了多功能布局操作,选取了学生信息进行了窗口功能操作。例如:点击添加学生信息,可以实现添加学生信息功能,并且单独设置了模拟用户登录界面,实现了用户隐私安全性保护数据。
图7 窗口目录的创建
图8 班级信息管理创建
图9 学生信息管理创建
图10 课程信息创建
图11 成绩信息管理创建
图12 工程主窗体的创建
用户登录:
Dim a As String
Dim b As String
Dim str As String
Dim strr As String
str=InStr(Text2.Text,"'")
If str<>0 Then
MsgBox"不能输入非法字符!!",vbCritical+vbOKOnly,"错误" Exit Sub
Else
strr=InStr(Text1.Text,"'")
If strr<>0 Then
MsgBox"不能输入非法字符!!",vbCritical+vbOKOnly,"错误" Exit Sub
End If
End If
a=Trim(Text1)
b=Trim(Text2)
If a=""Then
MsgBox"用户名不能为空!",vbCritical,"错误"
Text1.SetFocus
Text1.SelStart=0
Text1.SelLength=Len(Text1)
Else
Dim r As New ADODB.Recordset
Set r=DataEnvironment1.rsuser
Dim c As String
Static nTryCount As Integer
c="select*from用户登陆where用户名='"&a&"'"
If r.State=adStateOpen Then r.Close
r.Open c
If r.EOF Then
MsgBox"无此用户!请重新登陆!!",vbCritical,"错误"
Text1.SetFocus
Text1.SelStart=0
Text1.SelLength=Len(Text1)
nTryCount=nTryCount+1
If nTryCount>=5 Then
MsgBox"您无权操作本系统!",vbCritical,"错误"
Unload Me
End If
Else
If b=Trim(r.Fields(1))Then
quanxian=Trim(r.Fields(2))
MDIForm1.Show
Unload Me Else
MsgBox"密码错误!请重新登陆!!",vbCritical,"错误" Text2.SetFocus
Text2.SelStart=0
Text2.SelLength=Len(Text2)
nTryCount=nTryCount+1
If nTryCount>=5 Then
MsgBox"您无权操作本系统!",vbCritical,"错误" Unload Me
End If End If
End If End If
图13 系统启动窗体
图14 用户登录窗体
五、系统调试运行
数据库的创建与调试:
1、创建学生信息表
CREATE TABLE [dbo].[student_Info] (
[student_ID] [int] NOT NULL ,
[student_Name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[student_Sex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[born_Date] [datetime] NULL ,
[class_NO] [int] NULL ,
[tale_Number] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[ru_Date] [datetime] NULL ,
[address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[comment] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2、创建班级信息表
CREATE TABLE [dbo].[class_info] (
[class_No] [int] NOT NULL ,
[class_Name] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [director] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[profession] [char] (14) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
3、创建课程信息表
CREATE TABLE [dbo].[class_info] (
[course_No] [int] NOT NULL ,
[course_Name] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [course_Type] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[course_start] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[course_time] [int] NULL ,
[course_score] [int] NULL
) ON [PRIMARY]
GO
4、创建成绩信息表
CREATE TABLE [dbo].[class_info] (
[student_Id] [int] NOT NULL ,
[course_No] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [result] [float] NULL
) ON [PRIMARY]
GO
学生信息管理系统主窗体的创建与调试:
图15 基础工程窗体概览
图16 工程窗体的代码展示
添加学生信息:
图17 添加学生信息窗体
Private Sub From_Load()
Dim rst As ADODB.Recordset
Dim sqlstr As String
Dim MsgText As String
Dim i As Integer
Text1.Text = “20000101”:Text2.Text = “”: Combo1.Text = “男”
Combo2.Text = “200001”:Text5.Text = “2000-01-01”: Text6.Text = “2000-01-01”Text7.Text = “”: Text8.Text = “”: Text9.Text = “”
Combo1.AddItem “男”
Combo1.AddItem “女”
sqlstr = “select from class_Info “
Set rst = QuerySQL(sqlstr,MsgText)
For i = 1 To rst.RecordCount
Combo2.AddItem rst.Fields(0)
Rst.moveNext
Next i
Rst.Close
End Sub
Private Sub Command1_Click()
Dim rst As ADODB.Recordset
Dim sqlstr As String
Dim MsgText As String
If Not Testtxt (Text1.Text) Then
MsgBox “请输入学号!”, vbOKOnly + vbExclamation, “警告”
Text1.SetFocus
Exit Sub
End If
If Not Testtxt (Text2.Text) Then
MsgBox “请输入姓名!”, vbOKOnly + vbExclamation, “警告”
Text2.SetFocus
Exit Sub
End If
If Not Testtxt (Combo1.Text) Then
MsgBox “请选择性别!”, vbOKOnly + vbExclamation, “警告”Combo1.SetFocus
Exit Sub
End If
If Not Testtxt (Combo2.Text) Then
MsgBox “请输入班号!”, vbOKOnly + vbExclamation, “警告”Combo2.SetFocus
Exit Sub
End If
If Not Testtxt (Text5.Text) Then
MsgBox “请输入出生日期!”, vbOKOnly + vbExclamation, “警告”
Text5.SetFocus
Exit Sub
End If
If Not Testtxt (Text6.Text) Then
MsgBox “请输入入校日期!”, vbOKOnly + vbExclamation, “警告”
Text6.SetFocus
Exit Sub
End If
If Not Testtxt (Text7.Text) Then
MsgBox “请输入电话号码!”, vbOKOnly + vbExclamation, “警告”
Text7.SetFocus
Exit Sub
End If
If Not Testtxt (Text8.Text) Then
MsgBox “请输入家庭住址!”, vbOKOnly + vbExclamation, “警告”
Text8.SetFocus
Exit Sub
End If
If Not Testtxt (Text9.Text) Then
MsgBox “请输入备注信息!”, vbOKOnly + vbExclamation, “警告”
Text9.SetFocus
Exit Sub
End If
If Not IsNumeric (Trim(Text1.Text)) Then
MsgBox “请输入数字!”, vbOKOnly + vbExclamation, “警告”
Text5.SetFocus
Exit Sub
End If
sqlstr = “select from class_Info “
student_ID =’” & Trim(Text1.Text) & “’”
Set rst = QuerySQL(sqlstr, MsgText)
If rst.EOF = False Then
MsgBox “学号重复,请重新输入!”, vbOKOnly + vbExclamation, “警告”
rst.Close
Text1.SetFocus
Else
rst.Close
If Not IsDate(Text5.Text) Then
MsgBox “此出生日期应输入格式(yyyy-mm-dd)! ”,
vbOKOnly + vbExclamation, “警告”
Text5.SetFocus
Else
Text5 = Format(Text5, “yyyy-mm-dd”)
If Not IsDate(Text6.Text) Then
MsgBox “入校时间应填日期格式(yyyy-mm-dd)! ”,
vbOKOnly + vbExclamation, “警告”
Text6.SetFocus
Else
Text6 = Format(Text6, “yyyy-mm-dd”)
sqlstr = “select * from student_Info”
Set rst = QuerySQL(sqlstr, MsgText)
rst.AddNew
rst.Fields(0) = Trim(Text1.Text)
rst.Fields(1) = Trim(Text2.Text)
rst.Fields(2) = Trim(Combo1.Text)
rst.Fields(3) = Trim(Text5.Text)
rst.Fields(4) = Trim(Combo2.Text)
rst.Fields(5) = Trim(Text7.Text)
rst.Fields(6) = Trim(Text6.Text)
rst.Fields(7) = Trim(Text8.Text)
rst.Fields(8) = Trim(Text9.Text)
MsgBox “添加学籍信息成功!”, vbOKOnly + vbExclamation, “警告”
rst.Close
End If
End If
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
图18 修改学生信息窗体
图19 查询学生信息窗体