實際應用中的詞向量維度使用注意
宿舍管理是高校管理的重要組成部分,一套優秀的管理系統不僅可以降低宿舍管理的難度,也能在一定程度上減少學校管理費用的支出,能是建設現代化高校管理體系的重要標誌。
本篇文章將帶你從執行環境搭建、系統設計、系統編碼到整個系統的實現,對整個過程進行詳細描述,特別適合作為程式設計師的進階專案案列,同樣也是高校學生畢業設計系統實現的不二之選!
演示地址:宿舍管理系統演示地址,點我檢視
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層程式碼,如下:
package com.cya.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.management.relation.Role;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.tomcat.util.digester.ArrayStack;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.cya.entity.Login;
import com.cya.entity.Result;
import com.cya.service.ILoginService;
import com.cya.service.impl.LoginServiceImpl;
@Controller
@ResponseBody
public class LoginController {
@Autowired
private ILoginService loginServiceImpl;
@RequestMapping("login")
public List login(HttpServletRequest request, @RequestBody Login login) {
List list=loginServiceImpl.login(login);
if(list.size()==1) {
HttpSession session=request.getSession();
session.setAttribute(login.getRole(), list);
System.out.println("session="+session.getAttribute(login.getRole()));
}
return list;
}
@RequestMapping("getSession")
public List getSession(HttpServletRequest request,@RequestBody Login login){
System.out.println(login);
System.out.println(request.getSession().getAttribute(login.getRole()));
List list=new ArrayList<>();
list.add(request.getSession().getAttribute(login.getRole()));
return list;
}
@RequestMapping("exitSys")
public Result exitSys(HttpServletRequest request) {
String exit="";
try {
if(request.getParameter("exit")!=null) {
exit=request.getParameter("exit");
}
request.getSession().removeAttribute(exit);
return new Result(true, "登出成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return new Result(false, "登出失敗");
}
}
}
8.2 釋出公告功能實現
在系統管理員端,有釋出公告的許可權,系統管理員點選新增公告按鈕,輸入相關資訊後進行有效性校驗,校驗成功及代表公告發布成功。
成功釋出公告後,會出現在宿舍管理員端和學生端介面,效果圖如下:
公告模組主要程式碼以mapper層實現為例:
<!-- ******************** 公告 ******************* -->
<select id="getNoticeManage" resultType="com.cya.entity.Notice">
select * from t_notice
<where>
<if test="filter=='date' and key !='' ">
date like concat("%",#{key},"%")
</if>
</where>
</select>
<insert id="addNoticeManage" parameterType="com.cya.entity.Notice">
insert into t_notice(noticePerson,date,content) values(#{noticePerson},current_date,#{content})
</insert>
<select id="getNoticeMangerById" parameterType="Integer" resultType="com.cya.entity.Notice">
select * from t_notice where noticeId=#{noticeId}
</select>
<update id="updataNoticeManageById" parameterType="com.cya.entity.Notice">
update t_notice set noticePerson=#{noticePerson},content=#{content} where noticeId=#{noticeId}
</update>
<delete id="noticeManagerDeleteById" parameterType="Integer">
delete from t_notice where noticeId=#{noticeId}
</delete>
<!-- ******************** 公告 ******************* -->
8.3 考勤記錄功能實現
宿舍管理員根據自己所管理樓,對住在管理範圍內的學生進行考勤,並新增考勤記錄,學生端也會顯示考勤資訊。
主要實現程式碼如下:
@RequestMapping("/getRecordMsg")
public PageResult getRecordMsg(HttpServletRequest request){
Integer pageNum=1;
Integer pageSize=20;
Integer dormBuildId=0;
String filter=request.getParameter("filter");
String key=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);
return dormManageServiceImpl.getRecordMsg(pageNum, pageSize, filter, key, dormBuildId);
}
@RequestMapping("getRecordById")
public Record getRecordById(Integer recordId) {
return dormManageServiceImpl.getRecordById(recordId);
}
@RequestMapping("updataRecordMsg")
public Result updataRecordMsg(@RequestBody Record record) {
try {
dormManageServiceImpl.updataRecordMsg(record);
return new Result(true, "更新成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return new Result(false, "更新失敗");
}
}
@RequestMapping("addRecordMsg")
public Result addRecordMsg(@RequestBody Record record) {
try {
System.out.println(record);
dormManageServiceImpl.addRecordMsg(record);
return new Result(true, "新增成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return new Result(false, "新增失敗");
}
}
@RequestMapping("recordManagerDeleteById1")
public Result recordManagerDeleteById(HttpServletRequest request) {
Integer recordId=0;
if(request.getParameter("recordId")!=null && request.getParameter("recordId")!="") {
recordId=Integer.parseInt(request.getParameter("recordId"));
}
try {
dormManageServiceImpl.recordManagerDeleteById1(recordId);
return new Result(true, "刪除成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return new Result(false, "刪除失敗");
}
}
9、原始碼下載
若需獲取本系統原始碼請在公眾號【C you again】回覆“宿舍管理系統”
你也可以點選此連結快速回復
10、相關說明
- 製作不易,記得點贊+收藏+轉發
- 本人技術有限,若有錯誤歡迎指正
- 本系統和文章均屬於【C you again】原創,歡迎個人部落格、各大網站轉載,但請註明轉載地址