Java实验3 员工管理系统

2023-11-07

Java实验3 员工管理系统

1.实验要求

  • 进行一个企业员工基本信息的数据库设计,使用员工信息表、部门信息表两个数据表来存放数据。选择适当组件进行界面设计;编写事件代码:
    员工信息包括:员工编号(主码),姓名,性别,出生年月,所在部门
    所在部门信息表包括:部门代码(主码),部门名称
    员工信息表可以提供以下功能:
    1.员工基本信息的录入
    2.员工基本信息的修改
    3.员工基本信息的删除
    4.员工基本信息的查询
    5.员工基本信息的显示
    用Java语言编写一个员工基本信息管理系统的图形用户界面,通过界面的按钮和文本框等操作来实现员工基本信息的录入、修改、删除、查询和显示,从而完成一个基本的员工信息管理系统用户界面。
  • 在这里我们只编写员工类的信息表,以及具体功能。部门类只编写信息表菜单

2.具体创建过程

  1. 创建三个包:object包、operation包、staff包。
  2. object包中有DepartmentObject类和EmployeeObject类和Object类,分别实现部门和员工的信息表。并且DepartmentObject类和EmployeeObject类继承了Object类。
  3. operation包中AddOperation类、DelOperation类、DisplayOperation类、ExitOperation类、FindOperation类、ReworkOperation类,分别实现信息的录入、删除、显示、退出系统、查找和修改。
    并且这些类的本质上都是类似的,所以都接口IOperation。
  4. staff包中Staff类和StaffList类,分别实现定义姓名、性别等成员变量和定义一个员工数组。

3.结果展示

  1. 录入信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 显示录入的信息
    在这里插入图片描述
  3. 修改信息
    在这里插入图片描述
    显示修改后的员工信息:
    在这里插入图片描述
  4. 查询信息
    在这里插入图片描述
  5. 删除信息
    在这里插入图片描述
    显示删除后的员工信息表:
    在这里插入图片描述

4.代码展示

  • 主函数
import object.DepartmentObject;
import object.EmployeeObject;
import object.Object;
import staff.Staff;
import staff.StaffList;
import java.util.Scanner;
public class Main {
    public static Object login(){
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name=scan.nextLine();
        System.out.println("请输入你的身份:1->部门信息表  0->员工信息表");
        int choice =scan.nextInt();
        if (choice==1){
            return new DepartmentObject(name);
        }else {
            return new EmployeeObject(name);
        }
    }

    public static void main(String[] args) {
        StaffList staffList=new StaffList();
        Object object=login();
        //Object object=new DepartmentObject(name);若是部门

        while (true) {//死循环,再次打印菜单
            int choice = object.menu();
            object.doOperation(choice, staffList);
        }
    }
}
  • Staff 类
package staff;

public class Staff {
    private int code;//编号
    private String name;
    private String sex;
    private String birth;
    private String dename;//部门名称
    //private int ccode;//部门主码
    public Staff(int code, String name, String sex, String birth, String dename) {
        this.code = code;
        this.name = name;
        this.sex = sex;
        this.birth = birth;
        this.dename = dename;
    }
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    public String getDename() {
        return dename;
    }

    public void setDename(String dename) {
        this.dename = dename;
    }
    @Override
    public String toString() {
        return "Staff{" +
                "code=" + code +
                ", name='" + name + '\'' +
                ", sex='" + sex +'\''+
                ", birth='" + birth +'\''+
                ", dename='" + dename + '\'' +
                '}';
    }
}
  • StaffList类
package staff;

public class StaffList {
    public Staff[] staffList=new Staff[10];//定义一个可以放10个员工的数组
    private int Size;//当前有几个员工的信息
    public int getSize() {
        return Size;//获取staffList的长度
    }
    public void setSize(int size) {
        this.Size = size;
    }
    //员工信息在pos位置上
    public void setStaffList(int pos,Staff staff){//往pos位置放入一个员工的信息
        staffList[pos]=staff;
    }

    //获取pos位置的信息
    public Staff getStaff(int pos){
        return staffList[pos];//返回staffList的pos位置
    }
}
  • DepartmentObject 类
package object;
import operation.*;
import java.util.Scanner;
public class DepartmentObject extends Object{
    //子类继承父类 要先帮助父类进行构造
    public DepartmentObject(String name) {
        super(name);
        //存储操作->当调用DepartmentObject构造方法的时候,IOperation[]里面的所有元素都将被初始化好
        this.iOperations=new IOperation[]{
                new ExitOperation(),
                new AddOperation(),
                new ReworkOperation(),
                new DelOperation(),
                new FindOperation(),
                new DisplayOperation()
        };
    }

    public int menu(){
        System.out.println("========部门信息表========");
        System.out.println("Hi~ o(* ̄▽ ̄*)ブ "+this.name+" 请对部门信息表进行操作");
        System.out.println("1.部门基本信息的录入");
        System.out.println("2.部门基本信息的修改");
        System.out.println("3.部门基本信息的删除");
        System.out.println("4.部门基本信息的查询");
        System.out.println("5.部门基本信息的显示");
        System.out.println("0.退出系统");
        System.out.println("=======================");
        System.out.println("请输入你的操作:");
        Scanner scanner=new Scanner(System.in);
        int choice =scanner.nextInt();
        return choice;
    }
}
  • EmployeeObject类
package object;
import operation.*;
import java.util.Scanner;
public class EmployeeObject extends Object{
    public EmployeeObject(String name) {
        super(name);
        //存储操作
        this.iOperations=new IOperation[]{
                new ExitOperation(),
                new AddOperation(),
                new ReworkOperation(),
                new DelOperation(),
                new FindOperation(),
                new DisplayOperation()
        };
    }

    public int menu(){
        System.out.println("========员工信息表========");
        System.out.println("Hi~ o(* ̄▽ ̄*)ブ "+this.name+" 请对员工信息表进行操作");
        System.out.println("1.员工基本信息的录入");
        System.out.println("2.员工基本信息的修改");
        System.out.println("3.员工基本信息的删除");
        System.out.println("4.员工基本信息的查询");
        System.out.println("5.员工基本信息的显示");
        System.out.println("0.退出系统");
        System.out.println("========================");
        System.out.println("请输入你的操作:");
        Scanner scanner=new Scanner(System.in);
        int choice =scanner.nextInt();
        return choice;
    }
}
  • Object 类
package object;
import operation.IOperation;
import staff.Staff;
import staff.StaffList;
public abstract class Object {
    protected String name;
    protected IOperation[] iOperations;
    public Object(String name){
        this.name=name;
    }
    public  abstract int menu();
    public void doOperation(int choice, StaffList staffList){
        this.iOperations[choice].work(staffList);
    }
}
  • IOperation 接口
package operation;
import staff.Staff;
import staff.StaffList;
public interface IOperation {
    void work(StaffList staffList);
}
  • AddOperation 类
package operation;
import staff.Staff;
import staff.StaffList;
import java.util.Scanner;
public class AddOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("员工基本信息的录入");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入该员工的姓名:");
        String name=scanner.nextLine();
        System.out.println("请输入该员工的性别:");
        String sex=scanner.nextLine();
        System.out.println("请输入该员工的出生年月日:");
        String birth=scanner.nextLine();
        System.out.println("请输入该员工的所在部门");
        String dename=scanner.nextLine();
        System.out.println("请输入该员工的员工编号:");
        int code=scanner.nextInt();
        Staff staff=new Staff(code,name,sex,birth,dename);
        int currentSize=staffList.getSize();
        staffList.setStaffList(currentSize,staff);
        staffList.setSize(currentSize+1);
        System.out.println("录入信息成功");
    }
}
  • DelOperation 类
package operation;
import staff.Staff;
import staff.StaffList;
import java.util.Scanner;
public class DelOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("员工基本信息的删除");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要删除的该员工的姓名:");
        String name=scanner.nextLine();
        int currentSize=staffList.getSize();
        int index=-1;
        for(int i=0;i<currentSize;i++){
            Staff staff=staffList.getStaff(i);
            if(staff.getName().equals(name)){
                index=i;
                break;
            }
        }
        //如果index==-1,说明没有这条信息
        if(index==-1){
            System.out.println("没有你要删除的员工信息");
            return;
        }
        //开始删除
        for(int i=index;i<currentSize-1;i++){
            Staff staff=staffList.getStaff(i+1);
            staffList.setStaffList(i,staff);
        }
        staffList.setSize(currentSize-1);
        System.out.println("删除该员工信息成功");
    }
}
  • DisplayOperation 类
package operation;
//import Staff.staff;
import staff.StaffList;
import staff.Staff;
import staff.StaffList;
public class DisplayOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("员工基本信息的显示");
        int currentSize=staffList.getSize();
        for(int i=0;i<currentSize;i++){
            Staff staff=staffList.getStaff(i);
            System.out.println(staff);
        }
    }
}
  • ExitOperation 类
package operation;
import staff.Staff;
import staff.StaffList;
public class ExitOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("退出系统");
        System.exit(0);
    }
}
  • FindOperation 类
package operation;
import com.sun.glass.ui.Size;
import staff.Staff;
import staff.StaffList;
import java.util.Scanner;
public class FindOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("员工基本信息的查询");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要查询的该员工的姓名:");
        String name=scanner.nextLine();
        int size=staffList.getSize();
        for(int i = 0; i<size; i++){
            Staff staff=staffList.getStaff(i);
            if(staff.getName().equals(name)){
                System.out.println("可以查询到该员工的基本信息");
                System.out.println(staff);
                return;
            }
        }
        System.out.println("信息表中没有该员工的信息");
    }
}
  • ReworkOperation 类
package operation;
import staff.Staff;
import staff.StaffList;
import java.util.Scanner;
public class ReworkOperation implements IOperation{
    @Override
    public void work(StaffList staffList) {
        System.out.println("员工基本信息的修改");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要修改的员工的姓名:");
        String name1=scanner.nextLine();
        int currentSize=staffList.getSize();
        int index=-1;
        for(int i=0;i<currentSize;i++){
            Staff staff=staffList.getStaff(i);
            if(staff.getName().equals(name1)){
                index=i;
                break;
            }
        }
        //如果index==-1,说明没有这条信息
        if(index==-1){
            System.out.println("没有你要删除的员工信息");
        }
        else {
            System.out.println("请输入员工新的姓名:");
            String name=scanner.nextLine();
            System.out.println("请输入员工新的性别:");
            String sex=scanner.nextLine();
            System.out.println("请输入员工新的出生年月日:");
            String birth=scanner.nextLine();
            System.out.println("请输入员工新的所在部门");
            String dename=scanner.nextLine();
            System.out.println("请输入员工新的员工编号:");
            int code=scanner.nextInt();
            Staff s=new Staff(code,name,sex,birth,dename);
            s.setName(name);
            s.setBirth(birth);
            s.setDename(dename);
            s.setSex(sex);
            s.setCode(code);
            staffList.setStaffList(index,s);
            System.out.println("修改员工信息成功");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实验3 员工管理系统 的相关文章

  • WebSphere 中跨 JVM 的会话复制

    我们建立了一个基础设施 其中网络服务器是集群的 而应用程序服务器不是 Web 服务器根据循环策略将请求路由到应用程序服务器 在这种情况下 一个应用程序服务器中可用的会话数据在另一应用程序服务器中不可用 无论如何 是否可以使来自第一个应用程序
  • Spring JDBC 模板。如何获取pl/sql脚本的结果变量

    我正在使用 NamedParameterJdbcTemplate 来运行 pl sql 脚本 但我不知道如何获取out变量的值 id out 提前致谢 String script declare begin if myFunc id in
  • 我在使用 JavaFX 绘制十字时遇到问题

    我正在尝试编写代码 在网格上对角绘制 3 个形状 前两个形状是正方形和圆形 我能做到 然而 第三种形状让我有些悲伤 我应该画一个十字 T 版本 而不是 X 每次我写出代码时 它看起来就像一个侧面 我知道我只是错过了一些简单的东西 但我真的很
  • 如果在 addHeader 之前写入正文,HttpServletResponse 会丢失标头吗?

    环境 Java HotSpot TM 64 位服务器 VM 内部版本 16 3 b01 混合模式 tomcat6 当我使用HttpServlet发送html页面时 如下所示 resp getWriter append body body i
  • 从另一个进程捕获 system.out 消息

    我有一个 JVM 1 它启动 JVM 2 我希望能够在 JVM 1 中监视来自 JVM 2 的 System out println 调用 直接的方法是 JVM A 执行系统命令来启动 JVM B 然后 JVM A 读取 B 的所有输出 S
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 有没有办法让Maven自动下载快照版本?

    所以我有一个项目依赖于另一个项目的快照版本 依赖关系是
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • 在 java 8 下使用泛型出现类型错误,但在 java 7 下则不然

    我有一段代码可以在 java 7 下编译良好 但不能在 java 8 下编译 这是一个独立的重现示例 我已经采用了显示此问题的真实代码并删除了所有实现 import java util Iterator class ASTNode
  • Java ArrayList 和 HashMap 动态

    有人可以提供一个创建Java的例子吗ArrayList and HashMap在飞行中 所以而不是做一个add or put 实际上在类实例化时为数组 哈希提供种子数据 举个例子 类似于 PHP 的例子 array array 3 1 2
  • 使用 Haskell 将函数注入到 Java .class 文件中

    我使用 Haskell 编写了一个 Java 字节码解析器 它工作得很好 然而下一步让我完全难住了 我的 Haskell 程序需要修改 class 文件 以便在执行时 Java 程序打印 输入 此处的方法名称 在执行方法之前 并且 退出 此
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 带等待/通知的同步块与不带等待/通知的同步块之间的区别?

    如果我只是使用synchronized 不是wait notify方法 它仍然是线程安全的吗 有什么不同 Using synchronized使方法 块一次只能由一个线程访问 所以 是的 它是线程安全的 这两个概念是结合在一起的 而不是相互
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • Web 服务客户端的 AXIS 与 JAX-WS

    我决定用Java 实现Web 服务客户端 我已经在 Eclipse 中生成了 Axis 客户端 并使用 wsimport 生成了 JAS WS 客户端 两种解决方案都有效 现在我必须选择一种来继续 在选择其中之一之前我应该 考虑什么 JAX
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 需要在没有wsdl的情况下调用soap ws

    我是网络服务的新手 这个网络服务是由 siebel 提供的 我需要调用一项网络服务 我的客户向我提供了以下详细信息 这是 SOAP 对于产品 请使用它作为端点 Request
  • removeall 和removeif 的用例

    我找到了这个 fun main val list MutableList

随机推荐

  • 浅谈Java虚拟机工作原理

    网上看了很多写JVM工作原理的大神 也看了些视频 各有各的理解 我整合一下组织自己的语言发表一下理解 首先来一段简单的代码示例 public class Test public static void main String args St
  • 2023年“网络安全”赛项江苏省淮安市选拔赛 任务书

    任务书 一 竞赛时间 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 服务器内部信息获取 任务二 网站渗透测试 任务三 Linux系统渗透提权 任务四 Web渗透测试 第二阶段分
  • C#时间格式转换问题(12小时制和24小时制)

    string time Convert ToDateTime date ToString yyyy MM dd HH mm 24小时 string time Convert ToDateTime date ToString yyyy MM
  • @FeignClient服务之间调用Get请求传递对象参数

    使用feign进行服务间调用时 Get请求有多个参数的时候如何使用对象传参呢 第一步 引入pom依赖
  • unity中控制主角的移动和旋转

    在游戏中我们通常要控制玩家的移动和旋转 首先我们说一下移动 移动的本质就是在Update 或LateUpdate 中不断修改物体的position来实现移动 移动的方法有4中 1 transform Translate 第一种方法与直接修改
  • 两列表同时排序,排序后对应元素不变(用到zip打包和解包)

    number是数字 lis是要排的序列 def sort number list number lis 利用 解包方式 将一个排序好的元组 通过元组生成器再转成list list sorted list list zip sorted zi
  • 创造自己的专属免费网盘:Nextcloud

    由于百度网盘速度奇慢无比 而且同步文件夹还需要会员什么的 这对于Nextcloud来说简直就是欺负人啊 所以我们通过搭建一个Nextcloud的私有云 来解决这些问题 目录 简介 快捷安装 配置ssl 启用https 报错 意外处理 一 简
  • less动态样式语言(预处理语言)

    一 使用方法 Less是一门CSS 预处理语言 它扩展了 CSS 语言 增加了变量 Mixin 函数等特性 使 CSS 更易维护和扩展 Less 可以运行在 Node 或浏览器端 1 客户端使用 1 下载less 2 编写项目less文件
  • 红米10A 一键root教程 解锁BL 跳过168小时限制 刷面具root救黑砖刷机 解决无法解锁BL 新版本刷机

    新版本 红米10A 解锁BL 无法秒解锁BL root bootloader 要刷机 线刷救砖 获取Root权限都需要解除bootloader锁 我们称解除刷机限制的这个操作就叫解锁BL 只有解锁BL后 才可以进行刷机 刷Root权限等等一
  • Linux多进程:orphan process——孤儿进程

    孤儿进程orphan process 当父进程比子进程先结束 这样的子进程就成为了孤儿进程 每当出现一个孤儿进程 内核会把孤儿进程的父进程设置为init 托管 init进程会循环wait 孤儿进程结束 然后做剩下的善后 回收资源 因此 孤儿
  • 验证链表是否有环

    思路 声明一个快指针 一个慢指针 快指针一次走两步 慢指针一次走一步 如果快慢两个指针相遇 说明链表有环 至于为什么快慢两个指针相遇就说明链表中有环 这个牵扯到数学证明 这里就不论证了 我们直接用结论 代码实现 初始化的时候 快指针指向 h
  • SSM框架学习(三),SSM整合

    主要整合的主要整合Spring和Mybatis 将Mybatis交由Spring管理 第一步配置datasource
  • 因找不到D3DCompiler_47.dll文件导致游戏软件无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个D3DComp
  • jdbc中加载oracle驱动程序,在一个Java应用程序中使用多个Oracle JDBC驱动程序?

    我想通过JDBC连接到两个不同的Oracle数据库 一个8 0 5 0 0和一个12c 我确实有两个JDBC驱动程序 它们可以通过简单的 hello world 应用程序分别成功地连接到相应的DB 下面 我将它们都放在一个Java应用程序中
  • 【R语言】实验五 综合应用

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 systation 数据集 systation csv 中包含的是沈阳地铁
  • springmvc_上传图片以及显示图片到页面

    首先我使用的开发工具是IntelliJ idea 今天想做一个上传头像以及显示头像的简单功能 也在网上查询了很多资料 真的看得头大 最后还是自己鼓捣出来了 明明很简单的一个功能 先看看效果吧 需要注意的地方 1 记住要在wepapp文件目录
  • 必看,Mac苹果电脑重装系统教程

    们在使用mac电脑的过程中 因为Mac电脑长时间使用或多或少都可能会出现一些问题 这个时候我们可以选择重新安装系统来解决这些问题 Mac电脑重装系统方法其实很简单 分为两种 一种可以在线重装系统 一种可以将Mac系统制作到U盘里进行系统重装
  • ubuntu pptp

    Hi 1 安装pptp linux sudo apt get install pptp linux binutils 2 建立pptp连接 sudo pptpsetup create testvpn server 45 77 243 243
  • 在Ubuntu18.04上安装Docker CE的方法

    卸载旧版本 如果之前安装旧版本 需要先卸载 1 sudoapt get remove docker docker engine docker io containerd runc 设置仓库 更新apt包索引 1 sudoapt get up
  • Java实验3 员工管理系统

    Java实验3 员工管理系统 文章目录 Java实验3 员工管理系统 toc 1 实验要求 2 具体创建过程 3 结果展示 4 代码展示 1 实验要求 进行一个企业员工基本信息的数据库设计 使用员工信息表 部门信息表两个数据表来存放数据 选