案例025:基于微信小程序的移動學習平臺的設計與實現

文末獲取源碼

開發語言:Java

框架:SSM

JDK版本:JDK1.8

數據庫:mysql 5.7

開發軟件:eclipse/myeclipse/idea

Maven包:Maven3.5.4

小程序框架:uniapp

小程序開發軟件:HBuilder X

小程序運行軟件:微信開發者

目錄

前言

系統展示

管理員功能實現

教師管理

課程分類管理

學生管理

作業信息管理

課程資源管理

教師功能實現

課程信息

課程資源

作業信息

學生信息

學生功能實現

課程資源

課程信息

作業信息

代碼實現

登錄功能實現代碼

注冊功能實現代碼

密碼重置功能實現代碼

修改信息功能實現代碼

刪除信息功能實現代碼

保存信息功能實現代碼


前言

由于APP軟件在開發以及運營上面所需成本較高,而用戶手機需要安裝各種APP軟件,因此占用用戶過多的手機存儲空間,導致用戶手機運行緩慢,體驗度比較差,進而導致用戶會卸載非必要的APP,倒逼管理者必須改變運營策略。隨著微信小程序的出現,解決了用戶非獨立APP不可訪問內容的痛點,所以很多APP軟件都轉向微信小程序。本次課題就運用了微信小程序技術開發一個基于微信小程序的移動學習平臺。

基于微信小程序的移動學習平臺借助微信開發者工具開發用戶前端,使用SSM框架和Java語言開發管理員后臺,使用Mysql創建數據表保存本系統產生的數據。系統可以提供信息顯示和相應服務,其管理員對教師,課程分類,班級,課程,學生信息進行管理,審核學生作業,管理課程資源。教師查看課程,班級,學生,審核學生作業,管理課程資源。學生新增作業,查看作業審核信息,收藏或評論課程資源,查看班級和課程。

總之,基于微信小程序的移動學習平臺使得學生通過小程序就能學習課程,上交作業,教師通過小程序也能審核作業,管理課程資源。


系統展示

管理員功能實現

教師管理

管理員進入指定功能操作區之后可以管理教師。其頁面見下圖。管理員增刪改查教師信息,查看教師詳情。

課程分類管理

管理員進入指定功能操作區之后可以管理課程分類。其頁面見下圖。管理員增刪改查課程分類信息。

學生管理

管理員進入指定功能操作區之后可以管理學生。其頁面見下圖。管理員增刪改查學生信息,查看學生詳情信息。

?

作業信息管理

管理員進入指定功能操作區之后可以管理學生作業。其頁面見下圖。管理員增刪改查學生作業,查看學生作業詳情,審核學生的作業。

?

課程資源管理

管理員進入指定功能操作區之后可以管理課程資源。其頁面見下圖。管理員增刪改查課程資源信息,查看學生提交的課程資源評論信息。

?

教師功能實現

課程信息

教師進入指定功能操作區之后可以查看課程信息。其頁面見下圖。教師提交班級名稱查詢對應的課程,教師點擊課程信息即可查看課程詳細內容。

?

課程資源

教師進入指定功能操作區之后可以管理課程資源。其頁面見下圖。教師新增課程資源,提交課程名稱獲取對應的課程資源,修改,刪除頁面內顯示的課程資源信息。

?

作業信息

教師進入指定功能操作區之后可以審核學生作業。其頁面見下圖。教師提交學生的名字查詢其上交的作業,并對學生作業進行審核。

?

學生信息

教師進入指定功能操作區之后可以查看學生。其頁面見下圖。教師通過學號獲取學生信息,點擊學生頭像查看學生介紹。

?

學生功能實現

課程資源

學生進入指定功能操作區之后可以查看課程資源信息。其頁面見下圖。學生在查看課程資源介紹信息時,可以點擊紅色五角星收藏課程資源,可以點贊或提交評論。

?

課程信息

學生進入指定功能操作區之后可以查看課程信息。其頁面見下圖。學生查看課程明細時,可以在頁面底端發布課程留言。

?

作業信息

學生進入指定功能操作區之后可以新增作業。其頁面見下圖。學生新增作業,刪除頁面上顯示的作業,點擊學生頭像查看教師對學生作業的審核情況。

?


代碼實現

登錄功能實現代碼

@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("賬號或密碼不正確");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}

注冊功能實現代碼

@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用戶已存在");}userService.insert(user);return R.ok();}

密碼重置功能實現代碼

@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("賬號不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密碼已重置為:123456");}

修改信息功能實現代碼

 @RequestMapping("/update")public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {return R.error("用戶名已存在。");}userService.updateById(user);//全部更新return R.ok();}

刪除信息功能實現代碼

@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}

保存信息功能實現代碼

@PostMapping("/save")public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用戶已存在");}userService.insert(user);return R.ok();}

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

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

相關文章

[C++歷練之路]優先級隊列||反向迭代器的模擬實現

W...Y的主頁 &#x1f60a; 代碼倉庫分享&#x1f495; &#x1f354;前言&#xff1a; 在C的宇宙中&#xff0c;優先隊列似乎是一座巨大的寶庫&#xff0c;藏匿著算法的珍寶。而就在這片代碼的天空下&#xff0c;我們不僅可以探索優先隊列的神奇&#xff0c;還能夠揭開反向迭…

shutil和fileinput模塊:文件操作的最佳實踐

在Python中&#xff0c;shutil和fileinput模塊是處理文件和輸入/輸出(I/O)操作的有力工具。shutil模塊提供了一種在Python中操作文件的高級接口&#xff0c;而fileinput模塊則允許我們輕松地讀取多個輸入流。 shutil模塊 shutil模塊是Python的標準庫之一&#xff0c;提供了很…

【【Linux系統下常用指令學習 之 二 】】

Linux系統下常用指令學習 之 二 文件查詢和搜索 文件的查詢和搜索也是最常用的操作&#xff0c;在嵌入式 Linux 開發中常常需要在 Linux 源碼文件中查詢某個文件是否存在&#xff0c;或者搜索哪些文件都調用了某個函數等等。 1、命令 find find 命令用于在目錄結構中查找文件…

BUUCTF [ACTF新生賽2020]outguess 1

BUUCTF:https://buuoj.cn/challenges 題目描述&#xff1a; 得到的 flag 請包上 flag{} 提交。 密文&#xff1a; 下載附件&#xff0c;得到一堆文件。 解題思路&#xff1a; 1、根據題目和flag.txt文件提示&#xff0c;猜測為outguess隱寫。 outguess下載安裝 kail 終端命…

數字鄉村:科技賦能農村產業升級

數字鄉村&#xff1a;科技賦能農村產業升級 數字鄉村是指通過信息技術和數字化手段&#xff0c;推動農業現代化、農村經濟發展和農民增收的一種新模式。近年來&#xff0c;隨著互聯網技術的飛速發展&#xff0c;數字鄉村開始在全國范圍內迅速興起&#xff0c;為鄉村經濟注入了新…

leedcode 刷題 - 除自身以外數組的乘積 - 和為 K 的子數組

I238. 除自身以外數組的乘積 - 力扣&#xff08;LeetCode&#xff09; 給你一個整數數組 nums&#xff0c;返回 數組 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在…

AdaBoost提升分類器性能

目錄 AdaBoost算法原理 AdaBoost工作詳情 初始權重分配 第一輪 第二輪 后續輪次 最終模型 AdaBoost的API解釋 AdaBoost 對房價進行預測 AdaBoost 與決策樹模型的比較 結論 AdaBoost算法原理 在數據挖掘中&#xff0c;分類算法可以說是核心算法&#xff0c;其中 Ada…

gitee推薦-PHP面試準備的資料

該內容為giee項目。PHP-Interview: 這個項目是自己準備PHP面試整理的資料。包括PHP、MySQL、Linux、計算機網絡等資料。方便自己以后查閱&#xff0c;會不定期更新&#xff0c;歡迎提交pr&#xff0c;如果錯誤&#xff0c;請指出&#xff0c;謝謝 在線預覽地址&#xff1a;Intr…

leetcode面試經典150題——31 無重復字符的最長子串(方法二極簡代碼!!!)

題目&#xff1a; 無重復字符的最長子串 描述&#xff1a; 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長子串 的長度。 示例 1: 輸入: s “abcabcbb” 輸出: 3 解釋: 因為無重復字符的最長子串是 “abc”&#xff0c;所以其長度為 3。 leetcode鏈接 方法…

【LeetCode刷題筆記】DFSBFS(三)

圖的基礎知識 鄰接矩陣是一個二維表,其中橫縱坐標交叉的格子值為 1 的表示這兩個頂點是連通的,否則是不連通的。

Python-csv庫進行數據保存和讀寫

在 Python 中使用 CSV 文件非常簡單&#xff0c;Python 提供了內置的 csv 模塊來處理 CSV 文件。你可以使用 csv 模塊來讀取、寫入和操作 CSV 文件中的數據。 基礎使用 讀取 CSV 文件 python import csv# 打開 CSV 文件進行讀取 with open(file.csv, moder) as file:reader …

NVM得介紹和詳細使用教程

NVM???????&#xff08;Node Version Manager&#xff09;是一個用于管理多個Node.js版本的工具。它允許您在同一臺計算機上輕松地切換和管理不同的Node.js版本。以下是NVM的介紹和詳細使用教程&#xff1a; 安裝NVM&#xff1a; 首先&#xff0c;您需要在計算機上安裝N…

C#串口通信從入門到精通(27)——高速通信下解決數據處理慢的問題(20ms以內)

前言 我們在開發串口通信程序時,有時候會遇到比如單片機或者傳感器發送的數據速度特別快,比如10ms、20ms發送一次,并且每次發送的數據量還比較大,如果按照常規的寫法,我們會發現接收的數據還沒處理完,新的數據又發送過來了,這就會導致處理數據滯后,軟件始終處理的不是…

python樹的雙親存儲結構

這種存儲結構是一種順序存儲結構&#xff0c;采用元素形如“[結點值&#xff0c;雙親結點索引]”的列表表示。通常每個結點有唯一的索引(或者偽地址&#xff09;,根結點的索引為0&#xff0c;它沒有雙親結點&#xff0c;其雙親結點的索引為-1。例如&#xff0c;所示的樹對應的雙…

123. 股票買賣的最佳時機III(2次交易)

題目 題解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 狀態定義 dp[i][j][k]代表在第i天&#xff0c;被允許完成j次交易時&#xff0c;持有或者不持有的最大利潤。k0代表不持有&#xff0c;k1代表持有dp [[[0 for k in range(2)] for…

醫學生秋招攻略,面試時一定要注意這些方面!

醫學生別拖了&#xff0c;今年秋招已經過去一波熱度了&#xff0c;趕早不趕晚&#xff01;在籌備第二輪秋招以及明年的春招的醫學生一定要注意以下事項。 1.清晰目標 搜集秋招訊息 一定要早點多做準備&#xff0c;想清楚未來的目標&#xff0c;是繼續深造還是就業做醫生或者是…

FileReader與URL.createObjectURL實現圖片、視頻上傳預覽

之前做圖片、視頻上傳預覽常用的方案是先把文件上傳到服務器&#xff0c;等服務器返回文件的地址后&#xff0c;再把該地址字符串賦給img或video的src屬性&#xff0c;這才實現所謂的文件預覽。實際上這只是文件“上傳后再預覽”&#xff0c;這既浪費了用戶的時間&#xff0c;也…

java開發合同相關

【點我-這里送書】 本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(…

集合的分類

Python內建的集合類&#xff0c;有有序和無序之分&#xff0c;還有可修改和不可修改之分。 1 有序和無序 有序是說某數據集合中的每個元素都有一個位置信息&#xff0c;通常用index表示&#xff0c;可以借助這種集合類型名和位置信息訪問集合里的某元素值&#xff0c;在Pytho…

【開源】基于Vue.js的用戶畫像活動推薦系統

項目編號&#xff1a; S 061 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S061&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S061&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 興趣標簽模塊2.3 活…