项目介绍
随着计算机技术的成熟,互联网的建立,如今,PC平台上有许多关于社区养老服务方面的应用程序,但由于使用时间和地点上的限制,用户在使用上存在着种种不方便,而开发一款基于微信小程序的社区养老服务系统,能够有效地解决这个问题。
本文主要介绍了基于微信小程序的社区养老服务系统的开发过程,对开发环境、系统设计、系统实现、系统测试方面进行分析。在设计时对微信客户端进行了充分的了解,掌握微信平台通过的接口,同时系统采用MYSQL数据库进行数据的储存,充分的保证了系统的稳定性、安全性。
通过本系统满足了不同权限用户的功能需求,包括用户、服务人员以及管理员。
“操作简单,功能实用”这是本软件设计的核心理念,本系统力求创造最好的用户体验。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net
系统实现
5.1微信端功能模块的实现
5.1.1微信端注册登录界面
没有账号的用户可进行注册操作,注册后可进行登录系统,在登录时可选择登录类型,微信端注册登录界面展示如图5.1所示。
图5.1 微信端注册登录界面
5.1.2首页界面
用户登录后可进入首页查看相关信息,首页界面展示如图5.2所示。
图5.2首页界面
5.1.3服务产品详情界面
用户可选择服务产品查看详情信息,并可进行预约和投诉操作,服务产品详情界面展示如图5.3所示。
图5.3 服务产品详情界面.
5.1.4服务投诉界面
用户可进行服务投诉操作,服务投诉界面展示如图5.4所示。
图5.4 服务投诉界面
5.1.5服务预约界面
用户登录后可选择服务进行预约操作,服务预约界面展示如图5.5所示。
图5.5 服务预约界面
5.1.6我的界面
用户在我的界面可选择模块进行相应操作,我的界面展示如图5.6所示。
图5.6 我的界面
5.2服务端功能模块的实现
5.2.1服务端登录界面
管理员和服务人员要想进入对于角色后台进行管理操作,必须登录对应角色后台,服务端登录界面展示如图5.7所示。
图5.7服务端登录界面
5.2.2用户管理界面
管理员和服务人员均可进行用户管理操作,用户管理界面如图5.8所示。
图5.8 用户管理界面
5.2.3服务人员管理界面
管理员在服务人员管理界面可查看所有服务人员信息,对已有服务人员信息可进行编辑和删除操作,服务人员管理界面如图5.9所示。
图5.9 服务人员管理界面
5.2.4服务产品管理界面
管理员和服务人员均可增删改查服务产品信息,服务产品管理界面展示如图5.10所示。
图5.10 服务产品管理界面
5.2.5服务预约管理界面
管理员和服务人员均可查看服务预约信息,并可对其进行审核、修改和删除操作,服务预约管理界面展示如图5.11所示。
图5.11 服务预约管理界面
5.2.6活动管理界面
管理员和服务人员均可增删改查活动信息,活动管理界面展示如图5.12所示。
图5.12 活动管理界面
5.2.7视频管理界面
管理员和服务人员均可查看、添加、修改和删除视频信息,视频管理界面展示如图5.13所示。
图5.13 视频管理界面
核心代码
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.format.annotation.DateTimeFormat;
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.FuwuchanpinEntity;
import com.entity.view.FuwuchanpinView;
import com.service.FuwuchanpinService;
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("/fuwuchanpin")
public class FuwuchanpinController {
@Autowired
private FuwuchanpinService fuwuchanpinService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,FuwuchanpinEntity fuwuchanpin,
HttpServletRequest request){
EntityWrapper<FuwuchanpinEntity> ew = new EntityWrapper<FuwuchanpinEntity>();
PageUtils page = fuwuchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwuchanpin), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("st")
public R list(@RequestParam Map<String, Object> params,FuwuchanpinEntity fuwuchanpin, HttpServletRequest request){
EntityWrapper<FuwuchanpinEntity> ew = new EntityWrapper<FuwuchanpinEntity>();
PageUtils page = fuwuchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fuwuchanpin), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("sts")
public R list( FuwuchanpinEntity fuwuchanpin){
EntityWrapper<FuwuchanpinEntity> ew = new EntityWrapper<FuwuchanpinEntity>();
ew.allEq(MPUtil.allEQMapPre( fuwuchanpin, "fuwuchanpin"));
return R.ok().put("data", fuwuchanpinService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(FuwuchanpinEntity fuwuchanpin){
EntityWrapper< FuwuchanpinEntity> ew = new EntityWrapper< FuwuchanpinEntity>();
ew.allEq(MPUtil.allEQMapPre( fuwuchanpin, "fuwuchanpin"));
FuwuchanpinView fuwuchanpinView = fuwuchanpinService.selectView(ew);
return R.ok("查询服务产品成功").put("data", fuwuchanpinView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
FuwuchanpinEntity fuwuchanpin = fuwuchanpinService.selectById(id);
return R.ok().put("data", fuwuchanpin);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
FuwuchanpinEntity fuwuchanpin = fuwuchanpinService.selectById(id);
return R.ok().put("data", fuwuchanpin);
}
/**
* 赞或踩
*/
@RequestMapping("/thumbsup/{id}")
public R thumbsup(@PathVariable("id") String id,String type){
FuwuchanpinEntity fuwuchanpin = fuwuchanpinService.selectById(id);
if(type.equals("1")) {
fuwuchanpin.setThumbsupnum(fuwuchanpin.getThumbsupnum()+1);
} else {
fuwuchanpin.setCrazilynum(fuwuchanpin.getCrazilynum()+1);
}
fuwuchanpinService.updateById(fuwuchanpin);
return R.ok();
}
/**
* 后端保存
*/
@RequestMapping("ve")
public R save(@RequestBody FuwuchanpinEntity fuwuchanpin, HttpServletRequest request){
fuwuchanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(fuwuchanpin);
fuwuchanpinService.insert(fuwuchanpin);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody FuwuchanpinEntity fuwuchanpin, HttpServletRequest request){
fuwuchanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(fuwuchanpin);
fuwuchanpinService.insert(fuwuchanpin);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody FuwuchanpinEntity fuwuchanpin, HttpServletRequest request){
//ValidatorUtils.validateEntity(fuwuchanpin);
fuwuchanpinService.updateById(fuwuchanpin);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
fuwuchanpinService.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<FuwuchanpinEntity> wrapper = new EntityWrapper<FuwuchanpinEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = fuwuchanpinService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
摘 要 I
Abstract II
目 录 III
第1章 绪论 1
1.1研究背景 1
1.2设计原则 1
1.3研究内容 1
第2章 关键技术简介 3
2.1微信Web开发者工具 3
2.2微信小程序API接口 3
2.3 MYSQL数据库 3
2.4 Java简介 3
第3章 系统分析 5
3.1 可行性分析 5
3.1.1技术可行性 5
3.1.2 经济可行性 5
3.1.3 操作可行性 5
3.1.4法律可行性 5
3.2 系统性能分析 6
3.3 系统功能分析 6
3.4 系统流程分析 6
3.4.1登录流程 6
3.4.2添加信息流程 7
3.4.3注册流程 7
3.4.4修改密码流程 8
第4章 系统设计 10
4.1系统设计要求 10
4.2系统开发流程设计 10
4.3系统结构设计 10
4.4系统数据库设计 11
4.4.1 数据库E-R图设计 11
4.4.2 数据库表设计 13
第5章 系统的实现 16
5.1微信端功能模块的实现 16
5.1.1微信端注册登录界面 16
5.1.2首页界面 16
5.1.3服务产品详情界面 17
5.1.4服务投诉界面 18
5.1.5服务预约界面 18
5.1.6我的界面 19
5.2服务端功能模块的实现 19
5.2.1服务端登录界面 19
5.2.2用户管理界面 20
5.2.3服务人员管理界面 20
5.2.4服务产品管理界面 21
5.2.5服务预约管理界面 21
5.2.6活动管理界面 22
5.2.7视频管理界面 22
第6章 系统测试 24
6.1 测试目的 24
6.2 测试整体步骤 24
6.3 测试方法 25
6.4测试分析 25
第7章 总结 26
致 谢 27
参考文献 28