中小学数学卷子自动生成程序

本文介绍了使用Java编写的中小学数学题库生成程序,包括User抽象类与Primary、JuniorHigh、High子类的实现,数据库设计与查重功能。通过实例化和流程控制,展示了如何登录、出题并防止重复。

本来是不打算写这个课程作业的博客的,但是后续结队编程又需要和队友相互交流代码,而我当时写代码的时候也没有过多的注释,为了我的结队队友“、、”能够更轻松的(至少不会想捶我)完成课程任务,我还是准备写篇博客简单介绍一下课程项目。
PS:也附上“、、”的博客网站,也是关于这次的项目的

程序要求

点击下载需求文件

程序架构

使用java实现程序,总有5个类,并使用数据库来查重

1.Main

程序运行的地方,主要处理逻辑,程序状态和用户交互之类的

2.User抽象类

代表出题者的一个抽象类,拥有登录(连接数据库),出题,检查题目是否重复的功能

3.Primary,JuniorHigh,High三个实例用户类

继承User,并实现出题的具体方法

4.mysql数据库

实现题目的查重功能和用户信息存储功能


下面将从Main类开始介绍整个程序

Main类

变量

private int state = LOGIN;//代表程序状态,初始状态为登录状态
private static final int LOGIN = 0;//定义宏LOGIN
private static final int LOGGED_IN = 1;//定义宏LOGGED_IN
private User user;//当前程序的使用用户
private static Scanner scanner = new Scanner(System.in);//实例化输入对象

main方法,程序入口

public static void main(String[] args) throws SQLException, ClassNotFoundException {
   
   
    System.out.println("中小学数学卷子自动生成程序");
    Main main = new Main();
    while (true) {
   
   
        //根据程序状态实现不同功能
        switch (main.state) {
   
   
            case LOGIN:
                //实现登录功能
                main.processLogin();
                break;
            case LOGGED_IN:
                //实现登录后功能
                main.processLoggedIn();
                break;
        }
    }
}

processLogin()

private void processLogin() throws SQLException, ClassNotFoundException {
   
   
    System.out.println("请输入用户名、密码");
    String account = scanner.next();
    String password = scanner.next();
    //根据输入的账号密码获取用户实例对象
    user = User.login(account, password);
    if (user == null) {
   
   
        System.out.println("请输入正确的用户名、密码");
    } else {
   
   
        System.out.println("当前选择为" + user.getDifficultyType() + "出题");
        //将状态更新为已登录
        state = LOGGED_IN;
    }
}

processLoggedIn()

private void processLoggedIn() {
   
   
    System.out.println("准备生成" + user.getDifficultyType() + "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):");
    //接收用户输入
    String scannerContent = scanner.next();
    //监测用户输入是否为int型数据
    try {
   
   
        int questionsNumber = Integer.parseInt(scannerContent);
        //-1为退出登录,将状态重置为登录状态,并将用户对象置为null
        if (questionsNumber == -1) {
   
   
            state = LOGIN;
            user = null;
        } else if (questionsNumber >= 10 && questionsNumber <= 30) {
   
   
            System.out.println("指令正确");
            //开始生产题目,传入的参数为:用户的难度类型,题目数量
            user.generateQuestionsByType(user.getDifficultyType(), questionsNumber);
        } else {
   
   
            System.out.println("请输入正确的指令");
        }
    }
    //用户输入为非int型,监测是否为“切换为”指令
    catch (Exception NumberFormatException) {
   
   
        if (scannerContent.startsWith("切换为")) {
   
   
            String type = scannerContent.substring(3);
            //重置用户的难度类型
            if (type.equals("小学") || type.equals("初中") || type.equals("高中")) {
   
   
                user.setDifficultyType(type);
            } else {
   
   
                System.out.println("请输入正确的指令");
            }
        } else {
   
   
            System.out.println("请输入正确的指令");
        }
    }
}

User类

变量

    private String type;//用户类型
    private String account;//用户账号
    private String password;//用户密码
    private String difficultyType;//难度类型
    //下面的变量需要设置为自己的数据库数据
    private static final String URL = "jdbc:mysql://localhost:3306/testgeneration?useSSL=false&
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值