final #7

Merged
pc8xi2fbj merged 8 commits from develop into main 3 months ago

@ -1,2 +0,0 @@
# mathlearningapp

@ -0,0 +1,188 @@
# mathlearningapp
# mathlearningapp
# 数学学习软件 - 版本演进文档
## 项目概述
数学学习软件是一个基于Java Swing开发的桌面应用程序旨在为不同学习阶段小学、初中、高中的学生提供数学题目练习和测试功能。软件采用模块化设计包含用户管理、题目生成、答题测试等核心功能。
## 版本演进历史
### 版本1.0 - 基础版本
#### 核心功能
- **用户管理**:邮箱注册、登录、密码修改
- **题目生成**:小学、初中、高中三个级别的题目生成器
- **答题系统**:选择题形式,支持自定义题目数量
- **成绩统计**:显示得分和正确率
#### 技术特点
- 使用CardLayout实现多面板切换
- 基础的用户验证系统
- 简单的题目生成算法
#### 主要类结构
```
User - 用户类
Question - 题目类
QuestionGenerator - 题目生成器抽象类
PrimaryQuestionGenerator - 小学题目生成器
JuniorQuestionGenerator - 初中题目生成器
SeniorQuestionGenerator - 高中题目生成器
UserManager - 用户管理类
MathLearningApp - 主应用程序类
```
### 版本2.0 - 功能增强版
#### 新增功能
- **用户名系统**:引入用户名概念,不再仅依赖邮箱
- **界面美化**改进UI设计添加颜色和样式
- **验证码系统**:注册时发送验证码
- **欢迎界面**:登录后显示个性化欢迎信息
#### 技术改进
- 改进的用户管理,支持用户名和邮箱双重索引
- 增强的题目生成逻辑
- 更友好的用户界面
### 版本3.0 - 算法优化版
#### 核心改进
- **题目生成优化**
- 小学操作数数量扩展为1-5个
- 初中:支持混合运算和平方/开方运算
- 高中:三角函数使用特殊角度,确保结果合理
- **表达式计算**引入JavaScript引擎计算复杂表达式
- **输入验证**题目数量限制为10-30题
#### 技术升级
- 更健壮的题目生成算法
- 改进的错误处理机制
- 优化的用户交互体验
### 版本4.0 - 企业级版本
#### 重大改进
- **数据持久化**:用户数据序列化保存到文件
- **表达式计算器**:自定义表达式计算引擎
- **包管理**添加com.hnu包结构
- **代码重构**:大幅优化代码结构和算法
#### 新增特性
- **文件存储**:用户数据自动保存和加载
- **高级计算**:支持括号和运算优先级
- **健壮性提升**:完善的异常处理和输入验证
## 核心功能详解
### 1. 用户管理系统
#### 版本演进
- **1.0**:基于邮箱的简单用户管理
- **2.0**:引入用户名系统,双重索引
- **4.0**:数据持久化,文件存储
#### 功能特性
- 用户注册(邮箱验证)
- 用户登录
- 密码修改
- 数据持久化4.0+
### 2. 题目生成系统
#### 小学题目
- **运算符**+、-、*、/
- **特点**支持括号2-4个操作数
- **演进**:从简单运算到支持复杂表达式
#### 初中题目
- **类型**:基本运算、平方、开方
- **特点**:混合运算,确保完全平方数
- **演进**:算法优化,结果更合理
#### 高中题目
- **类型**:三角函数、复合表达式
- **特点**:使用特殊角度,避免极端值
- **演进**:从简单三角函数到复合表达式
### 3. 答题与评分系统
#### 答题流程
1. 选择学习阶段
2. 输入题目数量
3. 逐题作答
4. 查看成绩
#### 评分机制
- 实时计分
- 百分比显示
- 成绩评级(优秀、良好、及格、加油)
## 技术架构
### 设计模式应用
- **工厂模式**:题目生成器
- **单例模式**:用户管理
- **策略模式**:不同级别的题目生成
### 核心算法
#### 表达式计算版本4.0
```java
// 支持括号和运算优先级
public static double calculate(String expression) {
// 递归处理括号
// 先乘除后加减
// 完善的错误处理
}
```
#### 题目生成
```java
// 确保题目多样性和合理性
public Question generateQuestion() {
// 操作数数量随机
// 运算符随机选择
// 错误答案生成算法
// 选项随机排序
}
```
## 部署与使用
### 环境要求
- Java 8+
- 支持Swing的Java环境
### 运行方式
```bash
javac MathLearningApp.java
java MathLearningApp
```
### 测试账户
- 用户名:测试用户
- 密码Test123
## 版本对比总结
| 特性 | 1.0 | 2.0 | 3.0 | 4.0 |
|------|-----|-----|-----|-----|
| 用户管理 | 基础 | 增强 | 增强 | 持久化 |
| 题目生成 | 简单 | 改进 | 优化 | 高级 |
| 界面设计 | 基础 | 美化 | 优化 | 专业 |
| 数据存储 | 内存 | 内存 | 内存 | 文件 |
| 计算能力 | 基础 | 基础 | 引擎 | 自定义 |
| 代码结构 | 简单 | 模块化 | 优化 | 企业级 |
## 未来发展建议
1. **数据库集成**:替换文件存储为数据库
2. **网络功能**:添加在线排名和题目分享
3. **移动端**开发Android和iOS版本
4. **AI辅助**:集成智能题目推荐
5. **多媒体**:添加题目解析视频功能

30
src/.gitignore vendored

@ -0,0 +1,30 @@
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/
.kotlin
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1 @@
MathLearningApp.java

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="ReplaceRangeToWithRangeUntil" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
</profile>
</component>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/MathExamGenerator.iml" filepath="$PROJECT_DIR$/MathExamGenerator.iml" />
</modules>
</component>
</project>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -0,0 +1,3 @@
luguo:2830398107@qq.com:Qi1234
测试用户:test@test.com:Test123
示例用户:user@example.com:User123
Loading…
Cancel
Save