# atm **Repository Path**: Code_Osheep/atm ## Basic Information - **Project Name**: atm - **Description**: 控制台程序模拟ATM功能,并对功能进行测试 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-04-12 - **Last Updated**: 2026-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ATM柜员机系统 基于Maven的Java控制台ATM系统,包含完整的单元测试和代码覆盖率报告。 ## 项目结构 ``` atm/ ├── pom.xml # Maven配置文件 ├── src/ │ ├── main/ │ │ ├── java/com/atm/ │ │ │ ├── entity/ │ │ │ │ └── Account.java # 账户实体类 │ │ │ ├── exception/ │ │ │ │ ├── ATMException.java # ATM异常基类 │ │ │ │ ├── InsufficientBalanceException.java │ │ │ │ ├── InvalidCredentialsException.java │ │ │ │ └── AccountNotFoundException.java │ │ │ ├── util/ │ │ │ │ └── CardNumberGenerator.java # 卡号生成器 │ │ │ ├── service/ │ │ │ │ └── ATMService.java # 核心业务逻辑 │ │ │ ├── controller/ │ │ │ │ └── ATMController.java # 控制台交互 │ │ │ └── ATMSystem.java # 主程序入口 │ │ └── resources/ │ └── test/ │ └── java/com/atm/ │ ├── service/ │ │ └── ATMServiceTest.java # 业务逻辑测试 │ └── entity/ │ └── AccountTest.java # 实体类测试 └── target/ # 编译输出目录 ``` ## 功能特性 - ✅ 开户(自动生成16位卡号) - ✅ 登录(卡号+密码验证) - ✅ 查询余额 - ✅ 存款 - ✅ 取款(验证余额) - ✅ 转账 - ✅ 修改密码 - ✅ 注销账户 ## 技术栈 - **Java**: 11 - **构建工具**: Apache Maven - **测试框架**: JUnit 5 (Jupiter) - **覆盖率工具**: JaCoCo - **测试报告**: Maven Surefire Report Plugin ## 快速开始 ### 1. 编译项目 ```bash cd atm mvn clean compile ``` ### 2. 运行测试 ```bash # 运行所有测试 mvn test # 运行特定测试类 mvn test -Dtest=ATMServiceTest mvn test -Dtest=AccountTest ``` ### 3. 生成测试报告 ```bash # 生成JaCoCo覆盖率报告(HTML格式) mvn jacoco:report # 生成Surefire测试报告 mvn surefire-report:report ``` ### 4. 查看报告 - **覆盖率报告**: `target/site/jacoco/index.html` - **测试报告**: `target/site/surefire-report.html` ### 5. 运行ATM系统 ```bash mvn exec:java -Dexec.mainClass="com.atm.ATMSystem" ``` 或者先编译后运行: ```bash mvn clean package java -cp target/classes:target/dependency/* com.atm.ATMSystem ``` ## 测试覆盖范围 本项目包含80+个测试用例,覆盖以下场景: ### 正常流程测试 - 开户成功 - 登录成功 - 存款成功 - 取款成功 - 转账成功 - 修改密码成功 - 注销账户成功 ### 异常流程测试 - 姓名为空/null - 身份证号格式错误 - 密码过短 - 卡号不存在 - 密码错误 - 余额不足 - 向已注销账户转账 - 向自己转账 ### 边界条件测试 - 零金额存取款 - 负数金额存取款 - 取出全部余额 - 多次存款累计 - 综合场景完整流程 ## 代码覆盖率目标 - **行覆盖率**: ≥ 80% - **分支覆盖率**: ≥ 75% ## Maven命令速查 ```bash # 清理编译 mvn clean # 编译 mvn compile # 运行测试 mvn test # 打包 mvn package # 安装到本地仓库 mvn install # 跳过测试打包 mvn package -DskipTests # 查看依赖树 mvn dependency:tree # 生成所有报告 mvn clean test jacoco:report surefire-report:report ``` ## 系统使用说明 1. **开户**: 输入姓名、身份证号(18位)、密码(至少6位) 2. **登录**: 使用卡号和密码登录 3. **存款/取款**: 输入正数金额 4. **转账**: 输入目标卡号和金额 5. **修改密码**: 需要验证旧密码 6. **注销账户**: 此操作不可恢复 ## License MIT License