第4关:简易考试系统之数学考试

任务描述
本关任务:实现模拟数学考试,并计算数学成绩的功能。

编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现模拟数学考试,并计算数学成绩的功能,具体要求如下:

当用户选择考试科目时,获取键盘输入,实现 2 的功能;

当键盘输入的值为 2,首先输出:“欢迎参加数学考试,开始答卷”,然后输出 /root/math.txt 文件的内容;

之后输出:“请输入答案,答案之间用英文逗号分开”,获取用户输入的答案,调用 ExamManage 类的 mathExam(answers,name,pwd,users),将所需参数传入该方法中;

mathExam 方法携带 4 个参数,分别为:用户考试答案、用户名称、用户密码、用户数组,该方法实现了计算学生成绩的功能;

mathExam 方法中将用户所给答案按逗号切分,每道题为 5 分,总共有两道(题目答案分别为:C,A,注意忽略大小写),最后将该用户的数学成绩设置为本次考试所得值,存入用户数组中,并输出:“本次考试的分数为:xx”,保留 1 位小数。

测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧“测试结果”区查看具体的测试集详情。

测试输入:

1
sunfeng
123456
2
sunfeng
123456
2
a,a
3
3
预期输出:

线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你要注册的用户名:
请输入你要注册的密码:
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你的用户名:
请输入你的密码:
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
欢迎参加数学考试,开始答卷
1. 求1+1的结果为:
A. 1    B. 0    C. 2    D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1    B. 2    C. 0    D. 4
请输入答案,答案之间用英文逗号分开
本次考试的分数为:5.0
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
退出成功!

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

class User {
    private String name;
    private String pwd;
    private double mathScore;
    private double englishScore;

    public User(String name, String pwd) {
        this.name = name;
        this.pwd = pwd;
        this.mathScore = 0;
        this.englishScore = 0;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

    public double getMathScore() {
        return mathScore;
    }

    public double getEnglishScore() {
        return englishScore;
    }

    public void setMathScore(double mathScore) {
        this.mathScore = mathScore;
    }

    public void setEnglishScore(double englishScore) {
        this.englishScore = englishScore;
    }
}

class ExamManage {
    // 注册用户
    public void register(String name, String pwd, User[] users) {
        for (int i = 0; i < users.length; i++) {
            if (users[i] == null) {
                users[i] = new User(name, pwd);
                //System.out.println("注册成功!");
                break;
            }
        }
    }

    // 用户登录
    public boolean login(String name, String pwd, User[] users) {
        for (User user : users) {
            if (user!= null && user.getName().equals(name) && user.getPwd().equals(pwd)) {
                return true;
            }
        }
        return false;
    }

    // 英语考试
    public void engExam(String answers, String name, String pwd, User[] users) {
        String[] answerArray = answers.split(",");
        double score = 0;
        // 假设英语考试有两道题,正确答案分别为 A,B
        String correctAnswer1 = "A";
        String correctAnswer2 = "B";
        if (answerArray.length >= 1 && answerArray[0].equals(correctAnswer1)) {
            score += 5;
        }
        if (answerArray.length >= 2 && answerArray[1].equals(correctAnswer2)) {
            score += 5;
        }
        for (User user : users) {
            if (user!= null && user.getName().equals(name) && user.getPwd().equals(pwd)) {
                user.setEnglishScore(score);
                System.out.printf("本次考试的分数为:%.1f\n", score);
                break;
            }
        }
    }

    // 数学考试
    public void mathExam(String answers, String name, String pwd, User[] users) {
        String[] answerArray = answers.split(",");
        double score = 0;
        // 假设数学考试有两道题,正确答案分别为 C,A
        String correctAnswer1 = "C";
        String correctAnswer2 = "A";
        if (answerArray.length >= 1 && answerArray[0].equals(correctAnswer1)) {
            score += 5;
        }
        if (answerArray.length >= 2 && answerArray[1].equals(correctAnswer2)) {
            score += 5;
        }
        for (User user : users) {
            if (user!= null && user.getName().equals(name) && user.getPwd().equals(pwd)) {
                user.setMathScore(score);
                System.out.printf("本次考试的分数为:%.1f\n", score);
                break;
            }
        }
    }
}


// 此类为整个通讯录的总控制,负责启动
public class MenuExam {

    public static void main(String[] args) {

        User[] users = new User[50]; // 创建一个对象数组,用于存放所有的用户信息
        // 实例化 Scanner 对象
        Scanner sc = new Scanner(System.in);
        // 实例化 ExamManage 对象
        ExamManage examManage = new ExamManage();
        while (true) {
            System.out.println("线上考试系统");
            System.out.println("**********");
            System.out.println("1. 新用户注册");
            System.out.println("2. 用户登录");
            System.out.println("3. 退出系统");
            System.out.println("**********");
            System.out.println("请输入选择的操作:");
            // 获取键盘输入
            String str = sc.next();
            // 实现注册功能
            if ("1".equals(str)) {
                // 获取键盘输入的用户名
                System.out.println("请输入你要注册的用户名:");
                String name = sc.next();
                // 获取键盘输入的密码
                System.out.println("请输入你要注册的密码:");
                String pwd = sc.next();
                // 将参数传入 register 方法中
                examManage.register(name, pwd, users);

            } else if ("2".equals(str)) {
                System.out.println("请输入你的用户名:");
                String name = sc.next();
                System.out.println("请输入你的密码:");
                String pwd = sc.next();
                boolean flag = examManage.login(name, pwd, users);
                if (flag) {

                    while (true) {
                        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("**********");
                        System.out.println("请输入选择的操作:");
                        // 获取键盘输入
                        String s = sc.next();
                        if ("1".equals(s)) {
                            System.out.println("欢迎参加英语考试,开始答卷");
                            // 读取文件内容并打印出来
                            try {
                                BufferedReader in = new BufferedReader(new FileReader("/root/english.txt"));
                                String text;
                                while ((text = in.readLine())!= null) {
                                    System.out.println(text);
                                }
                                System.out.println("请输入答案,答案之间用英文逗号分开");
                                // 获取键盘输入的答案,并将其转化为大写字母
                                String answers = sc.next().toUpperCase();
                                examManage.engExam(answers, name, pwd, users);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }

                        } else if ("2".equals(s)) {
                            // 请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码
                            /********** Begin **********/
                            System.out.println("欢迎参加数学考试,开始答卷");
                            // 读取文件内容并打印出来
                            try {
                                BufferedReader in = new BufferedReader(new FileReader("/root/math.txt"));
                                String text;
                                while ((text = in.readLine())!= null) {
                                    System.out.println(text);
                                }
                                System.out.println("请输入答案,答案之间用英文逗号分开");
                                // 获取键盘输入的答案,并将其转化为大写字母
                                String answers = sc.next().toUpperCase();
                                examManage.mathExam(answers, name, pwd, users);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            /********** End **********/
                        } else if ("3".equals(s)) {
                            break;
                        } else if ("4".equals(s)) {
                            System.exit(0);
                        } else if ("5".equals(s)) {
                            // 查询考试成绩
                            for (User user : users) {
                                if (user!= null && user.getName().equals(name) && user.getPwd().equals(pwd)) {
                                    System.out.printf("你的成绩为:%.1f,你的成绩为:%.1f\n", user.getMathScore(), user.getEnglishScore());
                                    break;
                                }
                            }
                        }
                    }
                } else {
                    System.out.println("用户名或密码错误,登录失败!");
                }
            } else if ("3".equals(str)) {
                // 退出操作
                System.out.println("退出成功!");
                break;
            } else {
                System.out.println("选择错误!");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值