1. 项目概述基于Web的小型宾馆客房管理系统这个系统本质上是一个B/S架构的酒店业务管理平台我选择用SSM框架(SpringSpringMVCMyBatis)作为技术栈搭配MySQL数据库和Bootstrap前端框架。系统主要解决30-50间客房规模的小型宾馆在日常运营中的四大痛点手工登记效率低、房态更新不及时、财务统计混乱、客户信息管理缺失。从技术实现角度看系统采用典型的三层架构表现层BootstrapJSP实现响应式页面业务逻辑层Spring控制事务SpringMVC处理请求数据访问层MyBatis操作MySQL数据库提示小型宾馆系统设计时要特别注意并发量控制实测表明Tomcat默认配置下SSM框架能稳定支持50人同时在线操作。2. 开题答辩核心问题解析2.1 技术选型依据答辩时被问到最多的问题就是为什么选择SSM而不是Spring Boot我的回答基于三点考量教学要求课程大纲明确要求展示传统SSM整合能力可控性SSM各组件分离更利于展示框架整合过程扩展性为后续引入Spring Boot预留升级空间数据库选型方面MySQL相比PostgreSQL的优势在于社区资源丰富问题排查容易5.7版本后对JSON字段的良好支持与MyBatis的天然兼容性2.2 系统功能模块设计系统包含6个核心模块各模块关联关系如下表所示模块名称核心功能技术实现要点客房管理房态维护/类型设置MyBatis动态SQL预订管理订单创建/修改Spring事务控制入住管理客户登记/押金JSR303校验收银结算费用计算/发票金额精度处理统计报表经营数据分析ECharts集成系统管理用户权限控制Shiro整合2.3 关键技术实现难点2.3.1 房态实时同步问题最初设计时发现房态更新存在延迟通过以下方案解决前端采用WebSocket协议后端建立Redis缓存层数据库触发器监控变更// WebSocket配置示例 Configuration EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker(/topic); config.setApplicationDestinationPrefixes(/app); } }2.3.2 并发预订冲突处理采用乐观锁机制解决超售问题为t_room表添加version字段更新时校验版本号冲突时自动重试机制UPDATE t_room SET statusBOOKED, versionversion1 WHERE room_id1001 AND version53. 答辩常见问题与应答策略3.1 技术深度类问题Q为什么MyBatis要手动编写SQL而不是用Hibernate A三个关键原因复杂查询场景下SQL更可控与存储过程调用更兼容适合需要精细优化SQL的场景QBootstrap的响应式如何适配不同设备 A通过以下机制实现12栅格布局系统媒体查询断点设置弹性图片处理img-fluid类3.2 业务逻辑类问题Q如何防止同一房间被重复预订 A四重保障机制数据库唯一索引乐观锁控制业务层状态校验前端实时房态显示Q财务报表的准确性如何保证 A采用财务凭证模式每笔交易生成凭证记录日结对账机制操作日志审计追踪4. 答辩演示技巧与注意事项4.1 演示环境准备建议使用以下配置保证演示稳定性JDK 1.8避免高版本兼容问题Tomcat 8.5已验证稳定性MySQL 5.7支持窗口函数Chrome浏览器兼容性最佳注意务必提前测试投影仪分辨率Bootstrap在1366×768下显示效果最佳。4.2 典型问题应对方案遇到系统有什么创新点时可以从以下角度回答针对小型宾馆的轻量化设计对比大型PMS系统本地化部署的数据安全优势模块化架构带来的可扩展性当被质疑系统是否过于简单时应强调符合课程要求的复杂度完整实现了软件工程全流程预留了二次开发接口5. 项目扩展与优化方向5.1 近期优化建议安全性增强增加HTTPS支持完善密码策略添加操作日志审计性能提升引入Redis缓存热点数据数据库读写分离SQL语句优化5.2 长期演进路线技术演进可以考虑微服务化改造Spring Cloud前后端分离Vue.js重构前端智能化升级结合AI预测入住率业务扩展方向包括微信小程序接入会员积分系统供应链管理模块我在实际开发中发现SSM框架整合时最容易出问题的是事务管理配置。建议在applicationContext.xml中明确指定事务管理器bean并在测试阶段重点验证Transactional注解的传播行为是否符合预期。另外MyBatis的mapper接口注入时要注意扫描包路径的配置这个坑我当初排查了整整两天。