项目介绍
随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信被用户普遍使用,为方便用户能够可以随时进行查看个人中心、外籍人员信息、派出所信息等,特开发了基于微信小程序的外来人员管理系统。
基于微信小程序的外来人员管理系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,还可以通过派出所进行查看外籍人员和在线审核操作,通过管理员对个人中心、外籍人员管理、派出所管理、系统管理等内容的详细了解和处理进行技术的开发。
基于微信小程序的外来人员管理系统的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与基于微信小程序的外来人员管理系统管理的实际需求相结合,讨论了基于微信开发的基于微信小程序的外来人员管理系统管理小程序的使用。
开发环境
编程语言: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.3所示。管理员通过新增进行添加外籍人员的详细信息,进行提交操作,如图5.4所示。
图5-3外籍人员界面图
图5-4添加外籍人员界面图
派出所管理:通过列表可以查看账号、姓名、性别、手机、邮箱、身份证、照片、工作单位、家庭住址、现住地址、审核回复、审核状态、审核等信息,进行查看、新增、修改或删除操作,也可以通过输入账号、姓名进行查找或重置操作,如图5.5所示。管理员通过点击新增进行输入账号、密码、派出所名称、负责人、电话、邮箱、网站、图片等信息,进行提交信息,如图5.6所示。
图5.5派出所信息界面
图5.6添加派出所界面图
轮播图管理:通过列表可以查看名称、值等信息,进行查看、新增、修改或删除操作,也可以通过填写名称进行查询或重置操作,如图5.7所示。
图5.7轮播图管理界面
新闻公告列表:通过列表可以查看标题、简介图片等信息,进行查看和新增、修改或删除操作,也可以通过输入标题进行查询或重置操作,如图5.8所示。
图5.8新闻公告列表界面
5.2用户功能模块
用户进入微信端的物业巡检督察系统,如果用户还不是系统会员,则需要在线注册,注册完成后,需要派出所进行审核才能进行登录操作,如图5-9所示,外籍人员通过输入用户名、密码、选择权限进行登录操作,如图5-10所示。
图5-9用户注册界面
图5-10用户登录界面图
用户通过登录进入到系统界面,可以查看首页、外籍人员、派出所、我的功能模块,进行相对应操作,用户通过首页可以进行查看新闻公告信息,如图5-11所示。
图5-11首页界面
用户通过点击外来人员的详细页面,可以进行查看姓名、账号、性别、手机、邮箱、身份证、工作单位、家庭住址、现住地址等信息,进行查看审批通过成功操作,如图5-12所示。
图5-12外来人员详情界面
用户通过点击课派出所详情进入页面,可以进行查看派出所名称、账号、负责人、电话、邮箱、地址、网站、服务时间等信息,进行查看操作,如图5-13所示。
图5-13派出所详情界面
5.3派出所功能模块
派出所进入微信端的外来人员管理系统,如果用户还不是系统会员,则需要在线注册,注册完成后,才能进行登录操作,如果5-14所示,
图5-14用户注册界面
图5-15派出所登录界面图
用户登录成功后,可以进行查看首页、外籍人员、派出所、我的等功能,进行相对应操作,新闻公告:通过页面可以进行获取新闻公告标题、发布时间等信息,进行查看操作,如图5-16所示。
图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.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.RenkouyisongEntity;
import com.entity.view.RenkouyisongView;
import com.service.RenkouyisongService;
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("/renkouyisong")
public class RenkouyisongController {
@Autowired
private RenkouyisongService renkouyisongService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,RenkouyisongEntity renkouyisong,
HttpServletRequest request){
EntityWrapper<RenkouyisongEntity> ew = new EntityWrapper<RenkouyisongEntity>();
PageUtils page = renkouyisongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, renkouyisong), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,RenkouyisongEntity renkouyisong, HttpServletRequest request){
EntityWrapper<RenkouyisongEntity> ew = new EntityWrapper<RenkouyisongEntity>();
PageUtils page = renkouyisongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, renkouyisong), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( RenkouyisongEntity renkouyisong){
EntityWrapper<RenkouyisongEntity> ew = new EntityWrapper<RenkouyisongEntity>();
ew.allEq(MPUtil.allEQMapPre( renkouyisong, "renkouyisong"));
return R.ok().put("data", renkouyisongService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(RenkouyisongEntity renkouyisong){
EntityWrapper< RenkouyisongEntity> ew = new EntityWrapper< RenkouyisongEntity>();
ew.allEq(MPUtil.allEQMapPre( renkouyisong, "renkouyisong"));
RenkouyisongView renkouyisongView = renkouyisongService.selectView(ew);
return R.ok("查询人口移送成功").put("data", renkouyisongView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
RenkouyisongEntity renkouyisong = renkouyisongService.selectById(id);
return R.ok().put("data", renkouyisong);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
RenkouyisongEntity renkouyisong = renkouyisongService.selectById(id);
return R.ok().put("data", renkouyisong);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody RenkouyisongEntity renkouyisong, HttpServletRequest request){
renkouyisong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(renkouyisong);
renkouyisongService.insert(renkouyisong);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody RenkouyisongEntity renkouyisong, HttpServletRequest request){
renkouyisong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(renkouyisong);
renkouyisongService.insert(renkouyisong);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody RenkouyisongEntity renkouyisong, HttpServletRequest request){
//ValidatorUtils.validateEntity(renkouyisong);
renkouyisongService.updateById(renkouyisong);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
renkouyisongService.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<RenkouyisongEntity> wrapper = new EntityWrapper<RenkouyisongEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = renkouyisongService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
摘 要 1
Abstract 2
第一章 绪 论 5
1.1选题背景 5
1.2研究现状 5
1.3研究内容 6
第二章 开发工具及关键技术介绍 7
2.1 微信开发者工具 7
2.2 小程序框架以及目录结构介绍 7
2.3 JAVA技术 7
2.4 Mysql数据库 7
2.5 B/S结构 8
2.6 SSM框架 8
第三章 系统分析 10
3.1需求分析 10
3.2可行性分析 10
3.2.1技术可行性:技术背景 10
3.2.2经济可行性 10
3.2.3操作可行性: 11
3.3性能分析 11
3.4系统操作流程 11
3.4.1用户登录流程 11
3.4.2信息添加流程 12
3.4.3信息删除流程 13
第四章 系统设计与实现 15
4.1系统架构设计 15
4.2开发流程设计 15
4.3数据库设计 16
4.3.1实体ER图 16
4.3.2数据表 18
第五章 系统实现 22
5.1管理员功能模块 22
5.2用户功能模块 27
5.3派出所功能模块 35
第六章 系统的测试 43
6.1系统测试的目的 43
6.2系统测试分析 43
结 论 44
参考文献 45
致 谢 46