分享

教师信息管理系统

 琥珀D 2022-11-02 发布于四川

摘要

高校教师信息管理是高等院校师资队伍建设工作的一个重要内容,它具有信息量大、操作繁琐等特点。随着现代化高校建设的快速发展,档案管理工作量日益增加,传统的手工操作方式无论从质量还是速度上都难以满足新的工作需要。计算机技术的发展,为数据库的管理与维护提供了方便。此高校教师信息管理系统,实现对教师档案数据的录入、编辑、存档等一系列功能,把办公人员从繁杂的事务性工作中解脱出来,使教师档案管理工作能实现自动化、信息资源化和管理科学化。

1.概述

1.1选题背景

目前国家的教育体制正处在不断改革、创新的阶段,我国教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。教育部为了实现党的十五大所确定的目标与任务,落实科教兴国战略,特制定了《面向21世纪教育振兴行动计划》,其中讲到“开发高质量教育软件,重点建设全国远程教育资源库和若干个教育软件开发生产基地”。因此,各院校迫切需要对自己的现有教务管理系统进行改进和提高,根据国内大学的现在管理模式,结合国际新的思想观念,在校园网络环境下建设先进的、与国际水平接轨的信息化管理平台。提高学校管理工作的现代化水平,推广现代教育技术在教学实践中的运用,促进教育整体质量和办学效益的提高。使之成为学校公共信息服务体系的重要组成部分。在这样的大环境下,开发和完善高校教务信息管理系统是目前各高校的迫切需求。

1.2功能要求

实现部门、职称、职务的基本信息的管理;

实现教师信息的管理; 

实现教师婚姻状况和教育经历的管理; l 

实现教师的奖惩管理; 

创建触发器,实现增添或删除部门人员时自动修改相应部门的员工人数;

创建存储过程根据提交的部门编号,查看该部门的部长;

建立数据库相关表之间的参照完整性约束。

1.3系统功能解决的问题

一:提高管理人员的工作效率。

二:对大量的数据信息进行统筹规划

三:降低处理数据信息时出现的错误率。

四:方便系统的后期维护。

2.需求分析

2.1应用需求分析

90年代中期,由于Internet 的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。高校教职工管理系统在此基础上延伸、扩展,使之上下、内外全面贯通。高教教职工管理系统是在适应市场需求的客观前提下,为了满足各高校管理自己学校所在的教职员信息而开发的。该系统的是终目的是要将各位职员的信息放到网络上,以方便管理。

系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。该系统具备数据库维护功能,及时根据用户需求进行数据的添加、删除、查看等操作。

2.2功能需求分析

根据分析,该管理系统必须具备如下几个功能:

1.能够记录教职工各种基本资料;员工各种信息的输入,包括员工的基本信息,学历信息,婚姻状况信息,职称等

2.系统使用者能够查询信息,能进行对各员工成员的增加以及对于辞退,退休员工的信息删除;

3.保障数据库安全,优化数据库。

4.界面的友好性。

3.概念结构设计

3.1抽象出系统的实体

根据设计高校教师信息管理系统的需要,可以抽象出以下实体:

1.员工信息

2.部门信息

3.奖惩信息

4.薪资信息

3.2设计分E-R图

工资实体属性图

员工实体属性图

部门实体属性图

奖惩实体属性图

3.3全局E-R图

4.逻辑结构设计

将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。现将概念结构设计阶段设计好的基本E-R图转换为关系模型,如下所示:

关系数据模式

员工信息(员工编号,员工姓名,年龄,性别,出生年月,婚姻状态,政治面貌,学历,部门编号,职务,联系方式,备注)  主键:员工编号;  外码:部门编号;

部门信息(部门编号,部门名称,部门人数)  主键:部门编号;

奖惩信息(奖惩编号,员工编号,奖罚时间,奖罚原因,奖罚地点,备注)  主键:奖惩编号,  外码:员工编号;

薪资信息(薪资编号,员工编号,基本工资,福利,奖金,计算方法,实发工资,发放日期),  主键:薪资编号;  外码:员工编号。

5.数据库物理设计与实施

5.1表的创建

根据概念结构设计和逻辑结构的内容,可以将此高校教师信息管理系统设计出四个表,分别为“部门信息表”、“员工信息表”、“薪资信息表”和“奖惩信息表”。具体如下:

5.2部门信息表

列名

数据类型

允许Null值

部门编号

Int

部门信息

varcher(20)

部门人数

Int

sql语句如下:

CREATE TABLE 部门信息表

(

部门编号INT PRIMARY KEY,

部门名称VARCHAR(20) UNIQUE NOT NULL,

部门人数INT CHECK(部门人数>=0) NOT NULL,

)

5.3员工信息表

列名

员工编号

员工姓名

年龄

性别

婚姻状态

政治面貌

学历

部门编号

职务

联系方式

备注

数据类型

Int

varchar(20)

Int

varchar(2)

varchar(4)

varchar(20)

varchar(20)

Int

varchar(20)

varchar(20)

varchar(500)

允许Null值

sql语句如下:

CREATE TABLE 员工信息表

(

员工编号INT NOT NULL PRIMARY KEY,

员工姓名VARCHAR(20) NOT NULL,

年龄INT CHECK(年龄>=1) NOT NULL,

性别VARCHAR(2) CHECK(性别IN ('男','女')) NOT NULL,

婚姻状态VARCHAR(4) CHECK(婚姻状态IN ('已婚','未婚')) NOT NULL,

政治面貌VARCHAR(20) CHECK(政治面貌IN ('清白','团员','党员')) NOT NULL,

学历VARCHAR(20) NOT NULL,

部门编号INT NOT NULL,

职务VARCHAR(20) NOT NULL,

联系方式VARCHAR(11) UNIQUE NOT NULL,

备注VARCHAR(500),

FOREIGN KEY (部门编号) REFERENCES 部门信息表(部门编号)

)

5.4薪资信息表

列名

数据类型

允许Null值

薪资编号

Int

员工编号

Int

基本工资

Int

福利

Int

奖金

Int

计算方法

varchar(50)

实发工资

Int

sql语句如下:

CREATE TABLE 薪资信息表

(

薪资编号INT PRIMARY KEY,

员工编号INT NOT NULL,

基本工资INT CHECK(基本工资>=0) NOT NULL,

福利INT CHECK(福利>=0) NOT NULL,

奖金INT CHECK(奖金>=0) NOT NULL,

计算方法VARCHAR(50) NOT NULL,

实发工资INT CHECK(实发工资>=0), 

FOREIGN KEY(员工编号) REFERENCES 员工信息表(员工编号)

)

5.5奖惩信息表

列名

数据类型

允许Null值

奖惩编号

Int

员工编号

Int

奖惩原因

Varchar(100)

奖惩地点

Varchar(20)

备注

Varchar(500)

sql语句如下:

CREATE TABLE 奖惩信息表

(

奖惩编号INT PRIMARY KEY,

员工编号INT NOT NULL, 

奖罚原因VARCHAR(100) NOT NULL,

奖罚地点VARCHAR(20) NOT NULL,

备注VARCHAR(500),

FOREIGN KEY(员工编号) REFERENCES 员工信息表(员工编号) 

)

6.数据操作要求及实现

6.1 数据查询、更新和删除等操作

查询部门编号为4的员工的基本信息,SQL语句如下:

    select * from 员工信息表 where 部门编号 = 4

更新员工张的年龄为19,SQL语句如下:

  update 员工信息表 set 年龄=19 where 员工姓名='张'

跟新前;

更新后:

查询年龄小于20的员工的基本信息,SQL语句如下:

select * from 员工信息表 where 年龄 < 20

6.2 视图

创建员工基本信息视图,实现查询各个员工的姓名、部门、职务、联系方式、薪资

SQL语句如下:

--视图员工基本信息:

 CREATE VIEW 员工基本信息(员工姓名,部门名称,职务,联系方式,薪资) 

 AS SELECT 员工姓名,部门名称,职务,联系方式,实发工资 

 FROM 员工信息表,部门信息表,薪资信息表 

 WHERE 员工信息表.部门编号=部门信息表.部门编号    

 AND 员工信息表.员工编号=薪资信息表.员工编号

 select * from 员工基本信息

 创建各部门部长基本信息视图,实现查询各个部长的部门编号、部门名称、员工编号、员工名字、薪资。

SQL语句如下:

  --视图:各部门部长信息

  CREATE VIEW 部门部长信息(部门编号,部门名称,员工编号,员工名字) 

  AS SELECT 部门信息表.部门编号,部门名称,员工编号,员工姓名 

  FROM 员工信息表,部门信息表 

  WHERE 员工信息表.部门编号=部门信息表.部门编号    

  AND 员工信息表.职务='部长' 

  select * from 部门部长信息

6.3 触发器

触发器COUNT_STAFF

    向员工信息表插入一条记录时,该员工所在的部门人数加

CREATE TRIGGER COUNT_STAFF

ON 员工信息表

AFTER INSERT

AS

BEGIN

  UPDATE 部门信息表

SET 部门人数=部门人数+1

WHERE 部门编号IN (SELECT 部门编号FROM inserted)

END

insert into 员工信息表 values (7,'田小姐',20,'女','未婚','团员','本科毕业',1,'职员',12222222221,'无');

  添加前;

添加后:

触发器CHECK_DELETE:

删除员工记录时,该员工所在部门人数减。

 CREATE TRIGGER CHECK_DELETE1 

                  ON 员工信息表 

                  FOR DELETE 

                  AS   

                  BEGIN 

                   UPDATE 部门信息表   

                   SET 部门人数=部门人数-1    

                   WHERE 部门编号 IN (SELECT 部门编号 FROM deleted) 

                   END  

 delete from 员工信息表 where 员工姓名 = '刘先生'

删除前:

删除后:

6.4 存储过程

存储过程Find_Minister:

根据提交的部门编号,查看该部门的部长。

-- 创建存储过程

  --存储过程Find_Minister:根据提交的部门编号,查看该部门的部长

  CREATE PROCEDURE Find_Minister 

  @ID INT  

  AS 

  SELECT 部门信息表.部门编号,部门信息表.部门名称,员工信息表.员工编号,员工姓名 

  FROM 员工信息表,部门信息表 

  WHERE 员工信息表.部门编号=@ID       

  AND 员工信息表.职务='部长'and 部门信息表.部门编号=@ID ;

示例

  exec Find_Minister @ID='4'

7.总结

  通过这次的数据库课程设计,我学到了很多实际应用的东西。平时只是一味的学习理论知识,很少会去自己亲手实践做系统,这次的体验让我逐渐了解了怎样去着手做一个系统。

在开始做这个高校教师信息管理系统的时候我们对其用处都不清楚,流程图都画不出来,最后经过慢慢的分析和重复的去尝试,最终把数据流图画了出来,也有了一些成就感。接下来的E-R图,关系逻辑模型都慢慢摸索了出来,并且把平时学的理论知识和上机实践结合在了一起。从做整个系统开始,我发现原来做一个系统是多么的不容易,首先是对整个系统的理解和分析,然后把这个系统的构架想象出来,再把这个构架去填充完整,使其成为一个能够运行的完整的系统。

   通过这次做高校教师信息管理系统,我也发现了很多问题,很多是我们眼高手低,总以为会了,但是实际行动时才知道欠缺了许多东西。当然这次做系统学会了很多,相信对我们以后的学习甚至是工作都有用处。希望今后能有更多的机会去做系统,去亲手实践。当然了,我还要继续努力学习,毕竟学习是没有终点的,更加期待以后的学习。

8.附件

CREATE DATABASE 高校教职工管理

use 高校教职工管理

CREATE TABLE 部门信息表 

( 

部门编号 INT PRIMARY KEY,

部门名称 VARCHAR(20) UNIQUE NOT NULL, 

部门人数 INT CHECK(部门人数>=0) NOT NULL, 

 )

 --插入数据

 insert into 部门信息表 values (1,'党务群团部',1);

 insert into 部门信息表 values (3,'招生就业处',1);

 insert into 部门信息表 values (4,'财务处',1);

 insert into 部门信息表 values (5,'教务处',1);

 insert into 部门信息表 values (2,'人事处',1);

 insert into 部门信息表 values (6,'后勤处',1);  

  select * from 部门信息表

 CREATE TABLE 员工信息表 

 (

  员工编号 INT NOT NULL PRIMARY KEY,

  员工姓名 VARCHAR(20) NOT NULL,

  年龄 INT CHECK(年龄>=1) NOT NULL,

  性别 VARCHAR(2) CHECK(性别 IN ('男','女')) NOT NULL,

  婚姻状态 VARCHAR(4) CHECK(婚姻状态 IN ('已婚','未婚')) NOT NULL, 

  政治面貌 VARCHAR(20) CHECK(政治面貌 IN ('群众','团员','党员')) NOT NULL,

  学历 VARCHAR(20) NOT NULL,

  部门编号 INT NOT NULL,

  职务 VARCHAR(20) NOT NULL,

  联系方式 VARCHAR(11) UNIQUE NOT NULL,

  备注 VARCHAR(500),

  FOREIGN KEY (部门编号) REFERENCES 部门信息表(部门编号) 

  )  

  --插入数据

  insert into 员工信息表 values (1,'张',20,'男','未婚','团员','本科毕业',1,'部长',77777777777,'无');

  insert into 员工信息表 values (2,'徐',20,'男','未婚','团员','本科毕业',2,'部长',12334567898,'无');

  insert into 员工信息表 values (3,'孙',20,'男','未婚','团员','本科毕业',3,'部长',13456789099,'无');

  insert into 员工信息表 values (4,'刘',20,'男','未婚','团员','本科毕业',4,'部长',11111111111,'无');

  insert into 员工信息表 values (5,'单',20,'男','未婚','团员','本科毕业',5,'部长',22222222222,'无');

  insert into 员工信息表 values (6,'李',20,'男','未婚','团员','本科毕业',6,'部长',33333333333,'无');

    select * from 员工信息表

  CREATE TABLE 薪资信息表

  ( 

  薪资编号 INT PRIMARY KEY, 

  员工编号 INT NOT NULL, 

  基本工资 INT CHECK(基本工资>=0) NOT NULL, 

  福利 INT CHECK(福利>=0) NOT NULL, 

  奖金 INT CHECK(奖金>=0) NOT NULL,

  计算方法 VARCHAR(50) NOT NULL, 

  实发工资 INT CHECK(实发工资>=0),   

  FOREIGN KEY(员工编号) REFERENCES 员工信息表(员工编号) 

  )

 --插入数据

  insert into 薪资信息表 values (1,1,9000,500,500,'基本工资+奖金',9500);

    insert into 薪资信息表 values (2,2,8000,500,1000,'基本工资+奖金',9000);

      insert into 薪资信息表 values (3,3,9000,500,800,'基本工资+奖金',9800);

        insert into 薪资信息表 values (4,4,8000,500,500,'基本工资+奖金',8500);

      insert into 薪资信息表 values (5,5,9000,500,500,'基本工资+奖金',9500);

    insert into 薪资信息表 values (6,6,8000,500,600,'基本工资+奖金',8600);

    select * from 薪资信息表 

CREATE TABLE 奖惩信息表 

( 

奖惩编号 INT PRIMARY KEY, 

员工编号 INT NOT NULL,  

奖罚原因 VARCHAR(100) NOT NULL, 

奖罚地点 VARCHAR(20) NOT NULL, 

备注 VARCHAR(500), 

FOREIGN KEY(员工编号) REFERENCES 员工信息表(员工编号) 

)

insert into 奖惩信息表 values (1,1,'工作认真','中央会议室','无');

select *from 奖惩信息表

--视图员工基本信息:

 CREATE VIEW 员工基本信息(员工姓名,部门名称,职务,联系方式,薪资) 

 AS SELECT 员工姓名,部门名称,职务,联系方式,实发工资 

 FROM 员工信息表,部门信息表,薪资信息表 

 WHERE 员工信息表.部门编号=部门信息表.部门编号    

 AND 员工信息表.员工编号=薪资信息表.员工编号

 select * from 员工基本信息

  --视图:各部门部长信息

  CREATE VIEW 部门部长信息(部门编号,部门名称,员工编号,员工名字) 

  AS SELECT 部门信息表.部门编号,部门名称,员工编号,员工姓名 

  FROM 员工信息表,部门信息表 

  WHERE 员工信息表.部门编号=部门信息表.部门编号    

  AND 员工信息表.职务='部长' 

  select * from 部门部长信息

  -- 5、创建存储过程

  --存储过程Find_Minister:根据提交的部门编号,查看该部门的部长

  CREATE PROCEDURE Find_Minister 

  @ID INT  

  AS 

  SELECT 部门信息表.部门编号,部门信息表.部门名称,员工信息表.员工编号,员工姓名 

  FROM 员工信息表,部门信息表 

  WHERE 员工信息表.部门编号=@ID       

  AND 员工信息表.职务='部长'and 部门信息表.部门编号=@ID ;

  exec Find_Minister @ID='4'

  --6、创建触发器

--触发器COUNT_STAFF

--    向员工信息表插入一条记录时,该员工所在的部门人数加.

CREATE TRIGGER COUNT_STAFF 

ON 员工信息表 

AFTER INSERT 

AS  

BEGIN    

UPDATE 部门信息表   

SET 部门人数=部门人数+1    

WHERE 部门编号 IN (SELECT 部门编号 FROM inserted) 

END 

  insert into 员工信息表 values (7,'刘先生',20,'男','未婚','团员','本科毕业',4,'职员',12222222221,'无');

  --触发器CHECK_DELETE:删除员工记录时,该员工所在部门人数减.

                  CREATE TRIGGER CHECK_DELETE1 

                  ON 员工信息表 

                  FOR DELETE 

                  AS   

                  BEGIN 

                   UPDATE 部门信息表   

                   SET 部门人数=部门人数-1    

                   WHERE 部门编号 IN (SELECT 部门编号 FROM deleted) 

                   END  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多