2024-06-02
大学课程
00

目录

1 整体结构分析
2 Controller层

课设要求:

  1. 员工信息管理:维护员工的基本信息,包括工号、姓名、职位、入职日期等。
  2. 薪资计算:根据员工的职位、基本工资、绩效、加班情况自动计算每月薪资,支持多种薪酬方案。
  3. 扣款和福利管理:处理社会保险、公积金扣缴、个人所得税计算,以及各种福利补贴的发放。
  4. 工资条生成:自动生成详细的工资条,包括各组成部分的明细,支持电子版与纸质版。
  5. 审批流程:薪资变动或特殊津贴需要经过部门经理、财务部门审批,系统支持审批流管理。
  6. 报表与分析:生成薪资发放汇总报表,进行成本分析,支持历史数据对比,为决策提供依据。

烂完了,真的烂完了。

1 整体结构分析

先明确所有用户的角色类型:

  1. 正常员工:可以访问和修改自己的基本信息,生成自己的工资条。
  2. 部门经理:可以访问和修改自己和部门下所有员工的基本信息,为员工确认绩效、出勤、加班情况。
  3. 财务部门管理员:可以访问和修改自己的基本信息,为所有员工处理社保、公积金扣缴、个人所得税信息和各种福利补贴的发放。
  4. 人事部门管理员:可以访问和修改自己的基本信息,新建员工,确认员工职位,管理所有职位的薪资水平,转岗管理确认,部门管理确认。

之后是数据库设计:

  1. 用户表,字段包括所有用户id,姓名,密码。
  2. 员工表,字段包括工号,职位,入职日期,上级员工id,所属部门id,社保扣款,公积金扣款,并且和用户表的用户id建立关联。
  3. 职位表,字段包括职位id,职位名称,基本工资。
  4. 工资表,和用户表的用户id建立关联,字段包括基本工资,绩效,出勤,社保扣款,公积金扣款,个人所得税扣款,加班情况和最终的工资。
  5. 部门表,字段包括部门id,部门名称。
  6. 个人所得税表,字段包括档位和对应税率。

上述设计对应数据库语句如下:

sql
create database WebCourseDesign character set utf8 collate utf8_general_ci; use WebCourseDesign; create table user ( id int primary key auto_increment, userName varchar(30) not null , userPassword varchar(200) not null ); create table position ( id int primary key auto_increment, positionName varchar(30) not null, positionBaseSalary int not null ); create table department ( id int primary key auto_increment, departmentName varchar(50) not null ); create table employee ( id int primary key auto_increment, userID int not null , employeeID varchar(50) not null , positionID int, joiningDate date not null , departmentID int, leaderID int not null, socialInsurance int not null, providentFund int not null, foreign key (userID) references user(id) on delete cascade on update cascade ); create table salary ( id int primary key auto_increment, employeeID int not null, month date not null , basicSalary int not null, performance int not null, attendance int not null, socialInsurance int not null, providentFund int not null, personalIncomeTax int not null, workOvertime int not null, result int ); create table personalIncomeTax ( id int primary key auto_increment, gap int, taxRate float ); CREATE TRIGGER calculateResultTrigger BEFORE INSERT ON salary FOR EACH ROW BEGIN SET NEW.result = NEW.basicSalary + NEW.performance + NEW.attendance + NEW.workOvertime - NEW.socialInsurance - NEW.providentFund - NEW.personalIncomeTax; END; CREATE TRIGGER calculateResultUpdateTrigger BEFORE UPDATE ON salary FOR EACH ROW BEGIN SET NEW.result = NEW.basicSalary + NEW.performance + NEW.attendance + NEW.workOvertime - NEW.socialInsurance - NEW.providentFund - NEW.personalIncomeTax; END;

2 Controller层

  1. AdminEmployeeController,该接口作用是为管理员提供编辑员工信息的入口,get为获取操作者范围下的所有员工信息(经理,两种管理员),post为编辑员工信息。
  2. DepartmentAdminController,该接口作用是为管理员提供编辑部门信息的入口,get为获取所有部门信息,post为编辑部门信息。
  3. DepartmentAdminMessageController
  4. DepartmentManagerSalaryController,该接口作用是为部门经理提供对部门内员工的绩效,出勤,加班情况进行查询和管理的入口,get为获取操作者范围下所有员工的薪水的绩效,出勤和加班信息,post就是对这些信息进行编辑。
  5. EmployeePageController,该接口作用为返回普通员工页面。
  6. FinancialAdminMessageController
  7. FinancialAdminSalaryController,该接口作用是为财务部门管理员对所有员工的社保,公积金和个人所得税进行管理,作用同DepartmentManagerSalaryController
  8. GenerateNewSalaryController,该接口作用是为所有员工自动生成一个月的薪资基本情况,不计算别的杂项,只有基本工资,财务部门管理员有权限调用,只有post。
  9. GetSalaryInfoController,该接口作用是获取员工个人的所有工资情况,只有get。
  10. LoginController,该接口作用是登录,get获取登录页面,post进行登录,登录成功会自动定向到/route。
  11. PositionAdminController
  12. RouteController,该接口作用是为通过登录的不同角色路由到不同页面。
  13. UserInfoController,该接口作用是为所有员工提供修改个人用户信息的入口,只有post。

员工所需要的:

  1. 登录(✓)
  2. 查询自己的工资条(✓)
  3. 编辑自己的个人信息(✓)

部门经理所需要的:

  1. 登录(✓)
  2. 查询自己的工资条(✓)
  3. 编辑自己的个人信息(✓)
  4. 管理自己员工的绩效,出勤,加班情况(✓)

财务部门管理员所需要的:

  1. 登录(✓)
  2. 查询自己的工资条(✓)
  3. 编辑自己的个人信息(✓)
  4. 管理所有员工的公积金,社保,个人所得税情况(✓)
  5. 批量生成所有员工的每月工资

本文作者:御坂19327号

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!