项目 6 统计雇员薪水

项目 6 统计雇员薪水

  • 请编写一个 Java 应用程序,使用两个数组分别保存雇员的姓名和雇员的薪水(标准金额数字,包含两位小数)。程序提示用户输入雇员的人数,然后依次提示输入雇员的姓名和薪水。当输入雇员姓名后,姓名应该随即出现在后面的提示输入薪水信息中 (具体格式参考后面的程序运行效果图) 。
    当所有的雇员信息都输入完成后,程序给出功能菜单供用户选择操作。这个功能菜单需要一直保留到用户选择退出(quit)为止。用户能进行以下操作:

  • 打印输出所有雇员的姓名和薪水;

  • 打印输出获得最高薪水的雇员姓名和薪水;

  • 打印输出获得最低薪水的雇员姓名和薪水;

  • 打印输出所有雇员薪水的平均值以及大于、小于和等于平均薪水的雇员人数;

  • 退出程序

    在这个项目中,你至少要实现四个方法:第一个方法 printAll()用来逐行打印输出每一个雇员的姓名和薪水(用固定宽度打印输出,请参考 System.out.printf(…)方法的使用规则);第二个方法 getMaxSalaryIndex()用来查找最高薪水值,返回这个薪水值的数组下标;第三个方法 getMinSalaryIndex()用来查找最低薪水值,返回这个薪水值的数组下标;第四个方法printAverageStats()用来计算平均薪水值以及统计大于,小于和等于平均值得雇员人数并输出这些信息。输出结果应该格式规范清晰。代码行应该有适当的缩进和空行。

  • 参考代码:

    package SixthProject;
    
    import java.util.Scanner;
    
    public class LuoYu_6 {
        public static void main(String[] args) {
            System.out.print("Enter the number of employees: ");
            Scanner input = new Scanner(System.in);
            int number = input.nextInt();
            String[] name = new String[number];
            double[] salary = new double[number];
            for (int i = 0;i < number;i++){
                System.out.println((i + 1) + " of " + number);
                System.out.print("Enter employee name: ");
                name[i] = input.next();
                System.out.print("Enter " + name[i] + "'s salary: ");
                salary[i] = input.nextDouble();
                System.out.println();
            }
            int choose;
            System.out.println("1 - Print All Employees");
            System.out.println("2 - Print Maximum Salary");
            System.out.println("3 - Print Minmun Salary");
            System.out.println("4 - Print Average Stats");
            System.out.println("5 - Quit");
            System.out.print("Please choose an option: ");
            while ((choose = input.nextInt()) != 5){
                System.out.println();
                if (choose == 1)
                    printAll(name,salary);
                if (choose == 2)
                    getMaxSalaryIndex(name,salary);
                if (choose == 3)
                    getMinSalaryIndex(name,salary);
                if (choose == 4)
                    printAverageStats(name,salary);
                System.out.println("1 - Print All Employees");
                System.out.println("2 - Print Maximum Salary");
                System.out.println("3 - Print Minmun Salary");
                System.out.println("4 - Print Average Stats");
                System.out.println("5 - Quit");
                System.out.print("Please choose an option: ");
            }
            return;
        }
        public static void printAll(String[] name,double[] salary){
            System.out.println("All Employees Information");
            for (int i = 0; i < name.length;i++){
                System.out.printf("\t\t%-16s¥%.2f\n",name[i],salary[i]);
            }
            System.out.println();
        }
        public static void getMaxSalaryIndex(String[]name,double[] salary){
            double max = 0;
            int flag = -1;
            for (int i = 0;i < name.length;i++){
                if (max < salary[i]) {
                    max = salary[i];
                    flag = i;
                }
            }
            System.out.printf("The largest salary is ¥%.2f made by %s\n\n",max,name[flag]);
        }
        public static void getMinSalaryIndex(String[] name,double[] salary){
            double min = 1e9;
            int flag = -1;
            for (int i = 0;i < name.length;i++){
                if (min > salary[i]) {
                    min = salary[i];
                    flag = i;
                }
            }
            System.out.printf("The largest salary is ¥%.2f made by %s\n\n",min,name[flag]);
        }
        public static void printAverageStats(String[] name,double[] salary){
            double sum = 0,average = 0;
            int higher = 0,lower = 0,same = 0;
            for (int i = 0;i < name.length;i++){
                sum += salary[i];
            }
            average = sum / name.length;
            for (int i = 0;i < name.length;i++){
                if (salary[i] > average)
                    higher++;
                if (salary[i] < average)
                    lower++;
                if (salary[i] == average)
                    same++;
            }
            System.out.printf("The average salary was ¥%.2f\n",average);
            System.out.println("There are " + higher + "higher than average salaries," + lower + "lower than average salaries,and " + same + "average salaries\n");
        }
    }
    
    
  • 结果显示:

    Enter the number of employees: 3
    1 of 3
    Enter employee name: zhangsan
    Enter zhangsan's salary: 6500
    
    2 of 3
    Enter employee name: lisi
    Enter lisi's salary: 7000
    
    3 of 3
    Enter employee name: wangwu
    Enter wangwu's salary: 7500
    
    1 - Print All Employees
    2 - Print Maximum Salary
    3 - Print Minmun Salary
    4 - Print Average Stats
    5 - Quit
    Please choose an option: 1
    
    All Employees Information
    		zhangsan        ¥6500.00
    		lisi            ¥7000.00
    		wangwu          ¥7500.00
    
    1 - Print All Employees
    2 - Print Maximum Salary
    3 - Print Minmun Salary
    4 - Print Average Stats
    5 - Quit
    Please choose an option: 2
    
    The largest salary is ¥7500.00 made by wangwu
    
    1 - Print All Employees
    2 - Print Maximum Salary
    3 - Print Minmun Salary
    4 - Print Average Stats
    5 - Quit
    Please choose an option: 3
    
    The largest salary is ¥6500.00 made by zhangsan
    
    1 - Print All Employees
    2 - Print Maximum Salary
    3 - Print Minmun Salary
    4 - Print Average Stats
    5 - Quit
    Please choose an option: 4
    
    The average salary was ¥7000.00
    There are 1higher than average salaries,1lower than average salaries,and 1average salaries
    
    1 - Print All Employees
    2 - Print Maximum Salary
    3 - Print Minmun Salary
    4 - Print Average Stats
    5 - Quit
    Please choose an option: 5
    
    Process finished with exit code 0
    
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值