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

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

最低0.47元/天 解锁文章
823

被折叠的 条评论
为什么被折叠?



