基于java+ssm+jsp的共享客栈管理系统

项目介绍

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对房屋出租信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用共享客栈管理系统可以有效管理,使信息管理能够更加科学和规范。

共享客栈管理系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,本系统实现房屋管理,合同文件上传与下载,房屋租房与续租,房屋出租管理等功能。

总之,共享客栈管理系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。

第4章 系统设计
一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专业。

4.1 设计原则
本系统在设计过程中需要依照一定的设计原则进行,目的就是为了让开发的系统具备高质量,齐全完备的功能,方便简单的操作,如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则外,还有安全性原则,准确性原则。

第一个设计原则:易操作原则,针对本系统设计的功能要完备齐全,编码时,设计的各个接口要具备友好性,使用者一旦使用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也需要设计一些必要提示,引导使用者操作系统。

第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,使用提前编写的安全验证代码进行数据比对,引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。

第三个设计原则:准确性原则,为了保证使用者登记的数据是正确的,需要提前设计数据纠错机制,让使用者可以通过系统的报错提示,仔细检查登记的错误信息,并及时纠正错误,填写规范正确的信息。比如设置密码时,要求密码的长度不能低于6个字符,且数据类型要求不能全部是数字等都能进行规范。

4.2 功能结构设计
在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员管理房屋,房屋出租,管理房东,管理合同,管理用户等信息。
在这里插入图片描述
在前面分析的房东功能的基础上,进行接下来的设计工作,最终展示设计的房东结构图(见下图)。房东管理房屋,管理房屋出租,管理合同等信息。
在这里插入图片描述
在前面分析的用户功能的基础上,进行接下来的设计工作,最终展示设计的用户结构图(见下图)。用户在线租房,评价房屋,下载合同,查看租房信息。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统截图

第5章 系统实现
进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于一些不合理的设计需求,也是可以及时发现。因为设计的方案是完全指导系统的编码过程的。
5.1 管理员功能实现
5.1.1 房东管理
管理员进入指定功能操作区之后可以管理房东。其页面见下图。管理员可以增删改查房东资料。
在这里插入图片描述
5.1.2 用户管理
管理员进入指定功能操作区之后可以管理用户。其页面见下图。管理员增删改查用户资料。
在这里插入图片描述
5.1.3 合同管理
管理员进入指定功能操作区之后可以管理合同。其页面见下图。管理员在本页面可以增删改查合同信息,可以实现合同文件下载功能。
在这里插入图片描述
5.1.4 房屋评论管理
管理员进入指定功能操作区之后可以管理房屋评论信息。其页面见下图。房屋评论信息是用户发布的信息,管理员查看评论内容,可以回复用户评论。
在这里插入图片描述
5.1.5 房屋管理
管理员进入指定功能操作区之后可以管理房屋信息。其页面见下图。管理员增删改查房屋信息,查看房屋状态,房屋所属房东以及房东的联系电话。
在这里插入图片描述

5.2 房东功能实现
5.2.1 房屋出租管理
房东进入指定功能操作区之后可以管理房屋出租信息。其页面见下图。房东对已经出租的房屋进行租房取消或者续租操作。
在这里插入图片描述
5.2.2 房屋管理
房东进入指定功能操作区之后可以管理房屋。其页面见下图。房东管理房屋信息,包括房屋信息登记,修改,查询等操作。
在这里插入图片描述
5.2.3 合同管理
房东进入指定功能操作区之后可以管理合同。其页面见下图。房东登记合同信息时,需要上传合同文件,房东在本页面内对已有的合同信息进行维护。
在这里插入图片描述
5.3 用户功能实现
5.3.1 客栈信息
用户进入指定功能操作区之后可以查看客栈信息。其页面见下图。用户查看房屋介绍,可以选择立即租房,也能评价本页面显示的房屋。
在这里插入图片描述
5.3.2 新闻资讯
用户进入指定功能操作区之后可以查看新闻资讯。其页面见下图。用户查看各种新闻的标题以及详细内容。
在这里插入图片描述
5.3.3 房屋信息
用户进入个人后台在房屋信息页面也能进行租房。其页面见下图。用户点击租房按钮设置租房日期即可成功租房。
在这里插入图片描述
5.3.4 租房信息
用户进入个人后台在租房信息页面可以取消租房。其页面见下图。用户查询租房信息,可以取消租房。
在这里插入图片描述

部分代码

package com.controller;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.annotation.IgnoreAuth;
import com.entity.ChuzhuxinxiEntity;
import com.service.ChuzhuxinxiService;
import com.service.YonghuxinxiService;
import com.utils.MPUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.entity.FangwuxinxiEntity;

import com.service.FangwuxinxiService;
import com.utils.PageUtils;
import com.utils.R;

/**
 *
 * 后端接口
 * @author
*/
@RestController
@Controller
@RequestMapping("gwuxinxi")
public class FangwuxinxiController {
    private static final Logger logger = LoggerFactory.getLogger(FangwuxinxiController.class);

    @Autowired
    private FangwuxinxiService fangwuxinxiService;


    @Autowired
    private ChuzhuxinxiService chuzhuxinxiService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",page方法");
        Object role = request.getSession().getAttribute("role");
        PageUtils page = null;
        if(role.equals("房东")){
            params.put("fd",request.getSession().getAttribute("userId"));
            page = fangwuxinxiService.queryPage(params);
        }else{
            page = fangwuxinxiService.queryPage(params);
        }
        return R.ok().put("data", page);
    }


    /**
     * 前端详情
     */
    @IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        FangwuxinxiEntity fangwu = fangwuxinxiService.selectById(id);
        return R.ok().put("data", fangwu);
    }


    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("Controller:"+this.getClass().getName()+",info方法");
        FangwuxinxiEntity fangwuxinxi = fangwuxinxiService.selectById(id);
        if(fangwuxinxi!=null){
            return R.ok().put("data", fangwuxinxi);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("ve")
    public R save(@RequestBody FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",save");
        Wrapper<FangwuxinxiEntity> queryWrapper = new EntityWrapper<FangwuxinxiEntity>()
            .eq("fwname", fangwuxinxi.getFwname())
            .eq("fwlx_types", fangwuxinxi.getFwlxTypes())
            .eq("fd_types", fangwuxinxi.getFdTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        FangwuxinxiEntity fangwuxinxiEntity = fangwuxinxiService.selectOne(queryWrapper);
        if("".equals(fangwuxinxi.getImgPhoto()) || "null".equals(fangwuxinxi.getImgPhoto())){
            fangwuxinxi.setImgPhoto(null);
        }
        if(fangwuxinxiEntity==null){
            fangwuxinxiService.insert(fangwuxinxi);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody FangwuxinxiEntity fangwuxinxi, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",update");
        //根据字段查询是否有相同数据
        Wrapper<FangwuxinxiEntity> queryWrapper = new EntityWrapper<FangwuxinxiEntity>()
            .notIn("id",fangwuxinxi.getId())
            .eq("fwname", fangwuxinxi.getFwname())
            .eq("fwlx_types", fangwuxinxi.getFwlxTypes())
            .eq("fd_types", fangwuxinxi.getFdTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        FangwuxinxiEntity fangwuxinxiEntity = fangwuxinxiService.selectOne(queryWrapper);
        if("".equals(fangwuxinxi.getImgPhoto()) || "null".equals(fangwuxinxi.getImgPhoto())){
                fangwuxinxi.setImgPhoto(null);
        }
        if(fangwuxinxiEntity==null){
            fangwuxinxiService.updateById(fangwuxinxi);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        logger.debug("Controller:"+this.getClass().getName()+",delete");
        fangwuxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /**
    * 租房
    */
    @RequestMapping("/renting")
    public R renting(Integer id, String finishTime, HttpServletRequest request){
        if(finishTime == null){
            return R.error("租房截至日期不能为空");
        }
        Object role = request.getSession().getAttribute("role");
        if(role.equals("房东")){
            return R.error("房东是不可以租房子的哦");
        } else if(role.equals("管理员")){
            return R.error("管理员是不可以租房子的哦");
        }

        Integer userId = (Integer) request.getSession().getAttribute("userId");
        FangwuxinxiEntity fangwuxinxi = fangwuxinxiService.selectById(id);
        if(fangwuxinxi != null){
            if(fangwuxinxi.getFwstateTypes() == 2 && fangwuxinxi.getFwstateTypes() != 1){
                try {
                    fangwuxinxi.setFwstateTypes(1);
                    ChuzhuxinxiEntity chuzhuxinxi = new ChuzhuxinxiEntity();
                    chuzhuxinxi.setFdTypes(fangwuxinxi.getFdTypes());
                    chuzhuxinxi.setFwTypes(fangwuxinxi.getId());
                    chuzhuxinxi.setYhTypes(userId);
                    chuzhuxinxi.setCreateTime(new Date());
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    chuzhuxinxi.setFinishTime(sdf.parse(finishTime));
                    chuzhuxinxiService.insert(chuzhuxinxi);
                    fangwuxinxiService.updateById(fangwuxinxi);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return R.ok();
            }else {
                return R.error("这个房子已出租");
            }
        }
        return R.error("出现错误了哦");
    }

}

论文参考

在这里插入图片描述

目 录
第1章 绪论 1
1.1 课题背景 1
1.2 课题意义 1
1.3 研究内容 2
第2章 开发环境与技术 3
2.1 MYSQL数据库 3
2.2 JSP技术 3
2.3 SSM框架 4
第3章 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 经济可行性 5
3.1.3 操作可行性 5
3.2 系统流程 6
3.2.1 操作流程 6
3.2.2 登录流程 6
3.2.3 删除信息流程 7
3.2.4 添加信息流程 8
3.3 性能需求 8
3.4 功能需求 9
第4章 系统设计 13
4.1 设计原则 13
4.2 功能结构设计 13
4.3 数据库设计 15
4.3.1 数据库概念设计 15
4.3.2 数据库物理设计 18
第5章 系统实现 21
5.1 管理员功能实现 21
5.1.1 房东管理 21
5.1.2 用户管理 21
5.1.3 合同管理 22
5.1.4 房屋评论管理 22
5.1.5 房屋管理 23
5.2 房东功能实现 23
5.2.1 房屋出租管理 23
5.2.2 房屋管理 24
5.2.3 合同管理 24
5.3 用户功能实现 25
5.3.1 客栈信息 25
5.3.2 新闻资讯 25
5.3.3 房屋信息 26
5.3.4 租房信息 26
第6章 系统测试 28
6.1 功能测试 28
6.1.1 登录功能测试 28
6.1.2 修改密码功能测试 29
6.2 测试结果 29
结 论 30
致 谢 31
参考文献 32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值