项目介绍
随着计算机技术的成熟,互联网的建立,如今,PC平台上有许多关于家庭事务管理方面的应用程序,但由于使用时间和地点上的限制,用户在使用上存在着种种不方便,而开发一款家庭事务管理微信小程序,能够有效地解决这个问题。
本家庭事务管理微信小程序采用WXML 、WXS、JS小程序编写语言、微信开发者工具进行微信端开发,使用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 交流论坛管理界面图
核心代码
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.ShiwuleixingEntity;
import com.entity.view.ShiwuleixingView;
import com.service.ShiwuleixingService;
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("/shiwuleixing")
public class ShiwuleixingController {
@Autowired
private ShiwuleixingService shiwuleixingService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ShiwuleixingEntity shiwuleixing,
HttpServletRequest request){
EntityWrapper<ShiwuleixingEntity> ew = new EntityWrapper<ShiwuleixingEntity>();
PageUtils page = shiwuleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shiwuleixing), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ShiwuleixingEntity shiwuleixing, HttpServletRequest request){
EntityWrapper<ShiwuleixingEntity> ew = new EntityWrapper<ShiwuleixingEntity>();
PageUtils page = shiwuleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shiwuleixing), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ShiwuleixingEntity shiwuleixing){
EntityWrapper<ShiwuleixingEntity> ew = new EntityWrapper<ShiwuleixingEntity>();
ew.allEq(MPUtil.allEQMapPre( shiwuleixing, "shiwuleixing"));
return R.ok().put("data", shiwuleixingService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ShiwuleixingEntity shiwuleixing){
EntityWrapper< ShiwuleixingEntity> ew = new EntityWrapper< ShiwuleixingEntity>();
ew.allEq(MPUtil.allEQMapPre( shiwuleixing, "shiwuleixing"));
ShiwuleixingView shiwuleixingView = shiwuleixingService.selectView(ew);
return R.ok("查询事务类型成功").put("data", shiwuleixingView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ShiwuleixingEntity shiwuleixing = shiwuleixingService.selectById(id);
return R.ok().put("data", shiwuleixing);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ShiwuleixingEntity shiwuleixing = shiwuleixingService.selectById(id);
return R.ok().put("data", shiwuleixing);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ShiwuleixingEntity shiwuleixing, HttpServletRequest request){
shiwuleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(shiwuleixing);
shiwuleixingService.insert(shiwuleixing);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ShiwuleixingEntity shiwuleixing, HttpServletRequest request){
shiwuleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(shiwuleixing);
shiwuleixingService.insert(shiwuleixing);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ShiwuleixingEntity shiwuleixing, HttpServletRequest request){
//ValidatorUtils.validateEntity(shiwuleixing);
shiwuleixingService.updateById(shiwuleixing);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
shiwuleixingService.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<ShiwuleixingEntity> wrapper = new EntityWrapper<ShiwuleixingEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = shiwuleixingService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
1 绪 论 1
1.1研究背景 1
1.2研究现状 1
1.3研究内容 2
2系统关键技术 3
2.1 微信小程序 3
2.2微信Web开发者工具 3
2.3微信小程序API接口 3
2.4 WXML 、WXS、JS小程序编写语言 4
2.5 MYSQL数据库 4
3系统分析 5
3.1可行性分析 5
3.1.1 技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.1.4法律可行性 6
3.2系统性能分析 6
3.3 系统功能分析 6
3.3.1家庭成员功能分析 6
3.3.2管理员功能分析 7
3.4用户体验需求分析 7
3.5系统流程分析 8
3.5.1注册流程 8
3.5.2登录流程 8
3.5.3录入信息流程 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我要发帖界面 19
5.1.6我的发帖界面 20
5.2管理员功能模块的实现 21
5.2.1管理员登录界面 21
5.2.2家庭成员管理界面 22
5.2.3事务类型管理界面 22
5.2.4家庭事务管理界面 23
5.2.5交流论坛管理界面 23
6系统测试 25
6.1测试定义 25
6.2测试的重要性 25
6.3测试方案 26
6.4测试结论 27
结 论 28
参考文献 29
谢 辞 30