?全網(wǎng)粉絲20W+,csdn特邀作者、博客專家、CSDN新星計(jì)劃導(dǎo)師、java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn)?
??文末獲取項(xiàng)目下載方式??
一、項(xiàng)目背景介紹:
計(jì)算機(jī)房管理系統(tǒng)在現(xiàn)代教育機(jī)構(gòu)和企業(yè)中扮演著重要角色。隨著計(jì)算機(jī)技術(shù)的快速發(fā)展和廣泛應(yīng)用,對計(jì)算機(jī)房資源的高效管理和監(jiān)控變得至關(guān)重要?;赟pring Boot和Vue的計(jì)算機(jī)房管理系統(tǒng)結(jié)合了后端開發(fā)框架和前端用戶界面的優(yōu)勢,具有快速開發(fā)、易于維護(hù)和友好的用戶體驗(yàn)等特點(diǎn)。該研究旨在探索并實(shí)現(xiàn)一種基于這兩個(gè)技術(shù)的計(jì)算機(jī)房管理系統(tǒng),以提高計(jì)算機(jī)房資源的利用率和管理效率。
二、項(xiàng)目技術(shù)簡介:
- JAVA:Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個(gè)特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
- Vue:Vue (發(fā)音為 /vju?/,類似 view) 是一款用于構(gòu)建用戶界面的JavaScript框架。它基于標(biāo)準(zhǔn)HTML、CSS和JavaScript構(gòu)建,并提供了一套聲明式的、組件化的編程模型,幫助開發(fā)者高效地開發(fā)用戶界面。
Vue是一個(gè)獨(dú)立的社區(qū)驅(qū)動(dòng)的項(xiàng)目,它是由尤雨溪在2014年作為其個(gè)人項(xiàng)目創(chuàng)建, 是一個(gè)成熟的、經(jīng)歷了無數(shù)實(shí)戰(zhàn)考驗(yàn)的框架,它是目前生產(chǎn)環(huán)境中使用最廣泛的JavaScript框架之一,可以輕松處理大多數(shù)web應(yīng)用的場景,并且?guī)缀醪恍枰謩?dòng)優(yōu)化,并且Vue完全有能力處理大規(guī)模的應(yīng)用。 - Element-UI:Element,一套為開發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于 Vue 2.0 的桌面端組件庫。
- SpringBoot:Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
- Mybatis-Plus:MyBatis-Plus(簡稱 MP)是一個(gè) MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為 簡化開發(fā)、提高效率而生。
三、系統(tǒng)功能模塊介紹:
四、數(shù)據(jù)庫設(shè)計(jì):
1:‘管理員信息表’(admin)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
admin_img | varchar | NULL | 頭像 |
admin_name | varchar | NULL | 姓名 |
admin_account | varchar | NULL | 賬號(hào) |
admin_password | varchar | NULL | 密碼 |
2:‘課程信息表’(class_schedule)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
start_time | datetime | NULL | 開始時(shí)間 |
end_time | datetime | NULL | 結(jié)束時(shí)間 |
classes_id | bigint | NULL | 班級(jí)主鍵 |
room_id | bigint | NULL | 機(jī)房主鍵 |
3:‘班級(jí)信息表’(classes)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
classes_name | varchar | NULL | 班級(jí) |
4:‘電腦信息表’(computer)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
number | varchar | NULL | 電腦編號(hào) |
computer_img | varchar | NULL | 電腦圖片 |
computer_remark | varchar | NULL | 電腦備注信息 |
status | tinyint | NULL | 電腦狀態(tài)[0:正常,1:暫停使用] |
open_close | tinyint | NULL | 電腦開關(guān)機(jī)[0:開機(jī),1:關(guān)機(jī)] |
5:‘電腦使用記錄信息表’(computer_record)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
computer_id | bigint | NULL | 電腦 |
student_id | bigint | NULL | 學(xué)生主鍵 |
start_time | datetime | NULL | 開始時(shí)間 |
end_time | datetime | NULL | 結(jié)束時(shí)間 |
6:‘機(jī)房信息表’(room)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
room_name | varchar | NULL | 機(jī)房名稱 |
room_address | varchar | NULL | 機(jī)房地址信息 |
room_remark | varchar | NULL | 機(jī)房備注 |
7:‘機(jī)房使用記錄信息表’(room_record)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
classes_id | bigint | NULL | 班級(jí)主鍵 |
start_time | datetime | NULL | 開始時(shí)間 |
end_time | datetime | NULL | 結(jié)束時(shí)間 |
8:‘學(xué)生信息表’(student)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
student_img | varchar | NULL | 頭像 |
student_name | varchar | NULL | 姓名 |
student_account | varchar | NULL | 賬號(hào) |
student_password | varchar | NULL | 密碼 |
student_id | bigint | NULL | 班級(jí) |
9:‘教師信息表’(teacher)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵 |
teacher_img | varchar | NULL | 頭像 |
teacher_name | varchar | NULL | 姓名 |
teacher_account | varchar | NULL | 賬號(hào) |
teacher_password | varchar | NULL | 密碼 |
classes_id | bigint | NULL | 班級(jí) |
五、功能模塊:
-
開機(jī)申請管理:五分鐘內(nèi)未處理的申請默認(rèn)為不同意
-
電腦開機(jī)關(guān)機(jī)申請:每個(gè)人在五分鐘內(nèi)只能申請一次,多次申請系統(tǒng)會(huì)給與提示,開機(jī)需要申請,關(guān)機(jī)默認(rèn)管理員同意
-
電腦使用記錄查看:在電腦開機(jī)后系統(tǒng)默認(rèn)會(huì)生成一條申請開機(jī)的學(xué)生的使用記錄
-
個(gè)人信息查看:
-
老師信息管理:
-
學(xué)生信息管理:
-
機(jī)房信息管理:
-
電腦使用記錄管理:
-
機(jī)房使用記錄管理:
-
登記電腦使用記錄:
六、代碼示例:
/**
* 生成驗(yàn)證碼
*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
return ajax;
}
// 保存驗(yàn)證碼信息
String uuid = IdUtils.simpleUUID();
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
String capStr = null, code = null;
BufferedImage image = null;
// 生成驗(yàn)證碼
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 轉(zhuǎn)換流信息寫出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
return AjaxResult.error(e.getMessage());
}
ajax.put("uuid", uuid);
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;
}
/**
* 通用的本地文件上傳
*
* @param multipartFile 文件對象
* @return 文件訪問鏈接URL
*/
@PostMapping("/file")
public SimpleResponse uploadImg(@RequestParam("file") MultipartFile file) {
// 文件后綴
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
File savePathFile = new File(newTomcatFolder);
if (!savePathFile.exists()) {
// 若不存在該目錄,則創(chuàng)建目錄
savePathFile.mkdir();
}
// 通過UUID生成唯一文件名
String filename = UUID.randomUUID() + "." + suffix;
try {
// 將文件保存指定目錄
file.transferTo(new File(newTomcatFolder + filename));
} catch (Exception e) {
e.printStackTrace();
return SimpleResponse.error("保存文件異常");
}
// 返回訪問鏈接
return SimpleResponse.success(newTomcatHost + filename);
}
@PostMapping("/login")
public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {
if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {
return ReturnMsg.error("用戶名或密碼錯(cuò)誤!");
}
ManageDTO manageDTO = new ManageDTO();
manageDTO.setUserName(param.get("username"));
manageDTO.setPassWord(param.get("password"));
QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);
manageDTOQueryWrapper.last("limit 1");
ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);
if (adminDTOS == null) return ReturnMsg.error("用戶名或密碼錯(cuò)誤!");
Map<String, Object> map = new HashMap<>();
map.put("avatar", StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
map.put("introduction", adminDTOS.getName() + ",你好!");
map.put("name", adminDTOS.getName());
map.put("roles", Arrays.asList("admin"));
map.put("type", adminDTOS.getStatus());
Map<String, String> returnMap = new HashMap<>();
String uuid = UUID.randomUUID().toString();
returnMap.put("token", uuid);
userInfoMap.put(uuid, JSON.toJSONString(map));
return ReturnMsg.ok(returnMap);
}
七、項(xiàng)目總結(jié):
開發(fā)基于Springboot+Vue的計(jì)算機(jī)房管理系統(tǒng)是作為畢設(shè)作品進(jìn)行設(shè)計(jì)的,這個(gè)畢設(shè)作品是我在校進(jìn)行知識(shí)學(xué)習(xí)的一個(gè)畢業(yè)考核項(xiàng)目,也是檢驗(yàn)我通過網(wǎng)絡(luò)工具,圖書工具等學(xué)習(xí)工具進(jìn)行自學(xué)的能力水平,讓我在根據(jù)程序開發(fā)的需求分析初步完成程序功能之外,還接觸了程序的測試過程,了解程序測試的具體的過程,以及遇到問題怎么去尋找相應(yīng)的解決辦法等等,畢業(yè)作品的制作以及設(shè)計(jì)才是學(xué)校對我真正的考驗(yàn)。
在程序軟件沒能進(jìn)行開發(fā)之前,我去了學(xué)校的圖書館借了有關(guān)數(shù)據(jù)庫操作的書籍,在查看了sqlserver和mysql兩種數(shù)據(jù)庫的相關(guān)知識(shí)之后,我最后選擇了我比較熟悉的mysql數(shù)據(jù)庫。在編程語言的抉擇上,由于自己之前接觸過Java程序的開發(fā),所以為了讓我盡快在短時(shí)間內(nèi)完成程序制作,我確定用Java編程語言進(jìn)行程序編程。另外我從百度上下載了很多的有關(guān)信息增加,信息刪除等操作的源代碼,并通過不斷調(diào)試以及完成配套的數(shù)據(jù)庫的設(shè)計(jì),開始完成程序的各個(gè)部分的功能。每當(dāng)我粗心大意,致使我深陷程序開發(fā)困擾不能自拔之時(shí),值得慶幸的是,我就會(huì)得到老師,還有我的寢室同學(xué)的耐心指導(dǎo)。
歷經(jīng)長達(dá)幾個(gè)月的畢業(yè)作品制作,我憑借自己的知識(shí)技能,還有大家的指導(dǎo)幫助,能夠在學(xué)校規(guī)定的時(shí)間段之內(nèi)提交畢業(yè)作品。雖然已經(jīng)算是完成了畢業(yè)作品,但是付出了這么多心血,還是想把這個(gè)作品做得更加完美一點(diǎn)。針對我的畢業(yè)作品學(xué)生信息管理系統(tǒng),我覺得還有很多方面需要完善,第一就是界面上需要細(xì)微調(diào)整,比如色彩搭配有點(diǎn)違背廣眾的審美,需要細(xì)微調(diào)整,還有系統(tǒng)里面的字體大小也需要調(diào)大一點(diǎn),太小的字體看起來有些費(fèi)眼。然后在程序的功能上因?yàn)樽约旱娜腴T開發(fā)水平的影響,所以目前只能做到這個(gè)境界,這個(gè)系統(tǒng)相比其他類似系統(tǒng)來說功能很簡單,邏輯結(jié)構(gòu)設(shè)計(jì)得也比較合理。
自己一個(gè)人完成程序的開發(fā),我不僅親自體驗(yàn)了程序的開發(fā)流程,體驗(yàn)到了程序開發(fā)的各種不易。這種體驗(yàn)也還加深了我對知識(shí)的尊重。學(xué)海無涯,知識(shí)不是大學(xué)短短四年就能學(xué)完的,在大學(xué)學(xué)到的知識(shí)在最終經(jīng)歷檢驗(yàn)時(shí),才會(huì)深深地明白自己的知識(shí)積累原來還很淺薄。所以今后不管身在何處,自己的學(xué)習(xí)心態(tài)一定要時(shí)刻體現(xiàn)出來,要深刻明白知識(shí)學(xué)到手里就是自己的。同時(shí),自己也不必過多抱怨學(xué)到的知識(shí)沒有用處,相信學(xué)到的知識(shí)總會(huì)有派上用處的那天。不要等到需要用時(shí)再去學(xué)習(xí)知識(shí),那樣就會(huì)導(dǎo)致自己錯(cuò)失很多本該屬于自己的機(jī)遇。
八、源碼獲?。?/h4>
大家點(diǎn)贊、收藏、關(guān)注、評論啦 、查看????????????獲取項(xiàng)目下載鏈接,博主聯(lián)系方式????????????文章來源:http://www.zghlxwxcb.cn/news/detail-609030.html
鏈接點(diǎn)擊直達(dá):下載鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-609030.html
到了這里,關(guān)于基于Springboot+Vue的計(jì)算機(jī)房管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!