1. 项目背景与核心需求
15109老年人膳食营养科普网站是一个典型的毕业设计项目,它融合了健康科普与Web开发技术。随着我国老龄化程度加深,老年人健康管理需求日益突出。根据中国营养学会数据,65岁以上老年人中超过60%存在膳食结构不合理问题,而传统纸质宣传册的传播效果有限。
这个项目需要解决三个核心问题:
- 如何将专业的营养学知识转化为老年人易懂的内容
- 如何构建符合老年人使用习惯的交互界面
- 如何实现稳定的后台数据管理
技术选型上,SpringBoot+MySQL的组合非常适合这类中小型Web应用。SpringBoot的自动配置特性可以让学生快速搭建项目框架,而MySQL作为关系型数据库能很好地管理营养数据、用户信息等结构化内容。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术栈选型分析
前端采用Thymeleaf模板引擎而非Vue/React,主要考虑两点:
- 毕业设计的时间成本限制
- 老年人使用的页面不需要复杂的前端交互
后端选择SpringBoot 2.7.x版本(对应Java 17),这个组合在2023年毕业季时是最稳定的搭配。相比最新的SpringBoot 3.x,2.7.x有更丰富的中文社区支持,遇到问题更容易找到解决方案。
数据库使用MySQL 5.7而非8.0,因为:
- 5.7版本在校园服务器环境兼容性更好
- 项目的数据量不会触发5.7的性能瓶颈
- 教学实验室普遍预装了5.7版本
2.2 功能模块划分
系统主要包含四大模块:
- 科普内容管理:文章分类、标签管理、推荐设置
- 用户中心:老年人注册/登录、收藏记录
- 膳食评估:简单的营养问卷测评
- 后台管理:数据统计、内容审核
特别要注意的是老年人操作习惯:
- 所有按钮尺寸不小于44×44像素
- 文字大小支持动态调整
- 关键操作需要二次确认
3. 数据库设计与实现
3.1 核心表结构
sql复制CREATE TABLE `article` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`content` text,
`view_count` int DEFAULT '0',
`category_id` int DEFAULT NULL,
`is_recommend` tinyint(1) DEFAULT '0',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `elderly_user` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(64) NOT NULL,
`phone` varchar(11) DEFAULT NULL,
`age` int DEFAULT NULL,
`gender` tinyint(1) DEFAULT NULL COMMENT '0女 1男',
`health_condition` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.2 设计注意事项
- 所有表字段都使用utf8mb4编码,支持emoji表情
- 密码字段使用SHA-256加密存储
- 为老年人健康数据字段增加适当注释
- 建立合理的索引(如username的唯一索引)
4. SpringBoot核心实现
4.1 项目结构规范
code复制src/main/java
├── com.nutrition
│ ├── config # 配置类
│ ├── controller # 控制器
│ ├── entity # 实体类
│ ├── repository # DAO层
│ ├── service # 服务层
│ └── NutritionApplication.java # 启动类
4.2 关键代码片段
用户注册接口实现:
java复制@PostMapping("/register")
public Result register(@Valid @RequestBody UserRegisterDTO dto) {
if(userRepository.existsByUsername(dto.getUsername())){
return Result.error("用户名已存在");
}
ElderlyUser user = new ElderlyUser();
BeanUtils.copyProperties(dto, user);
user.setPassword(DigestUtils.sha256Hex(dto.getPassword()));
userRepository.save(user);
return Result.success();
}
4.3 性能优化要点
- 使用Spring Cache缓存热门文章
- 分页查询使用PageHelper插件
- 静态资源开启Gzip压缩
- 配置合理的连接池参数(建议HikariCP)
5. 老年人友好型前端实现
5.1 界面设计原则
- 色彩对比度至少4.5:1(WCAG标准)
- 主要操作区域在屏幕下半部分
- 避免使用悬浮菜单
- 每个页面有明确的返回按钮
5.2 典型页面实现
文章详情页Thymeleaf模板关键代码:
html复制<div class="article-content" th:utext="${article.content}"></div>
<div class="action-bar">
<button class="btn-large" onclick="fontSize('+')">放大字体</button>
<button class="btn-large" onclick="fontSize('-')">缩小字体</button>
<button class="btn-large" th:onclick="|collect(${article.id})|">收藏文章</button>
</div>
6. 项目部署与测试
6.1 本地开发环境
- JDK 17 + IntelliJ IDEA
- MySQL 5.7.x
- Maven 3.8+
application-dev.yml配置示例:
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/nutrition?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
6.2 生产环境部署
使用Jenkins自动化部署时需要注意:
- 打包时跳过测试:
mvn package -DskipTests - 启动脚本添加内存参数:
-Xmx512m -Xms256m - 使用Nginx做静态资源代理
7. 毕业设计答辩要点
7.1 技术亮点展示
- 适老化设计的具体实现
- 膳食评估算法的科学性
- 系统安全措施(XSS防护、SQL注入防护)
7.2 常见问题准备
- 为什么选择SpringBoot而不是SSM框架?
- 如何保证营养知识的专业性?
- 系统有哪些扩展可能性?
我在实际开发中发现,老年人用户测试环节非常重要。建议找几位真实老年用户试用原型,他们的操作习惯往往与年轻人差异很大。比如有位测试者总是双击按钮,还有位老人会长时间按住屏幕不放,这些情况都需要在前端做特殊处理。
