JavaWeb宿舍管理系統(附 演示、原始碼下載地址)
❝宿舍管理是高校管理的重要組成部分,一套優秀的管理系統不僅可以降低宿舍管理的難度,也能在一定程度上減少學校管理費用的支出,能是建設現代化高校管理體系的重要標誌。
❞
本篇文章將帶你從執行環境搭建、系統設計、系統編碼到整個系統的實現,對整個過程進行詳細描述,特別適合作為程式設計師的進階專案案列,同樣也是高校學生畢業設計系統實現的不二之選!
演示地址:宿舍管理系統演示地址,點我檢視
1、系統架構模式
「本宿舍管理系統採用B/S架構模式。」
B/S架構的全稱為Browser/Server,即瀏覽器/伺服器結構。Browser指的是Web瀏覽器,與C/S架構相比,B/S模式極少數事務邏輯在前端實現,它的主要事務邏輯在伺服器端實現。B/S架構的系統無須特別安裝,只有Web瀏覽器即可。
「B/S架構的分層:」
與C/S架構只有兩層不同的是,B/S架構有三層,分別為:
第一層表現層:主要完成使用者和後臺的互動及最終查詢結果的輸出功能。 第二層邏輯層:主要是利用伺服器完成客戶端的應用邏輯功能。 第三層資料層:主要是進行資料持久化儲存。
2、技術選型
選擇合適的技術,整個專案就已經成功了一半,經過對系統需求和系統自身特點的分析,加上現代B/S模式主流架構解決方案,對本系統技術選型如下:
「資料表現層:」 Html+JavaScript+CSS+VUE
「業務邏輯層」 Java+Spring+SpringMVC
「資料持久層:」 MySql+MyBatis
「開發工具:」 Eclipse
3、使用者分析
本系統主要應用於高校宿舍管理,使用人群如下:
系統管理員:管理整個系統的安全執行,各個功能使用。 宿舍管理員:管理自己負責的宿管和學生 學生:檢視瀏覽資訊,提交任務
4、功能分析
「系統管理員:」
新增、修改、刪除公告資訊 新增、修改、刪除宿舍管理員資訊 新增、修改、刪除學生資訊 宿舍樓管理及其宿舍管理員分配 學生寢室管理 釋出考勤、打卡任務 檢視、修改個人資訊
「宿舍管理員:」
檢視公告 檢視、刪除自己管理的學生 新增、修改、刪除考勤記錄 檢視學生打卡記錄 檢視、修改個人資訊
「學生:」
檢視公告 檢視考勤記錄 完成打卡任務,檢視打卡記錄 檢視、修改個人資訊
5、資料庫設計
分析系統需求,資料庫應有以下幾張表:
「t_admin:」 主要用於儲存系統管理員資料
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
adminId | int | 是 | 管理員Id,唯一 |
userName | varchar | 否 | 使用者名稱 |
password | varchar | 否 | 密碼 |
name | varchar | 否 | 真實名稱 |
sex | varchar | 否 | 性別 |
sex | varchar | 否 | 電話 |
「t_dormbuild:」 儲存宿舍樓資訊
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
dormBuildId | int | 是 | 宿舍樓Id,唯一 |
dormBuildName | varchar | 否 | 宿舍樓名稱 |
dormBuildDetail | varchar | 否 | 描述 |
「t_dormmanager:」 主要儲存宿舍管理員資訊
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
dormManId | varchar | 是 | 宿舍管理員Id,唯一 |
userName | varchar | 否 | 使用者名稱,用於登入系統 |
password | varchar | 否 | 密碼 |
dormBuildId | int | 否 | 宿舍樓Id |
dormBuildDetail | varchar | 否 | 描述 |
name | varchar | 否 | 真實姓名 |
sex | varchar | 否 | 性別 |
tel | varchar | 否 | 電話 |
「t_notice:」 用於儲存公告資訊
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
noticeId | int | 是 | 公告Id,唯一 |
noticePerson | varchar | 否 | 公告發布人 |
date | date | 否 | 公告發布日期 |
content | varchar | 否 | 釋出內容 |
「t_punchclock:」 用於儲存打卡釋出記錄
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
id | int | 是 | Id,唯一 |
theme | varchar | 否 | 打卡主題 |
detail | varchar | 否 | 打卡說明 |
date | varchar | 否 | 釋出日期 |
person | varchar | 否 | 釋出人 |
「t_punchclockrecord:」 用於儲存打卡資訊
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
id | int | 是 | 記錄Id,唯一 |
punchClock_id | varchar | 否 | 打卡Id |
punchClock_date | date | 否 | 釋出日期 |
punchClock_theme | varchar | 否 | 打卡主題 |
punchClock_detail | varchar | 否 | 打卡說明 |
punchClock_person | varchar | 否 | 釋出人 |
name | varchar | 否 | 學生姓名 |
dormName | varchar | 否 | 寢室號 |
tel | varchar | 否 | 學生電話 |
stuNum | varchar | 否 | 學生學號 |
dormBuildId | int | 否 | 宿舍樓 |
isRecord | tinyint | 否 | 是否已經打卡 |
「t_record:」 用於儲存考勤記錄
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
recordId | int | 是 | 考勤Id,唯一 |
studentNumber | varchar | 否 | 學生學號 |
dormBuildId | int | 否 | 宿舍樓 |
dormName | varchar | 否 | 寢室號 |
date | varchar | 否 | 考勤日期 |
detail | varchar | 否 | 詳細說明 |
「t_student:」 學生表,用於存放學生資訊
欄位名稱 | 型別 | 是否主鍵 | 說明 |
---|---|---|---|
studentId | int | 是 | 學生Id,唯一 |
stuNum | varchar | 否 | 學號 |
password | varchar | 否 | 密碼 |
name | varchar | 否 | 姓名 |
dormBuildId | int | 否 | 宿舍樓 |
dormName | varchar | 否 | 寢室號 |
sex | varchar | 否 | 性別 |
tel | varchar | 否 | 電話 |
6、執行環境搭建
前面已經提到,本系統使用SSM框架,搭建過程較為繁瑣,因此將此部分獨立出來,作為一個專題,具體搭建過程請參考《手把手教你搭建SSM框架(Eclipse版)》 這篇文章。搭建過程若出現其他問題,可以在公眾號【C you again】 後臺私信。
7、專案工程結構
根據第六步搭建完系統執行環境後,工程結構目錄如下圖所示
「對工程結構各個目錄的解釋:」
com.cya.controller
controller包用於存放接收請求的類,充當前後端資料互動的“橋樑”
com.cya.service
service包是所有業務邏輯的介面
com.cya.service.impl
service.impl包用於存放service介面的所有實現類
com.cya.mapper
mapper包用於存放對資料庫操縱的介面和對應的xml實現
com.cya.entity
entity包用於存放專案中用到的所有實體類,它與資料庫中的表相對應 resources檔案下存放SSM框架整合的必要配置檔案,詳情請看《手把手教你搭建SSM框架(Eclipse版)》 dorm是存放所有model層檔案的父級資料夾,其中admin,dormManager、student三個子資料夾存放系統管理員、宿舍管理員、學生三個角色對應的HTML檔案。
8、功能實現及展示
由於系統包含功能眾多,在此無法一一列舉,所以挑選幾個代表做展示,如需獲取完整原始碼請在公眾號【C you again】回覆“宿舍管理系統”。
8.1 登入功能實現
專案啟動成功後,在瀏覽器位址列輸入:http://localhost:8080/dormManage/ 進入使用者登入介面如下圖所示:
在此介面使用者可以選擇不同的角色登入,輸入每個角色對應的登入資訊後,首先會判斷輸入資訊的有效性,做出相應的響應或提示。登入功能具體的實現程式碼如下,此處僅展示controller層程式碼,如下:
packagecom.cya.controller;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
importjavax.management.relation.Role;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
importorg.apache.tomcat.util.digester.ArrayStack;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestBody;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.ResponseBody;
importcom.cya.entity.Login;
importcom.cya.entity.Result;
importcom.cya.service.ILoginService;
importcom.cya.service.impl.LoginServiceImpl;
@Controller
@ResponseBody
publicclassLoginController{
@Autowired
privateILoginServiceloginServiceImpl;
@RequestMapping("login")
publicListlogin(HttpServletRequestrequest,@RequestBodyLoginlogin){
Listlist=loginServiceImpl.login(login);
if(list.size()==1){
HttpSessionsession=request.getSession();
session.setAttribute(login.getRole(),list);
System.out.println("session="+session.getAttribute(login.getRole()));
}
returnlist;
}
@RequestMapping("getSession")
publicListgetSession(HttpServletRequestrequest,@RequestBodyLoginlogin){
System.out.println(login);
System.out.println(request.getSession().getAttribute(login.getRole()));
Listlist=newArrayList<>();
list.add(request.getSession().getAttribute(login.getRole()));
returnlist;
}
@RequestMapping("exitSys")
publicResultexitSys(HttpServletRequestrequest){
Stringexit="";
try{
if(request.getParameter("exit")!=null){
exit=request.getParameter("exit");
}
request.getSession().removeAttribute(exit);
returnnewResult(true,"登出成功");
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
returnnewResult(false,"登出失敗");
}
}
}
8.2 釋出公告功能實現
在系統管理員端,有釋出公告的許可權,系統管理員點選新增公告按鈕,輸入相關資訊後進行有效性校驗,校驗成功及代表公告發布成功。
成功釋出公告後,會出現在宿舍管理員端和學生端介面,效果圖如下:
公告模組主要程式碼以mapper層實現為例:
<!--********************公告*******************-->
<selectid="getNoticeManage"resultType="com.cya.entity.Notice">
select*fromt_notice
<where>
<iftest="filter=='date'andkey!=''">
datelikeconcat("%",#{key},"%")
</if>
</where>
</select>
<insertid="addNoticeManage"parameterType="com.cya.entity.Notice">
insertintot_notice(noticePerson,date,content)values(#{noticePerson},current_date,#{content})
</insert>
<selectid="getNoticeMangerById"parameterType="Integer"resultType="com.cya.entity.Notice">
select*fromt_noticewherenoticeId=#{noticeId}
</select>
<updateid="updataNoticeManageById"parameterType="com.cya.entity.Notice">
updatet_noticesetnoticePerson=#{noticePerson},content=#{content}wherenoticeId=#{noticeId}
</update>
<deleteid="noticeManagerDeleteById"parameterType="Integer">
deletefromt_noticewherenoticeId=#{noticeId}
</delete>
<!--********************公告*******************-->
8.3 考勤記錄功能實現
宿舍管理員根據自己所管理樓,對住在管理範圍內的學生進行考勤,並新增考勤記錄,學生端也會顯示考勤資訊。
主要實現程式碼如下:
@RequestMapping("/getRecordMsg")
publicPageResultgetRecordMsg(HttpServletRequestrequest){
IntegerpageNum=1;
IntegerpageSize=20;
IntegerdormBuildId=0;
Stringfilter=request.getParameter("filter");
Stringkey=request.getParameter("key");
if(request.getParameter("pageNum")!=null&&request.getParameter("pageNum")!=""){
pageNum=Integer.parseInt(request.getParameter("pageNum"));
}
if(request.getParameter("pageSize")!=null&&request.getParameter("pageSize")!=""){
pageSize=Integer.parseInt(request.getParameter("pageSize"));
}
if(request.getParameter("dormBuildId")!=null&&request.getParameter("dormBuildId")!=""){
dormBuildId=Integer.parseInt(request.getParameter("dormBuildId"));
}
System.out.println("pageNum="+pageNum);
System.out.println("pageSize="+pageSize);
returndormManageServiceImpl.getRecordMsg(pageNum,pageSize,filter,key,dormBuildId);
}
@RequestMapping("getRecordById")
publicRecordgetRecordById(IntegerrecordId){
returndormManageServiceImpl.getRecordById(recordId);
}
@RequestMapping("updataRecordMsg")
publicResultupdataRecordMsg(@RequestBodyRecordrecord){
try{
dormManageServiceImpl.updataRecordMsg(record);
returnnewResult(true,"更新成功");
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
returnnewResult(false,"更新失敗");
}
}
@RequestMapping("addRecordMsg")
publicResultaddRecordMsg(@RequestBodyRecordrecord){
try{
System.out.println(record);
dormManageServiceImpl.addRecordMsg(record);
returnnewResult(true,"新增成功");
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
returnnewResult(false,"新增失敗");
}
}
@RequestMapping("recordManagerDeleteById1")
publicResultrecordManagerDeleteById(HttpServletRequestrequest){
IntegerrecordId=0;
if(request.getParameter("recordId")!=null&&request.getParameter("recordId")!=""){
recordId=Integer.parseInt(request.getParameter("recordId"));
}
try{
dormManageServiceImpl.recordManagerDeleteById1(recordId);
returnnewResult(true,"刪除成功");
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
returnnewResult(false,"刪除失敗");
}
}
9、原始碼下載
若需獲取本系統原始碼請在公眾號【C you again】回覆“宿舍管理系統”
你也可以點選此連結快速回復
10、相關說明
製作不易,記得點贊+收藏+轉發 本人技術有限,若有錯誤歡迎指正 本系統和文章均屬於【C you again】原創,歡迎個人部落格、各大網站轉載,但請註明轉載地址