1. 项目背景与需求分析
篮球运动作为高校最受欢迎的体育活动之一,场地资源紧张问题日益突出。我在大三担任校学生会体育部部长期间,经常接到同学反映篮球场使用混乱的问题:下午4点黄金时段经常出现多个班级同时到场却无法协调使用的情况,而上午课程时间场地又大量闲置。这种资源分配不均的现象促使我萌生了开发预约管理系统的想法。
通过为期两周的实地调研(发放问卷300份,访谈体育教师8位),发现核心痛点集中在三个方面:
- 信息不对称:85%的受访者表示无法提前获知场地使用情况
- 管理低效:体育老师需要手工记录预约信息,错误率达23%
- 器材损耗:随意取用导致篮球丢失率年均15%
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型决策
经过对比三种主流Java框架组合:
- SSH(Struts2+Spring+Hibernate):架构陈旧,学习曲线陡峭
- SpringBoot+MyBatis:适合微服务但过度设计
- SSM(Spring+SpringMVC+MyBatis):最终选择,理由如下:
- 轻量级组合,适合单体应用
- MyBatis灵活SQL便于复杂查询
- 与JSP天然适配,降低视图层开发成本
安全框架选用Shiro而非Spring Security,因其配置更简单且能满足RBAC需求。实测中,Shiro实现以下功能仅需50行配置代码:
- 用户认证(登录/注销)
- 角色权限拦截
- 会话管理
2.2 数据库设计要点
ER图设计时特别注意解决三个典型问题:
- 场地预约冲突:采用乐观锁机制,在update语句添加version字段校验
- 器材借用记录:建立关联表记录借用时间、归还状态
- 统计查询优化:为常用查询字段(如场地类型、使用时段)建立复合索引
sql复制CREATE TABLE `reservation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`court_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`start_time` datetime NOT NULL,
`end_time` datetime NOT NULL,
`status` tinyint(4)
