(Java毕业设计)智能小区管家服务系统(基于java+springboot)附源码

大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。

(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);
    }
}


获取源码论文可分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值