java面向对象雇员_Java 雇员管理小练习(理解面向对象编程)_孙绿的博客-程序员宅基地

技术标签: java面向对象雇员  

在学习集合框架的时候,初学者很容易练习到学生管理系统、雇员管理体统等练习题。在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习的理解。下面用一个曾经做过的练习题,回顾集合框架,以及简要介绍面向对象编程思想。我发现旧的知识,当你再回头去看的时候,理解会更透彻。最近巩固基础ing。

工具:记事本,方便编译和演示

环境:将代码放在一个类当中了(这个习惯很不好)

目的:回顾知识,理解面向对象编程

c049d3cd090db4100138d8a9937f4704.png

代码实例(分四块,直接用即可)

1.导包

importjava.util.ArrayList;importjava.io.BufferedReader;import java.io.InputStreamReader;

2.测试类

public classGuanLi {public static void main(String[] args) throwsException {//TODO Auto-generated method stub//创建EmpManage对象

EmpManage em = newEmpManage();

BufferedReader br= new BufferedReader(newInputStreamReader(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 = newEmp2(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.雇员管理类(包括对雇员信息的动态管理)

//创建雇员管理类

classEmpManage {//定义集合类(属性)

private ArrayList al = null;//构造函数,初始化成员变量

publicEmpManage() {

al= new ArrayList();

}//封装的方法//1.加入员工

public voidaddEmp(Emp2 emp) {

al.add(emp);

}//2.显示员工相关信息

public voidshowInfo(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, floatnewSal) {//遍历

for (int i = 0; i < al.size(); i++) {

Emp2 emp=(Emp2) al.get(i);//判断编号

if(emp.getNum().equals(num)) {//修改薪水

emp.setSal(newSal);

}

}

}//4.删除某个员工

public voiddelEmp(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.雇员类(包括雇员的基本信息)

//创建雇员类

classEmp2 {privateString name;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getNum() {returnnum;

}public voidsetNum(String num) {this.num =num;

}public floatgetSal() {returnsal;

}public void setSal(floatsal) {this.sal =sal;

}//学号里面可能出现字母,所以定义为String

privateString num;private floatsal;//构造函数,一堆初始化的工作

public Emp2(String num, String name, floatsal) {this.num =num;this.name =name;this.sal =sal;

}

}

在这里,雇员类和雇员管理类分开,方法、属性都进行了相应的封装,各司其职。

在测试类中,我们想用做什么,就调用其类中的方法即可,而不用操心方法是咋实现的呀,里面都有哪些函数呀,这即是很好的面向对象编程思想。

12f48f562e1069caa5512944c0211e35.png

在dos中编译的时候发现,.java文件中所有的类会被分别编译成.class文件。在使用IDE后,这一点没注意。

36df9cb6f83cd59a94de334447695077.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_27875131/article/details/114557152

智能推荐

map怎样删除元素(键值对)_西蜀漫山桃花的博客-程序员宅基地_map删除键值对

Map&lt;String, Object&gt; mapVal = (Map&lt;String, Object&gt;) val;mapVal.keySet().removeIf(key-&gt;key.equals("张三"));

Spring Cloud Gateway CORS 方案看这篇就够了,漏洞也需修复_公众号:肉眼品世界的博客-程序员宅基地

在 SpringCloud 项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域:前端页面通过不同域名或IP访问微服务的后台例如前端人员会在本地起HttpServer 直连后台开发...

Vue进阶(幺捌叁):IE9兼容性问题-数据初始化问题_No Silver Bullet的博客-程序员宅基地

前言在Vue项目开发过程中,以父子组件的形式进行页面调用,在测试过程中发现IE9下,子组件中定义初始化数据dataA=0,执行异步逻辑A,在异步请求方法前,输出dataA结果为0,请求结束后时,后台返回值将dataA赋值为1,输出dataA结果为1。再次触发子组件同样事件,但后台请求结果不满足赋值条件,对dataA不做赋值操作,发现在异步请求方法前后,输出dataA结果为1!伪码如下:data () { return { dataA: 0 }}&lt;script&gt; methods

在vc环境中一个c语言源程序要经过编译,在vc环境中,一个c语言源程序要经过编辑、编译、和什么后才能执行?..._weixin_39535283的博客-程序员宅基地

2020-02-25 回答//code by pnig0s1992//date:2012,3,13#include#include#includetypedef void (_stdcall*p)(void);bool enabledebugpriv(){handle htoken;luid sedebugnamevalue;token_privileges tkp;if (!openproces...

前端自动化部署服务器, 告别繁琐部署过程_小仙女de成长的博客-程序员宅基地

简单实用的前端部署, 一条命令搞定, 省去繁琐的步骤!主要是** nodejs shelljs(命令行命令) node-ssh(连接服务器)**项目git 地址(这个git项目是我自己搭的一个比较low的vue脚手架,集成ts)(第一次写文章, 文笔不行, 多多包涵,有不对的地方尽管指出)(主要看 自动部署 在 upload 目录 )如何在你项目中使用( 五步曲 )第一步, 把项目里 upload 文件夹复制到你项目根目录image.png第二步, 下载该js相关依赖

随便推点

Java核心技术笔记——了解多线程_安洁莉娅丶的博客-程序员宅基地

目录1.线程的概念2.线程的特点3.线程的三种创建方式4.继承Thread类实现线程5.实现Runnable接口来创建线程6.lamda表达式7.线程的五大状态8.线程停止的方法9.线程休眠10.线程礼让11.线程强制执行(插队)12.观察线程状态13.线程的优先级(Priority)14.守护线程15.线程同步(重点)15.1 条件对象15.*重点15.2 synchronized关键字15.3 Volatile域1.线程的概念程序是静态的概念。进程是动态的概念。进程内又若干个线程。2.线程的特

ShopEx安装过程_weixin_30593261的博客-程序员宅基地

NginxPHPMySQLZendSquid 公司要上ShopEx,之前一台dell r210无法安装Linux系统(主要是那个硬阵列不支持Linux),如果不要硬阵列的话还是可以安装Linux的,但是没有硬阵列的话不符我们的需要。  一周后加采购了一台dell r710,这两天也在折腾这台东东。  整个过程中发现自己接下来要赶快学习一些新东西:1. 对硬件不熟...

“.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman_weixin_30776545的博客-程序员宅基地

美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote。今天主题围绕的是.NET OpenSource 展开,Hanselman通过PowerBI分析了.NET社区这两年的发展,Scott Hanselman带着回顾了开源社区对微软的贡献。很难想象Google 和三星在.NET...

release判断系统_weixin_30521649的博客-程序员宅基地

#!/bin/bash# Name: Atomic Archive configuration script# Copyright Atomicorp, 2002-2018# License: AGPL# Credits# Scott R. Shinn (atomicorp)# Andy Gredler (rackspace)#export L...

mvn如何编译源码命令_maven编译struts2源码并导入eclipse_吹亚吹的博客-程序员宅基地

struts2源码分析,首先就是要下载struts2的源码包,如果要方便研究,肯定是生成eclipse项目的形式更方便。struts2是采用maven编译和管理代码的。因此在编译struts2源码前,首先要确保你安装了maven环境,不会安装maven的请看这篇文章:在windows下安装maven。1、下载struts2源码包到struts2官网下载struts2的源码包,我下载的是struts...

推荐文章

热门文章

相关标签