基于java+ssm+vue的健身管理系统及会员微信小程序

项目介绍

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信被用户普遍使用,为方便用户能够可以随时进行学习软件信息管理,特开发了基于健身管理系统。

健身管理系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以在手机微信小程序上进行健身管理系统操作,还有系统平台后期的可操作性,通过对户管理、健身类型管理、健身教练管理、健身课程管理、课程预约管理、系统管理等内容的进行技术的开发。

健身管理系统的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与健身管理系统的实际需求相结合,讨论了基于微信开发的健身管理系统小程序的使用。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1 登录功能实现
用户通过登录窗口,进行在线填写自己的用户名和密码,信息编辑完成后核对信息无误后进行选择登录,系统核对管理员所输入的账号信息是否准确,核对信息准确无误后系统进入到操作界面。如图5-1所示。
在这里插入图片描述

图5-1登录界面图

5.2 管理员功能实现
管理员通过登录进入到系统操作界面后,可以根据需求对个人中心、用户管理、健身类型管理、健身教练管理、健身课程管理、课程预约管理、系统管理等模块进行管理维护操作。如图5-2所示。
在这里插入图片描述

图5-2管理员系统界面图

用户管理:通过列表可以获取用户账号、密码、用户姓名、性别、头像、用户手机等信息,进行查看详情或新增、修改或删除操作,并通过输入用户账号进行查询操作,如图5-3所示。
在这里插入图片描述

图5-3用户管理界面图

健身教练管理:通过点列表可以获取教练姓名、性别、年龄、身高、体重、照片、职业履历等信息、进行查看或新增、修改、删除操作,并通过输入教练名、性别、进行查询,如图5-4所示。
在这里插入图片描述

图5-4健身教练管理界面图

健身课程管理:通过列表可以获取课程编号、课程名称、健身类型、课程图片、教练名称、课程分类、总名额、剩余名额、上课时间、上课地点、课程价格等信息,进行查看详情或修改、查看评论或删除操作。通如图5-5所示。
在这里插入图片描述

图5-5健身课程管理界面图

课程预约:通过列表可以获取预约编号、课程编号、课程名称、课程图片、教练名称、课程分类、上课时间、上课地点、课程价格、用户账号、用户姓名、用户手机、备注、是否支付、审核回复、审核状态、等信息,进行审核或删除操作,通过输入课程名称、用户姓名进行查询操作,如图5-6所示。管理员通过点击审核进入审核页面,可以进行输入审核状态、内容等信息进行审核操作,如图5-7所示。
在这里插入图片描述

图5-6课程预约界面图
在这里插入图片描述

图5-7审核界面图

轮播图管理:通过点列表可以获取名称、值等信息,进行查看详情、新增、修改或删除操作,并通过名称进行查询,如图5-8所示。
在这里插入图片描述

图5-8轮播图界面图

5.3用户微信小程序功能模块
用户进入到界面,通过界面的微信小程序健身管理系统,可以进行通过注册输入登录账号、密码、用户名、姓名、性别、手机进行注册操作,如图5-19所示。用户通过登录页面,输入账号、密码、验证码输入无误后进行登录操作,如图5-10所示。
在这里插入图片描述

图5-9注册用户界面图
在这里插入图片描述

图5-10用户登录界面图

用户进入到微信小程序健身管理系统界面,通过首页可以进行查看个首页、健身教练、健身课程、我的等功能模块,如图5-11所示。
在这里插入图片描述

图5-11用户功能模块界面图

用户通过点击健身课程页面,通过页面可以获取课程名称、课程编号、健身类型、教练姓名、课程分类、总名额、剩余名额、上课时间、下课时间、课程介绍、评论等信息内容,或预约课程,进行查看操作,如图5-12所示。用户通过点击预约课程可以进行输入课程名称、课程图片、教练名称、课程分类、上课时间、下课时间、课程地点、课程价格、用户账号、用户姓名、用户手机、备注等信息,进行提交预约操作,如图5-13所示。
在这里插入图片描述

图5-12健身课程信息界面图
在这里插入图片描述

图5-13预约课程界面图

健身教练,通过健身教练详情页面可以获取健身教练的头像、性别、年龄、身高、体重、职业履历、个人介绍等信息,进行查看,如图5-14所示。

在这里插入图片描述

图5-14健身教练信息界面图

用户通过我的进入我的功能页面可以进行查看健身课程、课程预约、我的收藏管理等子功能模块,如图5-15所示。用户点击课程预约可以进行查看课程的名称、预约编号、课程编号、教练姓名、课程分类、上课时间、下课时间、课程价格、用户账号、用户姓名、用户手机、备注等进行进行审核回复或在线支付操作,如图5-16所示。

在这里插入图片描述

图5-15我的界面图
在这里插入图片描述

图5-16我的预约课程界面图

用户通过点击我的收藏进入页面,可以查看我收藏的课程的详细信息,如图5-17所示。
在这里插入图片描述

图5-17我的收藏界面图

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.KechengyuyueEntity;
import com.entity.view.KechengyuyueView;

import com.service.KechengyuyueService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 课程预约
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/kechengyuyue")
public class KechengyuyueController {
    @Autowired
    private KechengyuyueService kechengyuyueService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KechengyuyueEntity kechengyuyue, HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			kechengyuyue.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<KechengyuyueEntity> ew = new EntityWrapper<KechengyuyueEntity>();
		PageUtils page = kechengyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengyuyue), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,KechengyuyueEntity kechengyuyue, HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			kechengyuyue.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<KechengyuyueEntity> ew = new EntityWrapper<KechengyuyueEntity>();
		PageUtils page = kechengyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengyuyue), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( KechengyuyueEntity kechengyuyue){
       	EntityWrapper<KechengyuyueEntity> ew = new EntityWrapper<KechengyuyueEntity>();
      	ew.allEq(MPUtil.allEQMapPre( kechengyuyue, "kechengyuyue")); 
        return R.ok().put("data", kechengyuyueService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KechengyuyueEntity kechengyuyue){
        EntityWrapper< KechengyuyueEntity> ew = new EntityWrapper< KechengyuyueEntity>();
 		ew.allEq(MPUtil.allEQMapPre( kechengyuyue, "kechengyuyue")); 
		KechengyuyueView kechengyuyueView =  kechengyuyueService.selectView(ew);
		return R.ok("查询课程预约成功").put("data", kechengyuyueView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KechengyuyueEntity kechengyuyue = kechengyuyueService.selectById(id);
        return R.ok().put("data", kechengyuyue);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        KechengyuyueEntity kechengyuyue = kechengyuyueService.selectById(id);
        return R.ok().put("data", kechengyuyue);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KechengyuyueEntity kechengyuyue, HttpServletRequest request){
    	kechengyuyue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kechengyuyue);

        kechengyuyueService.insert(kechengyuyue);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KechengyuyueEntity kechengyuyue, HttpServletRequest request){
    	kechengyuyue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kechengyuyue);
    	kechengyuyue.setUserid((Long)request.getSession().getAttribute("userId"));

        kechengyuyueService.insert(kechengyuyue);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody KechengyuyueEntity kechengyuyue, HttpServletRequest request){
        //ValidatorUtils.validateEntity(kechengyuyue);
        kechengyuyueService.updateById(kechengyuyue);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        kechengyuyueService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<KechengyuyueEntity> wrapper = new EntityWrapper<KechengyuyueEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = kechengyuyueService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

论文参考

在这里插入图片描述

目 录
摘 要 1
Abstract 2
目 录 3
第一章 绪 论 5
1.1选题背景 5
1.2研究现状 5
1.3研究内容 5
第二章 开发工具及关键技术介绍 7
2.1 JAVA技术 7
2.2 Mysql数据库 7
2.3 B/S结构 8
第三章 系统分析 9
3.1需求分析 9
3.2可行性分析 9
3.2.1技术可行性:技术背景 9
3.2.2经济可行性 9
3.2.3操作可行性: 10
3.3性能分析 10
3.4系统操作流程 10
3.4.1用户登录流程 10
3.4.2信息添加流程 11
3.4.3信息删除流程 12
第四章 系统设计与实现 14
4.1系统架构设计 14
4.2开发流程设计 14
4.3数据库设计 15
4.3.1实体ER图 15
4.3.2数据表 18
第五章 系统实现 21
5.1 登录功能实现 21
5.2 管理员功能实现 21
5.3用户微信小程序功能模块 25
第六章 系统的测试 37
6.1系统测试的目的 37
6.2系统测试分析 37
结 论 38
参考文献 39
致 谢 40

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值