基于Java(JSP+Servlet)+Mysql实现的(Web)简易的工资管理系统【100010062】

news2024/11/24 11:38:49

1.问题描述

一个公司下分为若干部门,每个部门有若干职员和经理,每个部门经销若干种商品。工资由基本工资、产品销售业绩奖、若干种保险的扣除等组成。其中的销售业绩奖按以下方式设计:职员按其完成额的 5% 提成,经理按其部门完成额的 1% 提成。每个月要生成一个工资表,每年年末再按个人的总销售额发放 1% 的奖金。

2.问题分析

根据问题的描述,我们对题目进行分析,提取其中的:“部门”、“员工”、“工资”、等关键词对系统进行子模块的划分,初步划分为:员工信息管理模块、部门信息管理模块、工资信息管理模块以及登录模块。

员工信息管理模块

主要负责所有员工的基本信息管理,包括基础员工编号、姓名、工资、保险、部门编号等信息。管理员可对员工信息进行管理,员工可利用自己的编号查询信息。

  • 增加员工:
    • 增加一个新员工的基本信息。
  • 修改员工信息:
    • 对员工基本信息进行修改。
  • 删除员工:
    • 删除一个员工的基本信息及其工资信息。
  • 查询员工信息:
    • 根据员工编号查询员工基本信息。

部门信息管理模块

主要对各个部门的信息进管理,包括部门编号,部门名称以及部门人员调整等功能。管理员可以对部门信息进行管理,员工可根据自己的部门编号查看部门基本信息。

  • 增加部门:
    • 增加一个部门的基本信息。
  • 修改部门信息:
    • 对部门基本信息进行修改。
  • 删除部门:
    • 删除一个部门的基本信息并将该部门下所有员工已入“无”部门。
  • 查询部门信息:
    • 根据部门编号查询部门基本信息。

工资信息管理模块

主要对所有员工的工资进行管理,包括录入员工销售成绩,生成员工月/年工资表,以及显示等功能。员工可根据员工编号和时间查询自己的工资表。

  • 录入员工销售金额:
    • 根据提供的各部门销售金额表,将全体员工的本月销售金额信息录入系统,为生成工资表做准备。
  • 生成月/年工资表:
    • 根据员工对应时间内的销售成绩以及基本信息,计算生成员工的月/年工资表并存储,为查询工资表做准备。
  • 查询工资表:
    • 根据员工编号查询员工的所有月/年工资表。

登录模块

管理员对系统进行操作时,需提前登录,验证身份通过后方可对系统进行操作。

3.需求分析

识别参与者

该系统的参与者有公司管理员与各部门销售员工(包括经理)。

  • 员工信息管理模块:
  • 参与者为公司管理员与各部门销售员工,管理员对各功能拥有完全控制权限,销售员工(包括经理)只能查看员工的基本信息。
  • 部门信息管理模块:
  • 参与者为公司管理员与各部门销售员工,管理员对各功能拥有完全控制权限,销售员工(包括经理)只能查看部门的基本信息。
  • 工资信息管理模块:
  • 根据员工编号查询员工的所有月/年工资表。
  • 登录模块:
  • 参与者为公司管理员,管理员对系统进行操作时,需提前登录,验证身份通过后方可对系统进行操作。

识别用况

员工信息管理

用况:添加员工

  • [前置条件:管理员已经登录成功]
  • 管理员进入添加员工信息界面
  • 输入员工具体信息(员工编号、员工姓名、所属部门、员工级别、员工基本工资)
  • 管理员查询所有部门信息
  • 管理员添加员工信息
  • 若输入员工信息校验通过并存储,显示添加成功。
  • 若输入员工信息校验或存储出现异常,显示异常信息。

用况:修改员工信息

  • [前置条件:管理员已经登录成功]
  • 管理员进入修改员工信息界面
  • 输入员工编号。
  • 系统查询该员工基本信息并显示,若出现异常则显示异常信息。
  • 管理员修改员工信息并存储
  • 若输入员工信息校验通过并存储,显示添加成功。
  • 若输入员工信息校验或存储出现异常,显示异常信息。

用况:查询员工信息

  • [前置条件:管理员已经登录成功,若为普通用户则无条件]
  • 管理员进入查询员工信息界面并输入员工编号
  • 若系统查询员工基本信息成功,显示该员工基本信息。
  • 若出现异常,显示异常信息。

用况:删除员工

  • [前置条件:管理员已经登录成功]
  • 管理员进入删除员工信息界面
  • 输入员工编号。
  • 若删除员工信息成功
  • 删除该所有工资信息。
  • 显示成功信息。
  • 若删除员工出现异常
  • 显示异常信息。

用况:查询部门信息

  • [前置条件:管理员已经登录成功,若为普通用户则无条件]
  • 管理员进入查询部门信息信息界面并输入部门编号
  • 若查询成功,显示部门基本信息。
  • 若发生异常,显示异常信息。

用况:登录

  • 管理员进入登录界面输入用户名与密码
  • 若校验通过,显示登录成功并跳转。
  • 若校验失败,显示错误信息。
  • 若发生异常,显示异常信息。

部门信息管理

用况:添加部门

  • [前置条件:管理员已经登录成功]
  • 管理员进入添加部门信息界面并输入部门具体信息(部门编号、部门名称)
  • 若输入部门信息校验通过并存储,显示添加成功。
  • 若输入部门信息校验或存储出现异常,显示异常信息。

用况:修改部门信息

  • [前置条件:管理员已经登录成功]
  • 管理员进入修改部门信息界面
  • 输入部门编号。
  • 系统查询该部门基本信息并显示,若出现异常则显示异常信息。
  • 管理员修改部门信息并存储
  • 若输入部门信息校验通过并存储,显示添加成功。
  • 若输入部门信息校验或存储出现异常,显示异常信息。

用况:查询部门信息

  • [前置条件:管理员已经登录成功,若为普通用户则无条件]
  • 管理员进入查询部门信息界面并输入部门编号
  • 若查询成功,显示部门基本信息。
  • 若发生异常,显示异常信息。

用况:删除部门

  • [前置条件:管理员已经登录成功]
  • 管理员进入删除部门信息界面
  • 输入部门编号。
  • 若删除部门信息成功
  • 将该部门下所有员工信息移动至“无”部门。
  • 显示成功信息。
  • 若删除部门出现异常
  • 显示异常信息。

用况:登录

  • 管理员进入登录界面输入用户名与密码
  • 若校验通过,显示登录成功并跳转。
  • 若校验失败,显示错误信息。
  • 若发生异常,显示异常信息。

工资信息管理

用况:录入员工销售金额

  • [前置条件:管理员已经登录成功]
  • 管理员进入工资信息录入界面
  • 选择销售金额信息所在的文件。
  • 系统读取文件信息并保存
  • 若保存成功,显示录入完成。
  • 如出现异常,显示异常信息。

用况:生成工资表

  • [前置条件:管理员已经登录成功]
  • 管理员进入工资表生成界面
  • 输入员工编号和时间信息(某月或某年)。
  • 系统生成并存储工资表
  • 若保存成功,显示生成完成。
  • 如出现异常,显示异常信息。

用况:查询工资表

  • [前置条件:管理员已经登录成功,若为普通用户则无条件]
  • 管理员进入工资表查询界面
  • 输入员工编号及时间信息
  • 系统查询工资表
  • 若查询成功,显示工资表。
  • 若发生异常,显示异常信息。

用况:登录

  • 管理员进入登录界面输入用户名与密码
  • 若校验通过,显示登录成功并跳转。
  • 若校验失败,显示错误信息。
  • 若发生异常,显示异常信息。

用况:

-查询工资表 --管理员进入查询工资表界面,输入需要查询工资表的员工编号,结果显示具体销售信息。
–销售人员进入查询工资表界面,结果显示本人具体销售信息。

-生成年工资表 管理员进入生成年工资表界面,输入需要生成年工资表的员工编号,结果显示该员工的年工资表具体信息。

-生成月工资表 管理员进入生成月工资表界面,输入需要生成月工资表的员工编号,结果显示该员工的月工资表具体信息。

4.系统分析

类图

E-R 图

实体的属性

  • -员工:员工编号,基础工资,员工姓名,员工等级,部门编号,保险金额
  • -工资信息:总工资,保险金额,员工编号,月工资,年工资
  • -部门:部门编号,部门名称

实体之间的关系

  • -员工查找工资(一对一联系),一个员工只查找一份工资信息,一份工资信息只由一个员工查找。
  • -部门包含员工(一对多联系),一个部门包含多个员工,一个员工只属于一个部门。

数据表基本属性

表一:工资管理员

字段名称数据类型长度主键外键是否为空
用户名varchar45
密码varchar45

表二:员工信息

字段名称数据类型长度主键外键是否为空
员工编号int10
员工姓名varchar45
员工等级varchar10
部门编号int10
基础工资int10
保险金额int10

表三:部门信息

字段名称数据类型长度主键外键是否为空
部门编号int10
部门名称varchar45

表四:工资信息

字段名称数据类型长度主键外键是否为空
工资编号int10
员工标号int10
销售金额int10
奖金金额int10
所属月份varchar45
所属年份varchar45
实际工资int10
年表标志int10
计算标识int10

时序图

登录

管理员通过点击登录按钮进入登录界面,登录界面创建登录服务。管理员将登录信息(用户名和密码)输入,与数据库内已储存的数据进行比对,验证登录信息。

员工信息管理

增加员工:

管理员通过点击员工信息管理按钮进入员工信息管理界面,员工管理界面创建员工信息服务。管理员将增加的员工信息输入,将员工信息存入数据库。

-删除员工:

管理员通过点击员工信息管理按钮进入员工信息管理界面,员工信息管理界面创建员工信息服务。管理员将需要删除员工的编号输入,根据员工编号在数据库内找到相应员工信息,进行员工的删除。

-查询员工信息:

管理员通过点击员工信息管理按钮进入员工信息管理界面,员工信息管理界面创建员工信息服务。管理员将需要查询员工的编号输入,根据员工编号在数据库内找到相应员工信息,进行员工信息的查询。

-修改员工信息:

管理员通过点击员工信息管理按钮进入员工信息管理界面,员工信息管理界面创建员工信息服务。管理员将需要修改员工的编号输入,在员工信息查询后,根据员工编号在数据库内找到相应员工信息更新数据库内数据,进行员工信息的更新。

部门信息管理

-增加部门:

管理员通过点击部门信息管理按钮进入部门信息管理界面,部门管理界面创建部门信息服务。管理员将增加的部门信息输入,将部门信息存入数据库。

-删除部门:

管理员通过点击部门信息管理按钮进入部门信息管理界面,部门信息管理界面创建部门信息服务。管理员将需要删除部门的编号输入,根据部门编号在数据库内找到相应部门信息,进行部门及该部门的员工的删除。

-查询部门信息:

管理员通过点击部门信息管理按钮进入部门信息管理界面,部门信息管理界面创建部门信息服务。管理员将需要查询部门的编号输入,根据部门编号在数据库内找到相应部门信息,进行部门信息的查询。

-修改部门信息:

管理员通过点击部门信息管理按钮进入部门信息管理界面,部门信息管理界面创建部门信息服务。管理员将需要修改部门的编号输入,在部门信息查询后,根据部门编号找到相应部门信息并数据。

工资信息管理

-录入员工销售金额:

管理员通过点击工资管理按钮进入工资管理页面,工资管理页面创建工资服务,管理员选择本月的销售记录文件,系统自动读取文件信息整理后存储。若成功存储返回成功,失败则返回异常信息。

-生成工资表:

管理员通过点击工资管理按钮进入工资管理页面,工资管理页面创建工资服务,管理员输入员工编号与时间,系统查询该员工的工资信息并整理计算并重新存储,若成功存储返回成功,失败则返回异常信息。

-查询工资表:

管理员通过点击工资管理按钮进入工资管理页面,工资管理页面创建工资服务,管理员输入员工编号与时间,系统查询该员工的工资信息并显示。若成功查询返回成功,失败则返回异常信息。

5.开发环境及开发技术

开发环境

本项目由使用 javaEE+mysql(远程服务器)开发,javaEE 的集成开发环境为 idea。

  • JDK 版本:1.8_211
  • Tomcat 版本:8.5.35
  • idea 版本: 2018.2.8 (Ultimate Edition)
  • MySQL 版本:5.7
  • 本地开发机器系统及版本:Mac OS X 10.15
  • 远程服务器系统及版本:Windows server 2012 R2

开发技术

​ 项目采用原生 javaEE(jsp+servlet)配合 MySQL 数据库完成开发。在系统架构方面采用分层架构,主要分为 Web 层、servlet 层、service 层以及 dao 层。

​ Web 层负责与用户交互,包括获取用输入的数据及向用户展示所需要的数据,获取输入数据主要通过表单及超链接完成。向用户展示数据则通过 jstl+el 表达式来获取后台添加在 http 请求域(request 域、session 域等)中的数据并显示来完成的。

​ Servlet 层负责接收前端请求,处理后将结果返回给前端。向 http 请求域添加数据便是在此处完成。

​ Service 层负责对 Servlet 层提供服务。设置此层的目的主要目的是:一个 servlet 可能不止操作一张表,而一个 Dao 层则操作一张表。在中间利用 servlet 进行整合,减小 servlet 层与 Dao 层的耦合。

​ Dao 层负责对数据库进行操作。Dao 层接收 Service 层的操作请求,对具体的数据库进行相关操作。

​ 系统中还有一个 Model 层,主要存储模型类(即是文档中那个类图中的各个类)。JSP 则充当 view 角色,而 servlet 则是 controller 的角色。所以本项目是 MVC+ 分层的整体架构。

​ 在项目细节方面,我们还使用了 c3p0 数据库连接池、dbutils(数据库操作)工具、fileupload(文件上传)工具、beanutils(映射 post 请求数据与实体类)工具以及 poi-ooxml(Excel 文件解析与生成)工具等。

​ 在项目实现细节方面,我们针对可能发生的错误也进行了的程序健壮性和安全性的保证,包括粗线错误后的处理。

项目截图

  1. 主界面:

在这里插入图片描述

  1. 登录界面:

在这里插入图片描述

  1. 员工信息管理界面:

在这里插入图片描述

  1. 员工信息详情界面:

在这里插入图片描述

  1. 部门信息管理界面:

在这里插入图片描述

  1. 部门信息详情界面:

在这里插入图片描述

  1. 录入与生成工资表页面:

在这里插入图片描述

♻️ 资源

在这里插入图片描述

大小: 41.9MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87249029

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

string.IsNullOrEmpty和string.IsNullOrWhiteSpace的区别

string.IsNullOrEmpty和string.IsNullOrWhiteSpace 本人一直使用的是string.IsNullOrEmpty方法来判断字符串是否为空. 在插件中发现另外一种写法: string s1 null; string s2 string.Empty; string s3 ""; strin…

精通MyBatis原理,看这两篇就够了!(二)

本文是关于MyBatis源码的第二篇,解读了MyBatis的核心执行SQL流程,对源码做了详细注释。内容较长,推荐电脑阅读。点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达执行阶段流程第一篇文章讲解了Mybatis启动…

【jdk11+jprofiler 11进行java程序性能调优案例之--内存溢出原因分析】

1.安装jprofiler jprofiler_windows-x64_11_0_2.exe 2.使用KeyGen.exe生成注册码然后输入 3.idea中安装jprofiler插件 File-->Setting-->Plugins 搜索jprofiler插件然后安装 4.以一个内存溢出的程序为例子进行分析(一直分配内存,List容器引用着Student导致…

Java创建线程的三种方式

Java创建线程的三种方式 一、通过Thread类的方式进行创建 步骤: 1、创建Thread的子类,重写run方法,run方法就表示线程需要完成的任务 2、创建Thread实例,也就是创建线程对象 3、使用start来启动线程(线程启动的唯一方…

显著性分析

选择图 为什么要分Non-parametric & parametric 方法 为了找到更符合数据的分析方法。每个方法有自己的假设&#xff0c;如果违背了结果会不精准。 Sign Test 是一个可以用于任何数据分布情况的pairwise 方法。 检查normality: Sample 数量 < 50,适用 Shapiro-Wilk&am…

【Kotlin 协程】Flow 操作符 ① ( 过渡操作符 | map 操作符 | transform 操作符 | 限长操作符 | take 操作符 )

文章目录一、过渡操作符1、map 操作符2、transform 操作符二、限长操作符 ( take 操作符 )一、过渡操作符 过渡操作符 相关概念 : 转换流 : 使用 过渡操作符 转换 Flow 流 ;作用位置 : 过渡操作符作用 于 流的上游 , 返回 流的下游 ;非挂起函数 : 过渡操作符 不是挂起函数 , 属…

大话JMeter2|正确get参数传递和HTTP如何正确使用

上节课展示了JMeter的基础用法&#xff1a;录制回放功能&#xff0c;断言&#xff0c;聚合报告。但是在无UI下如何进行接口的访问呢&#xff1f;如何正确get参数传递和HTTP如何正确使用。尤其是在无UI下进行接口的访问。小哥哥带着你用漫画来学习JMeter&#xff0c;让你在轻松的…

【MMAsia 2021】Patch-Based Deep Autoencoder for Point Cloud Geometry Compression

文章目录Patch-Based Deep Autoencoder for Point Cloud Geometry Compression压缩流程自编码架构实验结果Patch-Based Deep Autoencoder for Point Cloud Geometry Compression https://arxiv.org/abs/2110.09109 这篇论文使用深度自编码器&#xff0c;提出了一种基于分块&am…

发票识别OCR及查验API接口为企业化解难题

对于当今的现代企业来说&#xff0c;分散的财务管理模式效率不高&#xff0c;管理成本反而相对较高&#xff0c;制约了集团企业发展战略的实施&#xff0c;因而需要建设财务共享模式。一个企业要建成财务共享中心&#xff0c;面临的难题是大量的数据采集和信息处理工作&#xf…

一组类型相同的数据【C 数组】总结

作者 &#xff1a; 会敲代码的Steve 墓志铭&#xff1a;博学笃志 切问静思 前言&#xff1a;本文旨在复习C语言数组章节的知识点、分为以下几个部分&#xff1a; 什么是数组一维数组、一维数组的初始化、一维数组的遍历、冒泡排序。二维数组、二维数组的创建和初始化、二维数…

多功能采集仪VH03接口使用说明

传感器接口 传感器接口须使用设备专门配备的测线&#xff0c;一端为 DB9 一端为用颜色区分的多个鳄鱼夹&#xff0c;线&#xff08;鳄鱼夹&#xff09;颜色和功能定义详见“设备组成和接口定义” 。 充电和通讯接口 VH03 使用标准的 USB Type-C 接口完成设备充电和通讯&…

创建一个vue项目

文章目录前言一、安装node.js二、vue ui命令没有反应原因1.vue ui命令是vue 3.x版本以上才支持&#xff0c;因此需要更新vue的版本。2.更新vue版本2.1首先使用以下命令卸载旧版本2.2然后使用下面命令安装最新版本2.3查看是当前版本号2.4此时&#xff0c;输入 vue -h 命令查看co…

HMS Core 3D流体仿真技术,打造移动端PC级流体动效

移动设备硬件的高速发展&#xff0c;让游戏行业发生翻天覆地的变化&#xff0c;许多酷炫的游戏效果不再局限于电脑端&#xff0c;玩家在移动端就能享受到场景更逼真、画质更清晰、体验更流畅的游戏服务。但由于移动设备算力不足&#xff0c;为了实现真实感的水体效果&#xff0…

cesium地形上面绘点时,山背面点位始终显示在地形上

cesium地形上面绘点时&#xff0c;山背面点位始终显示在地形上&#xff0c;如下图&#xff1a; 深度检测也是打开的&#xff0c;各种方法试完之后&#xff0c;也没有找到问题&#xff0c;把viewer属性注释之后&#xff0c;就没有出现这个问题&#xff0c;于是一个个属性&#…

【LeetCode】C语言实现---用队列实现栈用栈实现队列

目录&#x1f449;用队列实现栈&#x1f449;用栈实现队列&#x1f449;用队列实现栈 入口&#xff1a;OJ 题目描述&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 em…

redis的消息发布订阅实现

文章目录前言一、创建好springboot项目,引入核心依赖二、使用步骤1. 自定义一个消息接受类2.声名一个消息配置类3.编写一个测试类总结前言 一般项目中都会使用redis作为缓存使用,加速用户体验,实现分布式锁等等,redis可以说为项目中的优化,关键技术实现立下了汗马功劳.今天带来…

YonBuilder应用构建教程之移动端基础配置

在YonBuilder中除了PC端应用的构建外&#xff0c;我们还可以构建配套的移动端页面。对于同一个数据实体可以实现PC端和移动端的数据同步修改&#xff0c;使数据录入、修改、审批等更加便捷。本篇文章通过对员工信息实体的移动端页面构建来对YonBuilder移动端配置的基础流程进行…

利用ENVI对遥感图像校正

1.几何校正 引起图像几何变形一般分为两大类:系统性和非系统性。系统性一般由传感器本身引起&#xff0c;有规律可循和可预测性&#xff0c;可以用传感器模型来校正&#xff0c;卫星地面接收站已经完成这项工作;非系统性几何变形是不规律的&#xff0c;它可以是传感器平台本身…

【Axure高保真原型】移动端钱包原型模板

今天和大家分享移动端钱包的原型模板&#xff0c;里面包含了11大模块&#xff0c;各个模块都是高保真高交互的原型模板&#xff0c;大家可以在演示地址里体验哦 【原型预览及下载地址】 https://axhub.im/ax9/4c3757a85d201a4c/#c1 这个原型还可以在手机上演示哦&#xff0c…

Bitmiracle Docotic.Pdf Library 8.8.14015 Crack

C# 和 VB.NET 的 PDF 库 Docotic.Pdf 是用于 .NET 的高性能 C# PDF 库。您可以使用它在 .NET Core、ASP.NET、Windows Forms、WPF、Xamarin、Blazor、Unity 和 HoloLense 应用程序中创建、阅读和编辑 PDF 文档。 该库支持 .NET 6、.NET 5、.NET Standard/.NET Core 和 .NET 4.…