基于SSM架构的超市管理系统设计
基于SSM架構(gòu)的超市管理系統(tǒng)設(shè)計
目錄
- 基于SSM架構(gòu)的超市管理系統(tǒng)設(shè)計
- 1 環(huán)境及工具
- 1.1 IDEA軟件安裝
- 1.2 JDK環(huán)境配置
- 1.3 MySQL數(shù)據(jù)庫安裝
- 1.3.1常規(guī)情況
- 1.3.2非常規(guī)情況
- 1.4 Tomcat安裝
- 2 部署與設(shè)計
- 2.1 數(shù)據(jù)庫信息創(chuàng)建
- 2.2項目創(chuàng)建與部署
- 3 相關(guān)說明
- 4 功能操作說明
- 4.1 管理員操作
- 4.2員工操作
- 4.3 消費者操作
- 4.4 測試情況
- 4.5 部分程序代碼
- 5 視頻教程
- 6 源文件
注:因服務(wù)器目前維護停止對項目訪問,所以通過域名暫時無法訪問,設(shè)計開發(fā)的有相應(yīng)的APP安卓程序,Mac電腦版應(yīng)用程序,項目部署經(jīng)歷了6次小的更新與修改,拓展性手機驗證碼找回密碼等安全性驗證功能屬于下一步設(shè)計方向。
設(shè)計目標(biāo)方向:
要實現(xiàn)用戶、員工和管理員分類登錄模塊,商品按供貨商分類模塊,員工銷售商品統(tǒng)計模塊,員工考勤模塊、管理員對員工信息管理模塊。
以下是本篇文章正文內(nèi)容,下面案例僅供參考
1 環(huán)境及工具
軟件:IDEA2020.3.3、JDK1.8.0、Tomcat8.0.49、MySQL8.0.17
平臺:系統(tǒng)已部署服務(wù)器兼容IE7及Chromium等內(nèi)核的瀏覽器
訪問鏈接:~~https://www.manmanmeixi.top(維護中暫不支持訪問)
參考文檔:JDK_API_1_8、HTML5
1.1 IDEA軟件安裝
(1)IDEA軟件是收費性軟件,學(xué)生可憑借教育郵箱使用,企業(yè)單位人員可根據(jù)公司正版授權(quán)使用。軟件的下載鏈接如下:IntelliJ IDEA: IDEA軟件下載
(2)雙擊軟件進行安裝,點擊Next進行下一步,建議安裝到非系統(tǒng)安裝盤,以防人為誤操作導(dǎo)致系統(tǒng)運行出現(xiàn)故障,如圖1-1所示。
(3)為了方便后期使用和文件的關(guān)聯(lián),建議創(chuàng)建應(yīng)用圖標(biāo)和勾選文件關(guān)聯(lián),如圖1-2所示。
(4)點擊下一步進行安裝,直到顯示安裝成功,然后點擊Finish按鈕,打開軟件接受協(xié)議,如下圖所示。
(5)接下來,雙擊軟件輸入許可賬號密碼,建議使用正版授權(quán)。瀏覽器輸入賬號密碼,然后進行提交,直至出現(xiàn)該界面。然后點擊激活按鈕“Activate”進行激活操作。
(6)激活完成后跳轉(zhuǎn)到如下界面,點擊“Close”按鈕進行關(guān)閉,然后設(shè)置背景顏色。
(7)將背景顏色調(diào)為亮色,如圖1-5所示。
1.2 JDK環(huán)境配置
(1)雙擊軟件,進行安裝,點擊下一步,如圖1-6所示。
(2)然后選擇安裝位置,建議更改到非系統(tǒng)盤,然后點擊下一步,如圖1-7所示。
(3)確定后,點擊下一步進行安裝,如下圖1-8所示。
(4)然后點擊更改選擇新建文件夾,如圖1-9所示。
(5)確定后,點擊下一步進行安裝,直至安裝完成,如圖1-10所示。
(6)安裝完成后為了后期操作方便,需要配置環(huán)境變量,環(huán)境變量配置如下圖1-11所示:
(7)選擇再系統(tǒng)變量里面新建,需要創(chuàng)建項如下圖所示:
(8)接下來創(chuàng)建Classpath路徑,如下圖所示:
(9)然后在Path路徑里面指明jre的位置,如下圖所示:
(10)添加完成后依次點擊確定按鈕,直至關(guān)閉系統(tǒng)環(huán)境變量。然后打開cmd命令終端,當(dāng)輸入java -version和javac -version顯示如下界面,表示安裝成功。
1.3 MySQL數(shù)據(jù)庫安裝
1.3.1常規(guī)情況
(1)5.7及其之前版本,正常情況下下載mySQL壓縮包,進行解壓。
(2)啟動服務(wù),登錄初始密碼為空,可回車成功登錄。
操作步驟:
①解壓軟件解壓。
②配置環(huán)境變量。
(3)設(shè)置完環(huán)境變量之后,要求在管理員權(quán)限下執(zhí)行mysqld --install 命令,將MySQL配到服務(wù)啟動項中,然后管理員權(quán)限下net start mysql 啟動數(shù)據(jù)庫服務(wù)。如下圖所示。
(4)數(shù)據(jù)庫正常啟動后,mysql -u root -p 輸入密碼,默認密碼為空(回車),即可成功登錄。
1.3.2非常規(guī)情況
問題一:8.0及其以后版本,解壓后環(huán)境變量配置,服務(wù)啟動加載后,數(shù)據(jù)庫無法啟動。
解決方案:管理員身份運行,輸入命令 mysqld -initialize(回車),mysqld --initialized–insecure(回車);可成功解決數(shù)據(jù)庫服務(wù)無法啟動問題。
問題二:數(shù)據(jù)庫初始密碼不知道,導(dǎo)致登陸失敗。
解決方案:
(1)控制臺授權(quán)跳過密碼檢測來重新設(shè)置密碼。(可以先將密碼置空,然后再設(shè)置密碼)
(2)停止MYSQL服務(wù):net stop mysql
(3)管理員身份運行,輸入:mysqld -console --skip-grant-tables --shared-memory
(4)然后繼續(xù)輸入命令:mysqld --console --skip-grant-tables --shared-memory(不要關(guān)閉窗口),再次打開一個終端,然后輸入mysql -u root -p(回車,回車)即可登錄。
(5)將密碼置為空,操作命令為:update user set authentication_string=‘’ where user=‘root’;
(6)關(guān)閉所有終端,管理員權(quán)限輸入 net start mysql 服務(wù)即可啟動,此時登錄時密碼為空。
問題三:加密規(guī)則更改,報caching_password錯誤。
解決方案:更改加密規(guī)則,命令如下:
(1)修改賬戶密碼加密規(guī)則并更新用戶密碼
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘XXXX’ PASSWORD EXPIRE NEVER; #修改加密規(guī)則
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘XXXXX’; #更新一下用戶的密碼,注:XXXX表示你要設(shè)置的密碼。
(2) FLUSH PRIVILEGES; #刷新權(quán)限,即可解決上述問題。
1.4 Tomcat安裝
(1)Tomcat默認是綠色版的,可以下載后解壓,然后設(shè)置環(huán)境變量進行使用。推薦使用8.0的版本,因版本更新后底層的方法有變化,可能會出現(xiàn)其他問題。下載鏈接如下:Tomcat下載
(2)下載完成后進行解壓操作,如下圖所示。解壓完成后配置環(huán)境變量,環(huán)境變量的配置如下:
(3)接下來設(shè)置Classpath變量。
(4)然后設(shè)置Path變量,指明bin目錄和lib目錄。
(5)依次點擊確定按鈕,關(guān)閉系統(tǒng)環(huán)境變量選項框。cmd命令終端輸入startup.bat和shutdown.bat,出現(xiàn)以下界面表示配置成功。
2 部署與設(shè)計
2.1 數(shù)據(jù)庫信息創(chuàng)建
(1)數(shù)據(jù)庫啟動成功后,命令終端輸入mysql -u root -p然后回車,輸入設(shè)置的密碼,登陸成功后如下所示:
(2)然后create database market命令,創(chuàng)建market數(shù)據(jù)庫,然后使用market數(shù)據(jù)庫創(chuàng)建相關(guān)的表信息。
可以查看到數(shù)據(jù)庫創(chuàng)建成功,數(shù)據(jù)庫的表信息及相關(guān)字段可以查看market.sql相關(guān)數(shù)據(jù)庫文件。
2.2項目創(chuàng)建與部署
(1)首先確定項目的導(dǎo)包方式,因考慮到j(luò)ar包的更新底層會有一些變化,以防出現(xiàn)不兼容的情況,這里不采用自動導(dǎo)包遠程下載的方式,改為手動導(dǎo)包的方式。
(2)打開IDEA,創(chuàng)建一個JAVA項目,確定好項目名稱和要存放的項目位置。
(3)創(chuàng)建完成后,首先需要根據(jù)數(shù)據(jù)庫表的信息,生成相應(yīng)的方法和類。這里通過mybatis工具,結(jié)合編寫好的配置文件,通過命令 java -jar mybatis-generator-core-1.4.0-mysql-page.jar -configfile generatorConfig.xml -overwrite生成相應(yīng)的方法和xml配置文件。
(4)接下來創(chuàng)建config目錄,加載Spring配置文件和數(shù)據(jù)庫調(diào)用配置文件,如下所示。
(5)接下來創(chuàng)建web配置文件,需要點擊File----》Project Structure—》Facets----》Web。
(6)打開相應(yīng)的類文件發(fā)現(xiàn)抱錯,原因是相應(yīng)的jar包沒有導(dǎo)入,這里可以事先創(chuàng)建存放所需jar包的文件,以便導(dǎo)入。
(7)IDEA需要指明所使用的Tomcat版本及相應(yīng)的端口,配置參數(shù)為-Dfile.encoding=UTF-8,配置如下:
(8)接下來點擊File—》Project Structure ----》Modules-----》market,點擊加號添加相關(guān)jar包。首先點擊Library添加Tomcat,如下所示。
(9)點擊加號添加jars文件,選擇實現(xiàn)存放好的jar文件夾導(dǎo)入jar文件,如下所示。
(10)添加完成后,在Project Settings設(shè)置頁面點擊Libraries添加Library。添加完后更新Project dependent里面的文件。
(11)然后再Project setting設(shè)置界面下,Modules里面加載Spring配置文件,如下圖所示。
(12)接下來在Project setting界面下點擊Artifacts,點擊web應(yīng)用,默認選擇導(dǎo)入方式為空。
(13)配置完成后點擊OK,點擊運行按鈕,即可運行出開始界面。
3 相關(guān)說明
前端:前端頁面大部分頁面使用HUI框架,前端使用jsp結(jié)合jquery,js,ajax,css展示頁面和跟后端進行交互,
后端:后臺使用SpringMvc+spring+mybatis框架,使用服務(wù)器session對當(dāng)前登錄用戶進行緩存,使用spring-schdule做定時任務(wù)處理,上傳文件通過將文件復(fù)制到tomcat路徑下,然后使用url進行訪問實現(xiàn),數(shù)據(jù)庫使用mysql存儲數(shù)據(jù)
數(shù)據(jù)流說明:當(dāng)用戶使用鏈接訪問頁面時,實際是先訪問控制器(即controller的接口),控制器通過定義@RequestMapping定義鏈接路徑,如圖3-1所示。
上圖的訪問路徑是:http://ip:端口/login/admin_login,結(jié)果返回”admin_login”,實際是指向:admin_login.jsp頁面,系統(tǒng)配置前綴(例如:/WEB-INF/views),后綴(.jsp),所以返回”admin_login”
Controller中帶有: @ResponseBody的接口返回的是對象,前端通常使用ajax請求請求此類接口:如圖3-2所示。
Controller一般通過調(diào)用service層的方法做一些業(yè)務(wù)處理,間接對數(shù)據(jù)庫進行增刪改查,service層再調(diào)用dao層的接口直接對數(shù)據(jù)庫進行增刪改查。
4 功能操作說明
4.1 管理員操作
管理員可以進行底層數(shù)據(jù)庫的管理設(shè)置,默認交給管理員的初始賬號是admin,密碼是123。管理員輸入正確的賬號密碼并且通過驗證后會進入管理員界面。
(1)登陸成功后首先員工管理界面,在該界面下可以查詢員工共信息,修改員工信息,添加員工,如圖4-1所示。
(2)為了保護用戶隱私,管理員可以查詢消費者的信息。
(3)管理員可以進行商品的分類管理操作。
(4)管理員對于商品信息不僅可以通過下載模板批量導(dǎo)入,也可以單個設(shè)置商品的數(shù)量狀態(tài)等信息。
(5)管理員可以查看訂單狀態(tài)和員工共商品賣出情況。
(6)管理員也可以對供應(yīng)商進行管理。
(7)管理員同樣可以通過考勤管理,查看員工的考勤狀態(tài)。
(8)管理員可以對當(dāng)前賬戶的密碼進行修改。
4.2員工操作
(1)員工輸入賬號密碼登錄成功后,默認打開的是個人信息頁面。
(2)員工同樣可以查詢消費者的相關(guān)信息。
(3)員工只擁有對商品查詢的權(quán)限,沒有修改的權(quán)限。
(4)員工可以對訂單信息進行添加,訂單信息記錄了商品,商品數(shù)量和消費者。
(5)員工需要進行考勤操作,默認每天上班只能打卡一次,再次點擊會顯示已經(jīng)打卡過了,下班需要進行簽退操作。
4.3 消費者操作
(1)消費者初次使用需要先進行注冊,注冊時手機號進行了正則校驗,注冊成功后才能進行登錄。如果第一次已經(jīng)注冊成功,再次注冊會顯示該賬號已注冊,請重新登錄。
(2)消費者登錄成功后可以查看個人訂單,個人信息以及修改密碼,消費者查看商品如下所示。
4.4 測試情況
| 注冊功能 | 用戶名:kali密碼:kali | 信息注冊成功 | 注冊成功可以正常登錄 | 通過 |
| 登錄功能 | 用戶名:admin密碼:123456 | 登錄成功,跳轉(zhuǎn)到功能界面 | 成功進入管理員功能界面 | 通過 |
| 員工管理 | 刪除t1員工數(shù)據(jù) | 刪除成功 | 該員工信息不存在 | 通過 |
| 消費者管理 | 刪除kali用戶 | 該用戶無法登錄 | 信息不存在,該消費者無法登錄 | 通過 |
| 商品管理 | 下架商品牛奶 | 無法購買 | 暫不支持購買 | 通過 |
| 考勤管理 | 查詢某個員工記錄 | 所有考勤記錄顯示 | 顯示打卡日期狀態(tài)等信息 | 通過 |
| 員工考勤 | T1員工上下班打卡 | 考勤成功,顯示考勤狀態(tài) | 上班遲到,簽退早退 | 通過 |
| 修改密碼 | 管理員密碼改為732916 | 再次輸入新密碼登錄成功 | 輸入舊密碼提示密碼不對,新密碼登錄成功 | 通過 |
| 系統(tǒng)退出 | 員工界面下注銷系統(tǒng) | 跳轉(zhuǎn)到登錄界面 | 系統(tǒng)功能界面退出 | 通過 |
4.5 部分程序代碼
注冊程序代碼:
<div class="login_form"><div><div class="form-group"><label class="t">登錄名</label><input id="name" name="name" type="text" placeholder="請輸入登錄名" class="form-control x319 in "></div><div class="form-group"><label class="t">密碼</label><input id="password" name="password" type="password" placeholder="請輸入密碼" class="form-control x319 in "></div><div class="form-group"><label class="t">姓名</label><input id="realName" name="realName" type="text" placeholder="請輸入姓名" class="form-control x319 in "></div><div class="form-group"><label class="t">聯(lián)系電話</label><input id="celPhone" name="celPhone" type="text" placeholder="請輸入中國大陸手機號" onblur="celPhone()" class="form-control x319 in " ></div><div class="form-group"><label class="t">驗證碼:</label><input id="imgCode" name="imgCode" type="text" class="form-control x164 in"><img id="codeImg1" name="codeImg" alt="點擊更換" title="點擊更換" class="m"></div> <div class="form-group space"> <label class="t"></label><input name="" type="button" onclick="submitForm()" id="submitBtn" class="btn btn-primary btn-lg" value="消費者-注冊">登錄程序代碼:
<div class="form-group"> <label class="t">登錄角色</label><input name="loginType" type="radio" value="1" id="loginType1" style="margin-left:10px;"/> <label style="color:black" for="loginType1">管理員</label><input name="loginType" type="radio" value="2" id="loginType2" style="margin-left:10px;"/> <label style="color:black" for="loginType2">員工</label><input name="loginType" type="radio" value="3" id="loginType3" style="margin-left:10px;"/> <label style="color:black" for="loginType3">消費者</label> </div><div class="form-group space"><label class="t"></label> <input name="" type="button" onclick="submitForm()" id="submitBtn" class="btn btn-primary btn-lg" value="系統(tǒng)登錄"> <a style="" href="${pageContext.request.contextPath}/regist/user_info_regist" onclick="" class="btn btn-default btn-lg">注冊消費者</a><script type="text/javascript" src="${pageContext.request.contextPath}/static/common/jquery-1.11.1.min.js"></script> <scriptsrc="${pageContext.request.contextPath}/static/common/utils/listutils.js?v=26573"></script><script>$(document).ready(function(e) {changeCode();$("#codeImg1").bind("click",changeCode);});function genTimestamp(){var time = new Date();return time.getTime();}function changeCode(){$("img[name='codeImg']").attr("src","${pageContext.request.contextPath}/validCode/code?t="+genTimestamp());}function submitForm(){$.ajax({type: 'post',url: '${pageContext.request.contextPath}/login/sysSubmit',data: {'imgCode':$('#imgCode').val(),'name':$("#name").val(),'password':$("#password").val(),'loginType':getCheckBoxVal('loginType')},success: function(result) {if(result.code==1){var lt = getCheckBoxVal('loginType');if(lt=='1'){window.location.href="${pageContext.request.contextPath}/admin/index";}if(lt=='2'){window.location.href="${pageContext.request.contextPath}/staff/index";}if(lt=='3'){window.location.href="${pageContext.request.contextPath}/index";}}else{alert(result.msg);}}});}$(function(){}) </script>修改密碼程序代碼:
<div class="page-container"><div class="row cl" id="nameParentDiv" style="margin-top:20px;margin-left:20px;" > <label class="form-label col-xs-4 col-sm-2">舊密碼 </label> <div class="formControls col-xs-8 col-sm-9"> <input type="password" class="input-text" placeholder="請輸入舊密碼" id="password1" name="password1"> </div> </div><div class="row cl" id="nameParentDiv" style="margin-top:20px;margin-left:20px;" > <label class="form-label col-xs-4 col-sm-2">新密碼</label> <div class="formControls col-xs-8 col-sm-9"> <input type="password" class="input-text" placeholder="請輸入新密碼" id="password2" name="password2"></div> </div><div class="row cl" id="nameParentDiv" style="margin-top:20px;margin-left:20px;" > <label class="form-label col-xs-4 col-sm-2">新密碼 </label> <div class="formControls col-xs-8 col-sm-9"> <input type="password" class="input-text" placeholder="請再次輸入新密碼" id="password3" name="password3"></div> </div> </div>5 視頻教程
(1)管理員身份登錄演示視頻:
https://pan.baidu.com/s/12deH1WrsrnM4OAha1le8wg?pwd=3vau 提取碼: 3vau
(2)員工身份登錄演示視頻:
https://pan.baidu.com/s/1k1gmU32wIXeeiAEcb0txVw?pwd=un4q 提取碼: un4q
(3)消費者身份登錄演示視頻:
https://pan.baidu.com/s/1lhS-xLiNKrv91gC6wfs8HA?pwd=a668 提取碼: a668
6 源文件
程序和數(shù)據(jù)庫文件
總結(jié)
以上是生活随笔為你收集整理的基于SSM架构的超市管理系统设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Samba共享Nextcloud目录
- 下一篇: minecraft(我的世界) 外网远程