javafx实现的工资管理系统

news2024/10/9 6:25:24

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线

需求分析

1.1用户需求

随着公司业务的扩展,人员的增多,传统的手工作业已经不再适合公司发展的需要,所以引进计算机技术对企业内部员工进行方便的管理,这样有诸多好处,各层管理人员可以对企业众多的员工信息进行动态的管理,例如基本资料的修改,添加,删除,查询等。有利于减少错误,减轻人事部门的任务,提高效率,节约人力资源,降低企业成本。

本系统在设计过程中,为了克服这些困难,需要使程序代码标准化,软件统一化,确保软件的可维护性和实用性;删除不必要的管理冗余,实现管理规范化、科学化;界面友好、简单化,做到实用、方便,尽量满足员工工资管理的需要。

1.2 业务流程分析

本系统主要面向的用户有系统管理员。下面对该系统的不同操作范围做说明。

本系统主要有以下功能模块:

(1)登陆功能:登陆系统为身份验证登录。管理员登录通过不同的用户名和密码进入工资管理界面,新的用户需要注册。

(2)管理员功能:可以对管理员进行增删改查等功能

(3)部门管理功能:可以新增部门,修改部门,删除部门,通过部门名查询部门等

(4)工资管理功能:可以查询所有员工的工资,可以添加员工的个人信息和具有那个月的工资,可以修改工资,可以删除员工信息,可以通过月份查询工资,也可以通过月份,姓名,工资类别,工资数值等查询工资

1.3 功能需求分析

本系统的主要结构功能图如下:

2. 总体设计

2.1体系结构设计

JavaFx平台是一个构建于java技术基本上的并且容易创建和部署富客户端平台的跨平台的应用。

下图说明JavaFx的整体架构,分别描述了各个部件和各部分是如何联系起来的。在下面的JavaFX API的基础上就可以运行你的JavaFx代码。它包括JavaFX的高性能的图形引擎叫Prism;小而高效的窗口系统,叫Glass;还有一个媒体引擎和一个web引擎。虽然这些组件都不是公开的,但是它们的说明能帮助你更好的理解如何运行一个JavaFX应用程序。结构模式如图所示。

JavaFX 结构模式

2.2数据库设计

数据库的选型在设计系统时同样很关键,首要目标是选择一款能够满足甚至 超过预定要求的技术或解决方案。选型的正确方法将使用户在面对众多产品时,提高其做出最佳选择的能力。数据库选型时,必须考虑以下五大因素:

(1)开发要求

(2)性能/成本

(3)数据库运行和管理

(4)可升级性

(5)总体拥有成本

Mysql 是一个开源的完全免费的数据库系统,是一个快速的、可靠的易于使用的数据库服务器。

数据库名: aproject

文档版本: V1.0.0

文档描述: 基于javafx的工资管理系统数据库表设计描述

表bumen

编号 名称 数据类型 长度 小数位 允许空值 主键
1 id int 10 0 N Y
2 mingcheng varchar 200 0 Y N

表gongzi

编号 名称 数据类型 长度 小数位 允许空值 主键
1 id int 10 0 N Y
2 xingming varchar 200 0 Y N
3 bumen varchar 200 0 Y N
4 gongzizhonglei varchar 200 0 Y N
5 gongzishuzhi varchar 200 0 Y N
6 yuefen varchar 200 0 Y N

表guanliyuan

编号 名称 数据类型 长度 小数位 允许空值 主键
1 id int 10 0 N Y
2 yonghuming varchar 200 0 Y N
3 mima varchar 200 0 Y N
/*
 Navicat Premium Data Transfer

 Source Server         : Windows
 Source Server Type    : MySQL
 Source Server Version : 80022
 Source Host           : localhost:3306
 Source Schema         : aproject

 Target Server Type    : MySQL
 Target Server Version : 80022
 File Encoding         : 65001

 Date: 27/12/2022 21:16:05
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for bumen
-- ----------------------------
DROP TABLE IF EXISTS `bumen`;
CREATE TABLE `bumen`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `mingcheng` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for gongzi
-- ----------------------------
DROP TABLE IF EXISTS `gongzi`;
CREATE TABLE `gongzi`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `xingming` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `bumen` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gongzizhonglei` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gongzishuzhi` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `yuefen` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for guanliyuan
-- ----------------------------
DROP TABLE IF EXISTS `guanliyuan`;
CREATE TABLE `guanliyuan`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `yonghuming` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `mima` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;


3. 详细设计与实现

用例图

登录界面设计

登录模块是工资管理系统的入口,在运行本系统是首先经过登录界面的验证,输入正确的用户名和密码才可登录到系统中,通过用户与密码的验证保证了数据的安全。

 //登录按钮触发事件
cidb834c0bf1e.setOnAction(new EventHandler<ActionEvent>() {
   public void handle(ActionEvent e) {
      List<Guanliyuan> list = cid9fa8d13a0cdao.queryByKey("yonghuming", cid8ea6ca765a.getText());
      if(list.size()>0){
         if(list.get(0).getMima().equals(cid7248dc7861.getText())){
            username=list.get(0).getYonghuming();
            showMsg("登录成功");
             Stage stage=new Stage();
             stage.setTitle("系统功能");
             GuanliyuanMainUI mainui = new GuanliyuanMainUI("");
            mainui.setUsername(username);
             stage.setScene(new Scene(mainui,600,600));
             stage.show();
             ((Stage) ((Button)e.getSource()).getScene().getWindow()).close();
            return;
         }
      }

               showMsg("用户名或密码错误,登录失败");
   }
});

系统管理员界面设计了四个按钮(分别是管理员工信息、工资信息、部门管理以及退出系统)关键代码如下:

首先在窗口中创建组件四个JButton,设置他们的基础属性(窗口名称,大小)。以及通过addActionListener(new ActionListener()设置按钮的监听函数

final JButton button = new JButton();    //定义一个JButton对象

    button.setText("管理员工信息");   //设置窗口属性

    button.setBounds(175, 30, 150, 50);  //设置窗口大小

getContentPane().add(button);     //向容器中添加该按钮

当用户选择一个菜单时,会引发一个动作事件,需要给每个菜单项添加监听器,重写ActionListener接口中的actionPreformed()方法。例如:

    button.addActionListener(**new** ActionListener(){    //设置该按钮的监听函数

    public void actionPerformed(ActionEvent e) {

     dispose();    //关闭该窗口

     UI_2_IM  UI2=new UI_2_IM();    //定义一个UI_2_IM的对象

    }});
  1. 程序测试(含程序运行界面)

安装好基于javafx的工资管理程序设计以后,此时,可以单击它启动站点管理工作环境的登录界面。 进入系统后,以几组数据作为测试标本对系统各功能模块进行测试运行,本次测试主要是测试该系统它的并发操作时的测试(负载能力)、具体功能测试、组合操作的测试、系统的兼容性、某种特定情况下的系统运行(实时响应)和后台功能等。

对于本系统的测试包括对系统的用户界面测试和功能性测试,测试的范围涉及系统的各个功能模块的测试,其中重要且量大的便是测试用例的设计,对于测试用例的设计主要是对各个功能进行边界值设计、正常数据的输入等,便于测试和查看测试结果。

1. 测试环境

软件环境(相关软件、操作系统等)
操作平台:Windows 11 64 位
数据库:MySql 5.7.36
浏览器:Google Chrome
硬件环境(网络、设备等)
CPU:2.28 GHz
内存:16 GB

2. 测试功能

功能测试是用于测试系统的功能需求的黑盒测试方法。根据产品特征、操作 描述和用户方案,测试产品的特性和可操作行为以确定它们满足设计需求。功能 测试用于验证应用程序对用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。

  1. 登录页面

我们可以实现登录注册功能,我们输入用户名和密码之后点击注册

注册成功之后点击登录,进入工资管理系统

  1. 部门管理

登录系统之后,我们点击部门管理,进入部门管理页面

可以指定查询查询部门

不输入名称,就是直接查询所有

我们也可以新增部门,点击新增,输入新增部门,点击保存,就可以新增了

新增会提示新增成功

删除,会出现提示,防止误操作

我们也可以修改

修改成功后

  1. 管理员管理界面

我们登录系统的管理员进行管理

也可以修改用户和密码

不管是修改和删除我们都必须要选择一行之后才能进行

  1. 工资管理界面

打开工资管理界面可以直接查看员工的工资包含编号,姓名,部门,工资种类,月份等

我们可以通过部门查询员工的工资

也可以通过月份查找员工的工资

还可以通过工资种类查询员工工资

能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。

至少能删除某员工特定年份和月份的工资信息、删除某员工所有工资信息。执行删除时应有相关提示,以免用户误操作。

修改:能修改除员工号外所有信息。执行修改时应有相关提示,以免用户误操作。


项目源码+数据库+演示视频+论文:https://download.csdn.net/download/weixin_44385486/87360194
在这里插入图片描述

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

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

相关文章

ESP8266 SDK开发(ESP8266_RTOS_SDK 3.x)之AiThinkerIDE_V1.5.2安装、配置以及编写烧录一个程序

【本文发布于https://blog.csdn.net/Stack_/article/details/128509864&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 前言 乐鑫官方不搞IDE&#xff0c;安信可搞了IDE&#xff0c;但是各版本之间安装配置有差异&#xff0c;还没有文档说明。官方安装配置教程不完…

CTFHUB技能树-SSRF-redis协议踩坑

在gopherus上面输入命令&#xff1a;python gophers.py --exploit redis 将自动生成的代码url解密可以得到 如果是get传参需要再进行一次url编码 虽然蚁剑连接不上但可以用urlshell?cmdls / 获取flag 接下来看可以连接蚁剑的代码 文件名最好还是用shell.php 我测试了s.…

【C++初阶8-vector实现】没想的那么简单!

前言 本期带来vector实现&#xff0c;和以前的顺序表差别不大。 博主水平有限&#xff0c;不足之处望请斧正&#xff01; 预备知识 实现参考SGI的stl30 我们看这种源码&#xff0c;要抓框架看&#xff1a;首先找类&#xff0c;看它的属性&#xff0c;再看方法 template &l…

全方位解析 C 端和 B 端的产品特性

近年来&#xff0c;互联网进入下半场&#xff0c;C 端流量红利逐渐消退&#xff0c;很多企业转向了 B 端服务&#xff0c;随之而来的是产品设计者的转型&#xff0c;现在越来越多的 C 端产品设计师开始涉足到 B 端产品的设计&#xff0c;这是一个知识迁移的过程&#xff0c;需要…

自动驾驶专题介绍 ———— 摄像头

文章目录介绍工作原理实现功能分类按通信协议区分按不同感光芯片按像元排列方式介绍 摄像头可以采集汽车周边的图像信息&#xff0c;跟人类的眼睛最为接近。摄像头可以拥有较广的视场角、较大的分辨率&#xff0c;还可以提供颜色和纹理等信息。这些信息对于实现自动驾驶功能是存…

Mentor-dft 学习笔记 day48-OCC With Capture Enable Clock Control Operation Modes

OCC With Capture Enable 有一个OCC具有capture_enable输入&#xff0c;可以与自由运行的慢速时钟一起使用。当OCC指定为启用捕获&#xff08;capture_trigger:capture_en&#xff09;时&#xff0c;在输入自由运行的慢时钟上添加时钟门控器&#xff0c;以从自由运行的时钟输…

影响宝宝大脑发育的6个坏习惯,你可能每天都在做

“望子成龙&#xff0c;望女成凤”这几乎是每个父母的愿望。虽然有一个高智商的天才宝宝太难了&#xff0c;但从不妨碍父母希望孩子更健康、更聪明。所以大家都比较关注宝宝的大脑发育&#xff0c;希望宝宝的大脑发育更好&#xff0c;长大后更聪明。但在日常生活中&#xff0c;…

android 12+从后台启动FGS限制

后台启动FGS限制 限制简介 以 Android 12&#xff08;API 级别 31&#xff09;或更高版本为目标平台的应用在后台运行时无法启动前台服务&#xff0c;少数特殊情况除外。 如果应用程序在后台运行时尝试启动前台服务&#xff0c;而前台服务不满足其中一种异常情况&#xff0c;系…

vue前端打包Docker镜像并nginx运行

首先说明咱们的前端项目是基于Vue的&#xff0c;反向代理使用的是nginx 1.打包vue前端项目生成dist文件夹上传至服务器 新建一个文件夹&#xff0c;叫vueDockerTest&#xff0c;下面的文件都需要。 cert是你存放ssl证书的文件夹&#xff0c;nginx.conf 是nginx的配置文件&am…

Kotlin 惰性集合操作-序列 Sequence

集合操作函数 和 序列 在了解 Kotlin 惰性集合之前&#xff0c;先看一下 Koltin 标注库中的一些集合操作函数。 定义一个数据模型 Person 和 Book 类&#xff1a; data class Person(val name: String, val age: Int) data class Book(val title: String, val authors: List…

jmeter 5.5+influxdb 2.0+grafana v9.3.2 - 压测看板setup

Docker set up 安装docker应用 https://docs.docker.com/desktop/install/mac-install/&#xff0c;在官网下载docker安装包&#xff0c;和安装其他的mac应用是一样的操作。 设置国内的镜像仓库&#xff08;拉取镜像会快很多&#xff09; {"registry-mirrors": [&q…

叠氮-聚乙二醇-羧酸;叠氮-单乙二醇-丙酸Azido-PEG1-acid;1393330-34-1小分子PEG衍生物

Azido-PEG1-acid 中文名称&#xff1a;叠氮-聚乙二醇-羧酸&#xff1b;叠氮-单乙二醇-丙酸 英文名称&#xff1a;Azido-PEG1-acid&#xff1b; 分子式&#xff1a;C5H9N3O3 分子量 &#xff1a;159.1 CAS&#xff1a;1393330-34-1 外观&#xff1a;粘稠液体或者固体粉末&#…

SHA和AES加密+GUI Swing写的一个本地运行和保存的密码管理小工具

目录效果项目结构功能1、登录2、加密3、解密4、列表代码1、先准备好两种加密方式的工具类SHAUtilAESUtil2、登录窗口3、主页窗口&#xff08;加密和解密面板&#xff09;4、主页窗口&#xff08;列表面板&#xff09;5、主程序&#xff08;main&#xff09;最后通过SHA和AES加密…

TestStand-序列步骤属性

文章目录GeneralRun OptionLoopingPost ActionSwitchingSynchronizationExpressionPreconditionsRequirementAdditional ResultPropertyCtrl-N创建一个新的Sequence&#xff0c;通过右键创建任意步骤 General Name -步骤的名称。 Type -步骤类型。一般不需要设置。 Adapter-适…

Android Kotlin之协程-异步流Flow的使用

数据流以协程为基础构建&#xff0c;与仅返回单个值的挂起函数相反&#xff0c;数据流可按顺序发出多个值。从概念上来讲&#xff0c;数据流是可通过异步方式进行计算处理的一组数据序列。所发出值的类型必须相同。 数据流包含三个实体&#xff1a; 提供方会生成添加到数据流…

信息安全技术 政务信息共享 数据安全技术要求

声明 本文是学习GB-T 39477-2020 信息安全技术 政务信息共享 数据安全技术要求. 下载地址 http://github5.com/view/790而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 政务信息共享 数据安全 范围 本标准提出了政务信息共享数据安全要求技术框架&…

2023年工作第一天心情感悟

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 今天是2023年1月3日&#xff0c;也是我们上班的第一天。今天这篇随记&#xff0c;也发表下我对2023年的看法&#xff0c;也对过去的2022年做过总结。 &#xff08;2023年元旦&#xff0c;到门头沟…

Spring之ApplicationContext快速入门

目录 一&#xff1a;概述 二&#xff1a;代码演示 三&#xff1a;BeanFactory与ApplicationContext的关系 四&#xff1a;BeanFactory的继承体系 五&#xff1a;ApplicationContext的继承体系 一&#xff1a;概述 ApplicationContext称为Spring容器&#xff0c; 内部封装了…

面试官:能用JavaScript手写一个bind函数吗

经常会看到网上各种手写bind的教程&#xff0c;下面是我在自己实现手写bind的过程中遇到的问题与思考。如果对于如何实现一个手写bind还有疑惑的话&#xff0c;那么可以先看看上面两篇文章。 手写bind vs 原生bind 我们先使用一个典型的手写bind的例子&#xff0c;代码如下&a…

PHP命令执行的函数

在做面试题的时候发现&#xff0c;自己对PHP命令执行的函数的了解并不是很全面&#xff0c;就想这去学习一下。我也在网上找到了许多的资料&#xff0c;在这里我就相当于一个总结吧。 system(); System()函数的主要功能是在系统权限允许的情况是执行系统命令,windows系统和Lin…