基于Java实现(PC)职员工作量管理系统【100010042】

news2024/11/27 14:29:52

工作量统计系统

一、概述

​ 在本次专业课实践中我选取到的题目为员工工作量统计系统。该系统分为三个模块,一是实现员工的登录,二是进入到员工的个人界面,并显示,输出员工的个人信息,同时还可以进行输入。第三个模块,则是进入到员工的个人考核界面,对输入的数据进行计算和考核,最终输出结果。因此,在设计程序时,我将程序的 UI 界面设计成了三部分,一是登录所需要的 UI,二是员工个人需要的 UI,三则是考核界面的 UI。然后再设计一个 Worker 类来储存员工的各类信息,然后设计各种计算工作量的类。组成了程序的基本模块。开发环境的选择,则选择了 idea。

二、程序概要设计

程序的总功能模块

程序结构设计以及关键功能

​ 在设计程序时,我为程序设计了 3 个 GUI 类,一个储存信息的员工类,以及 4 个计算类,用来计算不同的系数。首先,将实例化好的员工类用 ArrayList 集合类储存,首先,用户登录正确的账号和密码,进入到员工个人界面后,再填写相应的数据,添加成功之后,进入考核界面,考核界面会显示当前所有需要计算的数据。然后点击计算,会判断考核是否通过,最后导出数据到 Excel 表格。

关键类

MainUi主界面登录菜单 GUI 界面
WorkerUi员工个人信息 GUI 界面
SoureUi考核绩效 GUI 界面
CoutY1计算系数 Y1
CoutY2计算系数 Y2
CoutY3计算系数 Y3
CoutY4计算系数 Y4
Worker员工类 在主页面用 ArrayList 储存

关键方法

MainU().login()位于 Mainui 中的登录方法
actionPerformed(ActionEvent e)监听窗体动作 完成事件相应的方法

三、程序详细设计

主界面进行登录

GUI 设计

因为在主登录界面中,需要提供用户图形化界面进行数据的输入和按钮的监听,所以我将 MainUi 类继承了 JAVA.swing 类同时调用了 ActionListener 监听器的接口。这样可以更方便的去调用和重写一些方法。然后则是通过 Jlabel 和 JTextFiled 和 Jbutton 去填写相应的登录信息和所需要的的按钮,然后分别添加到 Jpanel 容器中,最后再添加到窗口中。

登录信息的判断

在设计好登录界面后则需要对里面的监听器按钮进行具体的信息判断,在点击登录之后.通过 ActionListener 的 ActionPerformed 方法对事件进行监听,对账户的登录名和密码进行匹配,若正确则进入到 WorkerUi 界面,同时,向 WorkerUI 中传入匹配到的员工信息类,同时标记该员工信息类,以便后续数据的调用。

进行用户登录信息的匹配

在向集合类 b 添加了实例化的 Worker 类之后,通过 for 循环遍历该集合类,当获取到与文本框中 id 输入一致的 worker 类后,返回该类,再继续在 ActionListener 监听器中进行账号与密码的匹配,若没有一致的账号 id 则返回 null,GUI 界面显示该账号不存在。

登录进入员工信息界面

从 MainUI 中实例化一个新的 WorkerUI 类,并将传入 workerUI

设置 GUI 设置 gui 界面同时传参

​ 在通过 WorkerUi 的构造方法,将 Mainui 的 worker 员工信息类传入到 WorkerUi 中,就完成了数据的转移,这时就可以在 WorerUi 调用显示相关的数据。如显示出用户的 id 号和姓名等等。

设置监听器让用户输入添加考核相关的数据

​ 当用户点击添加信息时,监听器会对文本框进行判定,只有三个文本框判定结果皆为非空,则会将文本框的三个值赋值给 worker 类,当设计程序时,我遇到了困难,那便是 Jtextfiled 属于 String 类型,但是需要将 Jtextfiled 赋值的类型却属 int 类型,所以需要调用 Integer 类中的 parseInt(String x)方法。将 String 类型转换为 int 类型。接着,就会将文本框的上输入的相关数据赋值到获得的员工信息类上,接着点击“绩效查询”,便会实例化一个新的 Worker 类,新生成一个新的 GUI 界面,在实例化的同时还会传入当前的 Worker 工人信息类作为参数,为后续的考核界面做准备。

进入员工考核界面

进入员工考核界面并显示相关考核信息

​ 因为要显示员工各个模块的具体信息,所以我采用了 Java 中 Swing 组件的 Jtable 去构造一个相关信息的表格,在实例化 Jtable 之后,去往其中传入一个二维数组,在制作表格的时候,我也遇到了一点小问题,那便是关于表格中的数据类型的选择,因为一个员工的属性即具有 int 整形类型,也具有 double 浮点类型,String 字符串型。所以在存放 Jtable 时,我选择了 Object 类作为数据类型,Object 是所有类的父类,那么最大的一个好处就在于:利用 Object 类可以接收全部类的对象(因为向上自动转型)。这样就可以在 Jtable 中存放员工各类的数据。

计算员工的各个考核系数

​ 在完成表格的制作之后,则需要在表格中显示员工的四个工作系数,所以我分别 4 个不同的计算员工工作量的类,在制作 Jtable 的时候,同时将这些计算的类实例化,并调用里面的计算方法,将从 workerUI 中获取到的 worker 员工信息类的属性作为参数。计算相应的工作量。最后返回相应的数据。

计算考核工作量并显示结果

​ 同样是利用监听器中的 actionPerformed 方法,当点击计算按钮时,则会调用该类中的 jud()方法。判断数据是否达标,若不达标,则会通过 showMessageDialog 提示报警信息,并调用 add()方法提示当前还差的工作量。反之则会显示通过。

将员工的数据导入到 Excel 表格

​ 同时是先获取到从 WorkerUI 中获得的员工信息类,获取到之后,我通过 Java 中 poi 的 HSSFWorkbook 类来制作表格。之后则是添加表头,设定表格样式,然后便可以想表格添加相应的数据,最后则通过输出流导出到 Excel 中。在设计好导出方法后,在监听器中添加一个导出的响应事件。点击该导出按钮,则会进行数据的导出。

疑难问题的解决

  • 如何完成不同 GUI 界面中数据的传输

    在 GUI 界面中进行数据的传输,这是在这次大作业中,我所遇到的最大的问题,一开始由于初次接触 Java 的 GUI,我不是很适应将 Java 中类的数据传递和图形界面结合在一起,再加上题目要求的员工具有如此多的属性,还要将数据分别代入进行计算工作量的计算。再加上一开始对于整体的题目框架没有做好足够的分析,写到哪里算哪里,导致后续的程序也有些臃肿。一开始,我设计了三个 GUI 界面,但是我的思维没有转过弯来,以为三个界面的 GUI 是彼此独立的,所以没有想到在实例化的时候,去往新的 UI 界面附带一个参数,这个参数便是 Worker 员工信息类,而是将所有的调用资源的方法全部集中在了 MainUi 中,导致程序会出现 bug,在编写程序到中期的时候,我同时也重温了自己在上学期学习的 Java 基础知识,我才想到了可以将在实例化新 GUI 界面时,可以去编写构造方法,然后传参,将自己存储信息的类作为参数不断传递,这样的话,就可以完成数据之间的传递了。

  • 如何完成数据的导出

    在思考如何将程序导出外部的 Excel 表格时,我也遇到了问题,因为将数据导出到外部 Excel 表格的话,需要引用第三方的 jar 包,利用 poi 中的 HSSFWorkbook 对象来新建一个 Excel 文件,并对数据进行导出,所以我在网上下载了第三方的 jar 包并导入,通过 arraList 存储对象,并进行数据的编写和导出.

  • 数据存储的选择

    因为 Worker 员工信息类具有非常多的属性,而且一个系统中可能会有多个员工信息,采用数组储存会非常的麻烦,所以我采用了 ArrayList 集合类,一种有序列表,去对员工类进行数据的存储,因此,在实例化了员工类之后,再将该员工类添加到该 ArrayList 中,该集合类不仅会自动扩容,还可以通过该列表自带的 add(),get()等方法去获取需要的员工信息类,进而调用相关的数据。

四、程序测试

登录界面和异常处理

用户名或密码错误

用户不存在错误

员工个人界面

信息的添加和异常处理

员工考核界面

数据的导出 Excel

​ 在登录界面需要输入正确的 id 和密码,如果检测到文本框空则会报错,同时检测到该用户不存在,也会报错提醒,检测账号。

​ 在进入到员工个人信息界面后,也要进行相应的数据补充,才可以进入到绩效考核界面,要不然程序也会抛出异常并显示提醒。

​ 在进入到员工考核界面后,就可以进行相应的功能操作了

♻️ 资源

在这里插入图片描述

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

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

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

相关文章

div对角线来回浮动显示

animation-timing-function linear 动画从头到尾的速度是相同的。 ease 默认。动画以低速开始,然后加快,在结束前变慢 ease-in 动画以低速开始 ease-out 动画以低速结束 ease-in-out 动画以低速开始和结束 steps(int,start|end) 指定了时间函数中的间隔…

公司对外投资和担保

一、公司对外投资和担保规范 公司对外投资和外他人提供担保,需承担相应的责任 公司可以对外投资和提供担保 二、公司提供担保的方式 保证 抵押 质押 三、公司提供担保的规定 公司对外承担的规定 公司向其他企业投资或者为他人提供担保,依照公司章程的规…

seata-server-1.4.2的环境搭建

修改seata-server-1.4.2/conf目录下的file.conf和registry.conf file.conf 将store下mode修改为db,找到db模块修改 driverClassName、url、user、password mysql 5.使用 driverClassName "com.mysql.jdbc.Driver" mysql 8 使用 driverClassName "…

Docker入门之docker-compose

一,Docker-compose简介 1,Docker-compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project)&#xff0c…

【MATLAB教程案例62】使用matlab实现基于PointNet++网络的点云数据分类仿真分析

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 1.软件版本 2.PointNet++网络理论概述

通过java代码实现ES中的常用搜索

目录 测试环境准备 在指定索引下搜索全部(可以指定字段) 通过ids进行搜索 对搜索结果进行分页 match分词搜索 不分词模糊搜索:wildcardQuery与matchPhraseQuery term 搜索(精确匹配) multi_match搜索 bool搜索…

23年如何准备考PMP?这4点建议你得看

23年的PMP考试还有3个多月,现在开始备考,再合适不过,我这里提出四点备考建议,希望能帮到备考的大家: 【《PMBOK指南》】 PMP的教材仍是第六版,如果有第七版就看第七版,纸质或者电子版都可以&am…

【基础强训】day1

一、选择题&#xff1a; 1. 以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x); A 是无限循环 B 循环次数不定 C 4次 D 3次 C y123为真&#xff0c;所以就循环四次。 2. 以下程序的运行结果是&#xff08;&#xff…

jsp+ssm计算机毕业设计ssm酒店综合管理平台【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

2D激光雷达:使用MindStudio进行MindX SDK任务开发

任务介绍 该项目基于DROW3和DR-SPAAM模型&#xff0c;实现了实时的2D激光雷达行人检测。 主要处理流程为&#xff1a;输入预处理后的激光雷达点云序列&#xff08;帧&#xff09;->行人检测模型推理->行人检测模型后处理->检测结果输出及可视化。 由于二维距离数据信…

Unity Gradient Lerp 颜色渐变

最近改插件&#xff0c;本来如果有Gradient的lerp方法&#xff0c;改起来会非常方便。因为插件的更改入口是这个Gradient。运行时候手动调节inspector面板可以直接更改效果。那么此时只要在代码中更改Gradient即可。 但是找了几遍Color&#xff0c;ColorUtility&#xff0c;Gr…

怎么去图片水印?三招让你快速学会图片去水印

上大学的时候&#xff0c;老师让我们每人写一个关于“阅读”的主题报告。写这个主题报告的时候&#xff0c;我发现在网上找的图片素材大多带有水印&#xff0c;十分影响报告的展示效果。于是&#xff0c;我就上网找了一些怎么去图片水印的方法&#xff0c;对这些方法进行试验后…

Redis持久化(RDBAOF)

持久化简介&#xff1a; 不知道大家有没有遇见过&#xff0c;就是正工作的时候停电了&#xff0c;如果你用的是笔记本电脑还好&#xff0c;你有电池&#xff0c;但如果你用的是台式机呢&#xff0c;那恐怕就比较灾难了&#xff0c;假如你现在正在写一个比较重要的文档&#xf…

Java集合——Map

Map集合 Map用于保存具有映射关系的数据&#xff0c;以键值对的形式存储&#xff0c;支持通过key来访问value&#xff0c;因此key不能重复。 Map接口下主要有Hashtable、HashMap、LinkedHashMap、ConcurrentHashMap 四个主要的实现类&#xff0c;实现的基本原理类似&#xff0…

【图像处理】Hough变换检测直线与圆的原理

霍夫变换的基本原理 霍夫变换(Hough Transform)可以理解为图像处理中的一种特征提取技术&#xff0c;通过投票算法检测具有特定形状的物体。霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间中的一个点形成峰值&#xff0c;从而…

菜菜学paddle第七篇:目标检测的基本概念

一、什么是目标检测&#xff1f; 在前面的几篇中&#xff0c;我们学习了使用卷积神经网络进行图像分类&#xff0c;比如手写数字识别是用来识别0~9这十个数字。与图像分类处理单个物体的识别不同&#xff0c;目标检测它识别的不仅是物体&#xff0c;还是多个物体&#xff0c;…

[附源码]Python计算机毕业设计高校教务管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Spring之IOC

IoC&#xff08;Inverse of Control:控制反转&#xff09;是一种设计思想&#xff0c;就是 将原本在程序中手动创建对象的控制权&#xff0c;交由Spring框架来管理。 IoC 在其他语言中也有应用&#xff0c;并非 Spirng 特有。 IoC 容器是 Spring 用来实现 IoC 的载体&#xff0…

服务攻防-应用协议RsyncSSHRDPFTP漏洞批扫口令猜解

目录 测试思路 &#xff08;一&#xff09;口令猜解——SSH&RDP&FTP Demo: &#xff08;二&#xff09;配置不当-未授权访问-Rsync 文件备份 尝试读取src文件 &#xff08;三&#xff09;协议漏洞-应用软件-FTP&Proftpd 搭建 &#xff08;四&#xff09;协议漏…

音视频- iOS使用metal渲染图像(一)

概要 本文主要总结一下Metal的基本使用&#xff0c;用来渲染拍照的到的图像&#xff0c;其中涉及到的有UIKit中的MTKView&#xff0c;Metal中负责渲染的几个类&#xff0c;使用MSL&#xff08;Metal Shading Language&#xff09;编写着色器&#xff0c;最终将图片渲染出来…