目录
一、前言
二、实现的功能
三、代码部分
1.Admin类
2.Employee类
3.AdminEmployee测试类
四、程序运行结果
一、前言
1.之前发的Java员工管理系统博文只有代码,为更加完善Java员工管理系统,所以增加了控制台运行结果显示以及功能实现等图片;
2.本Java员工管理系统是我在上学时与同学通过Java学生管理系统的基础上共同编写的,有一些地方没能完美实现,请包涵也请多赐教,但这个博文会满足部分大学学生的需求;
3.该系统只能在控制台(eclipse等版本)上运行
二、实现的功能
这是一个能实现添加员工,据员工编号输入员工工资,根据员工编号查找一个员工,根据员工编号删除一个员工,根据员工编号更新一个员工的姓名、职称、部门名称,根据实际工资进行排序等功能的Java员工管理系统。其中根据实际工资进行排序,根据某项工资进行排序这两个功能是需要将定义完输入的人数都录入进去了,才好使的,所以需要使用的在这一个地方一定要注意,如果能更改正确希望能将错误的原因发给我,我好改正错误,吸收经验,完善程序;
提示:以下是本篇文章正文内容,下面案例可供参考
三、代码部分
首先需要新建一个Java项目,在建立包,我建立的包名是com.edu.p1。然后创建三个类分别是如下的Admin类、Employee类、EmployeetAdmin类
1.Admin类
代码如下(示例):
package com.edu.p1;
import java.util.Scanner;
public class Admin {
static int i; //变量i,用来保存员工编号,自动生成
static String msg; //变量msg用来保存员工信息的表头字串
//----------------------创建生成信息表头的字符串编号 姓名 职称 部门名称 基本工资 公积金 住房基金 实际工资
private String createMsg() {
String str="编号\t姓名\t职称\t部门名称\t";
Employee e=new Employee();
for(int j=0;j<e.wagesname.length;j++){
str=str+e.getWagesname()[j]+"\t";
}
str=str+"总计工资";
msg=str;
return msg;
}
//根据员工姓名,职称,部门名称创建员工
public void create(String name,String position,String department,Employee[] arr){
Employee emp=new Employee();
emp.setName(name);
emp.setPosition(position);
emp.setDepartment(department);
i=this.setIndex(arr);
if(i==99999){
System.out.println("所有的员工都已经添加完了,不能再添加了!");
}
emp.setNum(i);
arr[i]=emp;
}
//返回Employee类对象数组中元素为空的下标
public int setIndex(Employee[] arr){
for(int j=0;j<arr.length;j++){
if(arr[j]==null)return j;
}
return 99999;
}
//输出所有员工的各项信息
public void print(Employee[] arr){
System.out.println(this.createMsg());
for(int j=0;j<arr.length;j++){
if(arr[j]!=null)
System.out.println(arr[j]);
}
}
//判断要查找的员工是否存在,根据学号判断
public boolean exist(int num,Employee emp){
if(emp!=null){
if(emp.getNum()==num)return true;
else return false;
}
return false;
}
//按编号进行查找
public void search(int num,Employee[] arr){
for(int j=0;j<arr.length;j++){
if(this.exist(num,arr[j])==true){
System.out.println(arr[j]);
}
}
}
//根据编号修改员工的姓名,职称,部门名称
public void update(int num,String name,String position,String department,Employee[] arr){
for(int j=0;j<arr.length;j++){
if(this.exist(num, arr[j])==true){
arr[j].setName(name);
arr[j].setPosition(position);
arr[j].setDepartment(department);
System.out.println("员工的姓名,职称,部门名称修改成功!");
return;
}
}
System.out.println("此员工找不到,修改失败!");
}
//根据编号num删除一名员工
public void delete(int num,Employee[] arr){
for(int j=0;j<arr.length;j++){
if(this.exist(num, arr[j])==true){
arr[j]=null;
this.print(arr);
}
}
}
//根据编号num的员工录入工资
public void input(int num,Employee[] arr){
double wages[]=new double[4];
Scanner in=new Scanner(System.in);
double sum=0;
for(int j=0;j<arr.length;j++){
if(this.exist(num, arr[j])==true){
for(int k=0;k<arr[j].wagesname.length;k++){
System.out.println("请输入姓名为:"+arr[j].getName()+"的"+arr[j].getWagesname()[k]);
wages[k]=in.nextInt();
}
sum=wages[0]+wages[1]+wages[2]-wages[3];
arr[j].setWages(wages);
arr[j].setWages1(sum);
this.print(arr);
return;
}
}
System.out.println("没有找到此名员工,信息录入失败!");
}
//按实际工资排序
public void sortTotal(Employee[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null){
if(arr[i].getWages1()<arr[j].getWages1()){
Employee emp=arr[i];
arr[i]=arr[j];
arr[j]=emp;
}
}
}
}
this.print(arr);
}
//根据指定工资进行排序
public void sort(int coursenum,Employee[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null){
if(arr[i].getWages()[coursenum]<arr[j].getWages()[coursenum]){
Employee emp=arr[i];
arr[i]=arr[j];
arr[j]=emp;
}
}
}
}
this.print(arr);
}
}
2.Employee类
package com.edu.p1;
public class Employee {
private int num; //员工编号
private String name; //员工姓名
private String position; //职称
private String department; //部门名称
final String[]wagesname={"基本工资","公积金","住房基金"};
private double[] wages=new double[4];
private double wages1; //实际工资
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public double[] getWages() {
return wages;
}
public void setWages(double[] wages) {
this.wages = wages;
}
public double getWages1() {
return wages1;
}
public void setWages1(double wages1) {
this.wages1 = wages1;
}
public String[] getWagesname() {
return wagesname;
}
public String toString(){
String msg=this.num+"\t"+this.name+"\t"+this.position+"\t"+this.department+"\t";
for(int i=0;i<wages.length;i++){
msg=msg+wages[i]+"\t";
}
msg=msg+this.wages1+"\t";
return msg;
}
}
3.AdminEmployee测试类
package com.edu.p1;
import java.util.Scanner;
public class EmployeeAdmin {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("请输入员工的人数:");
Scanner in=new Scanner(System.in);
int n=in.nextInt();
Employee[] emp=new Employee[n];
Admin admin=new Admin();
while(true){
System.out.println("10---添加一个员工---");
System.out.println("11---根据员工编号输入员工工资---");
System.out.println("12---根据员工编号查找一个员工---");
System.out.println("13---根据员工编号删除一个员工---");
System.out.println("14---根据员工编号更新一个员工的姓名、职称、部门名称---");
System.out.println("15---根据实际工资进行排序---");
System.out.println("16---根据某项工资进行排序---");
System.out.println("99---退出系统---");
System.out.println("请输入您的选择");
int select=in.nextInt();
switch(select){
case 10:
System.out.println("请输入员工姓名:");
String name=in.next();
System.out.println("请输入员工职称");
String position=in.next();
System.out.println("请输入员工部门名称");
String department=in.next();
admin.create(name, position, department, emp);
admin.print(emp);
break;
case 11:
System.out.println("执行根据编号录入员工信息的操作");
System.out.println("请输入要录入信息的员工的编号:");
int num=in.nextInt();
admin.input(num,emp);
break;
case 12:
System.out.println("执行根据编号查找员工基本信息的操作:");
System.out.println("请输入员工的编号进行查找");
num=in.nextInt();
admin.search(num, emp);
break;
case 13:
System.out.println("执行根据编号删除一名员工的操作:");
System.out.println("请输入要删除员工的编号:");
num =in.nextInt();
admin.delete(num, emp);
break;
case 14:
System.out.println("执行根据编号修改一名员工的姓名操作:");
System.out.println("请输入要更新员工的编号");
num=in.nextInt();
System.out.println("请输入要更新员工的姓名");
name=in.next();
System.out.println("请输入要更新员工的职称");
position=in.next();
System.out.println("请输入要更新员工的部门名称");
department=in.next();
admin.update(num, name, position, department, emp);
admin.print(emp);
break;
case 15:
System.out.println("执行根据实际工资进行排序的操作:");
admin.sortTotal(emp);
break;
case 16:
System.out.println("执行根据某门课程的分数进行排序的操作:");
System.out.println("请输入要排序的课程名称的代号:0-基本工资 1-公积金 2-住房基金 3-总计工资");
int coursenum=in.nextInt();
admin.sort(coursenum, emp);
break;
case 99:
System.out.println("程序运行结束!");
System.exit(0);
break;
}
}
}
}
四、程序运行结果
必须在AdminEmployee测试类中运行
首先输入员工人数。然后依次输入员工的姓名,单位,职称等内容
输入完之后,便可以实现相关功能,如输入员工工资:
这里要说明,工资里多了一个0.0,需要可以在类里删除一下;
其他功能就不一一举例了,但要说以下工资排序,这个是需要将定义完输入的人数都录入进去了,才好使的;
以上为运行结果(部分)
有些地方不对、不够严谨。比如在输入姓名、职称什么的时候只能输入英文字母,若输入汉字这个程序就不能运行了;
这个程序是在上学时通过老师带领我们做的学生成绩管理系统修改得到的,部分地方不够严谨,请理解,若有侵权,请联系删除!
同时这个员工管理系统是《Java程序基础进阶》第3/4章的课后习题