基于微信小程序的个人健康数据管理系统【论文、源码、开题报告】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

4系统概要设计

4.1概述

本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:

图4-1系统工作原理图

4.2系统结构

设计的管理员功能结构图如下图所示:

图4-2管理员功能结构图

设计的用户功能结构图如下图所示:

图4-2用户功能结构图

4.3.数据库设计

4.3.1数据库实体

概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。

概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:

(1)健康计划信息的实体属性图如下:

图4.12  健康计划新闻信息实体属性图

(2)知识科普实体属性图如图4.13所示:

图4.13  知识科普实体属性图

(3)用户信息实体属性图如图4.14所示:

图4.14 用户信息实体属性图

4.3.2数据库设计表

基于微信小程序的个人健康数据管理系统需要后台数据库,下面介绍数据库中的各个表的详细信息:

表4.1 健康计划评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.2 健康信息共享评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.3 知识科普评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.4 交流区

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

title

varchar(200)

NULL

帖子标题

content

longtext

帖子内容

parentid

bigint(20)

NULL

父节点id

userid

bigint(20)

用户id

username

varchar(200)

NULL

用户名

isdone

varchar(200)

NULL

状态

表4.5 健康计划

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

biaoti

varchar(200)

NULL

标题

tizhong

varchar(200)

体重

nianling

varchar(200)

年龄

shengao

varchar(200)

身高

yinshijianyi

varchar(200)

饮食建议

yundongjianyi

varchar(200)

运动建议

beizhu

longtext

NULL

备注

fengmian

varchar(200)

NULL

封面

thumbsupnum

int(11)

0

crazilynum

int(11)

0

clicknum

int(11)

0

点击次数

表4.6 健康数据

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

bianhao

varchar(200)

编号

yonghuzhanghao

varchar(200)

NULL

用户账号

yonghuming

varchar(200)

NULL

用户名

lianxidianhua

varchar(200)

NULL

联系电话

gerentouxiang

varchar(200)

NULL

个人头像

nianling

int(11)

NULL

年龄

shengao

varchar(200)

NULL

身高

tizhong

varchar(200)

NULL

体重

yinshixiguan

longtext

NULL

饮食习惯

yundongxiguan

longtext

NULL

运动习惯

beizhu

varchar(200)

NULL

备注

fabushijian

datetime

NULL

发布时间

userid

bigint(20)

NULL

用户id

表4.7 健康信息共享

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yonghuzhanghao

varchar(200)

NULL

用户账号

yonghuming

varchar(200)

NULL

用户名

xingbie

varchar(200)

NULL

性别

gerentouxiang

varchar(200)

NULL

个人头像

nianling

int(11)

年龄

shengao

varchar(200)

身高

tizhong

varchar(200)

体重

yinshixiguan

varchar(200)

饮食习惯

yundongxiguan

varchar(200)

运动习惯

beizhu

varchar(200)

NULL

备注

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

thumbsupnum

int(11)

0

crazilynum

int(11)

0

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

表4.8 数据分析

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

bianhao

varchar(200)

NULL

编号

yonghuzhanghao

varchar(200)

NULL

用户账号

yonghuming

varchar(200)

NULL

用户名

fabushijian

varchar(200)

NULL

发布时间

fenxijieguo

varchar(200)

NULL

分析结果

jiankangjianyi

longtext

NULL

健康建议

keguantuxiang

varchar(200)

NULL

客观图像

userid

bigint(20)

NULL

用户id

表4.8 管理员表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.9 用户

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yonghuzhanghao

varchar(200)

用户账号

mima

varchar(200)

密码

yonghuming

varchar(200)

NULL

用户名

xingbie

varchar(200)

NULL

性别

lianxidianhua

varchar(200)

NULL

联系电话

gerentouxiang

varchar(200)

NULL

个人头像

表4.10 知识科普

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

biaoti

varchar(200)

NULL

标题

fengmian

varchar(200)

NULL

封面

shipinjieshao

varchar(200)

NULL

视频介绍

xiangxineirong

longtext

NULL

详细内容

fabushijian

datetime

NULL

发布时间

gengxinshijian

datetime

NULL

更新时间

thumbsupnum

int(11)

0

crazilynum

int(11)

0

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

5系统详细实现

5.1 管理员模块的实现

5.1.1 用户管理

管理员可以管理用户信息,可以对通过微信小程序端注册的用户信息修改删除。具体界面的展示如图5.1所示。

图5.1 用户管理界面

5.1.2 知识科普管理

管理员可以对知识科普信息进行添加,修改删除查询操作。具体界面如图5.2所示。

图5.2 知识科普管理界面

5.1.3 健康信息共享管理

系统管理员可以查看健康信息共享,并且可以对健康信息共享管理的信息进行添加修改删除操作。界面如下图所示:

图5.3 健康信息共享管理界面

5.1.4 健康计划管理

系统管理员可以查看健康计划,并且可以对健康计划的信息进行添加修改删除操作。界面如下图所示:

图5.4 健康计划管理界面

5.2 小程序用户模块的实现

5.2.1 用户注册

小程序用户是需要注册才可以进行登录的。界面如下图所示:

图5.5 注册界面

5.2.2 小程序首页

小程序首页会显示知识科普,交流区还有其他信息,通过下滑就可以获取到。界面如下图所示:

图5.6 小程序首页

5.2.2 我的

小程序最下面是导航模块,点击我的,可以出现关于我的相关功能。界面如下图所示:

图5.6 我的

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值