员工工资管理系统(JAVA完整课设和详细思路)

这是一篇基于JAVA的员工工资管理系统的课程设计,编译环境是eclipse。

下面进入正文:

一. 课设题目

      题目:设计员工工资管理系统
      实现功能:   1.输入 5 名员工姓名、工号、月工资;
                           2.统计每人的年收入及收入最高和最低的员工,计算他们的平均工资;
                           3.按月工资降序排序;
                           4.统计高于平均工资和低于平均工资的员工;
                           5.输入工号名称查询员工的姓名和月工资。

二.实验思路

           大致思路是首先用 3 个一维数组分别存储 5 名员工的 姓名、工号、月工资,设
           计实现员工信息录入功能,再分多个模块分别在方法里实现各个功能:
                1.统计年收入及所有员工平均收入,即计算平均值;
                2.统计收入最高和最低的员工,即计算最值;
                3.按月工资高低降序排序,首先复制一个月工资数组,再用冒泡排序;
                4.统计高于平均工资和低于平均工资的员工;
                5.输入工号查询姓名和月工资,即得设计员工工号输入功能,并显示月工资功能。
                   然后再对登录界面进行比较美观的设计;
                   最后通过指令对这些方法进行调用,从而实现全部功能。

三.源代码

public class employee {

	public static void main(String[] args) {
		String[] name = new String[5];//定义一个name员工姓名的数组
		String[] jobNumber = new String[5];//定义一个jobNumber员工工号的数组
		double[] wage = new double[5];//定义一个wage员工月工资的数组
		
		for(int i=0;i<5;i++) {
			@SuppressWarnings("resource")
			Scanner sc = new Scanner(System.in);
			System.out.println("请输入第"+(i+1)+"个员工的姓名:");
			name[i] = sc.nextLine();
			System.out.println("请输入第"+(i+1)+"个员工的工号:");
			jobNumber[i] = sc.nextLine();
			System.out.println("请输入第"+(i+1)+"个员工的工资:");
			wage[i] = sc.nextDouble(); 
			
		}
		System.out.println("信息录入成功!");
		System.out.println("*****************************************************");
		System.out.println("*****************************************************");
		System.out.println("               欢迎使用员工工资管理系统");
		System.out.println("-----------------------------------------------------");
		System.out.println("    【1】--------显示所有员工的年收入及他们的平均工资");
		System.out.println("    【2】-----------显示收入最高和最低的员工");
		System.out.println("    【3】-----------显示按月工资高低降序排序");
		System.out.println("    【4】------显示统计高于平均工资和低于平均工资的员工");
		System.out.println("    【5】-------------查询员工的姓名和月工资");
		System.out.println("    【-1】-----------------退出系统!!!");
		System.out.println("*****************************************************");
		System.out.println("*****************************************************");
		System.out.println("请输入编号查询:");
			
			while(true){
			@SuppressWarnings("resource")
			Scanner sc = new Scanner(System.in);
			  int input = sc.nextInt();
			  if(1 == input) {
				  statistics(name,jobNumber,wage);
			  }
			  else if(2 == input) {
				  inquire(wage,name);
			  }
			  else if(3 == input) {
			 	 rank(wage);
			  }
			  else if(4 == input) {
            	  statistics(name,wage);
              } 
			  else if(5 == input) {
            	 inquire(name,jobNumber,wage);
              }
			  else if(-1 == input) {
            	 System.out.println("已成功退出系统!!!"); 
            	 break; 
              }
			  else{
            	  System.out.println("编号输入有误,请重新输入!!!");
              }
		    }   	    
	}

	
	
	//1.统计年收入及所有员工平均工资
	public static void statistics(String name[],String jobNumber[],double wage[]) {
		
		for(int i=0;i<5;i++) {
			  
            System.out.println("员工工号: "+jobNumber[i]+"  员工姓名: "+name[i]+"  月工资: "+wage[i]+"  年收入: " + wage[i]*12);			
		}
		double all = 0;
		for(int i=0;i<5;i++) {
			
			all = all + wage[i]*12;
			
		}
		System.out.println("他们的平均工资: "+(all/5/12));
	    System.out.println("\n请输入编号继续查询:");
	}
	
	
	
	
	//2.统计收入最高和最低的员工
	public static void inquire(double wage[],String name[]) {
		double big = wage[0];//假设wage[0]为最高
		String bigName = name[0];
		for(int i=1;i<5;i++) {
			if(wage[i]>big) {
				
				big = wage[i];
				bigName = name[i];
			}
		}
		System.out.println("收入最高的员工为: "+bigName+"   其工资为: "+big);
		
		double small = wage[0];//假设wage[0]为最低
		String smallName = name[0];
		for(int i=1;i<5;i++) {
			if(wage[i]<small) {
				
				small = wage[i];
				smallName = name[i];
			}
		}
		System.out.println("-----------------------------------");
		System.out.println("收入最低的员工为: "+smallName+"   其工资为: "+small);
		System.out.println("\n请输入编号继续查询:");
	}
	
	
	
	
	  //3.按月工资高低降序排序
	public static void rank(double wage[]) {
		double[]b = Arrays.copyOf(wage, 5);
	    Arrays.sort(b);
		System.out.println("按月工资高低降序排序为: ");
		for(int i=4;i>=0;i--) {
		   System.out.println(b[i]);
		}
		System.out.println("\n请输入编号继续查询:");
	}
	
	
	
	//4.统计高于平均工资和低于平均工资的员工
	public static void statistics(String name[],double wage[]) {
		double sum = 0;
		for(int i=0;i<5;i++) {
			
			sum = sum + wage[i];
			
		}
		double average = sum/5;
		
		for(int i=0;i<5;i++) {
			if(wage[i]>average) {
				System.out.println("高于平均工资的员工有: " +name[i]+"  他的工资为: "+wage[i]);
			}		
		}
		System.out.println("---------------------------------------");
		for(int i=0;i<5;i++) {
			if(wage[i]<average) {
				System.out.println("低于平均工资的员工有: "+name[i]+"  他的工资为: "+wage[i]);
			}		
		}
		System.out.println("\n请输入编号继续查询:");
	}
	
	
	
	
	//5.输入工号查询姓名和月工资
	
	public static void inquire(String name[],String jobNumber[],double wage[]) {
		int j = 0;
		System.out.print("请输入工号进行查询: ");
		@SuppressWarnings("resource")
		Scanner scan = new Scanner(System.in);
		String s = scan.nextLine();
		for(int i=0;i<5;i++) {
			if(s.equals(jobNumber[i])) {
			  System.out.println("员工: "+name[i]+"   月工资: "+wage[i]);
			  System.out.print("\n再次查询请输入【5】,");
			  j++;
		    }
		}
		if(0 == j) {
			System.out.println("无此员工工号!!!");
		}
	    System.out.println("请输入编号继续查询:");
	}
}

四.运行结果

 

五.心得体会

本次课设我的题目是设计员工工资管理系统,对于我本人来说还是有些难度,编写过程
中也遇到了很多问题,尤其是在输出按月工资降序排序之后,总是会干扰其他功能的输出,
导致其他输出数据错误。通过询问老师与同学以及在哔哩哔哩上观看视频讲解,翻阅课本,
最终才解决了这些问题。通过本次课程设计,锻炼了自己的耐心,确实有些问题很难修改,
但有的问题解决之后,便会铭记于心,使得下次再遇到此类的问题时,就变得迎刃而解,很
有成就感,多一份错误,就会多一份收获和经验,我相信在这样不断的磨炼中,我的代码水
平将会更上一层楼。

猜你喜欢

转载自blog.csdn.net/m0_73381672/article/details/131126774