大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。
(Java毕业设计)智能小区管家服务系统演示视频
目录
一、项目简介
论文主要是对智能小区管家服务系统的进行了介绍,包括研究的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致,最后对智能小区管家服务系统的进行了一些具体测试。该系统主要以HTML、java为开发技术,实现了一个智能小区管家服务系统。该系统的主要使用者分为管理员和业主,业主端主要包括报修信息、投诉信息、停车位信息、业主动态信息、留言信息等功能模块,管理员端主要包括管理员信息、业主信息、用具信息、业主功能模块管理、公告信息和个人信息等功能模块。通过这些功能模块的设计,基本上实现了整个智能小区管家服务系统。具体在系统设计上,采用了B/S的结构,后台基于Spring Boot框架,前端通过JAVA技术进行实现,后台上采用Mysql数据库,是一个非常优秀的智能小区管家服务系统的开发与实现。
二、系统设计
2.1软件功能模块设计
系统整体功能如下:
2.2数据库设计
1.物业管理员实体图如图4-8所示:
2.业主实体图如图4-8所示:
三、系统项目部分截图
3.1登录功能模块
系统主界面如下图5-1所示,包括:首页、公告信息、报修信息、投诉信息、停车位信息、业主动态信息、留言信息、注册登录模块等功能按钮。
用户可以选择业主端进行登录,并且选择相应的功能。例如,可以在投诉界面进行相关问题的投诉。如图5-2所示。
健身项目,在健身项目页面可以查看项目名称,项目类型,健身效果,点击次数等内容,并进行收藏操作,如图5-3所示。
3.2管理员后台功能
选择管理员成功登录系统后,可以看到主要包括首页,信息管理部分和报修信息评论,信息管理部分包括了对管理员信息、业主信息、用具分类、公告信息的统计图,例如可以选择以饼图进行显示。信息管理又包括管理员信息、业主信息、用具信息、业主功能模块管理、公告信息和个人信息等功能模块。如下图5-4所示。
3.3个人信息管理功能
个人设置主要包括个人资料和密码修改。个人资料包括管理员的姓名、昵称、性别、电话和 Email等资料模块,个人资料修改就可以对这些资料进行修改。用户也可以选择在修改密码对账号密码进行修改。如图5-7所示。
四、论文目录
1 概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 1
1.3 本课题主要工作 2
2 系统开发环境 4
2.1系统开发平台 4
2.2 Mysql数据库 4
2.3 B/S结构 5
2.4 SSM框架 5
3 系统分析 7
3.1 可行性分析 7
3.1.1 技术可行性 7
3.1.2操作可行性 7
3.1.3 经济可行性 7
3.1.4 法律可行性 8
3.2系统流程分析 8
3.2.1系统开发流程 8
3.2.2 用户登录流程 9
3.2.3 系统操作流程 9
3.2.4 添加信息流程 10
3.2.5 修改信息流程 11
3.2.6 删除信息流程 11
4 系统设计 13
4.1 系统概述 13
4.2 系统结构设计 13
4.3数据库设计 15
4.3.1 数据库设计原则 15
4.3.2 数据库实体 16
4.3.3 数据库表设计 17
5统详细设计 21
5.1用户登录功能模块 21
5.2用户订单会员功能 23
5.3管理员功能模块 24
6系统测试 27
6.1系统测试的意义 27
6.2 测试方法 28
6.3测试分析 28
结 论 29
致 谢 30
参考文献 31
五、部分核心代码
4.1 用户部分
package com.example.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.UserInfo;
import com.example.service.UserInfoService;
import com.example.exception.CustomException;
import com.example.common.ResultCode;
import com.example.vo.UserInfoVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.example.service.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Value;
import cn.hutool.core.util.StrUtil;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@RequestMapping(value = "/userInfo")
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@PostMapping
public Result<UserInfo> add(@RequestBody UserInfoVo userInfo) {
userInfoService.add(userInfo);
return Result.success(userInfo);
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
userInfoService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody UserInfoVo userInfo) {
userInfoService.update(userInfo);
return Result.success();
}
@GetMapping("/{id}")
public Result<UserInfo> detail(@PathVariable Long id) {
UserInfo userInfo = userInfoService.findById(id);
return Result.success(userInfo);
}
@GetMapping
public Result<List<UserInfoVo>> all() {
return Result.success(userInfoService.findAll());
}
@GetMapping("/page/{name}")
public Result<PageInfo<UserInfoVo>> page(@PathVariable String name,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize,
HttpServletRequest request) {
return Result.success(userInfoService.findPage(name, pageNum, pageSize, request));
}
@PostMapping("/register")
public Result<UserInfo> register(@RequestBody UserInfo userInfo) {
if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
throw new CustomException(ResultCode.PARAM_ERROR);
}
return Result.success(userInfoService.add(userInfo));
}
/**
* 批量通过excel添加信息
* @param file excel文件
* @throws IOException
*/
@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
List<UserInfo> infoList = ExcelUtil.getReader(file.getInputStream()).readAll(UserInfo.class);
if (!CollectionUtil.isEmpty(infoList)) {
// 处理一下空数据
List<UserInfo> resultList = infoList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getName())).collect(Collectors.toList());
for (UserInfo info : resultList) {
userInfoService.add(info);
}
}
return Result.success();
}
@GetMapping("/getExcelModel")
public void getExcelModel(HttpServletResponse response) throws IOException {
// 1. 生成excel
Map<String, Object> row = new LinkedHashMap<>();
row.put("name", "张天志");
row.put("password", "123456");
row.put("nickName", "老张");
row.put("sex", "男");
row.put("age", 22);
row.put("birthday", "TIME");
row.put("phone", "18843232356");
row.put("address", "上海市");
row.put("email", "aa@163.com");
row.put("cardId", "342425199001116372");
row.put("level", 2);
List<Map<String, Object>> list = CollUtil.newArrayList(row);
// 2. 写excel
ExcelWriter writer = ExcelUtil.getWriter(true);
writer.write(list, true);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=userInfoModel.xlsx");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
writer.close();
IoUtil.close(System.out);
}
}
4.2菜单部分
package com.example.controller;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.entity.Account;
import com.example.service.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@RestController
public class MenuController {
@Resource
private AdminInfoService adminInfoService;
@Resource
private UserInfoService userInfoService;
@Resource
private TypeInfoService typeInfoService;
@Resource
private AdvertiserInfoService advertiserInfoService;
@GetMapping(value = "/getMenu", produces="application/json;charset=UTF-8")
public String getMenu(HttpServletRequest request) {
Account account = (Account) request.getSession().getAttribute("user");
Integer level;
if (account == null) {
level = 1;
} else {
level = account.getLevel();
}
JSONObject obj = new JSONObject();
obj.putOpt("code", 0);
obj.putOpt("msg", "");
JSONArray dataArray = new JSONArray();
dataArray.add(getJsonObject("/", "系统首页", "layui-icon-home", "/"));
JSONObject tableObj = new JSONObject();
tableObj.putOpt("title", "信息管理");
tableObj.putOpt("icon", "layui-icon-table");
if (1 == level) {
JSONArray array = new JSONArray();
array.add(getJsonObject("adminInfo", "管理员信息", "layui-icon-table", "adminInfo"));
array.add(getJsonObject("userInfo", "业主信息", "layui-icon-table", "userInfo"));
array.add(getJsonObject("typeInfo", "用具分类", "layui-icon-table", "typeInfo"));
array.add(getJsonObject("submitInfo", "报修信息", "layui-icon-table", "submitInfo"));
array.add(getJsonObject("tingcheweiInfo", "停车位信息", "layui-icon-table", "tingcheweiInfo"));
array.add(getJsonObject("dongtaiInfo", "业主动态信息", "layui-icon-table", "dongtaiInfo"));
array.add(getJsonObject("messageInfo", "留言信息", "layui-icon-table", "messageInfo"));
array.add(getJsonObject("advertiserInfo", "公告信息", "layui-icon-table", "advertiserInfo"));
array.add(getJsonObject("accountAdminInfo", "个人信息", "layui-icon-user", "accountAdminInfo"));
tableObj.putOpt("list", array);
}
if (2 == level) {
JSONArray array = new JSONArray();
array.add(getJsonObject("typeInfo", "用具分类", "layui-icon-table", "typeInfo"));
array.add(getJsonObject("submitInfo", "报修信息", "layui-icon-table", "submitInfo"));
array.add(getJsonObject("tingcheweiInfo", "停车位信息", "layui-icon-table", "tingcheweiInfo"));
array.add(getJsonObject("dongtaiInfo", "业主动态信息", "layui-icon-table", "dongtaiInfo"));
array.add(getJsonObject("messageInfo", "留言信息", "layui-icon-table", "messageInfo"));
array.add(getJsonObject("advertiserInfo", "公告信息", "layui-icon-table", "advertiserInfo"));
array.add(getJsonObject("accountUserInfo", "个人信息", "layui-icon-user", "accountUserInfo"));
tableObj.putOpt("list", array);
}
dataArray.add(tableObj);
dataArray.add(getJsonObject("submitInfoComment", "报修评论", "layui-icon-group", "submitInfoComment"));
dataArray.add(getJsonObject("tingcheweiInfoComment", "停车位评论", "layui-icon-group", "tingcheweiInfoComment"));
dataArray.add(getJsonObject("dongtaiInfoComment", "业主动态评论", "layui-icon-group", "dongtaiInfoComment"));
dataArray.add(getJsonObject("updatePassword", "修改密码", "layui-icon-password", "updatePassword"));
dataArray.add(getJsonObject("login", "退出登录", "layui-icon-logout", "login"));
obj.putOpt("data", dataArray);
return obj.toString();
}
private JSONObject getJsonObject(String name, String title, String icon, String jump) {
JSONObject object = new JSONObject();
object.putOpt("name", name);
object.putOpt("title", title);
object.putOpt("icon", icon);
object.putOpt("jump", jump);
return object;
}
@GetMapping(value = "/getTotal", produces="application/json;charset=UTF-8")
public Result<Map<String, Integer>> getTotle() {
Map<String, Integer> resultMap = new HashMap<>();
resultMap.put("adminInfo", adminInfoService.findAll().size());
resultMap.put("userInfo", userInfoService.findAll().size());
resultMap.put("typeInfo", typeInfoService.findAll().size());
resultMap.put("advertiserInfo", advertiserInfoService.findAll().size());
return Result.success(resultMap);
}
}