一、摘要
1.1 項目介紹
基于JAVA+Vue+SpringBoot+MySQL的高校宿舍調配管理系統(tǒng),包含了宿舍管理模塊、宿舍分配模塊、個人配置模塊,還包含系統(tǒng)自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數據字典管理、文件管理、圖表展示等基礎模塊,高校宿舍調配管理系統(tǒng)基于角色的訪問控制,給高校管理員、教師和學生角色使用,可將權限精確到按鈕級別,您可以自定義角色并分配權限,系統(tǒng)適合設計精確的權限約束需求。
1.2 項目錄屏
二、功能需求
第二章為功能需求,并非實際功能模塊,請同學們知曉。
使用技術:前端vue 后端springboot 數據庫mysql。
名稱:基于多維匹配度分析的宿舍調配管理系統(tǒng)開發(fā)。
登錄界面分角色登錄,在登錄之前展示如下界面。
點擊右上方登錄進入登錄界面,如下。
一共有三個用戶:學生 宿管 老師。
2.1 學生端
有個人信息的添加修改,退出登錄,分配信息(填寫宿舍分配所需個人信息),調宿信息(填寫申請調宿申請和查看反饋結果),我的舍友(展示宿舍分配之后的舍友信息)。
申請調宿的信息:
分配宿舍的信息:
在分配宿舍這塊使用 kmeans
算法或者 貪心
算法。
2.2 宿管
個人信息的填寫修改,學生管理(該樓學生的信息查詢)。
2.3 老師端
個人信息,學生查詢(精準查詢(按照學號),模糊查詢(學院專業(yè)班級)),宿舍調配(處理學生的申請調宿問題),再有一個對按照算法分配好的學生宿舍結果的一個確認。
三、系統(tǒng)展示
四、核心代碼
4.1 查詢單條個人習慣
@RequestMapping(value = "/getMySettings", method = RequestMethod.GET)
@ApiOperation(value = "查詢單條個人習慣")
public Result<MySettings> getMySettings(){
User currUser = securityUtil.getCurrUser();
MySettings mySettings = iMySettingsService.getById(currUser.getId());
if(mySettings == null) {
mySettings = MySettingsUtils.getMySettings(currUser);
iMySettingsService.saveOrUpdate(mySettings);
}
return new ResultUtil<MySettings>().setData(mySettings);
}
4.2 查詢我的室友
@RequestMapping(value = "/getMyFriend", method = RequestMethod.GET)
@ApiOperation(value = "查詢我的室友")
public Result<List<MySettings>> getMyFriend(){
User currUser = securityUtil.getCurrUser();
MySettings mySettings = iMySettingsService.getById(currUser.getId());
if(mySettings == null) {
return ResultUtil.error("沒有你的配置");
}
QueryWrapper<MySettings> qw = new QueryWrapper<>();
qw.eq("dorm_id",mySettings.getDormId());
return new ResultUtil<List<MySettings>>().setData(iMySettingsService.list(qw));
}
4.3 查詢宿舍
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢宿舍")
public Result<IPage<Dorm>> getByPage(@ModelAttribute Dorm dorm ,@ModelAttribute PageVo page){
QueryWrapper<Dorm> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(dorm.getHouse())) {
qw.like("house",dorm.getHouse());
}
if(!ZwzNullUtils.isNull(dorm.getRoom())) {
qw.like("room",dorm.getRoom());
}
if(!ZwzNullUtils.isNull(dorm.getType())) {
qw.like("type",dorm.getType());
}
IPage<Dorm> data = iDormService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Dorm>>().setData(data);
}
4.4 查詢指定性別全部宿舍
@RequestMapping(value = "/getMyAll", method = RequestMethod.GET)
@ApiOperation(value = "查詢指定性別全部宿舍")
public Result<List<Dorm>> getMyAll(){
User currUser = securityUtil.getCurrUser();
QueryWrapper<Dorm> qw = new QueryWrapper<>();
if(Objects.equals("女",currUser.getSex())) {
qw.eq("type","女生宿舍");
} else {
qw.eq("type","男生宿舍");
}
return new ResultUtil<List<Dorm>>().setData(iDormService.list(qw));
}
4.5 初次分配宿舍
@RequestMapping(value = "/createDorm", method = RequestMethod.GET)
@ApiOperation(value = "初次分配宿舍")
public Result<Object> createDorm(){
User currUser = securityUtil.getCurrUser();
MySettings mySettings = iMySettingsService.getById(currUser.getId());
if(mySettings == null) {
return ResultUtil.error("未初始化");
}
if(!ZwzNullUtils.isNull(mySettings.getDormId())) {
return ResultUtil.error("您的宿舍已分配!");
}
QueryWrapper<DormChange> qw2 = new QueryWrapper<>();
qw2.eq("user_id",currUser.getId());
qw2.eq("status","未審核");
if(iDormChangeService.count(qw2) > 0L) {
return ResultUtil.error("您已申請,請等待審核!");
}
// 確認學生的性別
String sex = mySettings.getSex();
if(!Objects.equals("女",sex)) {
sex = "男";
}
// 查詢所有宿舍
List<Dorm> dormList = iDormService.list();
// 次優(yōu)解,空宿舍
Dorm ans2 = null;
// 最優(yōu)解,有人且符合條件的宿舍
Dorm ans1 = null;
// 最優(yōu)解符合的條件數
Integer ansCount = -1;
for (Dorm d : dormList) {
if(Objects.equals("男",sex) && Objects.equals("女生宿舍",d.getType()) || Objects.equals("女",sex) && Objects.equals("男生宿舍",d.getType())) {
// 宿舍性別過濾
continue;
}
// 查詢宿舍內的學生
QueryWrapper<MySettings> sQw = new QueryWrapper<>();
sQw.eq("dorm_id",d.getId());
List<MySettings> settingsList = iMySettingsService.list(sQw);
if(settingsList.size() > 1) {
// 設定兩人滿員,過濾該宿舍
} else if(settingsList.size() < 1) {
// 找到次優(yōu)解
if(ans2 == null) {
ans2 = d;
}
} else {
// 宿舍內滿足條件的數量
Integer maxCount = 0;
MySettings se = settingsList.get(0);
if(se == null) {
continue;
}
// 計算和室友關系的匹配指標
if(Objects.equals(se.getSetting1(),mySettings.getSetting1())) {
maxCount ++;
}
if(Objects.equals(se.getSetting2(),mySettings.getSetting2())) {
maxCount ++;
}
if(Objects.equals(se.getSetting3(),mySettings.getSetting3())) {
maxCount ++;
}
if(Objects.equals(se.getSetting4(),mySettings.getSetting4())) {
maxCount ++;
}
if(Objects.equals(se.getSetting5(),mySettings.getSetting5())) {
maxCount ++;
}
if(Objects.equals(se.getSetting6(),mySettings.getSetting6())) {
maxCount ++;
}
if(Objects.equals(se.getSetting7(),mySettings.getSetting7())) {
maxCount ++;
}
if(Objects.equals(se.getSetting8(),mySettings.getSetting8())) {
maxCount ++;
}
if(maxCount > ansCount) {
// 如果滿足最優(yōu)條件
ansCount = maxCount;
ans1 = d;
}
}
}
if(ans1 != null) {
DormChange dc = MySettingsUtils.createDormChange(mySettings, ans1);
iDormChangeService.saveOrUpdate(dc);
} else if(ans2 != null) {
DormChange dc = MySettingsUtils.createDormChange(mySettings, ans2);
iDormChangeService.saveOrUpdate(dc);
} else {
return ResultUtil.error("沒有合適的宿舍");
}
return ResultUtil.success();
}
五、免責說明
- 本項目僅供個人學習使用,商用授權請聯(lián)系博主,否則后果自負。
- 博主擁有本軟件構建后的應用系統(tǒng)全部內容所有權及獨立的知識產權,擁有最終解釋權。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統(tǒng)代碼或使用本系統(tǒng)的用戶,必須同意以下內容,否則請勿下載!文章來源:http://www.zghlxwxcb.cn/news/detail-817300.html
- 出于自愿而使用/開發(fā)本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
- 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
- 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業(yè)利潤損失、業(yè)務中斷與業(yè)務信息丟失),博主概不承擔任何責任。
- 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。
文章來源地址http://www.zghlxwxcb.cn/news/detail-817300.html
到了這里,關于【開源】基于JAVA+Vue+SpringBoot的高校宿舍調配管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!