当前位置:   article > 正文

单位人事管理系统(数据库课设)_某单位人事管理系统 实现部门、职务、职称等信息的管理; 实现职工信息的管

某单位人事管理系统 实现部门、职务、职称等信息的管理; 实现职工信息的管

1.课设要求描述

●实现部门、职务、职称等信息的管理;

●实现职工信息的管理;

●实现职工学习经历和任职经历的管理;

●实现职工家庭关系的管理;

●实现奖惩信息的管理;

创建存储过程查询个部门各种职称的职工数量;

创建视图查询各职工的工号、姓名、部门、职务信息;

创建触发器当增加、删除职工和修改职工部门信息时自动修改相应部门的职工人数;

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

2.制作思路及基础讲解

  此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之前只学过Java,MySQL/SQLServer。所以此项目没有前端界面,只通过命令行的形式来操作该系统,制作思路:首先是数据库作为存储数据的地方,编写根据课设要求编写好对应的建表语句和存储过程,视图,触发器等。然后编写好对应系统的Java代码,最后通过JDBC将Java代码与数据库连接起来。

  部分学生可能学的比较浅,不理解mysql,sqlserver,java,c等一堆名词之间的含义。之前有同学找我做过这类似的课设。问的问题都比较抽象,例如用mysql做一个系统之类的。在此简单说一下我对于这些的理解,mysql,sqlserver都是数据库的一种,只不过是外国的所以都是用英文表示,大部分上课不听的同学看到这一堆英文都会比较懵,其实只需简单把数据库(mysql,SQLServer)理解成存储数据的地方,而java,c等语言是用来编写系统逻辑功能的代码。当然在数据库中的存储过程或者触发器什么的,这些功能也能在代码编程语言中通过特定的逻辑实现类似的功能,只不过我们在数据库中写好的话,免去了Java中代码的编写量,并且查询时速度会更快。

3.使用工具及语言详解

  不同的学校要求不同,有的是sqlserver,有的是mysql,但其实这两者的区别在我看来区别不大,大部分的语句格式都是一样的,所以我选择了我熟悉的一种,mysql来进行编写。在语言方面,我大一的时候学过c,但是当时没有认真听,后来也慢慢都忘了,大二时学了Java,并且之后又系统性的学了一遍,所以选择来用Java语言编写。对于编译器我使用的是IDEA,版本随意,这个不影响,但需要注意IDEA不是免费的,可以去试用30天,也可以自行网上找方法安装破解版。数据库可视化工具使用的是Navicat,这个工具同样也不是免费的,但提供14天试用期,有长期需求也需要各位自行找破解版。

PS:这里又提到两个新名词,IDEA和Navicat,这不是编程语言,而是工具的名字,大家需要慢慢熟悉这些名词,简单来说就是他能让你的编程之路变得更顺畅,提供了可视化的界面,不需要一直在黑窗口中输入代码。

4.数据库建表代码(完整数据库文件请到主页资源处下载)

--职务表

  1. CREATE TABLE Positions (
  2.     PositionID INT AUTO_INCREMENT PRIMARY KEY,
  3.     PositionName VARCHAR(255) NOT NULL,
  4.     PositionDescription TEXT
  5. );

--职工表

  1. CREATE TABLE Employees (
  2.     EmployeeID INT AUTO_INCREMENT PRIMARY KEY,
  3.     Name VARCHAR(255) NOT NULL,
  4.     Gender ENUM('Male', 'Female') NOT NULL,
  5.     BirthDate DATE NOT NULL,
  6.     HireDate DATE NOT NULL,
  7.     DeptID INT,
  8.     PositionID INT,
  9.     TitleID INT,
  10.     FOREIGN KEY (DeptID) REFERENCES Departments(DeptID),
  11.     FOREIGN KEY (PositionID) REFERENCES Positions(PositionID),
  12.     FOREIGN KEY (TitleID) REFERENCES Titles(TitleID)
  13. );

--任职经历表

  1. CREATE TABLE Experiences (
  2.     ExperienceID INT AUTO_INCREMENT PRIMARY KEY,
  3.     EmployeeID INT,
  4.     CompanyName VARCHAR(255) NOT NULL,
  5.     PositionName VARCHAR(255),
  6.     StartWorkDate DATE,
  7.     EndWorkDate DATE,
  8.     FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
  9. );

--家庭关系表

  1. CREATE TABLE FamilyRelations (
  2.     FamilyRelationID INT AUTO_INCREMENT PRIMARY KEY,
  3.     EmployeeID INT,
  4.     RelationType VARCHAR(255) NOT NULL,
  5.     FamilyMemberName VARCHAR(255) NOT NULL,
  6.     FamilyMemberBirthDate DATE,
  7.     FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
  8. );

--创建创建存储过程查询个部门各种职称的职工数量;

  1. CREATE PROCEDURE GetDepartmentTitleCounts()
  2. BEGIN
  3. SELECT
  4. d.DeptName,
  5. t.TitleName,
  6. COUNT(*) AS EmployeeCount
  7. FROM
  8. Employees e
  9. JOIN
  10. Departments d ON e.DeptID = d.DeptID
  11. JOIN
  12. Titles t ON e.TitleID = t.TitleID
  13. GROUP BY
  14. d.DeptName, t.TitleName
  15. ORDER BY
  16. d.DeptName, t.TitleName;
  17. END

--创建视图查询各职工的工号、姓名、部门、职务信息;

  1. CREATE VIEW EmployeeDetails AS
  2. SELECT
  3.     e.EmployeeID AS 工号,
  4.     e.Name AS 姓名,
  5.     d.DeptName AS 部门,
  6.     p.PositionName AS 职务
  7. FROM
  8.     Employees e
  9. JOIN
  10.     Departments d ON e.DeptID = d.DeptID
  11. JOIN
  12.     Positions p ON e.PositionID = p.PositionID;

--删除职工时的触发器

  1. CREATE TRIGGER AfterDeleteTrigger
  2. AFTER DELETE ON Employees
  3. FOR EACH ROW
  4. BEGIN
  5.     UPDATE Departments SET EmployeeCount = EmployeeCount - 1
  6.     WHERE DeptID = OLD.DeptID;
  7. END;

--修改职工部门信息时的触发器

  1. CREATE TRIGGER AfterUpdateTrigger
  2. AFTER UPDATE ON Employees
  3. FOR EACH ROW
  4. BEGIN
  5.     -- 减少原部门的职工人数
  6.     UPDATE Departments SET EmployeeCount = EmployeeCount - 1
  7.     WHERE DeptID = OLD.DeptID;
  8.     -- 增加新部门的职工人数
  9.     UPDATE Departments SET EmployeeCount = EmployeeCount + 1
  10.     WHERE DeptID = NEW.DeptID;
  11. END;

5.Java代码思路及结构

  设计到数据库,那就必然离不开jdbc,他是连接Java代码和数据库的一种工具,在编写Java代码时,我将其分为5个包,分别是config(数据库配置类),dao(编写sql语句层),entity(实体类),service(服务层),util(工具包)。具体后续的编码思路可以私信,内容过多不在详细赘述。

6.效果运行实例

附带源码任务书,数据库文件,需要后台私信

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/887792
推荐阅读
相关标签
  

闽ICP备14008679号