一、项目基础信息项目名称专业英语单词测试系统 开发技术Java Swing MySQL Druid 连接池 Apache POI 项目架构五层 MVC 分层架构Entity/DAO/Service/UI/Util 个人负责模块全部 Service 业务服务类、全部 Util 通用工具类 代码总量680 行 开发周期课程设计整体开发两周本人模块独立编码、自测、联调耗时 8 天二、模块分工与我的定位小组一共三人分工组长Entity 实体类 所有 DAO 数据访问层负责数据表映射、SQL 增删改查、数据库脚本我Service 业务逻辑层 Util 通用工具层承接界面与数据库中间所有业务控制、底层公共工具封装组员全部 Swing 前端界面登录、答题、词云、成绩等可视化页面。整体分层规则UI 只负责展示DAO 只负责 SQL所有业务判断、参数校验、通用底层工具全部由我完成是连接前后数据流转的核心中枢。三、Service 业务层 6 个类完整开发思路Service 包下一共 6 个独立业务类严格按照单一职责拆分不写一句 SQL只做参数校验、流程调度、DAO 调用、数据加工。1. AuthService 登录鉴权模块功能系统登录唯一校验入口 核心逻辑先拦截空账号、空密码提前过滤无效请求避免无意义数据库查询清洗账号密码首尾空格后调用 UserDao 查询启用用户查询无数据统一抛出友好提示屏蔽底层数据库异常。 痛点优化没有在界面重复写判断逻辑登录校验统一收口在服务层后续修改登录规则只改这一处即可。2. UserService WordService用户 / 单词管理两个类采用完全统一模板实现新增、修改、删除、模糊查询统一save方法兼容新增与编辑通过 ID 区分操作内部封装私有isBlank/blank方法统一空字符串校验用户强制校验账号、密码、姓名非空单词强制校验英文与释义避免脏数据入库。 设计优势UI 新增、编辑按钮只需调用同一个接口大幅简化前端代码。3. ExamService项目核心业务类承载整套考试全流程也是我工作量最大的类核心四大功能创建考试校验校验考试时长、题目数量大于 0校验单词库存量充足再自动随机抽取单词、分三种题型批量生成考题防作弊乱序算法shuffledQuestions方法使用 Collections.shuffle 内存洗牌每个考生加载题目顺序完全不同不用改数据库低成本实现防抄袭答卷权限控制区分未答题、作答中、已提交三种状态已提交试卷禁止重考交卷调度接收前端答案集合转发 DAO 开启事务自动判分、保存错题。4. StatisticsService 成绩统计面向教师端数据分析封装三类统计接口查询单场所有学生完整成绩计算整场平均分、最高分、最低分、及格率逐题统计正确率定位难题。 所有聚合查询交给 DAOService 只做接口封装前端直接调用就能拿到格式化数据。5. WrongRecordService 错题词云数据源两个核心接口根据学生 ID 查询个人全部错题学生错题本统计近 7 天高频出错单词返回词频 Map直接供给词云面板渲染。 拆分原因和成绩统计业务隔离后期拓展错题练习、错题导出不用改动成绩代码。四、Util 工具包 4 类通用工具开发工具层属于项目底层公共支撑全项目 UI、DAO、Service 都能调用彻底消除重复造轮子。1. DBUtil 德鲁 id 数据库连接池工具实现要点静态代码块项目启动一次性加载 db.properties 配置初始化连接池私有构造禁止实例化全局静态获取连接相比原生 JDBC 频繁创建销毁连接连接池大幅提升多学生同时答题性能 踩坑记录最开始每个 DAO 都重复写加载驱动代码冗余严重于是单独抽取该工具统一管理连接。2. SwingUtil 全局界面统一工具所有窗口共用一套样式全部封装在此类程序启动统一加载微软雅黑字体、系统原生窗口外观封装自定义圆角按钮、只读表格、输入框、下拉框统一弹窗提示 / 错误、日期格式化、流式布局 收益所有界面不用重复绘图、布局代码后期改系统主题只改这一个类。3. ExcelUtil 成绩导出工具基于 Apache POI 实现教师导出功能自动生成固定表头姓名、学号、得分、正确率等自动适配表格宽度空分数、空时间做兜底处理规范关闭 IO 流防止文件占用。4. SqlImporter 数据库初始化脚本工具解决本地 MySQL 客户端版本不兼容、无法导入 SQL 的问题 独立 main 方法直接通过 JDBC 批量执行建库建表脚本机房部署不用装 Navicat新手一键初始化数据库。五、开发重难点与踩坑总结1. 事务一致性问题初期测试交卷功能时经常出现答案保存成功、错题记录丢失原因是没有事务控制。 解决方案ExamService 统一调度交卷流程底层 PaperDao 开启手动事务全部 SQL 执行完毕再 commit异常自动 rollback保证答卷、答题明细、错题三者数据统一。2. 分层规范踩坑一开始习惯把判断逻辑写在 UI后期发现每个窗口重复代码极多重构后所有参数拦截、业务规则全部移入 Service严格遵循 DAO 只做数据、Service 只做业务的分层思想。3. 代码复用优化开发中期发现大量空值判断、数据库连接、界面绘图代码重复于是抽取 util 工具包把通用能力全部抽象项目代码精简近 30%。六、个人开发收获彻底吃透 MVC 五层分层设计思想分清视图、业务、数据层的边界理解高内聚低耦合的实际落地方式熟练掌握 JDBC 事务、Druid 连接池、POI 文件操作、Swing 自定义控件等实战技术学会模块化分工协同开发和 UI、DAO 组员对接接口掌握前后端桌面端联调流程养成通用功能抽象封装的编码习惯不再重复编写同质化代码。七、后续优化计划给 Service 核心方法添加 JUnit 单元测试减少人工界面测试自定义业务异常类区分数据库、参数、文件报错便于调试重构重复字符串判断新增 StringUtil 工具拓展 Excel 导出支持错题、单词清单导出学习 Spring 框架替代手动 new DAO、手动事务的写法简化业务代码。