由于使用了的map没有进行嵌套使用与简化,所以代码显得过于臃肿.
package test0;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*员工管理系统
*使用map
*/
public class TestMina01 {
static Scanner sc=new Scanner(System.in);
//名字
static Map mapname=new HashMap();
//性别
static Map mapsex=new HashMap();
//部门
static Map mapda=new HashMap();
//入职时间
static Map mapwdate=new HashMap();
//转正时间
static Map mapzdate=new HashMap();
//离职时间
static Map mapldate=new HashMap();
//工资
static Map mapwp=new HashMap();
//是否转正
static Map mapzy=new HashMap();
public static void main(String[] args) {
// 参考
//名字
mapname.put("1000","刘晓");
mapname.put("1001","张树华");
mapname.put("1002","刘敏");
mapname.put("1003","王浩涛");
mapname.put("1004","李文华");
mapname.put("1005","邹凡");
//性别
mapsex.put("1000","女");
mapsex.put("1001","男");
mapsex.put("1002","女");
mapsex.put("1003","男");
mapsex.put("1004","男");
mapsex.put("1005","男");
//部门
mapda.put("1000","开发部");
mapda.put("1001","销售部");
mapda.put("1002","测试部");
mapda.put("1003","开发部");
mapda.put("1004","开发部");
mapda.put("1005","测试部");
//入职时间
mapwdate.put("1000","2015-3-14");
mapwdate.put("1001","2017-2-10");
mapwdate.put("1002","2017-10-10");
mapwdate.put("1003","2018-5-30");
mapwdate.put("1004","2018-5-30");
mapwdate.put("1005","2018-6-3");
//转正时间
mapzdate.put("1000","2015-6-13");
mapzdate.put("1001","null");
mapzdate.put("1002","2018-1-9");
mapzdate.put("1003","null");
mapzdate.put("1004","null");
mapzdate.put("1005","null");
//离职时间
mapldate.put("1000","null");
mapldate.put("1001","2017-3-18");
mapldate.put("1002","null");
mapldate.put("1003","null");
mapldate.put("1004","null");
mapldate.put("1005","null");
//工资
mapwp.put("1000","12000");
mapwp.put("1001","3500");
mapwp.put("1002","10500");
mapwp.put("1003","10000");
mapwp.put("1004","9500");
mapwp.put("1005","11000");
//是否转正
mapzy.put("1000","1");
mapzy.put("1001","0");
mapzy.put("1002","1");
mapzy.put("1003","0");
mapzy.put("1004","0");
mapzy.put("1005","0");
System.out.println("1.查询所有员工");
System.out.println("2.根据员工编号查员工");
System.out.println("3.查询所有已转正的员工");
System.out.println("4.员工转正");
System.out.println("5.员工离职");
System.out.println("6.按部门统计该部门最高工资,最低工资和平均工资");
System.out.println("7.增加员工");
System.out.println("8.查询近半年入职的员工");
System.out.println("请输入操作/9结束:");
int c=sc.nextInt();
switch (c){
case 1:LookAll();
break;
case 2:LooId();
break;
case 3:LookChang();
break;
case 4:IdChang();
break;
case 5:IdExist();
break;
case 6:Toj();
break;
case 7:AddId();
break;
case 8:Looky();
break;
case 9:
break;
}
}
//查询所有员工
public static void LookAll(){
System.out.println("员工编号:\t"+"员工姓名:\t"+
"性别:\t"+"部门:\t"+
"入职时间:\t"+"转正时间:\t"+
"离职时间:\t"+"工资:\t"+
"是否转正:");
for(Object key:mapname.keySet()){
System.out.println("\t"+key+"\t"+
mapname.get(key)+"\t\t"+mapsex.get(key)+"\t\t"+
mapda.get(key)+"\t"+mapwdate.get(key)+"\t"+
mapwdate.get(key)+"\t"+mapldate.get(key)+"\t\t"+
mapwp.get(key)+"\t\t"+mapzy.get(key));
}
}
// 2.根据员工编号查员工
public static void LooId(){
System.out.println("请输入要查询的编号:");
String lok=sc.next();
System.out.println("员工编号:\t"+"员工姓名:\t"+
"性别:\t"+"部门:\t"+
"入职时间:\t"+"转正时间:\t"+
"离职时间:\t"+"工资:\t"+
"是否转正:");
for(Object key:mapname.keySet()){
String keys=(String )key;//强转
if(keys.equals(lok)){
System.out.println("\t"+key+"\t"+
mapname.get(key)+"\t\t"+mapsex.get(key)+"\t\t"+
mapda.get(key)+"\t"+mapwdate.get(key)+"\t"+
mapwdate.get(key)+"\t"+mapldate.get(key)+"\t\t"+
mapwp.get(key)+"\t\t"+mapzy.get(key));
}
}
}
//3.查询所有已转正的员工
public static void LookChang(){
System.out.println("员工编号:\t"+"员工姓名:\t"+
"性别:\t"+"部门:\t"+
"入职时间:\t"+"转正时间:\t"+
"离职时间:\t"+"工资:\t"+
"是否转正:");
for(Object key:mapname.keySet()){
Object z=mapzy.get(key);
String keys=(String )z;//强转
if(keys.equals("1")){
System.out.println("\t"+key+"\t"+
mapname.get(key)+"\t\t"+mapsex.get(key)+"\t\t"+
mapda.get(key)+"\t"+mapwdate.get(key)+"\t"+
mapwdate.get(key)+"\t"+mapldate.get(key)+"\t\t"+
mapwp.get(key)+"\t\t"+mapzy.get(key));
}
}
}
//4.员工转正
public static void IdChang(){
System.out.println("请输入要转正的编号:");
String lok=sc.next();
for(Object key:mapname.keySet()){
String keys=(String )key;//强转
if(keys.equals(lok)){
mapzy.remove(lok);
mapzy.put(lok,"1");
}
}LookChang();
}
//5.员工离职
public static void IdExist(){
System.out.println("请输入要离职的编号:");
String lok=sc.next();
for(Object key:mapname.keySet()){
String keys=(String )key;//强转
if(keys.equals(lok)){
mapsex.remove(lok);
mapda.remove(lok);
mapwdate.remove(lok);
mapzdate.remove(lok);
mapldate.remove(lok);
mapwp.remove(lok);
mapzy.remove(lok);
}
}
mapname.remove(lok);
LookAll();
}
//6.按部门统计该部门最高工资,最低工资和平均工资
public static void Toj(){
int maxs=0;
int mins=0;
int o=0;
int sun=0;
int pin=0;
for(Object key:mapname.keySet()){
Object mi=mapwp.get("1000");
Object ma=mapwp.get(key);
o++;
String min=(String)mi;
String max=(String)ma;
int g=0;
mins=Integer.parseInt(min);
maxs=Integer.parseInt(max);
sun+=maxs;
if(mins>maxs){
g=maxs;
maxs=mins;
mins=g;
}
}
pin=sun/o;//平均值
System.out.println("最高:"+maxs+",最小:"+mins+",平均:"+pin);
}
//7.增加员工
public static void AddId(){
while (true) {
System.out.println("请输入要添加的员工号:");
String lok = sc.next();
int eph=0;
for (Object key : mapname.keySet()) {//根据其中的一个数组进行遍历,方便之后
String keys = (String) key;//强转
if (keys.equals(lok)) {//如果找到了目标,即存在重复的目标
System.out.println("员工号以存在!,请重新输入!");
break;
}else if(eph==0){
eph=1;
break;
}
}
if(eph==1){
System.out.println("请输入员工名字:");
String newname=sc.next();
mapname.put(lok,newname);
System.out.println("请输入员工性别:");
String newsex=sc.next();
mapsex.put(lok,newsex);
System.out.println("请输入员工部门:");
String newde=sc.next();
mapda.put(lok,newde);
System.out.println("请输入员工入职时间:");
String newwktime=sc.next();
mapwdate.put(lok,newwktime);
System.out.println("请输入员转正时间:");
String newdetime=sc.next();
mapzdate.put(lok,newdetime);
System.out.println("请输入员工工资:");
int newmeny=sc.nextInt();
mapwp.put(lok,newmeny);
System.out.println("请输入员工是否转正:");
int newdeh=sc.nextInt();
mapzy.put(lok,newdeh);
}
}
}
//8.查询近半年入职的员工
public static void Looky(){
//截取时间月份
for(Object key:mapwdate.keySet()){
//获取数据月份时间
Object da=mapwdate.get(key);
String sd=(String)da;
String[] sts=sd.split("\\-");
int dat=Integer.parseInt(sts[1]);
//获取当前时间
SimpleDateFormat df = new SimpleDateFormat("MM");//设置日期格式
String s=df.format(new Date());
int dats=Integer.parseInt(s);
if(dat<dats) {
System.out.println(" 姓名:"+mapname.get(key));
}
}
}
}