技术标签: java面向对象雇员
在学习集合框架的时候,初学者很容易练习到学生管理系统、雇员管理体统等练习题。在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习的理解。下面用一个曾经做过的练习题,回顾集合框架,以及简要介绍面向对象编程思想。我发现旧的知识,当你再回头去看的时候,理解会更透彻。最近巩固基础ing。
工具:记事本,方便编译和演示
环境:将代码放在一个类当中了(这个习惯很不好)
目的:回顾知识,理解面向对象编程
代码实例(分四块,直接用即可)
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;
}
}
在这里,雇员类和雇员管理类分开,方法、属性都进行了相应的封装,各司其职。
在测试类中,我们想用做什么,就调用其类中的方法即可,而不用操心方法是咋实现的呀,里面都有哪些函数呀,这即是很好的面向对象编程思想。
在dos中编译的时候发现,.java文件中所有的类会被分别编译成.class文件。在使用IDE后,这一点没注意。
Map<String, Object> mapVal = (Map<String, Object>) val;mapVal.keySet().removeIf(key->key.equals("张三"));
在 SpringCloud 项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域:前端页面通过不同域名或IP访问微服务的后台例如前端人员会在本地起HttpServer 直连后台开发...
can not be used when making a PIE object; recompile with -fPIC
前言在Vue项目开发过程中,以父子组件的形式进行页面调用,在测试过程中发现IE9下,子组件中定义初始化数据dataA=0,执行异步逻辑A,在异步请求方法前,输出dataA结果为0,请求结束后时,后台返回值将dataA赋值为1,输出dataA结果为1。再次触发子组件同样事件,但后台请求结果不满足赋值条件,对dataA不做赋值操作,发现在异步请求方法前后,输出dataA结果为1!伪码如下:data () { return { dataA: 0 }}<script> methods
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...
简单实用的前端部署, 一条命令搞定, 省去繁琐的步骤!主要是** nodejs shelljs(命令行命令) node-ssh(连接服务器)**项目git 地址(这个git项目是我自己搭的一个比较low的vue脚手架,集成ts)(第一次写文章, 文笔不行, 多多包涵,有不对的地方尽管指出)(主要看 自动部署 在 upload 目录 )如何在你项目中使用( 五步曲 )第一步, 把项目里 upload 文件夹复制到你项目根目录image.png第二步, 下载该js相关依赖
目录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.线程的特
NginxPHPMySQLZendSquid 公司要上ShopEx,之前一台dell r210无法安装Linux系统(主要是那个硬阵列不支持Linux),如果不要硬阵列的话还是可以安装Linux的,但是没有硬阵列的话不符我们的需要。 一周后加采购了一台dell r710,这两天也在折腾这台东东。 整个过程中发现自己接下来要赶快学习一些新东西:1. 对硬件不熟...
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote。今天主题围绕的是.NET OpenSource 展开,Hanselman通过PowerBI分析了.NET社区这两年的发展,Scott Hanselman带着回顾了开源社区对微软的贡献。很难想象Google 和三星在.NET...
#!/bin/bash# Name: Atomic Archive configuration script# Copyright Atomicorp, 2002-2018# License: AGPL# Credits# Scott R. Shinn (atomicorp)# Andy Gredler (rackspace)#export L...
struts2源码分析,首先就是要下载struts2的源码包,如果要方便研究,肯定是生成eclipse项目的形式更方便。struts2是采用maven编译和管理代码的。因此在编译struts2源码前,首先要确保你安装了maven环境,不会安装maven的请看这篇文章:在windows下安装maven。1、下载struts2源码包到struts2官网下载struts2的源码包,我下载的是struts...