java编程之学生成绩管理系统

方式一:将各个功能封装为函数.然后多分支去调用函数.
缺点:当功能有100个时,不能去写100个分支.

 public static void main(String[] args) {
        //静态初始化学生成绩数组
        int[] score = {10,20,30,40,50,60,70,80};
        //输出用户操作菜单
        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("6. 退出");
        System.out.println("---------------------------");
       // do {
            //接受用户操作结果
            System.out.println("请输入您的操作");
            Scanner scanner = new Scanner(System.in);
            int oprate = scanner.nextInt();
            //if(oprate == 6) break;
            //根据用户输入调用对应的功能函数
        long start = System.nanoTime();       
            switch (oprate){
                case 1: printScore(score); break;
                case 2: maxScore(score); break;
                case 3: minScore(score); break;
                case 4: averageScore(score); break;
                case 5: scoreFailCount(score); break;
                default:
                    System.out.println("您输入的操作不合法,请重新输入");
            }
        long end =System.nanoTime();
        System.out.println(end - start);
       // } while (true);   162500

    }

    //输出学生成绩
    static void printScore(int[] arr){
        System.out.println(Arrays.toString(arr));
    }
    //查找最高分
    static void maxScore(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i] > max) max = arr[i];
        }
        System.out.println("成绩最高分是" + max);
    }

    //查找最低分
    static void minScore(int[] arr){
        int min = arr[0];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i] < min) min = arr[i];
        }
        System.out.println("成绩最低分是" + min);
    }

    //计算平均分
    static void averageScore(int[] arr){
        double average = 0 , sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        average = sum/arr.length;
        DecimalFormat decimalFormat = new DecimalFormat("#.##");
        String format = decimalFormat.format(average);
        System.out.println("学生平均成绩"+format);
    }
    //计算不及格人数
    static void scoreFailCount(int[] arr){
        int count =0 ;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]<60) count++;
        }
        System.out.println("不及格人数"+count);
    }

方式二:
使用反射机制,根据用户输入去动态执行对应的函数.

 public static void main(String[] args) throws Exception {
        //静态初始化学生成绩数组
        int[] score = {10,20,30,40,50,60,70,80};
        //输出用户操作菜单
        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("6. 退出");
        System.out.println("---------------------------");

            //接受用户操作结果
            System.out.println("请输入您的操作");
            Scanner scanner = new Scanner(System.in);
            int oprate = scanner.nextInt();
           // if(oprate == 6) break;
    //    do {


            //  这段代码执行起始时间
            long start = System.nanoTime(); //System.currentTimeMillis();
            //根据用户输入调用对应的功能函数
            String functionName = "function" + oprate; // 需要调用的函数名
            String classPath = "com.itheima.d_transfer.StudentScoreManagementSystem1"; // 需要调用的函数所在的类名

            // 通过反射获取需要调用的函数
            Class cls = Class.forName(classPath);
            Class[] parameterType = new Class[] { int[].class };
            Method method = cls.getDeclaredMethod(functionName, parameterType);

            // 通过 Method.invoke 方法来调用函数
            Object object = cls.newInstance();
            Object[] arguments = new Object[] { score };
            Object result = method.invoke(object,arguments);
            //  这段代码执行结束时间
            long end =System.nanoTime(); //System.currentTimeMillis();    314500纳秒
            System.out.println(end - start);



      //  } while (true);

    }

    //输出学生成绩
    static void function1(int[] arr){
        System.out.println(Arrays.toString(arr));
    }
    //查找最高分
    static void function2(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i] > max) max = arr[i];
        }
        System.out.println("成绩最高分是" + max);
    }

    //查找最低分
    static void function3(int[] arr){
        int min = arr[0];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i] < min) min = arr[i];
        }
        System.out.println("成绩最低分是" + min);
    }

    //计算平均分
    static void function4(int[] arr){
        double average = 0 , sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        average = sum/arr.length;
        DecimalFormat decimalFormat = new DecimalFormat("#.##");
        String format = decimalFormat.format(average);
        System.out.println("学生平均成绩"+format);
    }
    //计算不及格人数
    static void function5(int[] arr){
        int count =0 ;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]<60) count++;
        }
        System.out.println("不及格人数"+count);
    }
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值