Vue+SpringBoot打造大學計算機課程管理平臺

在這里插入圖片描述


目錄

  • 一、摘要
    • 1.1 項目介紹
    • 1.2 項目錄屏
  • 二、功能模塊
    • 2.1 實驗課程檔案模塊
    • 2.2 實驗資源模塊
    • 2.3 學生實驗模塊
  • 三、系統設計
    • 3.1 用例設計
    • 3.2 數據庫設計
      • 3.2.1 實驗課程檔案表
      • 3.2.2 實驗資源表
      • 3.2.3 學生實驗表
  • 四、系統展示
  • 五、核心代碼
    • 5.1 一鍵生成實驗
    • 5.2 提交實驗
    • 5.3 批閱實驗
    • 5.4 新增實驗資源
    • 5.5 查詢實驗課程
  • 六、免責說明


一、摘要

1.1 項目介紹

大學計算機課程管理平臺包含實驗課程模塊、實驗資源模塊、學生實驗模塊,前端采用Vue.js,采用View UI組件庫美化界面,后端采用SpringBoot框架。在操作系統、開發語言、服務器,數據庫、連接技術方面,對應使用Window操作系統、Java語言、Tomcat服務器、MySql數據庫以及MyBatis技術完成系統搭建,大學計算機課程管理平臺基于B/S架構,采用前后端分離架構,用戶可以在系統上查詢計算機實驗課程、下載實驗資源。

隨著計算機技術日漸成熟,它已進入人類社會的各個領域并發揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對學校的課程信息進行管理,與手工維護課程相比,有巨大的的優勢。越來越多的高校開始采用大學計算機課程管理平臺,將學生選擇的課程和課程資源通過網絡進行管理,為學生、教師和教務管理人員提供便利。

大學計算機課程管理平臺使用Idea開發工具完成了編碼實現。前端采用Vue.js,采用View UI組件庫美化界面,后端采用SpringBoot框架。在操作系統、開發語言、服務器,數據庫、連接技術方面,對應使用Window操作系統、Java語言、Tomcat服務器、MySql數據庫以及MyBatis技術完成系統搭建。該系統基于B/S架構,采用前后端分離架構,用戶可以在系統上查詢計算機實驗課程、下載實驗資源。

1.2 項目錄屏


二、功能模塊

在這里插入圖片描述

2.1 實驗課程檔案模塊

實驗課程檔案模塊是高校實驗教育中用于記錄和管理實驗課程信息的模塊,實驗課程檔案模塊可以記錄和管理實驗教學的過程和結果,幫助教師更好地評估學生的知識獲取水平和實驗操作技能,確保實驗教學質量,實驗課程檔案模塊可以記錄實驗教學的詳細過程和結果,使教師能夠在后續的實驗教學中更有效地管理教學,安排教育資源,提高實驗教學的效率,實驗課程檔案模塊提供了豐富的實驗數據和結果,使教師能夠輕松評估和改進自己的實驗課程,并為未來的實驗教育提供有力支持,實驗課程檔案模塊記錄了實驗教學的基本信息、過程和結果,可以為實驗教學的研究和考核提供基礎數據和資料,實驗課程檔案模塊對高校實驗教學是非常必要的,通過實驗課程檔案模塊,可以保證實驗教育的質量,提高實驗教育的效率,方便課堂評估,加強實驗教育和研究,為實驗教育的標準化、標準化和信息化提供有力支撐。

2.2 實驗資源模塊

實驗資源模塊是用于管理教育機構中與科學實驗相關的資源的模塊,實驗資源模塊可以統一管理各類實驗設備、設備、文獻等資源,并進行分類、編號、記錄等操作,使實驗資源更加規范、規范、便捷,編寫、提供參考資料和教材,促進學生的實驗自主性、創新性和探索性,提高實驗教育效果,實驗資源模塊可以提供智能輔助服務,使實驗資源的使用更加高效、經濟和安全,如網上購物、預訂使用和維護,實驗資源模塊不僅可以支持實驗教育,還可以為科學研究提供必要的技術支持和數據分析,促進學術研究的發展。實驗資源模塊對于教育和研究機構來說是非常必要的,該模塊可以統一實驗資源的管理,提高實驗教育的有效性,節省成本和時間,支持科學研究,同時,實驗資源模塊可以促進和幫助教育科研機構的數字化轉型和智能化升級。

2.3 學生實驗模塊

學生實驗模塊是一種用于管理和組織學生實驗的教育軟件模塊,學生實驗模塊使學生對教學內容和理論知識有更直觀的理解,并通過實際操作提高實踐能力,學生實驗模塊允許學生自己操作設備和工具,并具有移動雙手和創新的能力。學生實驗模塊幫助學生加深對課程內容的理解,加深對課程的理解,學生實驗模塊可以為教師提供全面的實驗計劃、操作指導和評估系統,并通過實驗數據進行分析和反饋,以提高教育質量和效果。通過學生實驗模塊,可以提高學生的實踐能力和動手能力,加深他們對教學的理解和理解,并提供更全面的教育支持和反饋,以提高教學質量和效果。


三、系統設計

3.1 用例設計

在這里插入圖片描述

3.2 數據庫設計

3.2.1 實驗課程檔案表

在這里插入圖片描述

3.2.2 實驗資源表

在這里插入圖片描述

3.2.3 學生實驗表

在這里插入圖片描述


四、系統展示

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述


五、核心代碼

5.1 一鍵生成實驗

@RequestMapping(value = "/oneCreateExp", method = RequestMethod.GET)
@ApiOperation(value = "一鍵生成實驗")
public Result<Object> oneCreateExp(@RequestParam String id){ExperimentCurriculum curriculum = iExperimentCurriculumService.getById(id);if(curriculum == null) {return ResultUtil.error("實驗不存在");}// 刪除原來的QueryWrapper<Experiment> oldQw = new QueryWrapper<>();oldQw.eq("curriculum_id",curriculum.getId());iExperimentService.remove(oldQw);// 生成新的QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("type",0);List<User> studentList = iUserService.list(userQw);for (User stu : studentList) {Experiment e = new Experiment();e.setCurriculumId(curriculum.getId());e.setCurriculumName(curriculum.getTitle());e.setStudentId(stu.getId());e.setStudentName(stu.getNickname());e.setExpResult("");e.setExpReport("");e.setUploadTime("");e.setGrade(BigDecimal.ZERO);e.setCheckFlag(false);e.setCheckTime("");e.setCheckUser("");iExperimentService.saveOrUpdate(e);}return ResultUtil.success();
}

5.2 提交實驗

@RequestMapping(value = "/upload", method = RequestMethod.GET)
@ApiOperation(value = "提交實驗")
public Result<Object> upload(@RequestParam String id,@RequestParam String result,@RequestParam String url){Experiment exp = iExperimentService.getById(id);if(exp == null) {return ResultUtil.error("實驗不存在");}exp.setExpResult(result);exp.setExpReport(url);exp.setUploadTime(DateUtil.now());iExperimentService.saveOrUpdate(exp);return ResultUtil.success();
}

5.3 批閱實驗

@RequestMapping(value = "/check", method = RequestMethod.GET)
@ApiOperation(value = "批閱實驗")
public Result<Object> check(@RequestParam String id,@RequestParam BigDecimal grade){Experiment exp = iExperimentService.getById(id);if(exp == null) {return ResultUtil.error("實驗不存在");}User currUser = securityUtil.getCurrUser();exp.setGrade(grade);exp.setCheckFlag(true);exp.setCheckTime(DateUtil.now());exp.setCheckUser(currUser.getNickname());iExperimentService.saveOrUpdate(exp);return ResultUtil.success();
}

5.4 新增實驗資源

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增實驗資源")
public Result<ExperimentResources> insert(ExperimentResources experimentResources){ExperimentCurriculum curriculum = iExperimentCurriculumService.getById(experimentResources.getCurriculumId());if(curriculum == null) {return ResultUtil.error("實驗課程不存在");}experimentResources.setCurriculumName(curriculum.getTitle());String fileUrl = experimentResources.getFileUrl();if(!ZwzNullUtils.isNull(fileUrl)) {String[] split = fileUrl.split("/");File f = iFileService.getById(split[split.length - 1]);if(f != null) {experimentResources.setFileId(f.getId());experimentResources.setFileName(f.getName());experimentResources.setFileSize(f.getSize());}}iExperimentResourcesService.saveOrUpdate(experimentResources);return new ResultUtil<ExperimentResources>().setData(experimentResources);
}

5.5 查詢實驗課程

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢實驗課程")
public Result<IPage<ExperimentCurriculum>> getByPage(@ModelAttribute ExperimentCurriculum experimentCurriculum ,@ModelAttribute PageVo page){QueryWrapper<ExperimentCurriculum> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841795' OR role_id = '1536606659751841799')");if(iUserService.count(userQw) < 1L) {qw.eq("teacher_id",currUser.getId());}if(!ZwzNullUtils.isNull(experimentCurriculum.getTitle())) {qw.like("title",experimentCurriculum.getTitle());}if(!ZwzNullUtils.isNull(experimentCurriculum.getContent1())) {qw.like("content1",experimentCurriculum.getContent1());}if(!ZwzNullUtils.isNull(experimentCurriculum.getTeacherName())) {qw.like("teacher_name",experimentCurriculum.getTeacherName());}IPage<ExperimentCurriculum> data = iExperimentCurriculumService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<ExperimentCurriculum>>().setData(data);
}

六、免責說明

  • 本項目僅供個人學習使用,商用授權請聯系博主,否則后果自負。
  • 博主擁有本軟件構建后的應用系統全部內容所有權及獨立的知識產權,擁有最終解釋權。
  • 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。

下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!

  1. 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
  2. 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
  3. 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
  4. 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716132.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716132.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716132.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

131. 分割回文串(力扣LeetCode)

文章目錄 131. 分割回文串題目描述回溯代碼 131. 分割回文串 題目描述 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 示例 1&#xff1a; 輸入&#xf…

Android 架構MVI、MVVM、MVC、MVP

目錄 一、MVC&#xff08;Model-View-Controller&#xff09; 二、 MVP&#xff08;Model-View-Presenter&#xff09; 三. MVVM&#xff08;Model-View-ViewModel&#xff09; 四. MVI&#xff08;Model-View-Intent&#xff09; 五.MVI簡單實現 先簡單了解一下MVC、MVP和…

索引使用規則6——單列索引聯合索引

1、單列索引 單列索引&#xff1a;即一個索引只包含單個列 舉個例子 1.1、給phone和那么建立索引 create index index_name on tb_qianzhui(name); create index index_phone on tb_qianzhui(phone);1.2、查詢發現可能的索引有好幾個&#xff0c;但是最終選擇了phone的索引…

軟考 系統分析師系列知識點之詳細調查(2)

接前一篇文章&#xff1a;軟考 系統分析師系列知識點之詳細調查&#xff08;1&#xff09; 所屬章節&#xff1a; 第10章. 系統分析 第2節. 詳細調查 在系統規劃階段&#xff0c;通過初步調查&#xff0c;系統分析師已經對企業的組織結構、系統功能等有了大致的了解。但是&…

蘿卜大雜燴 | 提高數據科學工作效率的 8 個 Python 庫

本文來源公眾號“蘿卜大雜燴”&#xff0c;僅用于學術分享&#xff0c;侵權刪&#xff0c;干貨滿滿。 原文鏈接&#xff1a;提高數據科學工作效率的 8 個 Python 庫 在進行數據科學時&#xff0c;可能會浪費大量時間編碼并等待計算機運行某些東西。所以我選擇了一些 Python 庫…

Vue3中的Hooks詳解

vue3帶來了Composition API&#xff0c;其中Hooks是其重要組成部分。之前我寫過一篇關于vue3 hooks的文章比較簡單 Vue3從入門到刪庫 第十一章&#xff08;自定義hooks&#xff09; 所以本文將深入探討Vue3中Hooks&#xff0c;幫助你在Vue3開發中更加得心應手。 一、Vue3 Hoo…

貪吃蛇(C語言)步驟講解

一&#xff1a;文章大概 使用C語言在windows環境的控制臺中模擬實現經典小游戲 實現基本功能&#xff1a; 1.貪吃蛇地圖繪制 2.蛇吃食物的功能&#xff08;上&#xff0c;下&#xff0c;左&#xff0c;右方向控制蛇的動作&#xff09; 3.蛇撞墻死亡 4.計算得分 5.蛇身加…

[C語言]——C語言常見概念(1)

目錄 一.C語言是什么、 二.C語言的歷史和輝煌 三.編譯器的選擇&#xff08;VS2022為例&#xff09; 1.編譯和鏈接 2.編譯器的對比 3.VS2022 的優缺點 四.VS項目和源文件、頭文件介紹 五.第?個C語言程序 ??????? 一.C語言是什么、 ?和?交流使?的是?然語?&…

【python】爬取鏈家二手房數據做數據分析【附源碼】

一、前言、 在數據分析和挖掘領域中&#xff0c;網絡爬蟲是一種常見的工具&#xff0c;用于從網頁上收集數據。本文將介紹如何使用 Python 編寫簡單的網絡爬蟲程序&#xff0c;從鏈家網上海二手房頁面獲取房屋信息&#xff0c;并將數據保存到 Excel 文件中。 二、效果圖&#…

【JS】解構賦值注意點,解構賦值報錯

報錯代碼 const 小明 { email: 6, pwd: 66 } const 小剛 { email: 9, pwd: 99 }const { email } 小明 const { email } 小剛 報錯圖 原因 2個常量重復&#xff0c;重復在同一個作用域內是不能重復的&#xff0c;例如大括號內{const a 1; const a 2} 小伙伴A提問 問&…

Redis-基礎篇

Redis是一個開源、高性能、內存鍵值存儲數據庫&#xff0c;由 Salvatore Sanfilippo&#xff08;網名antirez&#xff09;創建&#xff0c;并在BSD許可下發布。它不僅可以用作緩存系統來加速數據訪問&#xff0c;還可以作為持久化的主數據存儲系統或消息中間件使用。Redis因其數…

leetcode:37.解數獨

題目理解&#xff1a;本題中棋盤的每一個位置都要放一個數字&#xff08;而N皇后是一行只放一個皇后&#xff09;&#xff0c;并檢查數字是否合法&#xff0c;解數獨的樹形結構要比N皇后更寬更深。 代碼實現&#xff1a;

SpringBoot+Redis 解決海量重復提交問題,yyds!

在實際的開發項目中,一個對外暴露的接口往往會面臨很多次請求&#xff0c;我們來解釋一下冪等的概念&#xff1a;任意多次執行所產生的影響均與一次執行的影響相同。按照這個含義&#xff0c;最終的含義就是 對數據庫的影響只能是一次性的&#xff0c;不能重復處理。如何保證其…

?動類型轉換、強制類型轉換

為何short s1 1;是對的&#xff0c;而float f3.4;是錯的&#xff1f; 整數直接量&#xff0c;默認是int型。所以int a 4L; 會報錯&#xff0c;但是long l 4; 這樣不會&#xff0c;因為這樣會形成一個自動類型的轉換&#xff0c;int類型自動轉換為long類型 小數直接量&#…

JetBrains Gateway Github Copilot 客戶端插件和主機插件

JetBrains Gateway可以通過插件支持Github Copilot&#xff08;需另行注冊&#xff09;。 需要安裝插件 客戶端&#xff0c;而非插件 主機&#xff0c;如圖所示&#xff1a; 大概是因為代碼顯示在客戶端&#xff08;運行在本地的IDE&#xff09;&#xff1f;

NOC2023軟件創意編程(學而思賽道)python初中組復賽真題

目錄 下載打印原文檔做題: 軟件創意編程 一、參賽范圍 1.參賽組別:小學低年級組(1-3 年級)、小學高年級組(4-6 年級)、初中組。 2.參賽人數:1 人。 3.指導教師:1 人(可空缺)。 4.每人限參加 1 個賽項。 組別確定:以地方教育行政主管部門(教委、教育廳、教育局) 認…

Python 潮流周刊#40:白宮建議使用 Python 等內存安全的語言

△△請給“Python貓”加星標 &#xff0c;以免錯過文章推送 你好&#xff0c;我是貓哥。這里每周分享優質的 Python、AI 及通用技術內容&#xff0c;大部分為英文。本周刊開源&#xff0c;歡迎投稿[1]。另有電報頻道[2]作為副刊&#xff0c;補充發布更加豐富的資訊&#xff0c;…

三層靶機靶場之環境搭建

下載&#xff1a; 鏈接&#xff1a;百度網盤 請輸入提取碼 提取碼&#xff1a;f4as 簡介 2019某CTF線下賽真題內網結合WEB攻防題庫&#xff0c;涉 及WEB攻擊&#xff0c;內網代理路由等技術&#xff0c;每臺服務器存在一個 Flag&#xff0c;獲取每一 個Flag對應一個積分&…

在docker中搭建selenium 爬蟲環境(3分鐘快速搭建)

1、安裝docker 省略 2、拉取鏡像 docker pull selenium/standalone-chrome-debug 3、運行容器 docker run -d -p 4444:4444 -p 5900:5900 -v C:\Users\Public\VNC_Donwnloads:/home/seluser/Downloads --memory6g --name selenium_chrome selenium/standalone-chrome-debu…

Vue中commit和dispatch區別及其用法辨析

在Vue中&#xff0c;commit和dispatch是兩個用于觸發 Vuex store 中的 mutations 和 actions 的方法。 區別 commit: 用于觸發 mutations&#xff0c;即直接修改 state 的同步操作。通過commit方法可以調用 store 中的 mutations&#xff0c;并且只能同步地執行。使用方式如下…