Java雇员管理小项目
作者:马江河 发布时间:2023-02-12 00:39:01
标签:Java,雇员管理
在学习集合框架的时候,初学者很容易练习到学生管理系统、雇员管理体统等练习题。在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习的理解。下面用一个曾经做过的练习题,回顾集合框架,以及简要介绍面向对象编程思想。我发现旧的知识,当你再回头去看的时候,理解会更透彻。最近巩固基础ing。
工具:记事本,方便编译和演示
环境:将代码放在一个类当中了(这个习惯很不好)
目的:回顾知识,理解面向对象编程
代码实例(分四块,直接用即可)
1.导包
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
2.测试类
public class GuanLi {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 创建EmpManage对象
EmpManage em = new EmpManage();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 做出一个简单的菜单
while (true) {
System.out.println("请输入你要进行的操作:");
System.out.println("1:表示要添加一个雇员");
System.out.println("2:表示要查找一个雇员");
System.out.println("3:表示要修改雇员工资");
System.out.println("4:表示要删除一个雇员");
System.out.println("5:表示要您要退出操作");
String operType = br.readLine();
if (operType.equals("1")) {
System.out.println("请输入编号");
String num = br.readLine();
System.out.println("请输入名字");
String name = br.readLine();
System.out.println("请输入工资");
float sal = Float.parseFloat(br.readLine());
// 此时此刻,经过输入信息,对象创建好
Emp2 emp = new Emp2(num, name, sal);
// 将它添加进去
em.addEmp(emp);
} else if (operType.equals("2")) {
System.out.println("请输入编号");
String num = br.readLine();
em.showInfo(num);
} else if (operType.equals("3")) {
System.out.println("请输入编号");
String num = br.readLine();
System.out.println("请输入工资");
float sal = Float.parseFloat(br.readLine());
em.updateSal(num, sal);
} else if (operType.equals("4")) {
System.out.println("请输入编号");
String num = br.readLine();
em.delEmp(num);
} else if (operType.equals("5")) {
System.exit(0);
}
}
}
}
3.雇员管理类(包括对雇员信息的动态管理)
// 创建雇员管理类
class EmpManage {
// 定义集合类(属性)
private ArrayList<Emp2> al = null;
// 构造函数,初始化成员变量
public EmpManage() {
al = new ArrayList<Emp2>();
}
// 封装的方法
// 1.加入员工
public void addEmp(Emp2 emp) {
al.add(emp);
}
// 2.显示员工相关信息
public void showInfo(String num) {
// 遍历整个ArrayList
for (int i = 0; i < al.size(); i++) {
// 取出Emp2对象
Emp2 emp = (Emp2) al.get(i);
// 比较编号
if (emp.getNum().equals(num)) {
System.out.println("找到该员工,他的信息是:");
System.out.println("编号:" + emp.getNum());
System.out.println("名字:" + emp.getName());
System.out.println("工资:" + emp.getSal());
}
}
}
// 3.修改员工工资(依照编号来修改工资)
// 即,第一个参数是编号;第二个是用户传进来“新的”薪水
public void updateSal(String num, float newSal) {
// 遍历
for (int i = 0; i < al.size(); i++) {
Emp2 emp = (Emp2) al.get(i);
// 判断编号
if (emp.getNum().equals(num)) {
// 修改薪水
emp.setSal(newSal);
}
}
}
// 4.删除某个员工
public void delEmp(String unm) {
// 遍历
for (int i = 0; i < al.size(); i++) {
Emp2 emp = (Emp2) al.get(i);
if (emp.getNum().equals(unm)) {
// 按编号删除
al.remove(i);
// 按对象删除
// al.remove(emp);
}
}
}
}
4.雇员类(包括雇员的基本信息)
// 创建雇员类
class Emp2 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public float getSal() {
return sal;
}
public void setSal(float sal) {
this.sal = sal;
}
// 学号里面可能出现字母,所以定义为String
private String num;
private float sal;
// 构造函数,一堆初始化的工作
public Emp2(String num, String name, float sal) {
this.num = num;
this.name = name;
this.sal = sal;
}
}
在这里,雇员类和雇员管理类分开,方法、属性都进行了相应的封装,各司其职。
在测试类中,我们想用做什么,就调用其类中的方法即可,而不用操心方法是咋实现的呀,里面都有哪些函数呀,这即是很好的面向对象编程思想。
在dos中编译的时候发现,.java文件中所有的类会被分别编译成.class文件。在使用IDE后,这一点没注意。
来源:https://www.cnblogs.com/1693977889zz/p/8359828.html


猜你喜欢
- 1.实现方式说明本文在---- 手写redis @ Cacheable注解支持过期时间设置 的基础之上进行扩展。1.1问题说明
- Java 中的 CyclicBarrier 是一种同步工具,它可以让多个线程在一个屏障处等待,直到所有线程都到达该屏障处后,才能继续执行。C
- 超简单,几行代码搞定Android底部导航栏—–应项目需求以及小伙伴的留言,新加了两个方法:设置底部导航栏背景图片添加底部导航栏选项卡切换监
- 参考ColorComboBox做修改,并对颜色名做些修正,用于CR MVMixer产品中,聊作备忘~效果图:代码://颜色拾取框using
- 本文实例为大家分享了java图形用户界面实现菜单功能的具体代码,供大家参考,具体内容如下题目:编写一个图形用户界面,实现菜单的功能。有3个一
- 本文以实例形式讲述了C#应用BindingSource实现数据同步的方法,对C#数据库程序开发来说具有一定的参考借鉴价值。具体实现方法如下:
- 本文实例讲述了C#获取两个时间的时间差并去除周末的方法。分享给大家供大家参考。具体分析如下:一般来说取时间差的代码很多,但是能够只取工作日的
- 本文实例为大家分享了Unity实现俄罗斯方块第2部分,供大家参考,具体内容如下代码部分1. 实现物体自由降落(在有关于物体的脚本中编写)1)
- 目录一、什么是反射:二、反射的原理:三、反射的优缺点:四、反射的用途:五、反射机制常用的类:六、反射的基本使用:1、获得Class:主要有三
- 在源代码中设置断点,然后进行点击调试若要启用反汇编窗口,请在工具>选项(或工具> 选项>调试下,选择启用地址级调试。若要在
- 有三种方法如下:三个方法都需要动态申请读写权限否则保存图片到相册也会失败方法一/** * 保存bitmap到本地
- 在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下。一:概念首先我们要知道什么是”进程”,什么是“线
- 本文实例为大家分享了java抓取邮箱号码的具体代码,供大家参考,具体内容如下java抓取文件中邮箱号码的具体代码package reg;im
- 本文实例讲述了Java使用反射创建对象。分享给大家供大家参考,具体如下:一 实战1 代码import java.util.*;import
- 前言本文将使用Maven、gRPC、Protocol buffers、Docker、Envoy等工具构建一个简单微服务工程,笔者所使用的示例
- 一、MyBatis的增删改查1.1、新增<!--int insertUser();--><insert id="
- 过去在Android上网络通信都是使用的Xutils 因为用它可以顺道处理了图片和网络这两个方面,后来发觉Xutils里面使用的是HttpC
- 1、比较器①比较器的引入a.首先,当我们单一地比较某一种数据类型的数组时,可以直接用Arrays.sort()进行实现b.而当我们同时含有多
- 在Android开发中,View是我们必须要接触的用来展示的技术.通常情况下随着View视图的越来越复杂,整体布局的性能也会随之下降.这里介
- 面向对象有封装、继承、多态这三个特性,面向对象编程按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反