1. 项目背景与核心需求
这个SpringBoot老年群体摄影与旅游学习平台的设计初衷,源于我国老龄化社会背景下对老年人精神文化需求的关注。随着智能手机和数码相机的普及,越来越多的老年人开始对摄影产生兴趣,同时旅游也成为他们退休生活的重要组成部分。但市场上专门针对老年人的摄影教学和旅游信息平台却十分匮乏。
我在实际调研中发现,60岁以上的用户群体在使用常规摄影社区时普遍遇到三大痛点:
- 界面字体过小、操作流程复杂
- 教学内容专业术语过多,缺乏适老化讲解
- 旅游推荐不考虑老年人身体状况和消费习惯
这个毕业设计项目正是要解决这些问题。平台需要实现的核心功能包括:
- 适老化UI界面设计(大字体、高对比度、简化操作)
- 摄影教程的阶梯式学习系统
- 针对老年人的旅游路线推荐算法
- 社交互动功能(作品分享、约伴出游等)
2. 技术架构设计
2.1 整体技术栈选型
选择SpringBoot作为后端框架主要基于以下考虑:
- 约定优于配置的特性大幅减少XML配置,适合快速开发
- 内嵌Tomcat服务器简化部署流程
- 丰富的Starter依赖可以快速集成常用功能
- 完善的健康检查机制便于监控老年用户的使用情况
前端采用Thymeleaf模板引擎而非前后端分离架构,主要考虑到:
- 老年用户使用的设备性能参差不齐
- SEO友好度更高,便于内容被搜索引擎收录
- 服务端渲染可以更好地控制页面加载速度
数据库选用MySQL 5.7而非更新的8.0版本,因为:
- 社区版5.7已经过充分验证,稳定性更有保障
- 项目不涉及JSON类型字段等新特性需求
- 配套的管理工具更成熟完善
2.2 核心模块划分
系统主要分为四大模块:
-
用户管理模块
- 老年用户专属注册流程(子女手机号验证)
- 健康信息登记(可选填写基础疾病等)
- 兴趣标签选择
-
摄影学习模块
- 视频教程分级体系
- 作品上传与AI评析
- 本地摄影活动推荐
-
旅游服务模块
- 适老化路线算法
- 医疗点标注系统
- 紧急联系人绑定
-
社交互动模块
- 同城影友匹配
- 作品点赞评论
- 约伴出游功能
3. 关键功能实现细节
3.1 适老化界面实现
在CSS样式中特别设置了:
css复制/* 基础字体设置 */
body {
font-size: 18px;
line-height: 1.8;
color: #333;
background-color: #f9f9f9;
}
/* 按钮增强 */
.btn-senior {
min-width: 120px;
padding: 12px 24px;
border: 2px solid #0066cc;
border-radius: 8px;
}
/* 高对比度配色 */
.contrast-mode {
color: #000 !important;
background-color: #fff !important;
}
后端通过Interceptor自动识别老年用户:
java复制@Interceptor
public class SeniorModeInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) {
if(request.getSession().getAttribute("userType") == "senior") {
request.setAttribute("seniorMode", true);
}
return true;
}
}
3.2 旅游路线推荐算法
核心算法考虑以下维度:
- 坡度评估(使用OpenStreetMap高程数据)
- 医疗设施密度(500米范围内)
- 休息点间隔(不超过800米)
- 步行强度评分
算法实现示例:
java复制public List<Route> recommendRoutes(User user) {
// 获取用户健康数据
HealthInfo health = healthDao.getByUserId(user.getId());
// 构建评分矩阵
Criteria criteria = new Criteria()
.maxSlope(health.getMaxSlope())
.maxDistance(health.getDailyDistance())
.restInterval(800);
// 执行推荐
return routeEngine.recommend(criteria);
}
4. 数据库设计要点
4.1 用户表特殊字段
sql复制CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`real_name` varchar(50) DEFAULT NULL COMMENT '真实姓名(用于紧急情况)',
`emergency_contact` varchar(20) DEFAULT NULL COMMENT '紧急联系人',
`health_level` tinyint(4) DEFAULT '1' COMMENT '健康等级1-5',
`font_size` tinyint(4) DEFAULT '3' COMMENT '字体大小偏好1-5',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4.2 摄影作品表的适老化改造
sql复制CREATE TABLE `photo_work` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) NOT NULL,
`title` varchar(100) NOT NULL,
`description` text COMMENT '语音转文字描述',
`location` point DEFAULT NULL,
`create_time` datetime NOT NULL,
`easy_view_url` varchar(255) DEFAULT NULL COMMENT '简化版图片URL',
PRIMARY KEY (`id`),
SPATIAL KEY `idx_location` (`location`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5. 开发过程中的经验总结
5.1 老年用户测试的发现
在邀请20位65岁以上用户进行可用性测试时,我们获得了意想不到的反馈:
- 超过70%的用户会忽略页面右侧的所有功能入口
- 彩色按钮比文字链接的点击率高3倍
- 语音输入功能使用率高达89%
- 子女协助注册的比例达到62%
这些发现促使我们做出了以下调整:
- 将核心功能全部移至页面左侧
- 为所有可点击元素增加彩色边框
- 开发方言语音识别模块
- 增加"子女协助注册"快捷通道
5.2 性能优化实践
针对老年用户常用的低端设备,我们实施了特殊优化:
- 图片懒加载 + WebP格式自动转换
- 关键接口响应时间控制在800ms以内
- 前端资源按需加载
- 建立本地缓存机制
通过Jmeter压测对比:
| 优化项 | 优化前(TPS) | 优化后(TPS) | 提升幅度 |
|---|---|---|---|
| 首页加载 | 12.5 | 38.2 | 205% |
| 作品浏览 | 8.7 | 25.1 | 188% |
| 路线查询 | 6.2 | 18.9 | 204% |
6. 毕业设计扩展建议
如果时间允许,这个项目还可以进一步扩展:
- 接入智能手环数据,实时监测用户身体状况
- 开发离线模式,应对网络信号不佳的旅游场景
- 增加AR实景摄影指导功能
- 整合社区医疗服务资源
在技术层面值得深入的方向:
- 使用Spring Cloud实现服务化改造
- 引入Redis缓存热门旅游路线
- 基于用户行为数据优化推荐算法
- 开发微信小程序版本提升可及性
这个项目让我深刻体会到,技术开发不仅要考虑功能实现,更需要从目标用户的实际需求出发。适老化设计不是简单的放大字体,而是一整套用户体验的重新思考。在开发过程中,与真实老年用户的持续交流比任何技术文档都更有价值。
