赞
踩
●实现部门、职务、职称等信息的管理;
●实现职工信息的管理;
●实现职工学习经历和任职经历的管理;
●实现职工家庭关系的管理;
●实现奖惩信息的管理;
●创建存储过程查询个部门各种职称的职工数量;
●创建视图查询各职工的工号、姓名、部门、职务信息;
●创建触发器当增加、删除职工和修改职工部门信息时自动修改相应部门的职工人数;
●建立数据库相关表之间的参照完整性约束。
此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之前只学过Java,MySQL/SQLServer。所以此项目没有前端界面,只通过命令行的形式来操作该系统,制作思路:首先是数据库作为存储数据的地方,编写根据课设要求编写好对应的建表语句和存储过程,视图,触发器等。然后编写好对应系统的Java代码,最后通过JDBC将Java代码与数据库连接起来。
部分学生可能学的比较浅,不理解mysql,sqlserver,java,c等一堆名词之间的含义。之前有同学找我做过这类似的课设。问的问题都比较抽象,例如用mysql做一个系统之类的。在此简单说一下我对于这些的理解,mysql,sqlserver都是数据库的一种,只不过是外国的所以都是用英文表示,大部分上课不听的同学看到这一堆英文都会比较懵,其实只需简单把数据库(mysql,SQLServer)理解成存储数据的地方,而java,c等语言是用来编写系统逻辑功能的代码。当然在数据库中的存储过程或者触发器什么的,这些功能也能在代码编程语言中通过特定的逻辑实现类似的功能,只不过我们在数据库中写好的话,免去了Java中代码的编写量,并且查询时速度会更快。
不同的学校要求不同,有的是sqlserver,有的是mysql,但其实这两者的区别在我看来区别不大,大部分的语句格式都是一样的,所以我选择了我熟悉的一种,mysql来进行编写。在语言方面,我大一的时候学过c,但是当时没有认真听,后来也慢慢都忘了,大二时学了Java,并且之后又系统性的学了一遍,所以选择来用Java语言编写。对于编译器我使用的是IDEA,版本随意,这个不影响,但需要注意IDEA不是免费的,可以去试用30天,也可以自行网上找方法安装破解版。数据库可视化工具使用的是Navicat,这个工具同样也不是免费的,但提供14天试用期,有长期需求也需要各位自行找破解版。
PS:这里又提到两个新名词,IDEA和Navicat,这不是编程语言,而是工具的名字,大家需要慢慢熟悉这些名词,简单来说就是他能让你的编程之路变得更顺畅,提供了可视化的界面,不需要一直在黑窗口中输入代码。
--职务表
- CREATE TABLE Positions (
-
- PositionID INT AUTO_INCREMENT PRIMARY KEY,
-
- PositionName VARCHAR(255) NOT NULL,
-
- PositionDescription TEXT
-
- );
--职工表
- CREATE TABLE Employees (
-
- EmployeeID INT AUTO_INCREMENT PRIMARY KEY,
-
- Name VARCHAR(255) NOT NULL,
-
- Gender ENUM('Male', 'Female') NOT NULL,
-
- BirthDate DATE NOT NULL,
-
- HireDate DATE NOT NULL,
-
- DeptID INT,
-
- PositionID INT,
-
- TitleID INT,
-
- FOREIGN KEY (DeptID) REFERENCES Departments(DeptID),
-
- FOREIGN KEY (PositionID) REFERENCES Positions(PositionID),
-
- FOREIGN KEY (TitleID) REFERENCES Titles(TitleID)
-
- );

--任职经历表
- CREATE TABLE Experiences (
-
- ExperienceID INT AUTO_INCREMENT PRIMARY KEY,
-
- EmployeeID INT,
-
- CompanyName VARCHAR(255) NOT NULL,
-
- PositionName VARCHAR(255),
-
- StartWorkDate DATE,
-
- EndWorkDate DATE,
-
- FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
-
- );

--家庭关系表
- CREATE TABLE FamilyRelations (
-
- FamilyRelationID INT AUTO_INCREMENT PRIMARY KEY,
-
- EmployeeID INT,
-
- RelationType VARCHAR(255) NOT NULL,
-
- FamilyMemberName VARCHAR(255) NOT NULL,
-
- FamilyMemberBirthDate DATE,
-
- FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
-
- );
--创建创建存储过程查询个部门各种职称的职工数量;
- CREATE PROCEDURE GetDepartmentTitleCounts()
- BEGIN
- SELECT
- d.DeptName,
- t.TitleName,
- COUNT(*) AS EmployeeCount
- FROM
- Employees e
- JOIN
- Departments d ON e.DeptID = d.DeptID
- JOIN
- Titles t ON e.TitleID = t.TitleID
- GROUP BY
- d.DeptName, t.TitleName
- ORDER BY
- d.DeptName, t.TitleName;
- END

--创建视图查询各职工的工号、姓名、部门、职务信息;
- CREATE VIEW EmployeeDetails AS
-
- SELECT
-
- e.EmployeeID AS 工号,
-
- e.Name AS 姓名,
-
- d.DeptName AS 部门,
-
- p.PositionName AS 职务
-
- FROM
-
- Employees e
-
- JOIN
-
- Departments d ON e.DeptID = d.DeptID
-
- JOIN
-
- Positions p ON e.PositionID = p.PositionID;

--删除职工时的触发器
- CREATE TRIGGER AfterDeleteTrigger
-
- AFTER DELETE ON Employees
-
- FOR EACH ROW
-
- BEGIN
-
- UPDATE Departments SET EmployeeCount = EmployeeCount - 1
-
- WHERE DeptID = OLD.DeptID;
-
- END;
--修改职工部门信息时的触发器
- CREATE TRIGGER AfterUpdateTrigger
-
- AFTER UPDATE ON Employees
-
- FOR EACH ROW
-
- BEGIN
-
- -- 减少原部门的职工人数
-
- UPDATE Departments SET EmployeeCount = EmployeeCount - 1
-
- WHERE DeptID = OLD.DeptID;
-
- -- 增加新部门的职工人数
-
- UPDATE Departments SET EmployeeCount = EmployeeCount + 1
-
- WHERE DeptID = NEW.DeptID;
-
- END;

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