Springboot+Layui英語單詞學習系統的設計與實現

文章目錄

    • 前言
    • 詳細視頻演示
    • 具體實現截圖
      • 后端框架SpringBoot
      • LayUI框架
      • 持久層框架MyBaits
    • 成功系統案例:
    • 參考代碼
    • 數據庫
    • 源碼獲取

前言

博主介紹:CSDN特邀作者、985高校計算機專業畢業、現任某互聯網大廠高級全棧開發工程師、Gitee/掘金/華為云/阿里云/GitHub等平臺持續輸出高質量技術內容、深耕Java、小程序、前端、python等技術領域和畢業項目實戰,以及程序定制化開發、全棧講解。

💯文末獲取源碼+數據庫💯
感興趣的可以先收藏起來,還有大家在畢設選題,項目以及論文編寫等相關問題都可以找我咨詢,希望幫助更多的人。

詳細視頻演示

視頻演示

具體實現截圖

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

后端框架SpringBoot

Spring Boot允許開發者快速構建出既可以獨立運行又滿足生產級別標準的Spring基礎應用程序。此框架通過提供一系列便捷的工具和服務,極大地促進了基于Spring的應用開發工作的效率和質量。通過提供一系列大型項目中常用的默認配置,Spring Boot最大化減少配置文件的使用,開發者能夠迅速啟動和運行Spring應用程序。

Spring Boot通過約定優于配置的原則,避免了許多傳統Spring應用開發時繁瑣的配置,該框架支持對內嵌服務器的自動配置,如Tomcat、Jetty或Undertow,從而簡化了Web應用的部署過程。

LayUI框架

Layui 制定了一套適合自身應用場景的輕量級模塊規范,以便在不同規模的項目中,也能對前端代碼進行很好的管理或維護。 Layui 的輕量級模塊系統,并非有意違背 CommonJS 和 ES Module ,而是試圖以更簡單的方式去詮釋高效,這種對返璞歸真的執念源于在主流標準尚未完全普及的前 ES5 時代,后來也成為 Layui 獨特的表達方式。
開發者可以將其視為「像使用普通 API 一樣來管理模塊」,在此前提下,組件的承載也變得輕松自如,開發者完全可以游刃在以瀏覽器為宿主的原生態的 HTML/CSS/JavaScript 的開發模式中,而不必卷入層出不窮的主流框架的浪潮之中,給心靈一個棲息之所。
當然,Layui 自然也不是一個模塊加載器,而是一套相對完整的 UI 解決方案,但與 Bootstrap 又并不相同,除了 HTML+CSS 本身的靜態化處理,Layui 的組件更傾向于 JavaScript 的動態化渲染,并為之提供了相對豐富和統一的 API,使用時,只需稍加熟悉,便可在各種交互中應付自如。

持久層框架MyBaits

MyBatis是一個開源的持久層框架,它可以幫助開發者簡化數據庫操作的編寫和管理。MyBatis的核心思想是將SQL語句和Java代碼分離,通過XML或注解的方式來描述數據庫操作,從而實現了數據訪問層的解耦和靈活性。

MyBatis的優勢主要包括以下幾點:

簡化數據庫操作:MyBatis通過提供強大的SQL映射功能,可以將Java對象與數據庫表進行映射,開發者無需手動編寫繁瑣的SQL語句,大大簡化了數據庫操作的編寫和維護。

靈活的SQL控制:MyBatis支持動態SQL,可以根據不同的條件和邏輯來動態生成SQL語句,使得查詢、更新等操作更加靈活和可控。

緩存支持:MyBatis提供了一級緩存和二級緩存的支持,可以有效減少數據庫的訪問次數,提高系統性能。

可擴展性強:MyBatis采用插件機制,可以方便地擴展和定制自己的功能,滿足各種不同的業務需求。

所有項目均為博主親自收集、開發并嚴格測試,確保源碼完整、可運行,無缺失依賴或兼容性問題!同學們拿到后就能使用!博主具備多年高級開發經驗,能深入講解代碼架構、核心邏輯及技術難點,助你高效掌握項目精髓。

成功系統案例:

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

參考代碼

package cn.example.demo.modules.english.controller;import cn.example.demo.common.dictionary.AuthCenterBaseInfo;
import cn.example.demo.common.model.response.HttpDataResponseResult;
import cn.example.demo.common.model.response.HttpResponseResult;
import cn.example.demo.common.model.service.ServiceResult;
import cn.example.demo.common.retrieval.PageBean;
import cn.example.demo.common.secure.authority.AuthEnable;
import cn.example.demo.common.tools.file.ExportFileUtils;
import cn.example.demo.common.tools.file.SimpleFileUtils;
import cn.example.demo.common.tools.file.office.ExcelFileUtils;
import cn.example.demo.common.tools.obj.DateAgeUtils;
import cn.example.demo.common.validation.constraint.ParamRegex;
import cn.example.demo.common.validation.groups.Update;
import cn.example.demo.modules.english.model.dto.EnglishBookDto;
import cn.example.demo.modules.english.model.entity.EnglishBook;
import cn.example.demo.modules.english.model.entity.EnglishWord;
import cn.example.demo.modules.english.service.EnglishBookService;
import cn.example.demo.modules.sys.model.entity.SysUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;/*** <p>* 英語書籍控制器* </p>** @author CodeUp* @create 2025/05/30 00:20:37*/
@Validated
@RestController
@RequestMapping("english/api/book")
@Api(tags = {"英語書籍操作接口"})
public class EnglishBookController {@Autowiredprivate AuthCenterBaseInfo authCenterBaseInfo;@Resourceprivate EnglishBookService englishBookService;@AuthEnable@Transactional@PostMapping(value = "add", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ApiOperation(value = "導入英語詞匯書")public HttpResponseResult addEnglishBook(@ApiParam(value = "英語詞匯文件") @RequestParam(value = "file") MultipartFile file,@ApiParam(value = "書籍編碼") @RequestParam(defaultValue = "") String bookCode,@ApiParam(value = "書籍名稱") @RequestParam(defaultValue = "") String bookName,@ApiParam(value = "描述") @RequestParam(defaultValue = "") String description) throws Exception {if (file == null) {return HttpDataResponseResult.isBadRequest("英語詞匯文件不能為空!", null);}if (StringUtils.isNotEmpty(bookCode) && englishBookService.isExistBookCode(bookCode)) {return HttpDataResponseResult.isBadRequest("該書籍編號已存在!");}EnglishBookDto dto = EnglishBookDto.builder().bookCode(bookCode).bookName(bookName).description(description).build();try {InputStream in = file.getInputStream();Workbook workbook = WorkbookFactory.create(in);// 保存EnglishBookServiceResult result = englishBookService.insertEnglishBook(dto, workbook.getSheetAt(0));if (result.getStatus() == HttpStatus.OK.value()) {EnglishBook englishBook = (EnglishBook) result.getData();// 備份詞匯書文件到本地ByteArrayOutputStream baOs = new ByteArrayOutputStream();workbook.write(baOs);ExportFileUtils.writeToFile(baOs.toByteArray(), englishBook.getFilePath());return HttpDataResponseResult.isSuccess("英語詞匯書籍【" + englishBook.getBookName() + "】上傳成功!", englishBook);}return HttpDataResponseResult.isNotModified(result.getMessage(), result.getData());} catch (IOException e) {return HttpDataResponseResult.isBadRequest("無法將Excel文件解析為內置對象,僅支持xls、xlsx格式的文件。Error ------> " + e.getMessage(), null);} catch (POIXMLException e) {return HttpDataResponseResult.isBadRequest("無法將Excel文件解析為內置對象,僅支持xls、xlsx格式的文件。Error ------> " + e.getMessage(), null);}}@AuthEnable@ApiOperation(value = "修改英語書籍")@PutMapping(value = "modify")@Transactionalpublic HttpResponseResult modifyEnglishBook(@RequestBody @Validated(Update.class) EnglishBookDto dto) {// 保存消息通知信息ServiceResult result = englishBookService.updateEnglishBook(dto);if (result.getStatus() == HttpStatus.OK.value()) {return HttpDataResponseResult.isSuccess("英語書籍【" + dto.getId() + "】已修改!", null);}return HttpDataResponseResult.isNotModified(result.getMessage(), result.getData());}@AuthEnable@ApiOperation(value = "查詢英語書籍")@GetMapping(value = "retrieval")public HttpResponseResult getEnglishBookList(@RequestParam(defaultValue = "") Integer id,@RequestParam(defaultValue = "") String bookCode,@RequestParam(defaultValue = "") String bookName,@RequestParam(defaultValue = "") String filePath,@RequestParam(defaultValue = "") String description,@RequestParam(defaultValue = "") Short status,@RequestParam(defaultValue = "") Integer questionNum,@ApiParam(value = "當前頁") @RequestParam(value = "page", defaultValue = "1") @ParamRegex.Integer String page,@ApiParam(value = "每頁大小") @RequestParam(value = "limit", defaultValue = "10") @ParamRegex.Integer String limit,HttpServletRequest request) {// 分頁條件PageBean<Object> pageBean = new PageBean<>();pageBean.setCurrentPage(Integer.parseInt(page));pageBean.setPageSize(Integer.parseInt(limit));PageBean result;SysUser user = (SysUser) request.getAttribute(authCenterBaseInfo.getTokenName());if (user.getUsername().equals("SuperAdmin") || user.getRoleIds().contains(1)) {} else {}result = englishBookService.queryEnglishBook(id, bookCode, bookName, filePath, description, status, questionNum, pageBean);if (result.getItems() == null || result.getItems().isEmpty()) {return HttpDataResponseResult.isNotFound("未查到記錄!", null);}return HttpDataResponseResult.isSuccess(result);}@AuthEnable@ApiOperation(value = "刪除英語書籍")@DeleteMapping(value = "remove/{id}")@Transactionalpublic HttpResponseResult deleteEnglishBook(@PathVariable @ParamRegex.Integer String id) {ServiceResult result = englishBookService.deleteEnglishBook(Integer.valueOf(id));if (result.getStatus() == HttpStatus.OK.value()) {return HttpDataResponseResult.isSuccess(result.getMessage(), result.getData());}return HttpDataResponseResult.isNotModified(result.getMessage(), result.getData());}@ApiOperation(value = "【英語詞匯書】模板導出")@GetMapping(value = "book_word_template/export")public HttpResponseResult exportEnglishWordTemplate(HttpServletResponse response) throws Exception {List<EnglishWord> result = new ArrayList<>();EnglishWord englishWord = EnglishWord.builder().word("hello").chinese("你好;喂").description("1.(用以打招呼或喚起注意)喂,你好。如:Hello, Jim! How are you?嗨!吉姆!你好嗎?\r\n" +"2.(用作打電話時的招呼語)喂\r\n" +"3.(表示驚訝等)嘿;啊\r\n" +"4.在跟打招呼用hello是不禮貌的,應該用Hi才是有禮貌的。").build();result.add(englishWord);// 生成表格并返回String title = "英語詞匯書(書名)";   // 表頭標題String fileName = title + "_" + DateAgeUtils.dateToString(new Date(), "yyyyMMdd#HHmmss") + ".xlsx";   // 文件名byte[] fileData = ExcelFileUtils.exportAsSheet(EnglishWord.class, result, "英語詞匯書", title, false);ExportFileUtils.responseBinaryFile(fileData, response, fileName);return null;}@ApiOperation(value = "本地【英語詞匯書】下載")@GetMapping(value = "english_book/export/{id}")public HttpResponseResult exportEnglishBook(@PathVariable @ParamRegex.Integer String id,HttpServletResponse response) throws Exception {EnglishBook englishBook = englishBookService.findEnglishBookById(Integer.valueOf(id));if (englishBook != null) {File file = new File(System.getProperty("user.dir") + File.separator + englishBook.getFilePath());if (file != null) {byte[] data = SimpleFileUtils.readFileAsByte(file);ExportFileUtils.responseBinaryFile(data, response, file.getName());return null;}}return HttpDataResponseResult.isNotFound("沒有文件可以下載", null);}@ApiOperation(value = "【英語詞匯書】字典列表")@GetMapping(value = "english_book/code_dict/list")public HttpResponseResult getEnglishBookDict() throws Exception {List<EnglishBook> englishBooks = englishBookService.queryAllEnglishBook();if (!englishBooks.isEmpty()) {List<HashMap<String, String>> bookCodes = englishBooks.stream().map(o -> {HashMap<String, String> map = new HashMap<>();map.put("code", o.getBookCode());map.put("name", o.getBookName());return map;}).collect(Collectors.toList());return HttpDataResponseResult.isSuccess(bookCodes);}return HttpDataResponseResult.isNotFound("沒有查到書籍編碼列表", null);}
}

數據庫

/*CREATE DATABASE /*!32312 IF NOT EXISTS*/`english_learn_sys` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `english_learn_sys`;DROP TABLE IF EXISTS `english_book`;CREATE TABLE `english_book` (`id` int(11) NOT NULL AUTO_INCREMENT,`book_code` varchar(100) NOT NULL,`book_name` varchar(200) NOT NULL,`file_path` varchar(500) NOT NULL,`description` text,`status` smallint(6) NOT NULL,`base_practice_num` int(11) DEFAULT NULL,`translate_practice_num` int(11) DEFAULT NULL,`exam_num` int(11) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `UK_l6rrt0kvgi4jer84tox9yp17n` (`book_code`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;/*Data for the table `english_book` */insert  into `english_book`(`id`,`book_code`,`book_name`,`file_path`,`description`,`status`,`base_practice_num`,`translate_practice_num`,`exam_num`) values (24,'senior_vocabulary_1','高中詞匯書','data/book/高中詞匯書#senior_vocabulary_1.xlsx','測試版;詞匯量:10',1,2,20,5),(25,'junior_vocabulary_01','初中英語詞匯書1','data/book/初中英語詞匯書1#junior_vocabulary_01.xlsx','測試專用',1,4,4,4),(27,'6109f95e6b984b9e9fa9c4ffc7fbc951','英語詞匯書-高階01','data/book/英語詞匯書-高階01#6109f95e6b984b9e9fa9c4ffc7fbc951.xlsx','測試用',1,5,5,5),(29,'c75e1144bc2646e0ad503f842f410df3','小學單詞書(一階段)','data/book/小學單詞書(一階段)#c75e1144bc2646e0ad503f842f410df3.xlsx','導入詞匯兼容測試:單詞自動識別',1,NULL,NULL,NULL);/*Table structure for table `english_word` */DROP TABLE IF EXISTS `english_word`;CREATE TABLE `english_word` (`id` int(11) NOT NULL AUTO_INCREMENT,`book_code` varchar(100) NOT NULL,`word_type` smallint(6) DEFAULT NULL,`word` varchar(100) NOT NULL,`chinese` varchar(200) NOT NULL,`pronounce_file` varchar(500) DEFAULT NULL,`description` text,`status` smallint(6) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8;/*Data for the table `english_word` */insert  into `english_word`(`id`,`book_code`,`word_type`,`word`,`chinese`,`pronounce_file`,`description`,`status`) values (44,'senior_vocabulary_1',1,'abandon','1.vt放棄, 遺棄;2.vt放任, 狂熱','data/pronounce/senior_vocabulary_1/abandon--_gb_1.mp3','a+band+on一個樂隊在演出,樂隊演出很放縱',1),(45,'senior_vocabulary_1',1,'abnormal','1.adj反常的, 變態的','data/pronounce/senior_vocabulary_1/abnormal--_gb_1.mp3','ab=相反,變壞 normal正常',1),(46,'senior_vocabulary_1',1,'abrupt','1.adj.突然的, 意想不到的;2.陡的, 險峻的','data/pronounce/senior_vocabulary_1/abrupt--_gb_1.mp3','rupt=break',1),(47,'senior_vocabulary_1',1,'absence','1.n.缺席;2.n.不注意; 心不在焉','data/pronounce/senior_vocabulary_1/absence--_gb_1.mp3','sence 存在,相關,ab相反 缺席的',1),(48,'senior_vocabulary_1',1,'absolute','1.adj.絕對的;完全的;2.adj 確定的','data/pronounce/senior_vocabulary_1/absolute--_gb_1.mp3','solut 松,解開 ',1),(49,'senior_vocabulary_1',1,'absorb','1. vt. 吸收(液體);2. vt. 支付;負擔','data/pronounce/senior_vocabulary_1/absorb--_gb_1.mp3','sorb吸收, absorb吸收掉',1),(50,'senior_vocabulary_1',1,'abstract','1.n. 摘要, 概要, 抽象','data/pronounce/senior_vocabulary_1/abstract--_gb_1.mp3','abs(離去)+tract(拉)→把大意從文中拉出來→摘要 ',1),(51,'senior_vocabulary_1',1,'abundance','1. n. 豐富, 充裕, 豐富充裕','data/pronounce/senior_vocabulary_1/abundance--_gb_1.mp3','abundance=a + bun(小面包)+ dance,形象化記憶,很多的螞蟻圍著一塊小面包在跳舞,因為豐收了',1),(52,'senior_vocabulary_1',1,'yield','1.v.出產,生長,生產;2.vi.(~to)屈服,屈從','data/pronounce/senior_vocabulary_1/yield--_gb_1.mp3','yi(已)+eld(老)----已經老了, 對有些事情就得屈服了',1),(53,'junior_vocabulary_01',1,'hello','你好;喂','data/pronounce/junior_vocabulary_01/hello--_gb_1.mp3','1.(用以打招呼或喚起注意)喂,你好。如:Hello, Jim! How are you?嗨!吉姆!你好嗎?\r\n2.(用作打電話時的招呼語)喂\r\n3.(表示驚訝等)嘿;啊\r\n4.在跟打招呼用hello是不禮貌的,應該用Hi才是有禮貌的。',1),(54,'junior_vocabulary_01',1,'legendary','傳奇','data/pronounce/junior_vocabulary_01/legendary--_gb_1.mp3','xxx',1),(55,'junior_vocabulary_01',2,'pay attention to','集中注意力于。。。',NULL,'xxx',1),(56,'junior_vocabulary_01',1,'unbelievable','難以置信','data/pronounce/junior_vocabulary_01/unbelievable--_gb_1.mp3','形容對某些事情感到非常驚訝',1),(57,'6109f95e6b984b9e9fa9c4ffc7fbc951',1,'engineer','工程師;設計師;機修工;技師;','data/pronounce/6109f95e6b984b9e9fa9c4ffc7fbc951/engineer--_gb_1.mp3','n.工程師;設計師;機修工;技師;技工;(船上的)輪機手;(飛機上的)機械師;工兵\nvt.密謀策劃;設計制造;改變…的基因(或遺傳)結構',1),(58,'6109f95e6b984b9e9fa9c4ffc7fbc951',1,'material','布料;原料;物質的;客觀存在的;','data/pronounce/6109f95e6b984b9e9fa9c4ffc7fbc951/material--_gb_1.mp3','n.布料;原料;(某一活動所需的)材料;素材;節目\nadj.實際的(非精神需求的);物質的;客觀存在的;重要的;必要的',1),(60,'6109f95e6b984b9e9fa9c4ffc7fbc951',1,'comprehensive','綜合的; 全部的; 所有的; ','data/pronounce/6109f95e6b984b9e9fa9c4ffc7fbc951/comprehensive--_gb_1.mp3','\nadj. 綜合的; 全部的; 所有的; (幾乎)無所不包的; 詳盡的; 綜合性的(接收各種資質的學生);\nn. (英國為各種資質的學生設立的)綜合中學;\n',1),(62,'6109f95e6b984b9e9fa9c4ffc7fbc951',1,'foundation','地基;房基;基礎;基本原理;','data/pronounce/6109f95e6b984b9e9fa9c4ffc7fbc951/foundation--_gb_1.mp3','地基;房基;基礎;基本原理;根據;基金會;(機構或組織的)創建,創辦;(化妝打底用的)粉底霜',1),(63,'6109f95e6b984b9e9fa9c4ffc7fbc951',1,'tortoise','烏龜; 龜; 陸龜;','data/pronounce/6109f95e6b984b9e9fa9c4ffc7fbc951/tortoise--_gb_1.mp3','烏龜; 龜; 陸龜;',1),(67,'c75e1144bc2646e0ad503f842f410df3',1,'although [??l?e??]','雖然;盡管','data/pronounce/c75e1144bc2646e0ad503f842f410df3/although--_gb_1.mp3','conj.',1),(68,'c75e1144bc2646e0ad503f842f410df3',1,'always [???lwe?z]','總是;一直;永遠','data/pronounce/c75e1144bc2646e0ad503f842f410df3/always--_gb_1.mp3','ad.',1),(69,'c75e1144bc2646e0ad503f842f410df3',1,'American [??mer?k?]','美國;美洲','data/pronounce/c75e1144bc2646e0ad503f842f410df3/american--_gb_1.mp3','n.',1),(70,'c75e1144bc2646e0ad503f842f410df3',1,'answer  [?ɑ?ns?(r); (US) ??ns?r]','回答,答復;答案 回答,答復;回信(作出)答案','data/pronounce/c75e1144bc2646e0ad503f842f410df3/answer--_gb_1.mp3','I couldn’t answer all the exam questions.\n我沒能作答全部的試卷問題。',1);/*Table structure for table `exam_score` */DROP TABLE IF EXISTS `exam_score`;CREATE TABLE `exam_score` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL,`book_code` varchar(100) NOT NULL,`score` int(11) NOT NULL,`point` int(11) NOT NULL,`exam_time` datetime(6) NOT NULL,`total_questions` int(11) DEFAULT NULL,`answer_true` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;/*Data for the table `exam_score` */insert  into `exam_score`(`id`,`user_id`,`book_code`,`score`,`point`,`exam_time`,`total_questions`,`answer_true`) values (2,8,'senior_vocabulary_1',80,0,'2021-06-01 22:33:32.469000',10,8),(3,8,'senior_vocabulary_1',100,10,'2021-06-01 22:39:05.041000',10,10),(6,1,'senior_vocabulary_1',78,0,'2021-06-06 15:12:09.303000',9,7),(7,1,'senior_vocabulary_1',89,0,'2021-06-06 15:37:52.799000',9,8),(8,1,'senior_vocabulary_1',100,10,'2021-06-06 15:42:34.753000',9,9),(9,1,'senior_vocabulary_1',89,0,'2021-06-06 16:04:04.247000',9,8),(10,1,'senior_vocabulary_1',100,10,'2021-06-06 16:11:22.697000',9,9),(11,1,'senior_vocabulary_1',11,0,'2021-06-06 16:14:44.424000',9,1),(12,1,'senior_vocabulary_1',100,10,'2021-06-06 17:23:11.299000',5,5),(13,1,'senior_vocabulary_1',60,0,'2023-01-20 00:47:10.619000',5,3);/*Table structure for table `sys_department` */DROP TABLE IF EXISTS `sys_department`;CREATE TABLE `sys_department` (`node` int(11) NOT NULL AUTO_INCREMENT,`parent_node` int(11) NOT NULL,`is_node` tinyint(1) NOT NULL,`is_directory` tinyint(1) NOT NULL,`dept_name` varchar(50) NOT NULL,`rank` int(11) NOT NULL,PRIMARY KEY (`node`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;/*Data for the table `sys_department` */insert  into `sys_department`(`node`,`parent_node`,`is_node`,`is_directory`,`dept_name`,`rank`) values (1,0,1,1,'系統級',0);/*Table structure for table `sys_menu` */DROP TABLE IF EXISTS `sys_menu`;CREATE TABLE `sys_menu` (`node` int(11) NOT NULL AUTO_INCREMENT,`parent_node` int(11) NOT NULL,`is_node` tinyint(1) NOT NULL,`is_directory` tinyint(1) NOT NULL,`title` varchar(50) NOT NULL,`type` smallint(6) NOT NULL,`open_type` varchar(50) DEFAULT NULL,`icon` varchar(300) DEFAULT NULL,`href` varchar(300) DEFAULT NULL,`rank` int(11) NOT NULL,PRIMARY KEY (`node`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;/*Data for the table `sys_menu` */insert  into `sys_menu`(`node`,`parent_node`,`is_node`,`is_directory`,`title`,`type`,`open_type`,`icon`,`href`,`rank`) values (2,0,1,0,'系統管理',0,'_iframe','layui-icon layui-icon-set-fill','sys/manage/user',50),(3,2,1,0,'菜單管理',1,'_iframe','layui-icon layui-icon layui-icon-diamond','system/menu/main',5),(8,0,1,0,'英語詞匯管理',1,'_iframe','layui-icon layui-icon layui-icon layui-icon layui-icon layui-icon layui-icon layui-icon-fire','english/word/main',18),(10,0,1,0,'英語書籍管理',1,'_iframe','layui-icon layui-icon layui-icon layui-icon layui-icon-component','english/book/main',17),(11,0,1,0,'成績單管理',1,'_iframe','layui-icon layui-icon layui-icon layui-icon-upload','english/score/main',39),(12,2,1,0,'用戶管理',1,'_iframe','layui-icon layui-icon layui-icon layui-icon layui-icon layui-icon-user','system/user/main',0),(13,2,1,0,'角色管理',1,'_iframe','layui-icon layui-icon-dialogue','system/role/main',2),(14,2,1,0,'部門管理',1,'_iframe','layui-icon layui-icon-group','system/dept/main',3),(15,0,1,0,'個人中心',0,NULL,'layui-icon layui-icon layui-icon layui-icon layui-icon-username',NULL,10),(17,15,1,0,'基本資料',1,'_iframe','layui-icon layui-icon-rate-solid','/system/user/own_center',1),(18,0,1,0,'首頁',1,'_iframe','layui-icon layui-icon layui-icon layui-icon layui-icon-theme','/english/dashboard',1),(19,0,1,0,'英語學習',1,'_iframe','layui-icon layui-icon layui-icon layui-icon-read','/english/study/main',12);/*Table structure for table `sys_resource` */DROP TABLE IF EXISTS `sys_resource`;CREATE TABLE `sys_resource` (`id` int(11) NOT NULL,`resource_name` varchar(100) NOT NULL,`uri` varchar(300) NOT NULL,`type` varchar(20) NOT NULL,`operation` varchar(20) NOT NULL,`description` text,`button` varchar(500) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_resource` *//*Table structure for table `sys_role` */DROP TABLE IF EXISTS `sys_role`;CREATE TABLE `sys_role` (`role_id` int(11) NOT NULL AUTO_INCREMENT,`role` varchar(30) NOT NULL,`description` text,`status` smallint(6) NOT NULL,PRIMARY KEY (`role_id`),UNIQUE KEY `UK_mwbqlu5c82jfd2w9oa9d6e87d` (`role`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;/*Data for the table `sys_role` */insert  into `sys_role`(`role_id`,`role`,`description`,`status`) values (1,'超級管理員','擁有系統內所有權限!',1),(2,'學生','可查看數據面板、編輯個人信息、英語練習、英語綜合測試。',1);/*Table structure for table `sys_role_menu` */DROP TABLE IF EXISTS `sys_role_menu`;CREATE TABLE `sys_role_menu` (`id` varchar(100) NOT NULL,`role_id` int(11) NOT NULL,`menu_id` int(11) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_role_menu` */insert  into `sys_role_menu`(`id`,`role_id`,`menu_id`) values ('3172dd0073b54e55911107642ed17132',2,18),('488b976768ca44379e278fe2e8d9368f',2,15),('8c645a7489524ad9ae7a555261e78a6f',2,17),('a1b6ec1b136442d59ca2404a8f88e20d',2,19),('dab2fa2cc4b24e139545270708acde94',2,11);/*Table structure for table `sys_role_resource` */DROP TABLE IF EXISTS `sys_role_resource`;CREATE TABLE `sys_role_resource` (`id` varchar(100) NOT NULL,`role_id` int(11) NOT NULL,`resource_id` int(11) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_role_resource` *//*Table structure for table `sys_user` */DROP TABLE IF EXISTS `sys_user`;CREATE TABLE `sys_user` (`user_id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(30) NOT NULL,`password` varchar(200) NOT NULL,`real_name` varchar(30) DEFAULT NULL,`avatar` varchar(300) NOT NULL,`sex` varchar(10) DEFAULT NULL,`dept` varchar(30) DEFAULT NULL,`duty` text,`phone` varchar(30) DEFAULT NULL,`email` varchar(50) DEFAULT NULL,`id_number` varchar(30) DEFAULT NULL,`create_time` datetime(6) NOT NULL,`last_modify_time` datetime(6) NOT NULL,`last_login_time` datetime(6) DEFAULT NULL,`status` smallint(6) NOT NULL,PRIMARY KEY (`user_id`),UNIQUE KEY `UK_51bvuyvihefoh4kp5syh2jpi4` (`username`),UNIQUE KEY `UK_emllwygadip430te0o46qf194` (`id_number`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;/*Data for the table `sys_user` */insert  into `sys_user`(`user_id`,`username`,`password`,`real_name`,`avatar`,`sex`,`dept`,`duty`,`phone`,`email`,`id_number`,`create_time`,`last_modify_time`,`last_login_time`,`status`) values (1,'SuperAdmin','$2a$10$xTFDod042ymCBOiTfTHPs.8Xs8qaox1Le2su4ihJ3bIFH5FHZBbMK','超級管理員','/admin/images/act.jpg','1','系統級','超級管理員;系統根用戶','13871231212','11912321@qq.com',NULL,'2021-04-26 03:49:45.319000','2021-04-29 23:31:25.182000',NULL,1),(8,'stu123','$2a$10$mFbbLUvibyFU2QCUQE25S.UARZkz3N3plqqiLhUCycqLQPh.VI3du','學生測試賬號1','/admin/images/account/portrait/default/avatar.jpg','0','系統級',NULL,'1381231231','1982139123@qq.com',NULL,'2021-05-30 10:27:36.803000','2023-01-20 00:56:10.636000',NULL,1);/*Table structure for table `sys_user_dept` */DROP TABLE IF EXISTS `sys_user_dept`;CREATE TABLE `sys_user_dept` (`id` varchar(100) NOT NULL,`user_id` int(11) NOT NULL,`dept_id` int(11) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_user_dept` */insert  into `sys_user_dept`(`id`,`user_id`,`dept_id`) values ('39ea7d6f135bdcdb3fbb71defb6b4683',1,1),('a5390b528a18892686b89bb593b1d050',8,1);/*Table structure for table `sys_user_role` */DROP TABLE IF EXISTS `sys_user_role`;CREATE TABLE `sys_user_role` (`id` varchar(100) NOT NULL,`user_id` int(11) NOT NULL,`role_id` int(11) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_user_role` */insert  into `sys_user_role`(`id`,`user_id`,`role_id`) values ('37f9b5a72b5f42afbb5aa37ef4a86239',1,1),('d7d3b52f5d5e4281afa2c119aa7d0b83',8,2);/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

源碼獲取

如需交流/獲取資料,請先【關注+私信】我,私信獲取源碼~

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

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

相關文章

主要分布于內側內嗅皮層的層Ⅲ的邊界向量細胞(BVCs)對NLP中的深層語義分析的積極影響和啟示

邊界向量細胞&#xff08;Boundary Vector Cells, BVCs&#xff09;主要分布于內側內嗅皮層&#xff08;MEC&#xff09;層Ⅲ&#xff0c;通過編碼環境邊界&#xff08;如墻壁、障礙物&#xff09;的距離和方向信息&#xff0c;為空間導航提供幾何參考框架。這一神經機制對自然…

Selenium是解決了什么問題的技術?

Selenium 是一種用于自動化瀏覽器操作的技術&#xff0c;主要解決了以下問題&#xff1a;1. 自動化測試 Selenium 最初是為了解決 Web 應用程序的自動化測試 問題而設計的。它可以幫助開發者和測試人員&#xff1a; 模擬用戶操作&#xff1a;如點擊按鈕、填寫表單、選擇下拉菜單…

JavaSE知識點(2)

目錄 訪問修飾符的區別 this關鍵字的作用 抽象類和接口有什么區別 抽象類可以定義構造方法嗎 但是接口不可以定義構造方法 Java支持多繼承嗎 接口可以多繼承嗎 繼承和抽象的區別&#xff1f; 抽象類和普通類的區別 成員變量和局部變量的區別&#xff1f; staic關鍵字…

(實用教程)Linux操作系統(二)

centos配置靜態ip 注意&#xff1a; 1.系統中的網關要與虛擬機編輯器中的網關保持一致 2.如果配置虛擬機編輯器后發現ping不通外網的時候&#xff0c;就要還原默認設置再進行配置 總結&#xff1a; 虛擬機編輯器需要配置ip&#xff0c;網關&#xff0c;其中ip網段以及最后一…

ThinkPHP8集成RabbitMQ的完整案例實現

ThinkPHP8集成RabbitMQ的完整案例實現一、安裝依賴&#xff1a;需通過Composer安裝php-amqplib庫?二、配置RabbitMQ三、生產者1、發送一個郵件&#xff0c;將任務發送到RabbitMQ隊列中。2、運行結果展示四、啟動消費者&#xff1a;命令行執行php think rabbitmq:consumer1&…

解密負載均衡:如何輕松提升業務性能

什么是負載均衡 負載均衡&#xff1a;Load Balance&#xff0c;簡稱LB&#xff0c;是一種服務或基于硬件設備等實現的高可用反向代理技術&#xff0c;負載均衡將特定的業務(web服務、網絡流量等)分擔給指定的一個或多個后端特定的服務器或設備&#xff0c;從而提高了 公司業務的…

mac neo4j install verifcation

本文使用conda環境安裝&#xff0c;neo4j所依賴jdk也采用conda install的方式安裝。 1 neo4j下載 點擊如下鏈接&#xff0c;選擇community, Linux/Mac Executor&#xff0c;點擊Download Community。 本文下載的安裝包是 neo4j-community-2025.06.2-unix.tar.gz 2 安裝neo4j …

【Oracle】Oracle分區表“排雷“指南:當ORA-14400錯誤找上門時如何優雅應對

引言&#xff1a;分區表里的"定時炸彈"凌晨三點的機房&#xff0c;你盯著屏幕上刺眼的ORA-14400: 插入的分區鍵值超出所有分區范圍錯誤&#xff0c;后背發涼。這個錯誤就像埋在分區表里的定時炸彈&#xff0c;一旦觸發就會讓整個應用癱瘓。但別慌&#xff01;本文將帶…

設計模式(十四)行為型:職責鏈模式詳解

設計模式&#xff08;十四&#xff09;行為型&#xff1a;職責鏈模式詳解職責鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;是 GoF 23 種設計模式中的行為型模式之一&#xff0c;其核心價值在于將多個處理對象&#xff08;處理器&#xff09;連接成一條鏈&am…

WAIC 2025 熱點解讀:如何構建 AI 時代的“視頻神經中樞”?

一、&#x1f310; WAIC 2025 大會看點&#xff1a;AI 正在“長出眼睛與身體” 在 2025 年的人工智能大會&#xff08;WAIC 2025&#xff09;上&#xff0c;“大模型退幕后&#xff0c;具身智能登場”成為最具共識的趨勢轉向。從展區到主論壇&#xff0c;再到各大企業發布的新…

OpenCV+Python

安裝 OpenCV&#xff1a; Python&#xff1a;直接 pip install opencv-python&#xff08;核心庫&#xff09;和 opencv-contrib-python&#xff08;擴展功能&#xff09;。 pip install opencv-python pip install opencv-contrib-python 驗證安裝&#xff1a; import cv2…

現代C++的一般編程規范

一般情況下不要使用std::endl&#xff0c;尤其是在循環中&#xff0c;因為可能一開始你只是想要打印一個換行符&#xff0c;但是"endl"做的更多&#xff0c;其還會刷新緩沖區&#xff0c;這會額外花費很多時間&#xff0c;相反&#xff0c;只需要使用“\n"&…

38.安卓逆向2-frida hook技術-過firda檢測(三)(通過SO文件過檢測原理)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

創建屬于自己的github Page主頁

安裝手冊 安裝手冊 環境要求 Node.js version 18.0 安裝 Node.js 時&#xff0c;建議勾選所有和依賴相關的選項。 安裝步驟 安裝 Docusaurus 最簡單的方法是使用 create-docusaurus 命令行工具&#xff0c;它可以幫助你快速搭建一個 Docusaurus 網站的基礎框架。 你可以在…

Unity Catalog與Apache Iceberg如何重塑Data+AI時代的企業數據架構

在2025年DataAI Summit上&#xff0c;Databricks發布了一系列重大更新&#xff0c;標志著企業數據治理進入新階段。其中&#xff0c;Unity Catalog的增強功能和對Apache Iceberg的全面支持尤為引人注目。這些更新不僅強化了跨平臺數據管理能力&#xff0c;還推動了開放數據生態…

雨季,汽車經常跑山區,該如何保養?

雨季來臨&#xff0c;山區道路變得濕滑難行&#xff0c;頻繁穿梭于此的汽車面臨著前所未有的挑戰。如何在這樣惡劣的環境中確保愛車安然無恙&#xff1f;本文將為你詳細解析雨季經常跑山區的汽車該如何保養&#xff0c;讓你在遭遇突發狀況時也能從容應對。當雨季遇上山區路況&a…

Spring Boot音樂服務器項目-查詢音樂模塊

一、項目架構概覽 該音樂播放服務器采用經典的MVC分層架構&#xff0c;核心模塊包括&#xff1a; 實體層&#xff1a;定義數據模型Mapper層&#xff1a;數據庫操作接口Controller層&#xff1a;HTTP請求處理工具層&#xff1a;加密、響應封裝等輔助功能 項目核心功能包括用戶…

Imagine:高效免費的圖片壓縮工具

很多時候&#xff0c;我們需要對圖片進行壓縮&#xff0c;卻苦于找不到免費又好用的工具。這里給大家推薦一款電腦端的圖片壓縮軟件——Imagine。 Imagine文末獲取 它有諸多優點&#xff1a; 開源免費&#xff1a;無需擔心付費問題&#xff0c;完全免費使用。 便捷易用&#…

《Uniapp-Vue 3-TS 實戰開發》自定義年月日時分秒picker組件

目前組件: 組件完整代碼: <template><view><picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange"><view class="picker">{{ formattedDateTime }}&l…

生命通道的智慧向導:Deepoc具身智能如何重塑醫院導診機器人的“仁心慧眼”

生命通道的智慧向導&#xff1a;Deepoc具身智能如何重塑醫院導診機器人的“仁心慧眼”清晨八點的三甲醫院門診大廳&#xff0c;一臺導診機器人突然轉向無障礙通道。視覺系統捕捉到輪椅上的顫抖雙手&#xff0c;自動降低語速并調大屏幕字體&#xff1b;識別出老人病歷本上的“心…