简易考试系统(java、头歌实验)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


目录

题目:

项目、包路径(文件位置)

代码:

User.java文件(属性类)

ExamManage.java文件(方法类)

english.txt文件

math.txt文件

效果截图:

总结


题目:

任务:实现用户查询成绩的功能。

要求:

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

  • 当键盘输入的值为 5,调用 ExamManage 类的 show(name,pwd,users),将所需参数传入该方法中;

  • show 方法携带 3 个参数,分别为:用户名称、用户密码、用户数组,该方法实现了查询该用户成绩的功能;

  • mathExam 方法中首先输出:“用户名称 英语成绩 数学成绩”,分隔符为 tab 键;

  • 查找该用户的成绩信息,输出格式:“x1 x2 x3”,这些值依次为:用户名称、英语成绩、数学成绩,保留 1 位小数,用 tab 分隔符分隔。

项目、包路径(文件位置)

提示:java项目名为step,包为step5,包含3个java文件、两个txt文件。(前面几个包都不用看,也不用建,是我用来测试的)

代码:

User.java文件(属性类)

package step5;

public class User {

    private String name; // 用户姓名
    private String pwd; // 密码
    private double math; // 数学成绩
    private double english; // 英语成绩

    // 无参构造
    public User() {

    }
    // 有参构造
    public User(String name, String pwd) {
        this.name = name;
        this.pwd = pwd;
    }


    // 设置和获取用户属性信息
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public double getMath() {
        return math;
    }

    public void setMath(double math) {
        this.math = math;
    }

    public double getEnglish() {
        return english;
    }

    public void setEnglish(double english) {
        this.english = english;
    }

}

ExamManage.java文件(方法类)

package step5;
public class ExamManage {
    /**
     * 功能:注册新用户
     * 参数 name 用户名
     * 参数 pwd 密码
     * 参数 users 用户数组
     */
    public void register(String name, String pwd, User[] users) {
        // 判断用户名是否规范
        if (name.matches("^[^0-9][\\w_]{5,9}$")){
            // 判断用户名是否已存在
            if (!findUser(name,users)){
                // 判断密码是否规范
                if (pwd.matches("^[\\w_]{6,10}$")){
                    User user = new User();
                    user.setName(name);
                    user.setPwd(pwd);
                    // 将对象放入对象数组中
                    for (int i = 0; i < users.length; i++) {
                        if (users[i] == null) {
                            users[i] = user;
                            break;
                        }
                    }
                }else {
                    System.out.println("密码不合规范!");
                }
            }else {
                System.out.println("用户名已存在!");
            }
        }else {
            System.out.println("用户名不合规范!");
        }
    }
    public boolean findUser(String name,User[] users){
        boolean flag = false;
        // 根据用户名查找用户数组中是否已存在该用户,
        for (int i = 0; i < users.length; i++) {
            if (users[i] != null && name.equals(users[i].getName())) {
                flag = true;
                break;
            }
        }
        return flag;
    }
    /**
     * 功能:用户登录
     * 参数 name 用户名
     * 参数 pwd 密码
     * 参数 users 用户数组
     * 返回值 boolean
     */
    public boolean login(String name, String pwd, User[] users) {
        // 查询用户名和密码是否正确
        boolean flag = false;
        for (User user : users) {
            if (user != null && name.equals(user.getName()) && pwd.equals(user.getPwd())) {
                flag = true;
                break;
            }
        }
        return flag;
    }
    /**
     * 功能:模拟英语考试,计算得分
     * 参数 name 用户名
     * 参数 pwd 密码
     * 参数 users 用户数组
     * 参数 answers 用户试卷答案
     */
    public void engExam(String answers, String name, String pwd, User[] users) {
        // 切分用户的答案
        double score = 0.0;
        String[] split = answers.split(",");
        // 对比正确答案,计算用户分数
        if ("A".equals(split[0])){
            score += 5;
        }
        if ("C".equals(split[1])){
            score += 5;
        }
        // 最后所得分数为该用户的英语成绩
        for (User z : users) {
            if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
                z.setEnglish(score);
                break;
            }
        }
    }
    /**
     * 功能:模拟数学考试,计算得分
     * 参数 name 用户名
     * 参数 pwd 密码
     * 参数 users 用户数组
     * 参数 answers 用户试卷答案
     */
    public void mathExam(String answers, String name, String pwd, User[] users) {
        // 切分用户的答案
        double score = 0.0;
        String[] split = answers.split(",");
        // 对比正确答案,计算用户分数
        if ("C".equals(split[0])){
            score += 5;
        }
        if ("A".equals(split[1])){
            score += 5;
        }
        // 最后所得分数为该用户的英语成绩
        for (User z : users) {
            if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
                z.setEnglish(score);
                break;
            }
        }
    }
    // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
    /********** Begin **********/
    /**
     * 功能:查询用户成绩
     * 参数 name 用户名
     * 参数 pwd 密码
     * 参数 users 用户数组
     */
    public void show(String name, String pwd, User[] users) {
        System.out.println("用户名称\t英语成绩\t数学成绩");
        // 查询用户的英语和数学得分
        for (User z : users) {
            if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
                System.out.printf("%s\t%.1f\t%.1f\n",name,z.getEnglish(),z.getMath());
                break;
            }
        }
    }
    /********** End **********/
}
package step5;//有注册、登入、英语考试、数学考试、成绩查询、退出系统;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
// 此类为整个通讯录的总控制,负责启动
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("E:/java/step/src/step5/english.txt"));//路径为放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)){
                            System.out.println("欢迎参加数学考试,开始答卷");
                            // 读取文件内容并打印出来
                            try {
                                BufferedReader in = new BufferedReader(new FileReader("E:/java/step/src/step5/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();
                            }
                        }else if ("3".equals(s)){
                            break;//返回上一级
                        }else if ("4".equals(s)){
                        	System.out.println("退出系统成功!");
                            System.exit(0);//退出系统,结束结束操作
                        	
                        }else if ("5".equals(s)){
                            // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
                            /********** Begin **********/
                            // 调用 show 方法,实现查询用户的功能
                            examManage.show(name,pwd,users);
                            /********** End **********/
                        }
                    }
                }else {
                    System.out.println("用户名或密码错误,登录失败!");
                }
            } else if ("3".equals(str)) {
                // 退出操作
                System.out.println("退出成功!");
                break;
            } else {
                System.out.println("选择错误!");
            }
        }
    }
}

english.txt文件

1. 求1+1的结果为:
A. 1	B. 0	C. 2	D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1	B. 2	C. 0	D. 4

math.txt文件

1. 求1+1的结果为:
A. 1	B. 0	C. 2	D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1	B. 2	C. 0	D. 4

效果截图:

提示:先注册,再登入;用户名和密码要有数字和字母,其他也行。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了简易考试系统,实现用户英语、数学考试,查询成绩的功能

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷酷滴Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值