博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程-CSDN博客
文末下方有源码获取地址
一般个人用户和管理员都需要登录才能进入停车场管理系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者和管理者,一般使用者只能对停车场信息提供查阅和个别使用信息内容的查看,而管理者则能对多个信息内容提供使用。
整体系统的主要功能模块如图4-1:
图4-1 停车场管理系统功能图
4.2 系统登录模块设计
用户在启动操作系统时会调用的一个模块。该模型通过用户输入的账号、密码来确定应用的类别,切换到该类应用的页面。
本模块的功能点包括:
1)确定账号与密码是否一致。
2)完全按照系统所规定使用权限的权限类型,直接通过登陆进入到系统权限的制定管理页面中即可进行授权使用。
登录模块流程图如图4-2:
管理静止网站时是由WEB客户端向Web传送静态页面,而Web客户端直接对所传送的静态页面进行管理。
实现动态网页数据库信息查询请求的最基本处理流程概括为:当一个WEB用户成功向动态网页服务器数据库发送信息请求成功后,对其动态页面库的一种主要的处理实现方法之一是,屏蔽掉其中所有动态HTML代码,只须使用一个动态的动态网页文件,由动态Web浏览器程序直接地在该数据库服务器上进行传递动态信息,然后再通过该数据库服务器的处理程序返回到信息集,由该Web应用服务器处理程序再一次将包含动态程序代码在内的动态页面,转化为一个静态页面信息并自动返回到网页浏览器。也就是网站在这个动态页里对网页信息自动进行检索并最终把这些信息自动返回传递到网站用户处的这个全自动化过程。
数据库查询示意图如图4-3:
图4-3 数据库查询示意图
数据库设计阶段目标表见表4-4:
表4-4 数据库设计阶段目标表
目标 | |
概念设计 | 了解功能需求,通过分析系统功能定义出系统有哪些实体联系图(即E-R图) |
逻辑设计 | 把E-R图转换成能处理的逻辑模型,检查是否满足第三范式的要求 |
物理设计 | 基于基本数据模型,生成适用于应用系统的物理结构 |
4.3.1 E-R图设计
根据以上分析,本系统中包含多个实体,根据他们以及他们的关系绘制出E-R图如下:
- 用户信息实体如下图4-5:
图4-5用户信息实体示例图
- 停车场信息实体如下图4-6:
图4-6停车场信息实体示例图
- 车位预约实体如下图4-7:
图4-7车位预约实体示例图
数据库关系表如下:
表4-1:停车公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
gonggaoneirong | longtext | 4294967295 | 公告内容 | ||
fengmian | longtext | 4294967295 | 封面 | ||
faburen | varchar | 200 | 发布人 | ||
fabushijian | datetime | 发布时间 |
表4-2:停车场
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
chechangbianhao | varchar | 200 | 车场编号 | ||
chechangmingcheng | varchar | 200 | 车场名称 | ||
chechangleixing | varchar | 200 | 车场类型 | ||
tupian | longtext | 4294967295 | 图片 | ||
cheweixiangqing | longtext | 4294967295 | 车位详情 | ||
cheweishuliang | int | 车位数量 | |||
cheweizhuangtai | varchar | 200 | 车位状态 | ||
xiaoshijiage | int | 小时价格 | |||
baoyuejiage | int | 包月价格 | |||
weizhi | varchar | 200 | 位置 | ||
zixundianhua | varchar | 200 | 咨询电话 | ||
beizhu | longtext | 4294967295 | 备注 |
表4-3:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-4:车位预约
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuyuebianhao | varchar | 200 | 预约编号 | ||
chechangbianhao | varchar | 200 | 车场编号 | ||
chechangmingcheng | varchar | 200 | 车场名称 | ||
tupian | longtext | 4294967295 | 图片 | ||
weizhi | varchar | 200 | 位置 | ||
xiaoshijiage | int | 小时价格 | |||
yuyueshijian | datetime | 预约时间 | |||
yuyueshizhang | float | 预约时长 | |||
zongfeiyong | float | 总费用 | |||
zhanghao | varchar | 200 | 账号 | ||
nicheng | varchar | 200 | 昵称 | ||
chepaihao | varchar | 200 | 车牌号 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-5:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
nicheng | varchar | 200 | 昵称 | ||
xingbie | varchar | 200 | 性别 | ||
touxiang | longtext | 4294967295 | 头像 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
chepaihao | varchar | 200 | 车牌号 |
表4-6:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-7:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
本模块主要是使用者可以通过停车场管理系统的首页进入该系统。用户输入正确的账号名和密码,一旦输入信息有错,将在系统显示错误提示,同时严禁系统用户做出其他动作。如果注册信息正确无误,系统就会按照使用者的身份信息做出有关权利的判定,用户进入系统,管理者则进入系统。管理员登录主页面如图5-1所示:
图5-1管理员登录主页面
管理员进入系统主页面,主要功能包括对系统首页、个人中心、用户管理、停车场管理、停车公告管理、车位预约管理、管理员管理等进行操作。管理员主页面如图5-2所示:
图5-2管理员主界面
管理员点击用户管理,在用户管理页面对账号、昵称、性别、头像、联系电话、车牌号等信息,可以查询,新增或删除用户信息等操作。如图5-3所示:
图5-3用户管理界面
管理员点击停车场管理,在停车场管理页面对车场编号、车场名称、车场类型、图片、车位数量、车位状态、小时价格、包月价格、位置、咨询电话等信息,可以查询,新增或删除停车场信息等操作。如图5-4所示:
图5-4停车场管理界面
管理员点击停车公告管理,在停车公告管理页面对标题、封面、发布人、发布时间等信息,可以查询或者新增、删除停车公告等操作。如图5-5所示:
图5-5停车公告管理界面
管理员点击车位预约管理,在车位预约管理页面对预约编号、车场编号、车场名称、图片、位置、小时价格、预约时间、预约时长、总费用、账号、昵称、车牌号、是否支付等信息,可以查询或删除车位预约等操作。如图5-6所示:
图5-6车位预约管理界面
管理员点击管理员管理,在管理员管理页面对用户名、密码、角色等信息,可以查询或删除管理员信息等操作。如图5-7所示:
图5-7管理员管理界面
5.2 用户功能模块实现
用户注册界面,第一次使用本系统的使用者,首先是要进行注册,点击“注册”,然后就会进入到注册的页面里面,将用户信息录入注册表,确认信息正确后,系统才会进入登录界面,用户登录成功后可使用本系统所提供的所有功能,如图5-8所示。
图5-8用户注册界面
用户登录界面,首先双击打开系统,连上网络之后会显示出本系统的登录界面,这是进入系统的第初始页面“登录”,能成功进入到该登录界面则代表系统的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能,如图5-9所示。
图5-9用户登录界面
用户登录到系统后,用户可以对系统首页、个人中心、停车场管理、停车公告管理、车位预约管理进行相应操作,如图5-10所示:
图5-10用户功能界面
用户点击停车场管理,在停车场管理页面对车场编号、车场名称、车场类型、图片、车位数量、车位状态、小时价格、包月价格、位置、咨询电话等信息,可以查询或删除停车场信息等操作。如图5-11所示:
图5-11停车场管理界面
主要代码
package com.controller;
import java.math.BigDecimal;
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.transaction.annotation.Transactional;
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.TingchechangEntity;
import com.entity.view.TingchechangView;
import com.service.TingchechangService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 停车场
* 后端接口
* @author
* @email
* @date 2023-02-17 17:06:48
*/
@RestController
@RequestMapping("/tingchechang")
public class TingchechangController {
@Autowired
private TingchechangService tingchechangService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,TingchechangEntity tingchechang,
HttpServletRequest request){
EntityWrapper<TingchechangEntity> ew = new EntityWrapper<TingchechangEntity>();
PageUtils page = tingchechangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tingchechang), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,TingchechangEntity tingchechang,
HttpServletRequest request){
EntityWrapper<TingchechangEntity> ew = new EntityWrapper<TingchechangEntity>();
PageUtils page = tingchechangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tingchechang), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( TingchechangEntity tingchechang){
EntityWrapper<TingchechangEntity> ew = new EntityWrapper<TingchechangEntity>();
ew.allEq(MPUtil.allEQMapPre( tingchechang, "tingchechang"));
return R.ok().put("data", tingchechangService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(TingchechangEntity tingchechang){
EntityWrapper< TingchechangEntity> ew = new EntityWrapper< TingchechangEntity>();
ew.allEq(MPUtil.allEQMapPre( tingchechang, "tingchechang"));
TingchechangView tingchechangView = tingchechangService.selectView(ew);
return R.ok("查询停车场成功").put("data", tingchechangView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
TingchechangEntity tingchechang = tingchechangService.selectById(id);
return R.ok().put("data", tingchechang);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
TingchechangEntity tingchechang = tingchechangService.selectById(id);
return R.ok().put("data", tingchechang);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody TingchechangEntity tingchechang, HttpServletRequest request){
tingchechang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(tingchechang);
tingchechangService.insert(tingchechang);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody TingchechangEntity tingchechang, HttpServletRequest request){
tingchechang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(tingchechang);
tingchechangService.insert(tingchechang);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody TingchechangEntity tingchechang, HttpServletRequest request){
//ValidatorUtils.validateEntity(tingchechang);
tingchechangService.updateById(tingchechang);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
tingchechangService.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<TingchechangEntity> wrapper = new EntityWrapper<TingchechangEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = tingchechangService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
代码论文下载地址
【计算机程序设计项目源码】springboot017停车场管理系统.zip资源-CSDN文库
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者