基于Hadoop的物品租赁管理系统

🍅 作者主页:Selina .a

🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。

主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。

🍅文末获取源码联系🍅  

目录

课题的提出

数据库设计

系统功能设计

关键代码

 专栏推荐

推荐项目

源码获取


课题的提出

随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,物品租赁管理展现了其蓬勃生命力和广阔的前景。与此同时,为解决物品租赁管理需求,物品租赁管理发展愈发多元化与网络化,与电子信息技术相结合。物品租赁系统应运而生。

该系统基于Hadoop平台,利用Java语言、MySQL数据库,结合目前流行的 B/S架构,将物品租赁管理的各个方面都集中到数据库中,以便于用户的需要。在确保系统稳定的前提下,能够实现多功能模块的设计和应用。该系统由管理员功能模块和用户模块组成。不同角色的准入制度是有严格区别的。各功能模块的设计也便于以后的系统升级和维护。该系统采用了软件组件化、精化体系结构、分离逻辑和数据等方法。


数据库设计

物品租赁系统的数据以一个个数据表的方式存储在数据库中,这一个个数据表示系统调取数据的基础,在进行系统数据库搭建时,会根据这些设计好的数据表进行优化搭建。系统选用MySQL数据库,对各表进行了详细的说明如下:

表名4-1物品归还

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

wupinbianhao

varchar

200

物品编号

wupinmingcheng

varchar

200

物品名称

pinpai

varchar

200

品牌

wupinleibie

varchar

200

物品类别

wupintupian

longtext

4294967295

物品图片

wupinzhuangtai

longtext

4294967295

物品状态

wupinshuliang

int

归还数量

zujin

int

租金

zulinshijian

varchar

200

租赁时间

yajin

int

押金

zongjiage

int

总价格

guihaishijian

date

归还时间

wodezhanghao

varchar

200

我的账号

wodexingming

varchar

200

我的姓名

wodedianhua

varchar

200

我的电话

yonghuzhanghao

varchar

200

出租账号

yonghuxingming

varchar

200

出租姓名

yonghudianhua

varchar

200

出租电话

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

ispay

varchar

200

是否支付

未支付

表名4-2用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuzhanghao

varchar

200

用户账号

mima

varchar

200

密码

yonghuxingming

varchar

200

用户姓名

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

yonghudianhua

varchar

200

用户电话

shenfenzhenghao

varchar

200

身份证号

表名4-3物品信息评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容


系统功能设计

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到物品租赁系统的导航条,通过导航条进入各功能信息展示页面进行操作。系统首页界面如图5-1所示:

 用户注册:在用户注册页面输入用户注册信息进行注册操作,用户注册页面如图5-2所示:

 物品信息:在物品信息页面的输入栏中输入物品名称和选择物品类别进行查询,可以查看到物品详细信息,并进行租赁、评论或收藏操作;物品信息页面如图5-3所示:

 物品出租:在物品出租页面的输入栏中输入标题、类别和联系人进行查询,可以查看到物品出租详情,并进行收藏操作;物品出租页面如图5-4所示:

 后台管理:用户注册登录系统后,在首页页面点击后台管理可以对个人中心、物品租赁管理、物品归还管理、评价信息管理、我的收藏管理等进行详细操作;用户后台管理页面如图5-5所示:

 管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图5-6所示。 

 管理员进入主页面,主要功能包括对个人中心、用户管理、公告类型管理、公告信息管理、物品类别管理、物品信息管理、物品租赁管理、物品归还管理、评价信息管理、物品出租管理、系统管理等进行操作。管理员主页面如图5-7所示: 管理员点击用户管理。进入用户页面输入用户账号可以查询,新增或删除用户列表,并根据需要对用户详细信息进行查看详情,修改或删除操作。如图5-8所示:

 管理员点击公告信息管理。进入公告信息页面输入标题、简介和发布人可以查询,新增或删除公告信息列表,并根据需要对公告详细信息进行查看详情,修改或删除操作。如图5-9所示:

 管理员点击物品信息管理。进入物品信息页面输入物品名称和选择物品类别可以查询或删除物品信息列表,并根据需要对物品详细信息进行查看详情、修改、查看评论或删除操作。如图5-10所示:

 管理员点击物品租赁管理。进入物品租赁页面输入物品名称和物品类别可以查询或删除物品租赁列表,并根据需要对物品租赁详细信息进行查看详情、修改或删除操作。如图5-11所示:

 管理员点击评价信息管理。进入评价信息页面输入物品名称和物品类别可以查询或删除评价信息列表,并根据需要对评价详细信息进行查看详情、修改或删除操作。如图5-12所示:

 管理员点击物品出租管理。进入物品出租页面输入标题、类别和联系人可以查询、爬取数据、新增或删除物品出租列表,并根据需要对物品出租详细信息进行修改或删除操作。如图5-13所示:

 管理员进行爬取数据后,点击主页面右上角的看板,可以查看到系统简介、用户总数、物品信息总数、物品租赁总数、物品出租总数、类别统计、联系人统计、商家地址统计、发贴统计、租赁数量统计、出租量统计、物品出租等实时的分析图进行可视化管理;如图5-14所示:

 管理员点击系统管理,进入系统管理页面可以对轮播图管理、关于我们和系统简介进行详情或修改操作,在闲置资讯页面输入标题可以查询,新增或删除闲置资讯列表,并根据需要对闲置资讯详细信息进行查看详情,修改或删除操作。如图5-15所示:

 


关键代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

 专栏推荐

Spring Boot+Vue+CSS+JavaScript+HTML等技术项目专栏推荐

项目汇总专栏推荐


推荐项目

基于Node.js+Vue+MySQL的小型企业工资管理系统

基于SSM+Android+MySQL的校园考研论坛 

基于Spring Boot+Android+MySQL的记录生活管理系统 

基于微信小程序的农业电商服务管理系统 

基于微信小程序的智慧物流小程序的设计与实现 


源码获取

 大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值