JAVA代码 企业人力资源管理系统(详细带截图) 毕业设计
不感兴趣往下滑直接看代码,不然可以继续查看
题目九、企业人力资源管理系统
1、问题描述:
《企业人力资源管理系统——工资管理》案例主要对企业员工信息和工资进行管理。将企业员工按工种的不同分为经理、销售人员、技术人员、销售经理和技术总监五类人员。该案例具备五类人员信息的添加、删除、修改、查询、浏览、保存和计算工资等功能,很好的达到了对企业员工信息和工资管理的目的。
2.功能要求:
根据企业实际需求,将案例分为5个模块。
(1)模块一:
对企业中所有员工的基本信息提取出来定义一个类。该类包括员工的编号、姓名、性别、年龄、参加工作时间、部门、职务、联系方式,奖金、扣发工资和基本工资等属性,还包括对员工基本信息的录入、显示和计算实发工资等功能。
(2)模块二:
实现统计员工总数功能;实现插入和提取运算符的重载。
(3)模块三:
根据企业中员工的工作性质的不同,将所有员工分为经理、销售人员、技术人员等三类。其中,经理又可分为销售经理和技术总监两类。
经理类除了包含员工的基本信息外,还包括级别和职务津贴两个属性,还包括对经理信息的录入、显示和计算实发工资等功能。经理类是从员工类派生的。实发工资等于基本工资+奖金-扣发工资+职务津贴。
销售人员类除了包含员工的基本信息外,还包括销售额和提成比例两个属性,还包括对销售人员信息的录入、显示和计算实发工资等功能。销售人员类是从员工类派生的。实发工资等于基本工资+奖金-扣发工资+销售额*提成比例。
技术人员除了包含员工的基本信息外,还包括工作时数和每小时金额两个属性,还包括对技术人员信息的录入、显示和计算实发工资等功能。技术人员类也是从员工类派生的。实发工资等于基本工资+奖金-扣发工资+工作时数*每小时金额。每小时金额随工作时数的不同而取不同的值。
销售经理即包含经理的信息,也包含销售人员的信息。所以销售经理是由经理类和销售人员类派生的。它具备信息的录入、显示和计算实发工资等功能。实发工资等于基本工资+奖金-扣发工资+销售额*提成比例+职务津贴。
技术总监即包含经理的信息,也包含技术人员的信息。所以技术总监是由经理类和技术人员类派生的。它具备信息的录入、显示和计算实发工资等功能。实发工资等于基本工资+奖金-扣发工资+工作时数*每小时金额+职务津贴。
(4)模块四:
定义管理类实现对不同的员工的管理。
(5)模块五:
从文件中读取员工信息和将修改后的员工信息保存到文件中。
(6)能够对各类员工的员工信息进行添加、删除、修改、查询、浏览、保存和计算工资等功能
测试的(不感兴趣往下滑看代码):
------------公司人员------------------
当前公司人员:
姓名:3
数据读取成功!当前人数:1
-------------------------------
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:1
-----------------------
当前员工数量:1
-----------------------
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:2
请输入添加人姓名:
张三
请输入序号职位:1.销售人员 2.技术人员 3.销售总经理 4.技术总经理
2
------------技术经理信息输入(或修改)-----------------
ID:
12
姓名:
张三
性别
男
工作时间
12
职务
java后台人员
联系方式
12333221241
奖金
1200
扣发工资
21
基本工资
22
工作时数
10
小时金额
400
---------------------------------------
-------------------------------
用户张三添加成功
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:3
请输入需要删除人的姓名:
1
并没有当前用户1!!!!!!!
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:3
请输入需要删除人的姓名:
3
-------------------------------
删除用户3成功
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:5
请输入需要查询的姓名:
张三
------------个人信息查询-----------------
ID:12
姓名::张三
性别:男
工作时间:12
部门:技术人员
职务:java后台人员
联系方式:12333221241
奖金:1200.0
扣发工资:21.0
基本工资:22.0
工作时数:10
小时金额:400
总工资:5201.0
---------------------------------------
-------------------------------
输入查询成功
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:6
请输入需要计算工资的姓名:
张三
当前张三工资为:5201.0
-------------------------------
计算成功
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:7
-------------------------------
保存到文件成功!
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:9
------------------浏览--------------------
姓名:张三 职位:技术人员
------------------------------------------
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:4
请输入修改人姓名:
张三
------------技术经理信息输入(或修改)-----------------
ID:
1
姓名:
李四
性别
男
工作时间
12
职务
玩
联系方式
1211121
奖金
18
扣发工资
12
基本工资
12
工作时数
321
小时金额
11
---------------------------------------
--------------------------------
修改成功
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:5
请输入需要查询的姓名:
李四
当前需要查询姓名不存在
----------企业人力资源管理系统---------------
1.计算员工数量 2.添加
3.删除 4.修改
5.查询 6.计算工资
7.保存 8.读取文件数据
9.浏览 10.退出
请输入选项:
代码部分:
结构图:
代码区:
接口:
package S85.Iservice;
import S85.Modio.EssentialInformation;
public interface IService {
EssentialInformation scanner();
void show(); //显示
double netPayroll();//实发工资
}
Modio层的:
package S85.Modio;
import S85.Iservice.IService;
import java.io.Serializable;
/**
*
* -----------
* 基本信息类
* ------------
*/
public class EssentialInformation implements IService, Serializable {
public int id;
public String name;
public String sex;
public int dataWork;
/**部门*/
public String department;
/**职务*/
public String duty;
/**联系方式*/
public String phone;
/**奖金*/
public double bonus;
/**扣发工资*/
public double salary_deduct;
/**基本工资*/
public double salary;
public EssentialInformation scanner(){return null;} // 子类使用的输入
@Override
public void show() {} //查看子类重载
@Override
public double netPayroll() { //计算工资子类重载
return 0;
}
}
package S85.Modio;
import S85.Modio.EssentialInformation;
import java.io.Serializable;
import java.util.Map;
public class ABC implements Serializable { //保存数据类
public Map<String, EssentialInformation> map;
public ABC(Map<String, EssentialInformation> map) {
this.map=map;
}
}
package S85.Modio.saleTechniqueModio;
import S85.Iservice.IService;
import S85.Modio.EssentialInformation;
import java.io.Serializable;
import java.util.Scanner;
/**
* -----------
* 技术人员类
* ------------
*/
public class Artisan_personnel extends EssentialInformation implements IService , Serializable {
/**工作时数*/
public int working_hours;
/**小时金额*/
public int hourly_Amount;
public EssentialInformation scanner(){ //删除或者修改
Artisan_personnel art=new Artisan_personnel();
Scanner sc=new Scanner(System.in);
System.out.println("------------技术经理信息输入(或修改)-----------------");
System.out.println("ID:");
art.id= sc.nextInt();
System.out.println("姓名:");
art.name=sc.next();
System.out.println("性别");
art.sex=sc.next();
System.out.println("工作时间");
art.dataWork= sc.nextInt();
System.out.println("职务");
art.duty=sc.next();
System.out.println("联系方式");
art.phone=sc.next();
System.out.println("奖金");
art.bonus=sc.nextDouble();
System.out.println("扣发工资");
art.salary_deduct=sc.nextDouble();
System.out.println("基本工资");
art.salary=sc.nextDouble();
System.out.println("工作时数");
art.working_hours= sc.nextInt();
System.out.println("小时金额");
art.hourly_Amount=sc.nextInt();
art.department="技术人员";
System.out.println("---------------------------------------");
return art;
}
@Override
public void show() {
System.out.println("------------个人信息查询-----------------");
System.out.println("ID:"+id);
System.out.println("姓名::"+name);
System.out.println("性别:"+sex);
System.out.println("工作时间:"+dataWork);
System.out.println("部门:"+department);
System.out.println("职务:"+duty);
System.out.println("联系方式:"+phone);
System.out.println("奖金:"+bonus);
System.out.println("扣发工资:"+salary_deduct);
System.out.println("基本工资:"+salary);
System.out.println("工作时数:"+working_hours);
System.out.println("小时金额:"+hourly_Amount);
System.out.println("总工资:"+netPayroll());
System.out.println("---------------------------------------");
}
@Override
public double netPayroll() {
double wage=salary+bonus-salary_deduct+working_hours*hourly_Amount;
return wage;
}
}
package S85.Modio.saleTechniqueModio;
import S85.Iservice.IService;
import S85.Modio.EssentialInformation;
import java.io.Serializable;
import java.util.Scanner;
/**
* -----------
* 销售人员类
* ------------
*/
public class Sell_personnel extends EssentialInformation implements IService , Serializable {
/**销售额;*/
public double sales;
/**提成比例*/
public double commission_Rate;
public EssentialInformation scanner(){
Sell_personnel art=new Sell_personnel();
Scanner sc=new Scanner(System.in);
System.out.println("------------技术人员信息输入(或修改)-----------------");
System.out.println("ID:");
art.id= sc.nextInt();
System.out.println("姓名:");
art.name=sc.next();
System.out.println("性别:");
art.sex=sc.next();
System.out.println("工作时间:");
art.dataWork= sc.nextInt();
System.out.println("职务:");
art.duty=sc.next();
System.out.println("联系方式:");
art.phone=sc.next();
System.out.println("奖金:");
art.bonus=sc.nextDouble();
System.out.println("扣发工资:");
art.salary_deduct=sc.nextDouble();
System.out.println("基本工资:");
art.salary=sc.nextDouble();
System.out.println("销售额:");
art.sales= sc.nextInt();
System.out.println("提成比例:");
art.commission_Rate=sc.nextInt();
art.department="销售人员";
System.out.println("---------------------------------------");
return art;
}
@Override
public void show() {
System.out.println("------------个人信息查询-----------------");
System.out.println("ID:"+id);
System.out.println("姓名::"+name);
System.out.println("性别:"+sex);
System.out.println("工作时间:"+dataWork);
System.out.println("部门:"+department);
System.out.println("职务:"+duty);
System.out.println("联系方式:"+phone);
System.out.println("奖金:"+bonus);
System.out.println("扣发工资:"+salary_deduct);
System.out.println("基本工资:"+salary);
System.out.println("销售额:"+sales);
System.out.println("提成比例:"+commission_Rate);
System.out.println("总工资:"+netPayroll());
System.out.println("---------------------------------------");
}
@Override
public double netPayroll() {
double wage=salary+bonus-salary_deduct+sales*commission_Rate;
return wage;
}
}
package S85.Modio.saleTechniqueModio.ManagerModio;
import S85.Iservice.IService;
import S85.Modio.saleTechniqueModio.Artisan_personnel;
import java.io.Serializable;
/**
* -----------
* 技术经理类
* ------------
*/
public class Manager_Artisan extends Artisan_personnel implements IService, Serializable {
/**级别;*/
public String level;
/**职务补贴;*/
public double jobAllowance;
@Override
public void show() {}
@Override
public double netPayroll() {
return salary+bonus-salary_deduct+jobAllowance;
}
}
package S85.Modio.saleTechniqueModio.ManagerModio;
import S85.Iservice.IService;
import S85.Modio.saleTechniqueModio.Sell_personnel;
import java.io.Serializable;
/**
* -----------
* 销售经理类
* ------------
*/
public class Manager_Sell extends Sell_personnel implements IService, Serializable {
/**级别;*/
public String level;
/**职务补贴;*/
public double jobAllowance;
@Override
public void show() {}
@Override
public double netPayroll() {
return salary+bonus-salary_deduct+jobAllowance;
}
}
package S85.Modio.saleTechniqueModio.ManagerModio.SaleTechniqueManager;
import S85.Iservice.IService;
import S85.Modio.EssentialInformation;
import S85.Modio.saleTechniqueModio.ManagerModio.Manager_Sell;
import java.io.Serializable;
import java.util.Scanner;
/**
* -----------
* 销售经理类
* ------------
*/
public class Sell_manager extends Manager_Sell implements IService, Serializable {
public EssentialInformation scanner(){
Sell_manager art=new Sell_manager();
Scanner sc=new Scanner(System.in);
System.out.println("------------技术经理信息输入(或修改)-----------------");
System.out.println("ID:");
art.id= sc.nextInt();
System.out.println("姓名:");
art.name=sc.next();
System.out.println("性别");
art.sex=sc.next();
System.out.println("工作时间");
art.dataWork= sc.nextInt();
System.out.println("职务");
art.duty=sc.next();
System.out.println("联系方式");
art.phone=sc.next();
System.out.println("奖金");
art.bonus=sc.nextDouble();
System.out.println("扣发工资");
art.salary_deduct=sc.nextDouble();
System.out.println("基本工资");
art.salary=sc.nextDouble();
System.out.println("销售额");
art.sales= sc.nextInt();
System.out.println("提成比例");
art.commission_Rate=sc.nextInt();
System.out.println("级别");
art.level=sc.next();
System.out.println("职务补贴");
art.jobAllowance=sc.nextDouble();
art.department="销售经理";
System.out.println("---------------------------------------");
return art;
}
@Override
public void show() {
System.out.println("------------个人信息查询-----------------");
System.out.println("ID:"+id);
System.out.println("姓名:"+name);
System.out.println("性别:"+sex);
System.out.println("工作时间:"+dataWork);
System.out.println("部门:"+department);
System.out.println("职务:"+duty);
System.out.println("联系方式:"+phone);
System.out.println("奖金:"+bonus);
System.out.println("扣发工资:"+salary_deduct);
System.out.println("基本工资:"+salary);
System.out.println("销售额:"+sales);
System.out.println("提成比例:"+commission_Rate);
System.out.println("级别:"+level);
System.out.println("职务补贴:"+jobAllowance);
System.out.println("总工资:"+netPayroll());
System.out.println("---------------------------------------");
}
@Override
public double netPayroll() {
double wage=salary+bonus-salary_deduct+sales*commission_Rate+jobAllowance;
return wage;
}
}
package S85.Modio.saleTechniqueModio.ManagerModio.SaleTechniqueManager;
import S85.Iservice.IService;
import S85.Modio.EssentialInformation;
import S85.Modio.saleTechniqueModio.ManagerModio.Manager_Artisan;
import java.io.Serializable;
import java.util.Scanner;
/**
* -----------
* 技术经理类
* ------------
*/
public class Artisan_manager extends Manager_Artisan implements IService, Serializable {
//public int a=1;
//public EssentialInformation object(){
// Artisan_manager art=new Artisan_manager();
// return art;
//}
public EssentialInformation scanner(){
Artisan_manager art=new Artisan_manager();
Scanner sc=new Scanner(System.in);
System.out.println("------------技术经理信息输入(或修改)-----------------");
System.out.println("ID:");
art.id= sc.nextInt();
System.out.println("姓名:");
art.name=sc.next();
System.out.println("性别");
art.sex=sc.next();
System.out.println("工作时间");
art.dataWork= sc.nextInt();
System.out.println("职务");
art.duty=sc.next();
System.out.println("联系方式");
art.phone=sc.next();
System.out.println("奖金");
art.bonus=sc.nextDouble();
System.out.println("扣发工资");
art.salary_deduct=sc.nextDouble();
System.out.println("基本工资");
art.salary=sc.nextDouble();
System.out.println("工作时数");
art.working_hours= sc.nextInt();
System.out.println("小时金额");
art.hourly_Amount=sc.nextInt();
System.out.println("级别");
art.level=sc.next();
System.out.println("职务补贴");
art.jobAllowance=sc.nextDouble();
art.department="技术经理";
System.out.println("---------------------------------------");
return art;
}
@Override
public void show() {
System.out.println("------------个人信息查询-----------------");
System.out.println("ID:"+id);
System.out.println("姓名:"+name);
System.out.println("性别:"+sex);
System.out.println("工作时间:"+dataWork);
System.out.println("部门:"+department);
System.out.println("职务:"+duty);
System.out.println("联系方式:"+phone);
System.out.println("奖金:"+bonus);
System.out.println("扣发工资:"+salary_deduct);
System.out.println("基本工资:"+salary);
System.out.println("工作时数:"+working_hours);
System.out.println("小时金额:"+hourly_Amount);
System.out.println("级别:"+level);
System.out.println("职务补贴:"+jobAllowance);
System.out.println("总工资:"+netPayroll());
System.out.println("---------------------------------------");
}
@Override
public double netPayroll() {
double wage=salary+bonus-salary_deduct+working_hours*hourly_Amount+jobAllowance;
return wage;
}
}
Service 服务层:
package S85.Service;
import S85.Iservice.IService;
import S85.Modio.EssentialInformation;
import S85.Modio.saleTechniqueModio.Artisan_personnel;
import S85.Modio.saleTechniqueModio.ManagerModio.SaleTechniqueManager.Artisan_manager;
import S85.Modio.saleTechniqueModio.ManagerModio.SaleTechniqueManager.Sell_manager;
import S85.Modio.saleTechniqueModio.Sell_personnel;
import S85.Modio.ABC;
import java.io.*;
import java.util.Map;
import java.util.Scanner;
/**
* 管理类
*/
public class Manager {
public Map<String, EssentialInformation> map;
public ABC ac;
public Scanner sc=new Scanner(System.in);
public Manager(ABC ac) {
this.ac=ac;
map=ac.map; //获取map;
}
/**统计员工总数*/
public void staffSum(){
int sum=map.size();
System.out.println("-----------------------");
System.out.println("当前员工数量:"+sum);
System.out.println("-----------------------");
}
/**添加*/
public void add(){
while (true) {
EssentialInformation esf = null;
System.out.println("请输入添加人姓名:");
String name = sc.next();
System.out.println("请输入序号职位:1.销售人员 2.技术人员 3.销售总经理 4.技术总经理");
switch (sc.nextInt()) {
case 1:
esf = new Sell_personnel();
break;
case 2:
esf = new Artisan_personnel();
break;
case 3:
esf = new Sell_manager();
break;
case 4:
esf = new Artisan_manager();
break;
default:
System.out.println("你选择的序号并没有请重新输入!");
}
if (esf != null) {
EssentialInformation scan = esf.scanner();//数据的存放
map.put(name, scan);
System.out.println("-------------------------------");
System.out.println("用户"+name+"添加成功 ");
break;
}
}
}
/**删除*/
public void delete(){
System.out.println("请输入需要删除人的姓名:");
String name = sc.next();
if(map.remove(name)==null){
System.out.println("并没有当前用户"+name+"!!!!!!!");
}else{
System.out.println("-------------------------------");
System.out.println("删除用户"+name+"成功");
}
}
/**修改*/
public void amend(){
System.out.println("请输入修改人姓名:");
String name = sc.next();
EssentialInformation information = map.get(name);
if(information==null){ //当前数据不存在
System.out.println("当前需要修改人姓名不存在");
return;
}
IService is=information;
EssentialInformation scanner = is.scanner();
map.put(name,scanner); //覆盖写入
System.out.println("--------------------------------");
System.out.println("修改成功");
}
/**查询*/
public void select(){
System.out.println("请输入需要查询的姓名:");
String name = sc.next();
EssentialInformation information = map.get(name);
if(information==null){ //当前数据不存在
System.out.println("当前需要查询姓名不存在");
return;
}
IService is=information;
is.show();
System.out.println("-------------------------------");
System.out.println("输入查询成功");
}
/**浏览*/
public void show(){
System.out.println("------------------浏览--------------------");
for (String s : map.keySet()) {
EssentialInformation essentialInformation = map.get(s);
System.out.println("姓名:"+essentialInformation.name+" 职位:"+essentialInformation.department);
}
System.out.println("------------------------------------------");
}
/**计算工资*/
public void netPayroll(){
System.out.println("请输入需要计算工资的姓名:");
String name = sc.next();
EssentialInformation information = map.get(name);
if(information==null){ //当前数据不存在
System.out.println("当前需要计算工资姓名不存在");
return;
}
IService is=information;
double payroll = is.netPayroll();
System.out.println("当前"+name+"工资为:"+payroll);
System.out.println("-------------------------------");
System.out.println("计算成功");
}
/**保存*/
public void save() throws IOException {
//存储
// FileSystemView fsv = FileSystemView.getFileSystemView();
// File com=fsv.getHomeDirectory();
// ObjectOutputStream o1=new ObjectOutputStream(new FileOutputStream(com.getPath()));
ObjectOutputStream o1=new ObjectOutputStream(new FileOutputStream("C:\\Users\\hbl\\Desktop\\xlh\\cc1.txt"));
o1.writeObject(ac);
o1.flush();
o1.close();
System.out.println("-------------------------------");
System.out.println("保存到文件成功!");
}
/**从文件中读取数据*/
public void readTxt() throws IOException, ClassNotFoundException {
try{
// FileSystemView fsv = FileSystemView.getFileSystemView();
// File com=fsv.getHomeDirectory();
// ObjectInputStream o2=new ObjectInputStream(new FileInputStream(com.getPath()));
//取出
ObjectInputStream o2=new ObjectInputStream(new FileInputStream("C:\\Users\\hbl\\Desktop\\xlh\\cc1.txt"));
Object a=o2.readObject();
o2.close();
ac=(ABC)a; //保存到集合
map=((ABC) a).map; //获取map;
System.out.println("-------------公司人员------------------");
System.out.println("当前公司人员:");
for (String s : map.keySet()) {
EssentialInformation essentialInformation = map.get(s);
System.out.println("姓名:"+essentialInformation.name);
}
System.out.println("数据读取成功!当前人数:"+map.size());
System.out.println("-------------------------------");
}catch (Exception e){
System.out.println("当前并没有此文件!!");
}
}
}
Main方法层
package S85.Text;
import S85.Modio.ABC;
import S85.Modio.EssentialInformation;
import S85.Service.Manager;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception{
Map<String, EssentialInformation> map=new HashMap<>();
Scanner scanner=new Scanner(System.in);
ABC abc=new ABC(map);
Manager manager=new Manager(abc);
manager.readTxt();//读取上一次的数据
while(true){
System.out.println("----------企业人力资源管理系统---------------");
System.out.println("1.计算员工数量 2.添加");
System.out.println("3.删除 4.修改");
System.out.println("5.查询 6.计算工资");
System.out.println("7.保存 8.读取文件数据");
System.out.println("9.浏览 10.退出");
System.out.print("请输入选项:");
switch (scanner.nextInt()){
case 1:manager.staffSum();
break;
case 2:manager.add();
break;
case 3:manager.delete();
break;
case 4:manager.amend();
break;
case 5:manager.select();
break;
case 6:manager.netPayroll();
break;
case 7:manager.save();
break;
case 8:manager. readTxt();
break;
case 9:manager.show();
break;
default:
manager.save();
System.out.println("程序退出!本次文件已保存");
System.exit(0);
}
}
}
}