2007年5月15日星期二

数据库课程设计:桐城中学教师信息管理

教师信息管理系统

本课程设计研究对象:教师信息管理系统。
一.需求分析
在当前高中学校,教职人员数量增多、职责细化,无论对管理全校职员的领导,还是普通教职工,在工作中都会遇到对教职人员信息的管理和查询。如果全部采用传统的纸张档案,不仅费时费力,效果也不是很好,尤其共享性、时效性很差。采用网络化管理方案,能够方便每个人对信息的需求,而且随着教职工的变动,能够从终端及时了解准确的信息。因此,本人通过动态网页设计技术和数据库技术制作了教师人事管理系统的一个实例——桐城中学教职工信息管理系统。
二.系统流程
  本系统运行在IIS(Internet信息服务)上,所以在运行本系统前请务必确保您的操作系统中安装好了IIS,并在IIS中做相应的配置。
教职工信息管理系统是一个功能较全面的数据库管理系统。
管理系统的流程如下,特定用户登录本系统时,系统会要求输入帐号和密码。


(图一)
本系统分两种登陆方式:普通用户和管理员。
在系统开发时必须创建至少一个管理员用户;其他用户包括新的管理员用户可以在开发时创建,也可以通过管理员进入系统后添加。
本系统两种登陆方式界面相同,确认登陆后,系统会自动识别登陆身份,并给出操作权限提示。
进入主界面后,本管理系统提供了丰富的功能对教师信息进行管理。
管理员用户除比普通用户多了添加、删除其他用户记录,发布公告外,其他功能基本相同。为介绍简洁,现以管理员身份使用过程来描述本系统。
成功登陆后,就可以从网页顶端的超级链接完成各种操作。
(图二)
教师查询部分

  此部分是提供学校所有员工的一些常用的信息,供所有人快速查询功能。这些查询包括:
(图三)
可对查询方式进行设定,设计了4个常用的查询字段。
选择“且”,表示4个字段要同时满足;“或”表示4个字段只需满足1个即可。选择“包含”,表示是模糊匹配查询;“不包含”表示去除关键字后的模糊匹配查询。
按“查询”按钮确定查询,“重置”按钮晴空重填。
“添加”超级链接是管理员用户才可以看到的。点击后可进入录入新人员信息的页面。

2考勤查询部分

此部分是个人查询部分。进入后只可对自己的考勤信息进行查询。
(图四)
通过选择起止时间,可以查询到用户考勤信息。

3.工资管理部分

 此部分首先对所有用户是查看自己的当月工资细目和个人进帐的账号。对于管理员,可以增加工资管理的功能。
(图五)
“修改”按钮可以让所有用户更改自己的进帐帐号。

 4.项目管理部分

  是个人查询参加学校启动的一些项目的部分,列出了最近参加的项目信息。管理员用户还可以发布项目,同时录入参加人员的信息。
(图五)
  当用户需要离开时,只须点击[退出]按钮就能登出系统。

三.系统数据库结构
教师信息管理系统采用的数据库是Microsoft SQL Server 2000 数据库。数据库和日志保存在站点目录/DaTa下。

  数据库中共存有9张数据表,使用Microsoft SQL Server 2000的企业管理器画出的关系图如下:

各表的具体设计样式如下:

1.教职工基本信息表(jibenxinxi,共12个字段)
字段名
字段类型
说明
zhigonghao
CHAR(4)
教职工编号,最多4个字符并且不能重复。
xingmin
CHAR(8)
员工姓名,最多8个字符。
xingbie
CHAR(2)
性别,最多2个字符。
zhengzhimianmao
CHAR(8)
政治面貌,最多8个字符。
shoukehao
CHAR(3)
若是教师,为所授课程编号,外码。
zhichenghao
CHAR(2)
若是教师,为其职称编号,外码。
bumenhao
CHAR(2)
所在部门,外码。
Cj_xmhao
CHAR(5)
若参加了项目,为参加项目号,外码。
chushengriqi
SMALLDATE
出生日期。
jinxiaoriqi
SMALLDATE
进校日期。
xueli
CHAR(4)
学历。
biyeyuanxiao
CHAR(20)
毕业院校。
  此表存放教职工基本信息,教师查询主要从此表查询,并通过外码与其他表进行连接查询,给出完整信息。

课程信息表(kecheng,共2个字段)


字段名
kechenghao
Kechengming
字段类型
CHAR(3)
CHAR(20)
说明
课程编号,主键
课程名称
此表存放课程信息,供jibenxinxi表通过外码shoukehao查询对应的课程名称。

3.职称信息表(zhicheng,共2个字段)
字段名
zhichenghao
zhichengming
字段类型
CHAR(2)
CHAR(4)
说明
职称编号,主键
职称名称
同kecheng表类似,此表存放职称信息,供jibenxinxi表通过外码zhichenghao查询对应的职称名称。

4.部门信息表(bumen,共3个字段)
字段名
bumenhao
bumenming
bmzhurenhao
字段类型
CHAR(2)
CHAR(10)
CHAR(4)
说明
部门编号,主键
部门名称
部门主任职工号
同kecheng表类似,此表存放部门信息,供jibenxinxi表通过外码bumenhao查询对应的部门名称,另外在查看部门信息时,还可以知道该部门主任的职工编号。

5.项目信息表(xiangmu_info,共8个字段)
字段名
字段类型
说明
xiangmuHAO
CHAR(5)
项目编号,最多5个字符并且不能重复。
xiangmuming
CHAR(16)
项目名称,最多16个字符。
start_date
smalldatetime
项目启动日期。
plan_date
smalldatetime
计划完成日期。
end_date
smalldatetime
实际完成日期。
maxperson
int
参加该项目的最大人数。
zuzhang
CHAR(8)
组长。
beizhu
TEXT(16)
项目说明。
此表存放了项目的详细资料,“项目管理”主要应用此表的信息。Jibenxinxi通过外码cj_xmhao连接此表。

6.考勤信息表(kaoqin_info,共5个字段)
字段名
字段类型
说明
riqi
smalldatetime
记录日期,可以重复。
leixing
CHAR(10)
考勤类型。
shichang
smallint
时长。
luruzhe
CHAR(8)
录入者。
zhigonghao
CHAR(4)
考勤对象职工号。
此表存放了考勤的详细信息,“考勤查询”主要应用此表的信息。

7.工资信息表(gongzi,共9个字段)

字段名
字段类型
说明
zhigonghao
CHAR(4)
工资纪录对象职工号。
jibengongzi
smallmoney
基本工资。
jiangjin
smallmoney
奖金。
kouchu
smallmoney
罚款。
shuilu
float
个人所得税。
fafang
smallmoney
实际发放。
shangcijieyu
smallmoney
上次结余。
shengyu
smallmoney
累积剩余。
js_date
smalldatetime
本次结算日期。
此表存放了教职工工资的详细信息,“工资管理”的“工资细目”主要应用此表的信息。

8.银行账号信息表(bank_info,共4个字段)
字段名
字段类型
说明
zhigonghao
CHAR(4)
银行纪录对象职工号。
bankTYPE
CHAR(12)
银行类型。
kaihuming
CHAR(10)
开户名。
bankID
CHAR(15)
银行账号。
此表存放了教职工银行账号的详细信息,“工资管理”的“银行账号”主要应用此表的信息。

9.网站用户信息表(user_log,共7个字段)
字段名
字段类型
说明
zhigonghao
CHAR(4)
用户纪录对象职工号。
logID
CHAR(10)
账号名。
pwd
CHAR(10)
密码。
logIN
SMALLDATETIME
登陆时间。
logOUT
SMALLDATETIME
退出时间。
logTIMES
INT
登陆次数。
admin
BIT
是否事管理员。
此表存放了系统用户的详细信息,登陆系统时,学要从此表中查寻用户并判断权限。

四.系统功能实现的原理
教师信息管理系统是基于web的一个人事管理系统。基于Web的好处是,它支持多用户操作,具有很强的共享性和时效性。教师信息管理系统采用ASP+HTML语言编写,数据库基于Microsoft SQL Server 2000 ,系统利用ADO连接数据库。下面分别介绍系统各主要功能部分的原理。

1. 系统流程图





教师查询
考勤查询
工资管理
项目管理
退出
首页登陆
登陆失败
普通登陆
管理登陆
2.首页登陆系统

当系统启动后,用户浏览器开始下载登陆页面index.asp,要求用户输入帐号和密码(如图一)。当用户点击登陆后,系统把用户输入的帐号和密码通过Form(表单)回传给Server端站点根目录下的login.asp文件,此文件通过ADO连接数据库,查询库中是否存在此用户,如果存在就继续向后执行,否则发送一个错误提示信息并且文件运行中止。其关键代码如下:



上面的关键代码中,
是每个asp文件开始的第一行,它表示该asp文件的寄主语言是VBScript。
Set conn=server.CreateObject("Adodb.Connection") 表示建立与数据库的一个连接conn.
Path="driver={SQLServer};server=(local);uid=sa;pwd=willbetter;database=db_teacher" 指定数据库的驱动程序、位置、用户名和密码。
Set rs = Server.CreateObject("ADODB.Recordset")  表示建立一个数据记录集对象rs,用来存储从数据空中查询到的结果集合。
以上代码在系统设计中用到很多。另外可将与数据库连接的代码保存为一个conn.asp文件。在需要建立数据连接时候,只要在代码开始前加头文件


Method1是字符串变量,一般只有两种取值“or”、“and”,从而实现SQL查询时多个条件的满足方式。
Method2也是字符串变量,取值“like”、“unlike”,SQL查询时定义的匹配方式。
对于管理员用户,可以看到“添加”链接并进入添加记录页面addteaher.asp。
添加各项最好填完整,其中加“*”项是必须填写的。显然,此处也只是表单,实现具体功能的是addinto.asp。关键代码如下:




添加记录最为担心的是添加重复纪录。本系统主要在添加记录前首先对数据库中进行查找,若找到则提示“该职工号已经分配,请重新分配!”;若没有找到则向库中插入新纪录,使用的是标准SQL插入语句。格式为:
INSERT INTO [TABLE](column1,column2…column) VALUES(V1,V2,…Vn)
查询到教师信息如下图所示:
点击姓名,进入详细资料页面如下:
此部分列出了所查教职工的详细信息。管理员用户还可以看到“删除”链接。点击后,就可以删除当前纪录。实现的关键代码如下:


删除基本信息纪录的同时,也删除了用户的登陆权限,实际上是从两个表(jibenxinxi
,user_log)中执行了删除语句。使用的也是标准SQL删除语句。格式如下:DELETE FROM [table_name] WHERE [conditions]
管理员用户还可以点击“修改”,进入纪录修改页面如下图:
可以发现,它和添加的页面非常相似。所不同的是,它显示了当前所修改的记录的职工号。其他操作同添加记录相同。此出也是表单,完成修改功能的动态页面也是添加时的处理页面addinto.asp。实现添加的代码如下:
添加记录的代码

使用标志变量Modify来区分是添加处理还是修改处理。Modify=“修改”是由修改表单传递过来的。
由于本系统支持多用户操作,当多用户同时去修改数据库时可能会产生错误(比如二个用户同时修改同一条记录时,到底按谁的修改结果为准呢?),所以当系统准备向数据库里更新、删除、插入记录时,我们需要系统暂时对数据库进行锁定(对数据库的独占),当操作完成后需要立即解除锁定。因此,在上述的关键代码中,当系统准备插入记录到数据库时,需要application.lock()对数据库进行锁定,操作完成后,用application.unlock()进行解锁,最后关闭与数据库的连接并且释放资源,显示添加成功的提示。

3.2 考勤查询模块
当我们需要查看自己近来考勤信息时,只需点击[考勤查询]进入查询界面。考勤查询页为用户提供了时间段查询方式。
进入考勤查询页后,用户只要从时间下拉框中设定查询起讫时间,就可以从数据库中查询该时间段的考勤详细信息,并显示记录条数如图(3)。

查询实现的关键代码如下:



日期处理是比较容易出错的地方。首先要给年月日字符串连接是加上“-”,当接收的不是数字串时,将它默认为“1900-1-1”的虚假日期。记录次数可以用RECORDSET对象中的RECORDECOUNT方法得到。多条记录的显示输出使用循环while…wend,并设置好指针的位置。

3.3 工资管理模块
用户要想查看自己最近的工资发放信息,可以点击[工资管理]。系统自动识别用户并列出工资细目,以及登记的银行帐号,如上图(4)。
本页面实际上执行了对gongzi,bank_info两个表的查询。关键代码如下:

工资细目查询的实现:
 

如果用户还没有建立工资的记录,则查询的结果将此项全部置空。查询到时,用变量存储,然后进行计算:
应得工资 yd=(rs("jibengongzi")+rs("jiangjin")-rs("kouchu"))*(1-rs("shuilu"))
累积结余 ljjy=yd-shf。

银行帐号信息查询的实现:
set rs1=server.CreateObject("adodb.recordset")
sql1="select * from bank_info where zhigonghao=(select zhigonghao from user_log where logID="
sql1=sql1&"'"&session("logID")
sql1=sql1&"')"
rs1.open sql1,conn
if rs1.eof then
khm="无"
banktype="无"
zhh="无"

同样,如果用户没有参加任何项目,则查询的结果将此项全部置空;查询到时,存储到变量以供输出。

至此,系统的主要功能模块介绍结束。

4、退出系统

本系统是对用户权限有很大要求的系统。非本校教职工无法进入系统,非管理员用户不能添加、修改、删除操作。
用户身份的识别主要在登陆时用SESSION对象保持。以后的操作都要先经过与SESSION保持的内容进行检查才能进行。所以退出系统,只要把SESSION对象保持的内容释放掉即可。同时完成将退出系统的时间保存到数据库user_log表中。代码如下:


退出系统保存退出时间代码




五.系统的总述
桐城中学教职工信息管理系统已可以基本实现对教职工信息的管理,也方便个人用户的工作需要,系统具有一定的信息保密性。系统采用数据库是SQL SERVER 2000,是一个能处理大量数据的RDBMS产品,可以满足更大的数据管理。

另外教师信息管理系统仍然存在需要改进的地方。添加记录时,只能一条一条地登记,如果一次可以批量地登记,则能够提高管理的效率。事先设计的汇总功能并没有在后来实现。还有后面的三个模块“考勤管理”、“工资管理”、“项目管理”都没有具体增加管理员的添加、修改、删除操作。系统中的连接查询过于平凡,影响查询速率,如果在数据库设计阶段建立几个常用的视图,将会大大提高查询速率,也会缩短代码长度。
总之,通过设计教师信息管理系统,使我深入了解到数据库应用的重要性,进一步了解到数据库结构分析与设计,为我们以后编写大型应用软件打下了良好的基础。

1 条评论:

匿名 说...

好长啊.
又没有图片.
不过还不错,值得借鉴!