毕业设计-停车场管理系统
前言
本期項(xiàng)目是停車場(chǎng)管理系統(tǒng),主要包括數(shù)據(jù)監(jiān)控大盤、車輛管理、黑名單管理、停車管理、車位管理、預(yù)約管理、日志管理、用戶管理、角色管理。盡可能的把停車場(chǎng)功能做全,然后以企業(yè)級(jí)的開發(fā)標(biāo)準(zhǔn)來(lái)完成整個(gè)前后端代碼,無(wú)論是用來(lái)作為畢業(yè)設(shè)計(jì)還是拿來(lái)學(xué)習(xí),相信對(duì)初學(xué)者都會(huì)有很大幫助。
(想要源碼和視頻教程的同學(xué)私信我~~~)
工程架構(gòu)
應(yīng)用分層
上面的分層架構(gòu)摘自阿里巴巴java開發(fā)手冊(cè),我對(duì)此做了一些調(diào)整,實(shí)際分層結(jié)構(gòu)如下:
領(lǐng)域模型
-
DO(DataObject):與數(shù)據(jù)庫(kù)表結(jié)構(gòu)一一對(duì)應(yīng),通過DAO層向上傳輸數(shù)據(jù)源對(duì)象
-
BO(BusinessObject):業(yè)務(wù)對(duì)象。由Service層輸出的封裝業(yè)務(wù)邏輯的對(duì)象
-
VO(View Object):顯示層對(duì)象,通常是Web向模板渲染引擎層傳輸?shù)膶?duì)象
BO和VO領(lǐng)域模型又分為BoRequest(輸入模型)、BoResponse(輸出模型)、VoRequest(輸入模型)、VoResponse(輸出模型)
技術(shù)棧
前端:vue + element
后端:jdk1.8 + springboot + redis + mysql
系統(tǒng)設(shè)計(jì)
接口設(shè)計(jì)
整個(gè)項(xiàng)目接口采用的目前互聯(lián)網(wǎng)比較流行的restful風(fēng)格設(shè)計(jì),每個(gè)接口、每個(gè)參數(shù)都有詳細(xì)的文檔說明。因?yàn)槠髽I(yè)中開發(fā)必然是團(tuán)隊(duì)協(xié)作,必然前后端分離的開發(fā)模式,你得先把接口定義出來(lái),然后前端可以和后端同步開發(fā)。還有一種就是對(duì)外提供接口,比如你們隔壁團(tuán)隊(duì)也想調(diào)用你這個(gè)服務(wù)的接口,但是你兩排期是同一周,這時(shí)候你得先把接口定義出來(lái)給人家,然后大家同步開發(fā),開發(fā)完了之后再進(jìn)行聯(lián)調(diào)。
運(yùn)行效果
系統(tǒng)登錄
dashboard
首頁(yè)數(shù)據(jù)大盤,按最近7天餅圖占比、最近30天折線圖走勢(shì)、最近一年柱狀圖分析、最近7天各個(gè)時(shí)間段占比分析全方位可視化分析數(shù)據(jù)。
車輛管理
黑名單管理
對(duì)于一些漏繳費(fèi)、不按規(guī)定停車、多次預(yù)約停車位卻毀約的車輛,我們可以添加黑名單,加黑后的車輛將不被允許進(jìn)入停車場(chǎng)。
停車管理
車輛入庫(kù)后會(huì)生成一條停車記錄,此時(shí)狀態(tài)是'已入庫(kù)'和'未支付',等車輛出口后,系統(tǒng)會(huì)根據(jù)車位的每小時(shí)停車費(fèi)*實(shí)際停車實(shí)際(按小時(shí)計(jì)算,超出一小時(shí)按一小時(shí)收費(fèi))。這里大家需要注意,真實(shí)的停車場(chǎng)收費(fèi)都是攝像頭拍照的,比如車子出庫(kù)的時(shí)候,攝像頭會(huì)拍攝車牌,然后生成收費(fèi)信息,當(dāng)你繳費(fèi)后就可以出庫(kù)了。這里我們是管理后臺(tái),系統(tǒng)并沒有接入攝像頭設(shè)備,所以出庫(kù)需要人工點(diǎn)擊出庫(kù)按鈕。(也可以接入支付寶扣費(fèi)接口和攝像頭接口,這樣我們的系統(tǒng)就跟真實(shí)的停車管理系統(tǒng)一樣了~)
Excel導(dǎo)出
所有模塊都支持?jǐn)?shù)據(jù)導(dǎo)出Excel,方便進(jìn)行數(shù)據(jù)分析
停車記錄導(dǎo)出
車位數(shù)據(jù)導(dǎo)出
車位管理
預(yù)約管理
車主可以提前預(yù)約,預(yù)約后將優(yōu)先安排車輛入庫(kù)停車
日志管理
日志管理默認(rèn)是開給管理員的,在系統(tǒng)中的所有操作都會(huì)被記錄,在系統(tǒng)出現(xiàn)異常時(shí)也便于管理員進(jìn)行問題排查。
用戶管理
默認(rèn)也是只有管理員擁有用戶管理菜單的權(quán)限,可以新建/編輯用戶、分配用戶角色、禁用/啟用等操作
編輯用戶信息
角色管理
極其靈活的權(quán)限管理,系統(tǒng)中的所有按鈕都可以單獨(dú)分配權(quán)限,你可以給A角色只分配了查詢和導(dǎo)出權(quán)限,也可以給B角色分配查詢、編輯、新建權(quán)限,還可以給C角色只分配查詢權(quán)限??梢詽M足幾乎所有的業(yè)務(wù)需求,大家可以自由發(fā)揮定義權(quán)限組合。
頁(yè)面不存在時(shí)提示頁(yè)面
普通讀者登錄
系統(tǒng)默認(rèn)會(huì)創(chuàng)建兩個(gè)角色,一個(gè)是超管角色,另一個(gè)則是普通用戶角色(當(dāng)然角色大家可以按前面說的自定義)。普通用戶登錄,比如停車管理菜單,普通用戶就只有查詢的權(quán)限,其他的新增、編輯、刪除、導(dǎo)出和出庫(kù)權(quán)限都沒有。截圖如下:
個(gè)人信息修改
密碼修改
管理員創(chuàng)建完用戶之后的默認(rèn)密碼是“123456”,用戶可以登錄系統(tǒng)自己修改密碼
權(quán)限設(shè)計(jì)
權(quán)限基于security和spring-session實(shí)現(xiàn)。權(quán)限可以分為認(rèn)證和授權(quán),認(rèn)證其實(shí)就是登錄,用戶登錄時(shí)會(huì)進(jìn)行賬號(hào)密碼的校驗(yàn),校驗(yàn)成功后會(huì),會(huì)把session存入redis中。授權(quán)指的是用戶是否擁有訪問后端資源的權(quán)限,每個(gè)新用戶在創(chuàng)建后都會(huì)分配角色,角色其實(shí)就是一個(gè)權(quán)限集合,這里的權(quán)限可以理解為訪問后端一個(gè)個(gè)接口(資源)的權(quán)限。
這里權(quán)限設(shè)計(jì)的非常靈活,細(xì)粒度到按鈕級(jí)別,比如新增、刪除、修改、查詢、借閱動(dòng)作,普通用戶可能就只有查詢權(quán)限,管理員則擁有新增、刪除、修改的權(quán)限。普通用戶即使通過接口直接訪問后端的修改或者刪除接口,后端也會(huì)返回授權(quán)失敗錯(cuò)誤,因?yàn)楹蠖嗣總€(gè)需要權(quán)限的接口都打了權(quán)限標(biāo)識(shí),只有擁有資源權(quán)限用戶才能訪問。
比如下面的車輛修改接口,只有擁有“CAR_UPDATE”這個(gè)權(quán)限標(biāo)識(shí)的用戶才能訪問這個(gè)接口,否則返回“未授權(quán)”的錯(cuò)誤。
@PutMapping("/{id}") @PreAuthorize("hasAuthority(T(com.senior.book.console.api.security.Authority).BOOK_UPDATE.name())")public Result<Boolean> update(@PathVariable("id") Long id, @Valid @RequestBody BookUpdateVoRequest request) {}日志方案
日志采用lombok注解+slf4j+log4j2的實(shí)現(xiàn)方案,基于profile實(shí)現(xiàn)了多環(huán)境的日志配置,因?yàn)椴煌h(huán)境的日志打印策略是不一樣,比如開發(fā)環(huán)境我可能需要打印到console控制臺(tái),需要debug級(jí)別的日志以便于本地開發(fā)調(diào)試,測(cè)試環(huán)境可能就需要打印到日志文件里,線上環(huán)境可能需要打印到文件的同時(shí)將日志發(fā)送到kafka然后收集到es中,這樣當(dāng)線上部署了多臺(tái)機(jī)器后我們查日志不用一臺(tái)一臺(tái)機(jī)器去查日志了,因?yàn)槎际占絜s了,我們只需要登錄kibana去搜索,這樣就非常方便。這里說到的kafka+es+kibana這樣一套日志解決方案也是目前互聯(lián)網(wǎng)公司比較常用的一套解決方案。如果你動(dòng)手能力夠強(qiáng),你可以本地搭一套kafka、es、kibana,然后只需要在配置文件中加入幾行配置就實(shí)現(xiàn)了這么一套企業(yè)級(jí)的日志解決方案(默認(rèn)是輸出到日志文件)。
下面是部分關(guān)鍵配置,如果要配置kafka,只需要在<Appenders>標(biāo)簽中配置<Kafka>配置即可
? ?<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" ?xmlns:xi="http://www.w3.org/2001/XInclude"><Properties><Property name="LOG_FILE">system.log</Property><Property name="LOG_PATH">./logs</Property><Property name="PID">????</Property><Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property><Property name="LOG_LEVEL_PATTERN">%5p</Property><Property name="LOG_DATE_FORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property><Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATE_FORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property><Property name="FILE_LOG_PATTERN">%d{${LOG_DATE_FORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.}:%L : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property></Properties><Appenders><xi:include href="log4j2/file-appender.xml"/></Appenders><Loggers><logger name="com.senior.park" level="info"/><Root level="info"><AppenderRef ref="FileAppender"/></Root></Loggers> </Configuration>總結(jié)
以上是生活随笔為你收集整理的毕业设计-停车场管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Title标题栏的修改(
- 下一篇: 立体成像系统行业分析-产能、产量、销量、