教师信息管理系统
??? 教师管理系统
1 问题描述
1.1 背景
随着我国教育体制改革的深入进行,教育系统得到了前所未有的发展。教师管理正在逐步迈向管理信息现代化。教师信息管理系统是一所院校在各种信息管理中的一部分,是教育部门不可或缺的一部分,对于学校管理者来说是很重要的,所以所设计的系统应该能为管理者提供教师的基本信息管理手段和一些方便的查询方式。作为计算机应用的一部分,使用计算机对教师信息进行管理,具有人工方式所无法比拟的优越性。它方便,精确,简单。
1.2 数据需求
用户的需求具体体现在对各种信息的提供、保存、更新和查询,这就要求数据库能充分满足各种数据的输出和输入。通过对上述系统功能的分析,针对教师信息管理系统的需求总结出下列需求信息:
用户分系统管理员和一般操作员用户
一个机构包括多个部门。
一个部门包括多位教师。
一位教师有一个职称, 一位教师可以教多门课程。
一种职称对应着一种工资
一门课程对应着一种课费
一位老师拿一份工资
经过对上述系统功能的分析和需求总结,设计如下所示的数据项:
管理员信息: 包括用户名和口令。
教师: 包括教师名、教师工号,职称,部门
课程: 包括课程名称、课程号、课费
补助: 包括水电补助、偏远补助、房屋补助、电话补助
部门: 包括机构、部门
工资: 包括基本工资、课费、补助
??2 解决方案
2.1 E-R 模型设计
由上面的数据项,可以设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。对本系统设计以下实体:管理信息实体、教师信息实体、院系(部门)信息实体、课程信息实体,工资信息实体,补助信息实体和课程信息实体。同时也可以得出各实体间的关系。
管理员信息实体E-R图
课程实体流程图
部门实体流程图
2.2.综合E-R图
m
1
n m
n m
1
1
1
1
图2.4综合E-R图
2.2 数据表
根据上面的需求分析教师信息管理系统数据库中各个表中的数据结果如下列表所示,每个表格表示在数据库中的一个表。
用户表
补助表
部门表
工资表
教师表
课程表
职称表
?3? 系统实现
3.1 开发环境
硬件平台:
CPU:AMD 2000+。
内存:1GB
软件平台:
操作系统:Windows xp。
数据库:SQL Server 2000。
应用软件: Delphi 7,access,VB运行环境
分辨率:最佳效果1024×768像素。
3.2系统流程图
根据系统系统流程图可知,管理员有管理教师信息,职称信息,账号管理功能,他可以对教师的个人资料,授课课程,特殊补助,收入汇总进行管理,对该系统进行账号设置和管理。在教师资料中,管理员可以添加,修改,删除教师的相关信息,管理员还可以对教师的授课课程进行删除,添加,修改。教师则只能查看职称信息和自己的收入汇总。
3.3 程序主要功能界面
登陆界面,授课课程有和账号管理模块有同组其他人完成。
1.系统中的菜单包含了(1)教师信息2)职称信息 (3)帐号管理 界面如下:
2.教师个人资料管理模块设计与实现
该模块通过一个列表显示所有教师的基本信息,通过该窗体,管理员可以添加、删除、修改某个教师的基本信息。
显示教师的基本信息
单击“添加”按钮,可以添加一个新的教师基本信息
添加教师信息基本表
单击“修改”按钮,可以添加一个新的教师基本信息
教师个人资料修改基本表
单击“删除”按钮可一删除指定的教师基本信息。并提示删除成功。
删除教师基本信息
4.职称信息管理模块设计与实现
该模块主要实现生活补助信息的管理以及各种工资信息的综合查询。同时也可以对该信息进行添加和删除。操作同上个人资料。
教师生活补助管理界面
5.教师工资查询管理模块设计与实现
通过该模块可以对日常教师各种工资待遇等相关信息进行有序的管理,并便于教师的查询。
教师工资综合查询界面
当输入总收入>3500可得一下结果,还可以按工号,部门,姓名查询,也可以综合查询
3.4程序调试情况
? 为了使系统系统完整性,必须针对系统的各个功能模块进行必要的测试排错,在调试运行过程中,用户可以输入一些实际的数据,来验证系统的各个功能是否已达到预期的要求。经过调试发现了登陆入界面后无法执行查询,程序运行错误;无法执行修改功能,运行界面自动关闭;经过多次修改终于使得各项功能得以实现。
3.5 结论
本系统能对教师信息进行简单的管理,管理员能对教师的个人资料,授课课程,特殊补助进行修改,收入汇总进行管理教师则只能查看职称信息和自己的收入汇总。当然,由于水平和时间有限,本系统的功能还很不完善,同样也存在着很多缺陷。对于系统的管理员而言,除了教师姓名,年龄,职称等信息外,还应该添加教师的详细情况,如联系方式,获奖情况等,还有就是对教师的所有资料进行检索。
?? 结束语
本系统的开发着实花费了一段时间,这次做了这个教师管理系统,虽然系统设计的比较简单,但是对我们来说也是一种挑战,同时也从中收获了很多东西,从系统的整体设计到每一个细小的环节,都有一定的收获,更重要的是对数据库理论知识和软件开发之间的联系有了更进一步的认识,当然也巩固了我们数据库和编程方面的知识。通过本次课程设计,对自己所学的数据库理论用于实践,掌握了在SQL Server 中创建数据库、表、触发器、存储过程等方法。同时这次也懂得了团队合作的作用,通过和队友的不断讨论和探索,最终把该系统完成。
参考文献:
1.赵文涛《数据库系统原理》中国矿业出版社
2.萨师煊,王珊,数据库系统概论(第四版) 高等教育出版社微软
3.贾讽波.杨树青、杨玉顺.数据库应用实例.北京:人民邮电出版社.2006.
4.《Visual Basic 6.0程序设计教程》
5.《 Visual Basic 6.0程序员指南》
6.《VB6开发宝典》
附录:源代码清单
1.主界面源代码:
Private Sub menu31_Click()Private Sub Form_Load()
If Not userlevel = "系统管理员" Then '假如不是系统管理员,就禁用除收入总汇以外的模块
menu11.Enabled = False
menu13.Enabled = False
menu21.Enabled = False
menu31.Enabled = False
End If
End Sub
Private Sub menu11_Click()
person.Show '打开个人模块
End Sub
Private Sub menu12_Click()
End Sub
Private Sub menu13_Click()
course.Show '同理
End Sub
Private Sub menu21_Click()
subsidy.Show '同理
End Sub
Private Sub menu22_Click()
earning.Show '同理
End Sub
setuser.Show '同理
End Sub
2.个人资料源代码
Private Sub Command1_Click(Index As Integer)
person_add.Show
End Sub
Private Sub Command2_Click(Index As Integer)
person_update.Show
End Sub
Private Sub Command3_Click(Index As Integer)
sql = "delete * from 教师表 where 工号='" & Adodc1.Recordset.Fields("工号") & "'"
exesql (sql) '删除选定工号在教师表的信息
sql = "delete * from 职称表 where 工号='" & Adodc1.Recordset.Fields("工号") & "'"
exesql (sql) '删除选定工号在职称表的信息
Adodc1.Refresh '更新
MsgBox "删除成功", vbOKOnly + vbExclamation, "信息提示" '提示删除成功
End Sub
Private Sub Command4_Click(Index As Integer)
person_view.Show
End Sub
Private Sub Command5_Click()
Unload Me '关闭本活动窗口
End Sub
3.修改个人资料源代码
Private Sub Command1_Click()
sql = "update 教师表 set 年龄='" & Text3.Text & "' where 工号='" & Text1.Text & "'"
exesql (sql)
sql = "update 职称表 set 职称='" & Combo1.Text & "',部门='" & DataCombo1.Text & "' where 工号='" & Text1.Text & "'"
exesql (sql)
MsgBox "修改成功", vbOKOnly + vbExclamation, "信息提示"
person.Adodc1.Refresh
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
'初始化职称菜单
Combo1.AddItem "助教"
Combo1.AddItem "讲师"
Combo1.AddItem "副教授"
Combo1.AddItem "教授"
'显出选定工号对应的性别,年龄,姓名
Text1.Text = person.Adodc1.Recordset.Fields("工号")
Text2.Text = person.Adodc1.Recordset.Fields("姓名")
Text3.Text = person.Adodc1.Recordset.Fields("年龄")
Text4.Text = person.Adodc1.Recordset.Fields("性别")
Dim mrc As ADODB.Recordset
sql = "select * from 职称表 where 工号='" & person.Adodc1.Recordset.Fields("工号") & "'"
'查询对应工号的职称,部门
Set mrc = exesql(sql) '执行并返回
'显出选定工号对应的的职称,部门
Combo1.Text = mrc.Fields("职称")
DataCombo1.Text = mrc.Fields("部门")
mrc.Close '关闭Recordset对象
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
4补助源代码
Private Sub Command1_Click()
subsidy_add.Show
End Sub
Private Sub Command2_Click()
sql = "delete * from 补助表 where 职称='" & Adodc1.Recordset.Fields("职称") & "'"
'删除选定的职称的信息
exesql (sql) '执行
Adodc1.Refresh '更新
MsgBox "删除成功", vbOKOnly + vbExclamation, "信息提示" '提示删除成功
End Sub
Private Sub Command3_Click()
Unload Me '关闭本活动窗口
End Sub
5.添加补助代码:
Private Sub Command1_Click()
If Val(Text1.Text) = 0 Or Val(Text2.Tex) = 0 Or Val(Text3.Text) = 0 Or Val(Text4.Text) = 0 Or Val(Text5.Text) = 0 Then
'保证补助的各种类型都是数值型
MsgBox "工资和补助必须是数值型", vbOKOnly + vbExclamation, "信息提示" '出现不是数值型的时候,报错
Else
If Combo1.Text = "" Then '禁止职称是空的情况
MsgBox "职称不得为空", vbOKOnly + vbExclamation, "信息提示"
Else
Dim mrc As ADODB.Recordset
sql = "select * from 补助表 where 职称='" & Combo1.Text & "'"
'查询选定的职称是否已经存在
Set mrc = exesql(sql)
If mrc.RecordCount = 0 Then
'如果不存在
sql = "insert into 补助表 values('" & Trim(Combo1.Text) & "','" & Trim(Text5.Text) & "','" & Trim(Text1.Text) & "','" & Trim(Text2.Text) & "','" & Trim(Text3.Text) & "','" & Trim(Text4.Text) & "')"
'插入新的补助信息
exesql (sql)
subsidy.Adodc1.Refresh '更新
MsgBox "添加成功", vbOKOnly + vbExclamation, "信息提示" '提示插入成功
Unload Me
Else
MsgBox "该职称已经添加过,请删除后再添加", vbOKOnly + vbExclamation, "信息提示"
'如果选定的职称已经存在,报错
End If
End If
End If
End Sub
Private Sub Command2_Click()
Unload Me '关闭
End Sub
Private Sub Form_Load()
'初始化职称信息
Combo1.AddItem ("讲师")
Combo1.AddItem ("副教授")
Combo1.AddItem ("教授")
End Sub
6.查询条件源代码
Private Sub Command2_Click() '设置查询条件
If (Trim(Text4.Text) <> "" And Combo1.Text = "") Or (Trim(Text4.Text) = "" And Combo1.Text <> "") Then
'当分数条件设置不完整的时候,退出
MsgBox "分数条件设置不完整", vbOKOnly, "信息提示"
Exit Sub
End If
condstr = "" '条件表达式
If Trim(Text1.Text) <> "" Then
If condstr = "" Then
condstr = "工资表.工号 like '" + Trim(Text1.Text) + "'"
Else
condstr = condstr + " and 工资表.工号 like '" + Trim(Text1.Text) + "'"
End If
End If
'如果工号信息不为空,就把工号信息添加到工资表当
If Trim(Text2.Text) <> "" Then
If condstr = "" Then
condstr = "姓名 like '" + Trim(Text2.Text) + "'"
Else
condstr = condstr + " and 姓名 like '" + Trim(Text2.Text) + "'"
End If
End If
'如果姓名信息不为空,就把工号信息添加到工资表当中
If Trim(Text4.Text) <> "" Then
If condstr = "" Then
condstr = "工资总汇 " + Trim(Combo1.Text) + Trim(Text4.Text)
Else
condstr = condstr + " and 工资总汇 " + Trim(Combo1.Text) + Trim(Text4.Text)
End If
End If
'如果工资总汇信息不为空,就把工号信息添加到工资表当中
If Trim(Text3.Text) <> "" Then
If condstr = "" Then
condstr = "部门 like '" + Trim(Text3.Text) + "'"
Else
condstr = condstr + " and 部门 like '" + Trim(Text3.Text) + "'"
End If
End If
'如果部门信息不为空,就把工号信息添加到工资表当中
If condstr <> "" Then '当查询条件不为空的时候
Adodc1.RecordSource = "select 工资表.工号,教师表.姓名,基本工资,课费,补助,工资总汇 from 教师表,职称表,工资表 where " + condstr + " and 教师表.工号=职称表.工号 and 职称表.工号=工资表.工号"
Adodc1.Refresh
Else '当查询条件为空时候
MsgBox "请输入查询条件", vbOKOnly, "信息提示"
End If
End Sub
Private Sub Form_Load()
'初始化总收入的判断条件
Combo1.AddItem (">")
Combo1.AddItem ("<")
Combo1.AddItem ("=")
Call deldata("工资表") '删除工资表的所有信息,为下面的工作做准
Dim mrc As ADODB.Recordset
sql = "select 工号,sum(基本课费) as 课费 from 课程表 Group by 工号"
'对工号进行分组,分组后,对每个人的基本课费进行相加的运算
Set mrc = exesql(sql)
'通过循环把得到的基本课费和工号插入到工资表
For i = 1 To mrc.RecordCount
sql = "insert into 工资表 values('" & mrc.Fields("工号") & "',0,'" & mrc.Fields("课费") & "',0,0)"
'插入对于工号的课费
exesql (sql)
mrc.MoveNext
Next
mrc.Close
Dim mrc2 As ADODB.Recordset
sql = "select 教师表.工号 from 教师表 where 教师表.工号 not in (select 工资表.工号 from 工资表)"
'找出那些没有任何任教课程的教师
Set mrc2 = exesql(sql)
'把那些没有任何任教课程的教师的基本课费置0,同时插入到工资表中
For i = 1 To mrc2.RecordCount
sql = "insert into 工资表 values('" & mrc2.Fields("工号") & "',0,0,0,0)"
exesql (sql)
mrc2.MoveNext '跳到下一条记录
Next
mrc2.Close
Dim mrc3 As ADODB.Recordset
sql = "select 工资表.工号,补助表.基本工资,(水电补助+偏远补助+房屋补助+电话补助) as 补助 from 工资表,职称表,补助表 where 工资表.工号=职称表.工号 and 职称表.职称=补助表.职称"
'把工资表中的补助和对应的职称的基本工资找出
Set mrc3 = exesql(sql)
For i = 1 To mrc3.RecordCount
sql = "update 工资表 set 基本工资='" & mrc3.Fields("基本工资") & "',补助='" & mrc3.Fields("补助") & "',工资总汇=课费+'" & mrc3.Fields("基本工资") & "'+'" & mrc3.Fields("补助") & "' where 工号='" & mrc3.Fields("工号") & "'"
'把工资表中的补助和对应的职称的基本工资更新到工资表中
exesql (sql) '执行
mrc3.MoveNext '跳到下一条记录
Next
mrc3.Close
Adodc1.RecordSource = "select 工资表.工号,教师表.姓名,基本工资,课费,补助,工资总汇 from 工资表,教师表 where 工资表.工号=教师表.工号"
'把工资的各种信息返回到Adodc1里面
Adodc1.Refresh '更新
End Sub
教师信息管理系统.doc