基于JavaSpringBoot+Vue+uniapp微信小程序校園宿舍管理系統設計與實現

?????

基于JavaSpringBoot+Vue+uniapp微信小程序實現校園宿舍管理系統設計與實現

目錄

第一章 緒論

1.1?研究背景

1.2?研究現狀

1.3 研究內容

第二章 相關技術介紹

2.1 ?Java語言

2.2 HTML網頁技術

2.3 MySQL數據庫

2.4 Springboot 框架介紹

2.5 VueJS介紹

2.6 ElementUI介紹

第三章 系統分析

3.1 可行性分析

3.2 系統性能分析

3.3 系統功能分析

3.4?系統流程分析

第四章 系統設計

4.1 系統概要設計

4.2 系統結構設計

4.3?系統順序圖設計

4.4?系統關系圖設計

4.5 數據庫設計

第五章? 系統詳細設計

5.1 登錄

5.2? 首頁

5.3 公共設施詳情模塊

5.4 宿管角色我的模塊

5.5 宿管角色我的模塊

5.6 學生用戶信息模塊

5.7 后臺管理員端

5.8 后臺管理員端-學生信息管理

5.9 后臺管理員端-衛生評比管理

5.10 后臺管理員端-在線留言管理

第六章? 部分代碼實現

6.1? Spring boot? 配置代碼

6.2 用戶管理及登錄登出代碼

6.3 Md5 加密算法代碼

6.4 ?部分數據庫代碼

第七章 系統測試

7.1 測試定義

7.2 測試目的

7.3 測試方案

7.4 測試結論

第八章 結 論

致謝

附一、論文參考:

附二、其他案例:?


第四章 系統設計


4.1 系統概要設計


? ? ?系統采用B/S架構,通過Web瀏覽器進行訪問和操作。系統包括前臺和后臺兩個主要部分:

為管理員提供管理界面,實現學生信息管理、宿舍信息管理、健康上報管理、公告設施管理、留言交流管理等功能。。

4.2 系統結構設計


? ? 整個系統是由多個功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進行逐個的功能設計,使得每一個模塊都有相對應的功能設計,然后進行系統整體的設計。

本系統結構圖如圖4-2所示。?

4.3?系統順序圖設計

4.3.1?登錄模塊順序圖

??? 登錄模塊主要滿足了管理員以及用戶的權限登錄,登錄模塊順序圖如圖4-3所示。

4.3.2?添加信息模塊順序圖

??? 管理員以及用戶登錄后均可進行添加信息操作,添加信息模塊順序圖如圖4-4所示。

4.4?系統關系圖設計

本系統各類之間關系圖如圖4-2所示。

4.5 數據庫設計

? ? ? ?一個好的數據庫可以關系到程序開發的優劣,數據庫設計離不開表結構的設計,還有表與表之間的聯系,以及系統開發需要設計的數據表內容等信息。在進行數據庫設計期間,要結合實際情況來對數據庫進行針對性的開發設計[12]。

4.4.1 數據庫E-R圖設計
本系統采用的是mysql數據庫,數據存儲快,因為個人博客管理系統,主要的就是對信息的管理,信息內容比較多,這就需要好好的設計一個好的數據庫,分類要清楚,不能添加信息的時候,造成信息太過混亂,設計好的數據庫首先就需要先把各個實體之間的關系表達明確,系統的E-R圖如下圖所示:?

4.4.2 邏輯結構設計
? ? ? ?邏輯結構設計是把概念結構設計階段畫好的數據庫ER圖轉換為關系模型。該系統的關系模型的邏輯結構是由主要一下關系模式組成,具體的關系模式如下:

(1)用戶信息(主鍵id、用戶id、用戶姓名、表名、角色id、角色名、密碼、新增時間、過期時間)

(2)角色信息(主鍵id、角色名稱、角色描述、新增時間、過期時間)

(3)角色權限信息(主鍵id、角色id、角色名稱、關聯的菜單id、關聯的菜單名、新增時間、過期時間)

(4)菜單信息(主鍵id、菜單名稱、菜單訪問路徑、菜單描述、上級菜單id、新增時間、過期時間)

(5)文章信息(主鍵id、創建日期、文章名稱、文章內容描述、文章類型、文章標簽、文章點贊數、文章訪問數、父節點id、上傳用戶id、上傳用戶姓名、狀態、文章審核狀態、審核人id、審核人)

(6)評論信息(主鍵id、創建日期、文章id、文章名、評論人id、評論人姓名、評論內容、是否審核、評論時間等)

第五章? 系統詳細設計

5.1 登錄

5.2? 首頁

5.3 公共設施詳情模塊

5.4 宿管角色我的模塊

5.5 宿管角色我的模塊

5.6 學生用戶信息模塊

5.7 后臺管理員端

5.8 后臺管理員端-學生信息管理

5.9 后臺管理員端-衛生評比管理

5.10 后臺管理員端-在線留言管理

第六章? 部分代碼實現

6.1? Spring boot? 配置代碼

# Tomcat
server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springboot0t8qlspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springboot0t8ql?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username: rootpassword: 123456#        driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springboot0t8ql
#        username: sa
#        password: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:/testStatic/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/#mybatis
mybatis-plus:mapper-locations: classpath*:mapper/*.xml#實體掃描,多個package用逗號或者分號分隔typeAliasesPackage: com.entityglobal-config:#主鍵類型  0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"field-strategy: 2#駝峰下劃線轉換db-column-underline: true#刷新mapper 調試神器refresh-mapper: true#邏輯刪除配置logic-delete-value: -1logic-not-delete-value: 0#自定義SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 項目mybatis plus 設置 jdbcTypeForNull (oracle數據庫需配置JdbcType.NULL, 默認是Other)
jdbc-type-for-null: 'null'

6.2 用戶管理及登錄登出代碼

/*** 用戶賬戶:用于保存用戶登錄信息(User)表控制層*/
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {/*** 服務對象*/@Autowiredpublic UserController(UserService service) {setService(service);}/*** Token服務*/@Autowiredprivate AccessTokenService tokenService;@Autowiredprivate UserGroupService userGroupService;/*** 注冊* @param user* @return*/@PostMapping("register")public Map<String, Object> signUp(@RequestBody User user) {// 查詢用戶Map<String, String> query = new HashMap<>();query.put("username",user.getUsername());List list = service.select(query, new HashMap<>()).getResultList();if (list.size()>0){return error(30000, "用戶已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);return success(1);}/*** 找回密碼* @param form* @return*/@PostMapping("forget_password")public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {JSONObject ret = new JSONObject();String username = form.getUsername();String code = form.getCode();String password = form.getPassword();// 判斷條件if(code == null || code.length() == 0){return error(30000, "驗證碼不能為空");}if(username == null || username.length() == 0){return error(30000, "用戶名不能為空");}if(password == null || password.length() == 0){return error(30000, "密碼不能為空");}// 查詢用戶Map<String, String> query = new HashMap<>();query.put("username",username);Query select = service.select(query, service.readConfig(request));List list = select.getResultList();if (list.size() > 0) {User o = (User) list.get(0);JSONObject query2 = new JSONObject();JSONObject form2 = new JSONObject();// 修改用戶密碼query2.put("user_id",o.getUserId());form2.put("password",service.encryption(password));service.update(query, service.readConfig(request), form2);return success(1);}return error(70000,"用戶不存在");}/*** 登錄* @param data* @param httpServletRequest* @return*/@PostMapping("login")public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {log.info("[執行登錄接口]");String username = data.get("username");String email = data.get("email");String phone = data.get("phone");String password = data.get("password");List resultList = null;Map<String, String> map = new HashMap<>();if(username != null && "".equals(username) == false){map.put("username", username);resultList = service.select(map, new HashMap<>()).getResultList();}else if(email != null && "".equals(email) == false){map.put("email", email);resultList = service.select(map, new HashMap<>()).getResultList();}else if(phone != null && "".equals(phone) == false){map.put("phone", phone);resultList = service.select(map, new HashMap<>()).getResultList();}else{return error(30000, "賬號或密碼不能為空");}if (resultList == null || password == null) {return error(30000, "賬號或密碼不能為空");}//判斷是否有這個用戶if (resultList.size()<=0){return error(30000,"用戶不存在");}User byUsername = (User) resultList.get(0);Map<String, String> groupMap = new HashMap<>();groupMap.put("name",byUsername.getUserGroup());List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();if (groupList.size()<1){return error(30000,"用戶組不存在");}UserGroup userGroup = (UserGroup) groupList.get(0);//查詢用戶審核狀態if (!StringUtils.isEmpty(userGroup.getSourceTable())){String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();String res = String.valueOf(service.runCountSql(sql).getSingleResult());if (res==null){return error(30000,"用戶不存在");}if (!res.equals("已通過")){return error(30000,"該用戶審核未通過");}}//查詢用戶狀態if (byUsername.getState()!=1){return error(30000,"用戶非可用狀態,不能登錄");}String md5password = service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存儲Token到數據庫AccessToken accessToken = new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);// 返回用戶信息JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token", accessToken.getToken());JSONObject ret = new JSONObject();ret.put("obj",user);return success(ret);} else {return error(30000, "賬號或密碼不正確");}}/*** 修改密碼* @param data* @param request* @return*/@PostMapping("change_password")public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){// 根據Token獲取UserIdString token = request.getHeader("x-auth-token");Integer userId = tokenGetUserId(token);// 根據UserId和舊密碼獲取用戶Map<String, String> query = new HashMap<>();String o_password = data.get("o_password");query.put("user_id" ,String.valueOf(userId));query.put("password" ,service.encryption(o_password));Query ret = service.count(query, service.readConfig(request));List list = ret.getResultList();Object s = list.get(0);int count = Integer.parseInt(list.get(0).toString());if(count > 0){// 修改密碼Map<String,Object> form = new HashMap<>();form.put("password",service.encryption(data.get("password")));service.update(query,service.readConfig(request),form);return success(1);}return error(10000,"密碼修改失敗!");}/*** 登錄態* @param request* @return*/@GetMapping("state")public Map<String, Object> state(HttpServletRequest request) {JSONObject ret = new JSONObject();// 獲取狀態String token = request.getHeader("x-auth-token");// 根據登錄態獲取用戶IDInteger userId = tokenGetUserId(token);log.info("[返回userId] {}",userId);if(userId == null || userId == 0){return error(10000,"用戶未登錄!");}// 根據用戶ID獲取用戶Map<String,String> query = new HashMap<>();query.put("user_id" ,String.valueOf(userId));// 根據用戶ID獲取Query select = service.select(query,service.readConfig(request));List resultList = select.getResultList();if (resultList.size() > 0) {JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));user.put("token",token);ret.put("obj",user);return success(ret);} else {return error(10000,"用戶未登錄!");}}/*** 登錄態* @param request* @return*/@GetMapping("quit")public Map<String, Object> quit(HttpServletRequest request) {String token = request.getHeader("x-auth-token");JSONObject ret = new JSONObject();Map<String, String> query = new HashMap<>(16);query.put("token", token);try{tokenService.delete(query,service.readConfig(request));}catch (Exception e){e.printStackTrace();}return success("退出登錄成功!");}/*** 獲取登錄用戶ID* @param token* @return*/public Integer tokenGetUserId(String token) {log.info("[獲取的token] {}",token);// 根據登錄態獲取用戶IDif(token == null || "".equals(token)){return 0;}Map<String, String> query = new HashMap<>(16);query.put("token", token);AccessToken byToken = tokenService.findOne(query);if(byToken == null){return 0;}return byToken.getUser_id();}/*** 重寫add* @return*/@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {Map<String,Object> map = service.readBody(request.getReader());map.put("password",service.encryption(String.valueOf(map.get("password"))));service.insert(map);return success(1);}}

6.3 Md5 加密算法代碼

public class MD5Utils {private static final Logger logger = LoggerFactory.getLogger(MD5Utils.class);// 全局數組private final static String[] strDigits = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};/*** 16進制字符*/private final static char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** 對文件全文生成MD5摘要** @param file 要加密的文件* @return MD5摘要碼*/public static String getMD5ForFile(String filePath) {FileInputStream fis = null;MessageDigest md = null;try {md = MessageDigest.getInstance("MD5");File file = new File(filePath);if (!file.exists()) {return "";}fis = new FileInputStream(file);byte[] buffer = new byte[4096];int length = -1;while ((length = fis.read(buffer)) != -1) {md.update(buffer, 0, length);}byte[] b = md.digest();return byteToHexString(b);} catch (Exception ex) {logger.error("獲取MD5信息發生異常!" + ex.toString());return null;} finally {try {if (null != fis) {fis.close();}} catch (IOException e) {logger.error("獲取MD5信息發生異常!" + e.toString());}}}/*** 把byte[]數組轉換成十六進制字符串表示形式** @param tmp 要轉換的byte[]* @return 十六進制字符串表示形式*/private static String byteToHexString(byte[] tmp) {String s;char str[] = new char[16 * 2];int k = 0;for (int i = 0; i < 16; i++) {byte byte0 = tmp[i];str[k++] = hexdigits[byte0 >>> 4 & 0xf];str[k++] = hexdigits[byte0 & 0xf];}s = new String(str);return s;}// 返回形式為數字跟字符串private static String byteToArrayString(byte bByte) {int iRet = bByte;// System.out.println("iRet="+iRet);if (iRet < 0) {iRet += 256;}int iD1 = iRet / 16;int iD2 = iRet % 16;return strDigits[iD1] + strDigits[iD2];}// 返回形式只為數字private static String byteToNum(byte bByte) {int iRet = bByte;System.out.println("iRet1=" + iRet);if (iRet < 0) {iRet += 256;}return String.valueOf(iRet);}// 轉換字節數組為16進制字串private static String byteToString(byte[] bByte) {StringBuffer sBuffer = new StringBuffer();for (int i = 0; i < bByte.length; i++) {sBuffer.append(byteToArrayString(bByte[i]));}return sBuffer.toString();}public static String GetMD5Code(String strObj) {if (StringUtils.isEmpty(strObj)) {return "";}String resultString = null;try {resultString = new String(strObj);MessageDigest md = MessageDigest.getInstance("MD5");// md.digest() 該函數返回值為存放哈希值結果的byte數組resultString = byteToString(md.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}}

6.4 ?部分數據庫代碼

-- ----------------------------
-- 1、部門表
-- ----------------------------
drop table if exists sys_dept;
create table sys_dept (dept_id           bigint(20)      not null auto_increment    comment '部門id',parent_id         bigint(20)      default 0                  comment '父部門id',ancestors         varchar(50)     default ''                 comment '祖級列表',dept_name         varchar(30)     default ''                 comment '部門名稱',order_num         int(4)          default 0                  comment '顯示順序',leader            varchar(20)     default null               comment '負責人',phone             varchar(11)     default null               comment '聯系電話',email             varchar(50)     default null               comment '郵箱',status            char(1)         default '0'                comment '部門狀態(0正常 1停用)',del_flag          char(1)         default '0'                comment '刪除標志(0代表存在 2代表刪除)',create_by         varchar(64)     default ''                 comment '創建者',create_time 	    datetime                                   comment '創建時間',update_by         varchar(64)     default ''                 comment '更新者',update_time       datetime                                   comment '更新時間',primary key (dept_id)
) engine=innodb auto_increment=200 comment = '部門表';-- ----------------------------
-- 初始化-部門表數據
-- ----------------------------
insert into sys_dept values(100,  0,   '0',          'MCS科技',   0, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(101,  100, '0,100',      '深圳總公司', 1, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(102,  100, '0,100',      '長沙分公司', 2, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(103,  101, '0,100,101',  '研發部門',   1, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(104,  101, '0,100,101',  '市場部門',   2, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(105,  101, '0,100,101',  '測試部門',   3, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(106,  101, '0,100,101',  '財務部門',   4, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(107,  101, '0,100,101',  '運維部門',   5, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(108,  102, '0,100,102',  '市場部門',   1, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(109,  102, '0,100,102',  '財務部門',   2, 'MCS', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);-- ----------------------------
-- 2、用戶信息表
-- ----------------------------
drop table if exists sys_user;
create table sys_user (user_id           bigint(20)      not null auto_increment    comment '用戶ID',dept_id           bigint(20)      default null               comment '部門ID',login_name        varchar(30)     not null                   comment '登錄賬號',user_name         varchar(30)     default ''                 comment '用戶昵稱',user_type         varchar(2)      default '00'               comment '用戶類型(00系統用戶 01注冊用戶)',email             varchar(50)     default ''                 comment '用戶郵箱',phonenumber       varchar(11)     default ''                 comment '手機號碼',sex               char(1)         default '0'                comment '用戶性別(0男 1女 2未知)',avatar            varchar(100)    default ''                 comment '頭像路徑',password          varchar(50)     default ''                 comment '密碼',salt              varchar(20)     default ''                 comment '鹽加密',status            char(1)         default '0'                comment '帳號狀態(0正常 1停用)',del_flag          char(1)         default '0'                comment '刪除標志(0代表存在 2代表刪除)',login_ip          varchar(128)    default ''                 comment '最后登錄IP',login_date        datetime                                   comment '最后登錄時間',pwd_update_date   datetime                                   comment '密碼最后更新時間',create_by         varchar(64)     default ''                 comment '創建者',create_time       datetime                                   comment '創建時間',update_by         varchar(64)     default ''                 comment '更新者',update_time       datetime                                   comment '更新時間',remark            varchar(500)    default null               comment '備注',primary key (user_id)
) engine=innodb auto_increment=100 comment = '用戶信息表';-- ----------------------------
-- 初始化-用戶信息表數據
-- ----------------------------
insert into sys_user values(1,  103, 'admin', 'MCS', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', null, null, 'admin', sysdate(), '', null, '管理員');
insert into sys_user values(2,  105, 'ry',    'MCS', '00', 'ry@qq.com',  '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', null, null, 'admin', sysdate(), '', null, '測試員');-- ----------------------------
-- 3、崗位信息表
-- ----------------------------
drop table if exists sys_post;
create table sys_post
(post_id       bigint(20)      not null auto_increment    comment '崗位ID',post_code     varchar(64)     not null                   comment '崗位編碼',post_name     varchar(50)     not null                   comment '崗位名稱',post_sort     int(4)          not null                   comment '顯示順序',status        char(1)         not null                   comment '狀態(0正常 1停用)',create_by     varchar(64)     default ''                 comment '創建者',create_time   datetime                                   comment '創建時間',update_by     varchar(64)     default ''			       comment '更新者',update_time   datetime                                   comment '更新時間',remark        varchar(500)    default null               comment '備注',primary key (post_id)
) engine=innodb comment = '崗位信息表';-- ----------------------------
-- 初始化-崗位信息表數據
-- ----------------------------
insert into sys_post values(1, 'ceo',  '董事長',    1, '0', 'admin', sysdate(), '', null, '');
insert into sys_post values(2, 'se',   '項目經理',  2, '0', 'admin', sysdate(), '', null, '');
insert into sys_post values(3, 'hr',   '人力資源',  3, '0', 'admin', sysdate(), '', null, '');
insert into sys_post values(4, 'user', '普通員工',  4, '0', 'admin', sysdate(), '', null, '');-- ----------------------------
-- 4、角色信息表
-- ----------------------------
drop table if exists sys_role;
create table sys_role (role_id           bigint(20)      not null auto_increment    comment '角色ID',role_name         varchar(30)     not null                   comment '角色名稱',role_key          varchar(100)    not null                   comment '角色權限字符串',role_sort         int(4)          not null                   comment '顯示順序',data_scope        char(1)         default '1'                comment '數據范圍(1:全部數據權限 2:自定數據權限 3:本部門數據權限 4:本部門及以下數據權限)',status            char(1)         not null                   comment '角色狀態(0正常 1停用)',del_flag          char(1)         default '0'                comment '刪除標志(0代表存在 2代表刪除)',create_by         varchar(64)     default ''                 comment '創建者',create_time       datetime                                   comment '創建時間',update_by         varchar(64)     default ''                 comment '更新者',update_time       datetime                                   comment '更新時間',remark            varchar(500)    default null               comment '備注',primary key (role_id)
) engine=innodb auto_increment=100 comment = '角色信息表';-- ----------------------------
-- 初始化-角色信息表數據
-- ----------------------------
insert into sys_role values('1', '超級管理員', 'admin',  1, 1, '0', '0', 'admin', sysdate(), '', null, '超級管理員');
insert into sys_role values('2', '普通角色',   'common', 2, 2, '0', '0', 'admin', sysdate(), '', null, '普通角色');-- ----------------------------
-- 5、菜單權限表
-- ----------------------------
drop table if exists sys_menu;
create table sys_menu (menu_id           bigint(20)      not null auto_increment    comment '菜單ID',menu_name         varchar(50)     not null                   comment '菜單名稱',parent_id         bigint(20)      default 0                  comment '父菜單ID',order_num         int(4)          default 0                  comment '顯示順序',url               varchar(200)    default '#'                comment '請求地址',target            varchar(20)     default ''                 comment '打開方式(menuItem頁簽 menuBlank新窗口)',menu_type         char(1)         default ''                 comment '菜單類型(M目錄 C菜單 F按鈕)',visible           char(1)         default 0                  comment '菜單狀態(0顯示 1隱藏)',is_refresh        char(1)         default 1                  comment '是否刷新(0刷新 1不刷新)',perms             varchar(100)    default null               comment '權限標識',icon              varchar(100)    default '#'                comment '菜單圖標',create_by         varchar(64)     default ''                 comment '創建者',create_time       datetime                                   comment '創建時間',update_by         varchar(64)     default ''                 comment '更新者',update_time       datetime                                   comment '更新時間',remark            varchar(500)    default ''                 comment '備注',primary key (menu_id)
) engine=innodb auto_increment=2000 comment = '菜單權限表';-- ----------------------------
-- 初始化-菜單信息表數據
-- ----------------------------
-- 一級菜單
insert into sys_menu values('1', '系統管理', '0', '1', '#',                '',          'M', '0', '1', '', 'fa fa-gear',           'admin', sysdate(), '', null, '系統管理目錄');
insert into sys_menu values('2', '系統監控', '0', '2', '#',                '',          'M', '0', '1', '', 'fa fa-video-camera',   'admin', sysdate(), '', null, '系統監控目錄');
insert into sys_menu values('3', '系統工具', '0', '3', '#',                '',          'M', '0', '1', '', 'fa fa-bars',           'admin', sysdate(), '', null, '系統工具目錄');
insert into sys_menu values('4', 'MCS官網', '0', '4', 'http://ruoyi.vip', 'menuBlank', 'C', '0', '1', '', 'fa fa-location-arrow', 'admin', sysdate(), '', null, 'MCS官網地址');
-- 二級菜單
insert into sys_menu values('100',  '用戶管理', '1', '1', '/system/user',          '', 'C', '0', '1', 'system:user:view',         'fa fa-user-o',          'admin', sysdate(), '', null, '用戶管理菜單');
insert into sys_menu values('101',  '角色管理', '1', '2', '/system/role',          '', 'C', '0', '1', 'system:role:view',         'fa fa-user-secret',     'admin', sysdate(), '', null, '角色管理菜單');
insert into sys_menu values('102',  '菜單管理', '1', '3', '/system/menu',          '', 'C', '0', '1', 'system:menu:view',         'fa fa-th-list',         'admin', sysdate(), '', null, '菜單管理菜單');
insert into sys_menu values('103',  '部門管理', '1', '4', '/system/dept',          '', 'C', '0', '1', 'system:dept:view',         'fa fa-outdent',         'admin', sysdate(), '', null, '部門管理菜單');
insert into sys_menu values('104',  '崗位管理', '1', '5', '/system/post',          '', 'C', '0', '1', 'system:post:view',         'fa fa-address-card-o',  'admin', sysdate(), '', null, '崗位管理菜單');
insert into sys_menu values('105',  '字典管理', '1', '6', '/system/dict',          '', 'C', '0', '1', 'system:dict:view',         'fa fa-bookmark-o',      'admin', sysdate(), '', null, '字典管理菜單');
insert into sys_menu values('106',  '參數設置', '1', '7', '/system/config',        '', 'C', '0', '1', 'system:config:view',       'fa fa-sun-o',           'admin', sysdate(), '', null, '參數設置菜單');
insert into sys_menu values('107',  '通知公告', '1', '8', '/system/notice',        '', 'C', '0', '1', 'system:notice:view',       'fa fa-bullhorn',        'admin', sysdate(), '', null, '通知公告菜單');
insert into sys_menu values('108',  '日志管理', '1', '9', '#',                     '', 'M', '0', '1', '',                         'fa fa-pencil-square-o', 'admin', sysdate(), '', null, '日志管理菜單');
insert into sys_menu values('109',  '在線用戶', '2', '1', '/monitor/online',       '', 'C', '0', '1', 'monitor:online:view',      'fa fa-user-circle',     'admin', sysdate(), '', null, '在線用戶菜單');
insert into sys_menu values('110',  '定時任務', '2', '2', '/monitor/job',          '', 'C', '0', '1', 'monitor:job:view',         'fa fa-tasks',           'admin', sysdate(), '', null, '定時任務菜單');
insert into sys_menu values('111',  '數據監控', '2', '3', '/monitor/data',         '', 'C', '0', '1', 'monitor:data:view',        'fa fa-bug',             'admin', sysdate(), '', null, '數據監控菜單');
insert into sys_menu values('112',  '服務監控', '2', '4', '/monitor/server',       '', 'C', '0', '1', 'monitor:server:view',      'fa fa-server',          'admin', sysdate(), '', null, '服務監控菜單');
insert into sys_menu values('113',  '緩存監控', '2', '5', '/monitor/cache',        '', 'C', '0', '1', 'monitor:cache:view',       'fa fa-cube',            'admin', sysdate(), '', null, '緩存監控菜單');
insert into sys_menu values('114',  '表單構建', '3', '1', '/tool/build',           '', 'C', '0', '1', 'tool:build:view',          'fa fa-wpforms',         'admin', sysdate(), '', null, '表單構建菜單');
insert into sys_menu values('115',  '代碼生成', '3', '2', '/tool/gen',             '', 'C', '0', '1', 'tool:gen:view',            'fa fa-code',            'admin', sysdate(), '', null, '代碼生成菜單');
insert into sys_menu values('116',  '系統接口', '3', '3', '/tool/swagger',         '', 'C', '0', '1', 'tool:swagger:view',        'fa fa-gg',              'admin', sysdate(), '', null, '系統接口菜單');
-- 三級菜單
insert into sys_menu values('500',  '操作日志', '108', '1', '/monitor/operlog',    '', 'C', '0', '1', 'monitor:operlog:view',     'fa fa-address-book',    'admin', sysdate(), '', null, '操作日志菜單');
insert into sys_menu values('501',  '登錄日志', '108', '2', '/monitor/logininfor', '', 'C', '0', '1', 'monitor:logininfor:view',  'fa fa-file-image-o',    'admin', sysdate(), '', null, '登錄日志菜單');
-- 用戶管理按鈕
insert into sys_menu values('1000', '用戶查詢', '100', '1',  '#', '',  'F', '0', '1', 'system:user:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1001', '用戶新增', '100', '2',  '#', '',  'F', '0', '1', 'system:user:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1002', '用戶修改', '100', '3',  '#', '',  'F', '0', '1', 'system:user:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1003', '用戶刪除', '100', '4',  '#', '',  'F', '0', '1', 'system:user:remove',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1004', '用戶導出', '100', '5',  '#', '',  'F', '0', '1', 'system:user:export',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1005', '用戶導入', '100', '6',  '#', '',  'F', '0', '1', 'system:user:import',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1006', '重置密碼', '100', '7',  '#', '',  'F', '0', '1', 'system:user:resetPwd',    '#', 'admin', sysdate(), '', null, '');
-- 角色管理按鈕
insert into sys_menu values('1007', '角色查詢', '101', '1',  '#', '',  'F', '0', '1', 'system:role:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1008', '角色新增', '101', '2',  '#', '',  'F', '0', '1', 'system:role:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1009', '角色修改', '101', '3',  '#', '',  'F', '0', '1', 'system:role:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1010', '角色刪除', '101', '4',  '#', '',  'F', '0', '1', 'system:role:remove',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1011', '角色導出', '101', '5',  '#', '',  'F', '0', '1', 'system:role:export',      '#', 'admin', sysdate(), '', null, '');
-- 菜單管理按鈕
insert into sys_menu values('1012', '菜單查詢', '102', '1',  '#', '',  'F', '0', '1', 'system:menu:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1013', '菜單新增', '102', '2',  '#', '',  'F', '0', '1', 'system:menu:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1014', '菜單修改', '102', '3',  '#', '',  'F', '0', '1', 'system:menu:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1015', '菜單刪除', '102', '4',  '#', '',  'F', '0', '1', 'system:menu:remove',      '#', 'admin', sysdate(), '', null, '');
-- 部門管理按鈕
insert into sys_menu values('1016', '部門查詢', '103', '1',  '#', '',  'F', '0', '1', 'system:dept:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1017', '部門新增', '103', '2',  '#', '',  'F', '0', '1', 'system:dept:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1018', '部門修改', '103', '3',  '#', '',  'F', '0', '1', 'system:dept:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1019', '部門刪除', '103', '4',  '#', '',  'F', '0', '1', 'system:dept:remove',      '#', 'admin', sysdate(), '', null, '');
-- 崗位管理按鈕
insert into sys_menu values('1020', '崗位查詢', '104', '1',  '#', '',  'F', '0', '1', 'system:post:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1021', '崗位新增', '104', '2',  '#', '',  'F', '0', '1', 'system:post:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1022', '崗位修改', '104', '3',  '#', '',  'F', '0', '1', 'system:post:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1023', '崗位刪除', '104', '4',  '#', '',  'F', '0', '1', 'system:post:remove',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1024', '崗位導出', '104', '5',  '#', '',  'F', '0', '1', 'system:post:export',      '#', 'admin', sysdate(), '', null, '');
-- 字典管理按鈕
insert into sys_menu values('1025', '字典查詢', '105', '1',  '#', '',  'F', '0', '1', 'system:dict:list',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1026', '字典新增', '105', '2',  '#', '',  'F', '0', '1', 'system:dict:add',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1027', '字典修改', '105', '3',  '#', '',  'F', '0', '1', 'system:dict:edit',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1028', '字典刪除', '105', '4',  '#', '',  'F', '0', '1', 'system:dict:remove',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1029', '字典導出', '105', '5',  '#', '',  'F', '0', '1', 'system:dict:export',      '#', 'admin', sysdate(), '', null, '');
-- 參數設置按鈕
insert into sys_menu values('1030', '參數查詢', '106', '1',  '#', '',  'F', '0', '1', 'system:config:list',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1031', '參數新增', '106', '2',  '#', '',  'F', '0', '1', 'system:config:add',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1032', '參數修改', '106', '3',  '#', '',  'F', '0', '1', 'system:config:edit',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1033', '參數刪除', '106', '4',  '#', '',  'F', '0', '1', 'system:config:remove',    '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1034', '參數導出', '106', '5',  '#', '',  'F', '0', '1', 'system:config:export',    '#', 'admin', sysdate(), '', null, '');
-- 通知公告按鈕
insert into sys_menu values('1035', '公告查詢', '107', '1',  '#', '',  'F', '0', '1', 'system:notice:list',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1036', '公告新增', '107', '2',  '#', '',  'F', '0', '1', 'system:notice:add',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1037', '公告修改', '107', '3',  '#', '',  'F', '0', '1', 'system:notice:edit',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1038', '公告刪除', '107', '4',  '#', '',  'F', '0', '1', 'system:notice:remove',    '#', 'admin', sysdate(), '', null, '');
-- 操作日志按鈕
insert into sys_menu values('1039', '操作查詢', '500', '1',  '#', '',  'F', '0', '1', 'monitor:operlog:list',    '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1040', '操作刪除', '500', '2',  '#', '',  'F', '0', '1', 'monitor:operlog:remove',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1041', '詳細信息', '500', '3',  '#', '',  'F', '0', '1', 'monitor:operlog:detail',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1042', '日志導出', '500', '4',  '#', '',  'F', '0', '1', 'monitor:operlog:export',  '#', 'admin', sysdate(), '', null, '');
-- 登錄日志按鈕
insert into sys_menu values('1043', '登錄查詢', '501', '1',  '#', '',  'F', '0', '1', 'monitor:logininfor:list',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1044', '登錄刪除', '501', '2',  '#', '',  'F', '0', '1', 'monitor:logininfor:remove',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1045', '日志導出', '501', '3',  '#', '',  'F', '0', '1', 'monitor:logininfor:export',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1046', '賬戶解鎖', '501', '4',  '#', '',  'F', '0', '1', 'monitor:logininfor:unlock',       '#', 'admin', sysdate(), '', null, '');
-- 在線用戶按鈕
insert into sys_menu values('1047', '在線查詢', '109', '1',  '#', '',  'F', '0', '1', 'monitor:online:list',             '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1048', '批量強退', '109', '2',  '#', '',  'F', '0', '1', 'monitor:online:batchForceLogout', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1049', '單條強退', '109', '3',  '#', '',  'F', '0', '1', 'monitor:online:forceLogout',      '#', 'admin', sysdate(), '', null, '');
-- 定時任務按鈕
insert into sys_menu values('1050', '任務查詢', '110', '1',  '#', '',  'F', '0', '1', 'monitor:job:list',                '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1051', '任務新增', '110', '2',  '#', '',  'F', '0', '1', 'monitor:job:add',                 '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1052', '任務修改', '110', '3',  '#', '',  'F', '0', '1', 'monitor:job:edit',                '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1053', '任務刪除', '110', '4',  '#', '',  'F', '0', '1', 'monitor:job:remove',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1054', '狀態修改', '110', '5',  '#', '',  'F', '0', '1', 'monitor:job:changeStatus',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1055', '任務詳細', '110', '6',  '#', '',  'F', '0', '1', 'monitor:job:detail',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1056', '任務導出', '110', '7',  '#', '',  'F', '0', '1', 'monitor:job:export',              '#', 'admin', sysdate(), '', null, '');
-- 代碼生成按鈕
insert into sys_menu values('1057', '生成查詢', '115', '1',  '#', '',  'F', '0', '1', 'tool:gen:list',     '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1058', '生成修改', '115', '2',  '#', '',  'F', '0', '1', 'tool:gen:edit',     '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1059', '生成刪除', '115', '3',  '#', '',  'F', '0', '1', 'tool:gen:remove',   '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1060', '預覽代碼', '115', '4',  '#', '',  'F', '0', '1', 'tool:gen:preview',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1061', '生成代碼', '115', '5',  '#', '',  'F', '0', '1', 'tool:gen:code',     '#', 'admin', sysdate(), '', null, '');-- ----------------------------
-- 6、用戶和角色關聯表  用戶N-1角色
-- ----------------------------
drop table if exists sys_user_role;
create table sys_user_role (user_id   bigint(20) not null comment '用戶ID',role_id   bigint(20) not null comment '角色ID',primary key(user_id, role_id)
) engine=innodb comment = '用戶和角色關聯表';-- ----------------------------
-- 初始化-用戶和角色關聯表數據
-- ----------------------------
insert into sys_user_role values ('1', '1');
insert into sys_user_role values ('2', '2');-- ----------------------------
-- 7、角色和菜單關聯表  角色1-N菜單
-- ----------------------------
drop table if exists sys_role_menu;
create table sys_role_menu (role_id   bigint(20) not null comment '角色ID',menu_id   bigint(20) not null comment '菜單ID',primary key(role_id, menu_id)
) engine=innodb comment = '角色和菜單關聯表';-- ----------------------------
-- 初始化-角色和菜單關聯表數據
-- ----------------------------
insert into sys_role_menu values ('2', '1');
insert into sys_role_menu values ('2', '2');
insert into sys_role_menu values ('2', '3');
insert into sys_role_menu values ('2', '4');
insert into sys_role_menu values ('2', '100');
insert into sys_role_menu values ('2', '101');
insert into sys_role_menu values ('2', '102');
insert into sys_role_menu values ('2', '103');
insert into sys_role_menu values ('2', '104');
insert into sys_role_menu values ('2', '105');
insert into sys_role_menu values ('2', '106');
insert into sys_role_menu values ('2', '107');
insert into sys_role_menu values ('2', '108');
insert into sys_role_menu values ('2', '109');
insert into sys_role_menu values ('2', '110');
insert into sys_role_menu values ('2', '111');
insert into sys_role_menu values ('2', '112');
insert into sys_role_menu values ('2', '113');
insert into sys_role_menu values ('2', '114');
insert into sys_role_menu values ('2', '115');
insert into sys_role_menu values ('2', '116');
insert into sys_role_menu values ('2', '500');
insert into sys_role_menu values ('2', '501');
insert into sys_role_menu values ('2', '1000');
insert into sys_role_menu values ('2', '1001');
insert into sys_role_menu values ('2', '1002');
insert into sys_role_menu values ('2', '1003');
insert into sys_role_menu values ('2', '1004');
insert into sys_role_menu values ('2', '1005');
insert into sys_role_menu values ('2', '1006');
insert into sys_role_menu values ('2', '1007');
insert into sys_role_menu values ('2', '1008');
insert into sys_role_menu values ('2', '1009');
insert into sys_role_menu values ('2', '1010');
insert into sys_role_menu values ('2', '1011');
insert into sys_role_menu values ('2', '1012');
insert into sys_role_menu values ('2', '1013');
insert into sys_role_menu values ('2', '1014');
insert into sys_role_menu values ('2', '1015');
insert into sys_role_menu values ('2', '1016');
insert into sys_role_menu values ('2', '1017');
insert into sys_role_menu values ('2', '1018');
insert into sys_role_menu values ('2', '1019');
insert into sys_role_menu values ('2', '1020');
insert into sys_role_menu values ('2', '1021');
insert into sys_role_menu values ('2', '1022');
insert into sys_role_menu values ('2', '1023');
insert into sys_role_menu values ('2', '1024');
insert into sys_role_menu values ('2', '1025');
insert into sys_role_menu values ('2', '1026');
insert into sys_role_menu values ('2', '1027');
insert into sys_role_menu values ('2', '1028');
insert into sys_role_menu values ('2', '1029');
insert into sys_role_menu values ('2', '1030');
insert into sys_role_menu values ('2', '1031');
insert into sys_role_menu values ('2', '1032');
insert into sys_role_menu values ('2', '1033');
insert into sys_role_menu values ('2', '1034');
insert into sys_role_menu values ('2', '1035');
insert into sys_role_menu values ('2', '1036');
insert into sys_role_menu values ('2', '1037');
insert into sys_role_menu values ('2', '1038');
insert into sys_role_menu values ('2', '1039');
insert into sys_role_menu values ('2', '1040');
insert into sys_role_menu values ('2', '1041');
insert into sys_role_menu values ('2', '1042');
insert into sys_role_menu values ('2', '1043');
insert into sys_role_menu values ('2', '1044');
insert into sys_role_menu values ('2', '1045');
insert into sys_role_menu values ('2', '1046');
insert into sys_role_menu values ('2', '1047');
insert into sys_role_menu values ('2', '1048');
insert into sys_role_menu values ('2', '1049');
insert into sys_role_menu values ('2', '1050');
insert into sys_role_menu values ('2', '1051');
insert into sys_role_menu values ('2', '1052');
insert into sys_role_menu values ('2', '1053');
insert into sys_role_menu values ('2', '1054');
insert into sys_role_menu values ('2', '1055');
insert into sys_role_menu values ('2', '1056');
insert into sys_role_menu values ('2', '1057');
insert into sys_role_menu values ('2', '1058');
insert into sys_role_menu values ('2', '1059');
insert into sys_role_menu values ('2', '1060');
insert into sys_role_menu values ('2', '1061');-- ----------------------------
-- 8、角色和部門關聯表  角色1-N部門
-- ----------------------------
drop table if exists sys_role_dept;
create table sys_role_dept (role_id   bigint(20) not null comment '角色ID',dept_id   bigint(20) not null comment '部門ID',primary key(role_id, dept_id)
) engine=innodb comment = '角色和部門關聯表';-- ----------------------------
-- 初始化-角色和部門關聯表數據
-- ----------------------------
insert into sys_role_dept values ('2', '100');
insert into sys_role_dept values ('2', '101');
insert into sys_role_dept values ('2', '105');-- ----------------------------
-- 9、用戶與崗位關聯表  用戶1-N崗位
-- ----------------------------
drop table if exists sys_user_post;
create table sys_user_post
(user_id   bigint(20) not null comment '用戶ID',post_id   bigint(20) not null comment '崗位ID',primary key (user_id, post_id)
) engine=innodb comment = '用戶與崗位關聯表';-- ----------------------------
-- 初始化-用戶與崗位關聯表數據
-- ----------------------------
insert into sys_user_post values ('1', '1');
insert into sys_user_post values ('2', '2');-- ----------------------------
-- 10、操作日志記錄
-- ----------------------------
drop table if exists sys_oper_log;
create table sys_oper_log (oper_id           bigint(20)      not null auto_increment    comment '日志主鍵',title             varchar(50)     default ''                 comment '模塊標題',business_type     int(2)          default 0                  comment '業務類型(0其它 1新增 2修改 3刪除)',method            varchar(200)    default ''                 comment '方法名稱',request_method    varchar(10)     default ''                 comment '請求方式',operator_type     int(1)          default 0                  comment '操作類別(0其它 1后臺用戶 2手機端用戶)',oper_name         varchar(50)     default ''                 comment '操作人員',dept_name         varchar(50)     default ''                 comment '部門名稱',oper_url          varchar(255)    default ''                 comment '請求URL',oper_ip           varchar(128)    default ''                 comment '主機地址',oper_location     varchar(255)    default ''                 comment '操作地點',oper_param        varchar(2000)   default ''                 comment '請求參數',json_result       varchar(2000)   default ''                 comment '返回參數',status            int(1)          default 0                  comment '操作狀態(0正常 1異常)',error_msg         varchar(2000)   default ''                 comment '錯誤消息',oper_time         datetime                                   comment '操作時間',cost_time         bigint(20)      default 0                  comment '消耗時間',primary key (oper_id),key idx_sys_oper_log_bt (business_type),key idx_sys_oper_log_s  (status),key idx_sys_oper_log_ot (oper_time)
) engine=innodb auto_increment=100 comment = '操作日志記錄';

第八章 結 論

本文研究了在線學習交流平臺系統的設計與實現,在文章開端首先對個研究背景、研究現狀和研究內容作了簡單的介紹,然后通過系統分析,引申出本系統研究的主要內容。

通過對java語言、springboot框架和mysql數據庫的簡介,系統的說明了在線學習交流平臺的設計與實現的可行性,本文結論及研究成果如下:實現了java與mysql相結合構建的在線學習交流平臺,通過本次對在線學習交流平臺的設計與實現的研究與實現,我感觸到學習一門新技術,最重要的是實踐,只有多動手才能盡快掌握它,一個系統的開發,經驗是最重要的,經驗不足,就難免會有許多考慮不周之處。要想吸引更多的用戶,系統的界面必須要美觀、有特色、友好,功能要健全。

由于在此之前對于java知識并不了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規范、數據庫連接有問題已經無法實現參數的傳遞等等,不過通過我不斷的查閱相關的資料,以及向老師同學請教,最后出現的所有的問題都得到了解決,通過這次的系統開發,我學到了很多的知識,也明白了自己在哪些方面有不足的地方,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。

通過這次對在線學習交流平臺的開發,讓我學到了更多的知識,同時通過這次系統的設計也讓我明白了自己在哪方面有不足,以后加以學習爭取可以開發住更多有用的適用的系統軟件,本次系統的設計提高了我的編程水平,為了我今后系統的開發打下了結實的基礎。?

參考文獻
[1] 高永強.基于深度學習的個性化推薦研究[J].工業控制計算機,2021,34(10):90-92.
[2] 張安淇,李元旭.互聯網知識共享平臺信息過載效應與弱化機制——基于知乎的案例研究[J].
情報科學,2020,38(01):24-29+41.DOI:10.13833/j.issn.1007-7634.2020.01.004.
[3] Xiaoqin Shelley Zhang,Xiaojie Zhang,Pavan Kaparthi. Combat Information Overload Problem in
Social Networks With Intelligent Information-Sharing and Response Mechanisms[J]. IEEE
Transactions on Computational Social Systems,2020.
[4] 劉馨蔚.“它經濟”升溫 寵物吸金強勁[J].中國對外貿易,2021(04):54-55.
[5] 狗民網.2020 年中國寵物行業白皮書.
[6] Lou Feng,Ning Xin. E-Commerce Recommendation Technology Based on Collaborative
Filtering Algorithm and Mobile Cloud Computing[J]. Wireless Communications and Mobile
Computing,2022,2022.
[7] Goldberg D, Nichols D.A, Oki B.M, et al. Using collaborative filtering to weave an information
tapestry[J]. Communications of The ACM, 1992, 35(12): 61-70.
[8] Konstan J.A, Miller B.N, Maltz D.A, et al. GroupLens: Applying collaborative filtering to
Usenet news[J]. Communications of The ACM, 1997, 40(3): 77-87.
[9] Venture Beat [EB/OB]. htp:/venturebeat.comn/ [2009-04].
[10] He X, Deng K, Wang X, et al. LightGCN: Simplifying and Powering Graph Convolution
Network for Recommendation[C]. In ACM 2020.
[11] Wang Hulong,Shen Zesheng,Jiang Shuzhen,Sun Guang,Zhang Ren Jie. User-based
Collaborative Filtering Algorithm Design and Implementation[J]. Journal of Physics: Conference
Series,2021,1757(1).0
[12] 鄧園園,吳美香,潘家輝.基于物品的改進協同過濾算法及應用[].計算機系統應用,
2019,28(01):184-189.
[13] Jena, Kalyan Kumar,Bhoi, Sourav Kumar,Mallick, Chittaranjan,Jena, Soumya Ranjan,Kumar,
Raghvendra,Long, Hoang Viet,Son, Nguyen Thi Kim. Neural model based collaborative filtering for
movie recommendation system[J]. International Journal of Information
Technology,2022(prepublish).
[14] Zhang Kaihan,Wang Zhiqiang,Liang Jiye,Zhao Xingwang. A Bayesian matrix factorization
model for dynamic user embedding in recommender system[J]. Frontiers of Computer
Science,2022,16(5).
[15] 吳青洋,程旭,鄧程鵬,丁浩軒,張宏,林勝海.基于聚類和獎懲用戶模型的協同過濾算法[J].計
算機系統應用,2020,29(08):135-143.DOI:10.15888/j.cnki.csa.007491.
[16] 陸文超,崔海朋.一種基于融合自編碼與神經網絡的協同過濾算法[J].中國水運(下半
月),2022,22(03):18-20.
[17] 王寧,沈正一,崔德龍,劉晴瑞.結合協同過濾與隱語義模型的視頻推薦策略[J].湖南工程學院
學報(自然科學版),2021,31(04):40-43.DOI:10.15987/j.cnki.hgbjbz.2021.04.007.
[18] Thomas N. Kipf and Max Welling. Semi-Supervised Classification with Graph Convolutional
Networks. In ICLR.2017
[19] 張術梅.MVC架構下網站的設計與實現思考[J].信息記錄材
料,2022,23(01):92-94.DOI:10.16009/j.cnki.cn13-1295/tq.2022.01.036.
[20] R.Karthik,T.S.Sridhar,R.Sriram. Digital Food ordering system based on Spring Framework[J].
International Journal of Recent Technology and Engineering (IJRTE),2020,8(6).
[21] 曹華山.SSM 框架在 Web 應用開發中的設計與實現[J].無線互聯科技,2021,18(11):108-109.
[22] 胡世洋,賴森林.淺論SSM框架在構建“微農”信息服務中的應用[J].電腦知識與技
術,2021,17(34):4-6.DOI:10.14004/j.cnki.ckt.2021.3589.
[23] Di Lu,Yuping Qiu,Chun Qian,Xi Wang,Wei Tan. Design of Campus Resource Sharing
Platform based on SSM Framework[J]. IOP Conference Series: Materials Science and
Engineering,2019,490(6).
[24] Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information
Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2).
[25] Feng Leijie,Mu Zehui. Research on Mobile Point Exchange System Based on Collaborative
Filtering Recommendation Algorithm[J]. International Journal of Advanced Network, Monitoring
and Controls,2021,6(2).
[26] 賴佳星.基于Bootstrap和JavaScript技術設計與實現簡易Web計算器[J].科技資
訊,2022,20(01):13-16.DOI:10.16661/j.cnki.1672-3791.2110-5042-2874.
[27] Haokun Qi, Qingyang Feng , Junyan Zhang. Technology and analysis of JSP-based
merchandising system[J]. Scientific Journal of Intelligent Systems Research,2022,4(2).
[28] 周公平.基于jQuery框架的Web前端開發設計方法研究[J].信息與電腦(理論
版),2022,34(05):128-130.
[29] Liu Hongqing,Liu Yan. Research on Personalized Blog Customization System Based on
AJAX[C]//.Proceedings of 2018 5th International Conference on Electrical & Electronics
Engineering and Computer Science(ICEEECS 2018).,2018:136-139.
[30] 朱克武.Ajax技術在就業網站用戶信息管理中的應用[J].電腦知識與技
術,2021,17(33):9-11.DOI:10.14004/j.cnki.ckt.2021.3303.?

致謝


在畢業設計的過程中,通過對在線學習交流平臺的設計,我受益匪淺。在這段時間里,大學四年所學的知識得到了綜合的運用,掌握了軟件開發的基本方法,了解了當今軟件開發的一些新技術。

本設計是在A老師的悉心指導和熱情幫助下完成的。無論在理論上還是在實踐中,老師都給予我很大的幫助,每當遇到困難時,老師總是耐心的給我講解,老師認真負責的工作態度,讓我敬佩。值此論文完成之際,特別向指導老師表示衷心的感謝和崇高的敬意,謝謝他細心而又耐心地輔導,使得我得以順利的完成畢業設計開發工作,同時也要感謝其他幫助過我的老師和同學,他們在我完成設計過程中給予我很大的幫助,在此一并表示感謝。

在論文編寫過程中,雖然反復推敲核證,但由于本人水平有限,加上時間緊促,本文一定有不少缺點和不足,懇請各位老師給予幫助和指正。

------------------------------------------------------------------?

附一、論文參考:

附二、其他案例:?

?

??

?

博主介紹:碩士研究生,專注于信息化技術領域開發與管理,會使用java、標準c/c++等開發語言,以及畢業項目實戰?

? ? ? ?從事基于java BS架構、CS架構、c/c++ 編程工作近16年,擁有近12年的管理工作經驗,擁有較豐富的技術架構思想、較扎實的技術功底和資深的項目管理經驗。

? ? ? ?先后擔任過技術總監、部門經理、項目經理、開發組長、java高級工程師及c++工程師等職位,在工業互聯網、國家標識解析體系、物聯網、分布式集群架構、大數據通道處理、接口開發、遠程教育、辦公OA、財務軟件(工資、記賬、決策、分析、報表統計等方面)、企業內部管理軟件(ERP、CRM等)、arggis地圖等信息化建設領域有較豐富的實戰工作經驗;擁有BS分布式架構集群、數據庫負載集群架構、大數據存儲集群架構,以及高并發分布式集群架構的設計、開發和部署實戰經驗;擁有大并發訪問、大數據存儲、即時消息等瓶頸解決方案和實戰經驗。

? ? ? ?擁有產品研發和發明專利申請相關工作經驗,完成發明專利構思、設計、編寫、申請等工作,并獲得發明專利1枚。

-----------------------------------------------------------------------------------

? ? ? 大家在畢設選題、項目升級、論文寫作,就業畢業等相關問題都可以給我留言咨詢,非常樂意幫助更多的人或加w 908925859。

相關博客地址:

csdn專業技術博客:https://blog.csdn.net/mr_lili_1986?type=blog

Iteye博客: ? ? ? ?https://www.iteye.com/blog/user/mr-lili-1986-163-com

注:每個學校每個老師對論文的格式要求不一樣,故本論文只供參考,本論文頁數達到60頁以上,字數在6000及以上。

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

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

相關文章

視頻轉換、提取音頻、視頻加水印、視頻去水印、音頻轉換、分割合并壓縮等,批量還幾乎免費

「想轉就轉視頻音頻助手」免費版來襲&#xff01; 在數字化時代&#xff0c;視頻和音頻處理已成為我們日常生活的一部分。無論是制作個人視頻博客、編輯家庭影片&#xff0c;還是處理音頻文件&#xff0c;我們都在尋找一個強大而易于使用的解決方案。今天&#xff0c;我要向您…

基于大語言模型(LLM)的合成數據生成、策展和評估的綜述

節前&#xff0c;我們星球組織了一場算法崗技術&面試討論會&#xff0c;邀請了一些互聯網大廠朋友、參加社招和校招面試的同學。 針對算法崗技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何準備、面試常考點分享等熱門話題進行了深入的討論。 合集&#x…

【JVM實戰篇】內存調優:內存泄露危害+內存監控工具介紹+內存泄露原因介紹

文章目錄 內存調優內存溢出和內存泄漏內存泄露帶來什么問題內存泄露案例演示內存泄漏的常見場景場景一場景二 解決內存溢出的方法常用內存監控工具Top命令優缺點 VisualVM軟件、插件優缺點監控本地Java進程監控服務器的Java進程&#xff08;生產環境不推薦使用&#xff09; Art…

【圖解大數據技術】流式計算:Spark Streaming、Flink

【圖解大數據技術】流式計算&#xff1a;Spark Streaming、Flink 批處理 VS 流式計算Spark StreamingFlinkFlink簡介Flink入門案例Streaming Dataflow Flink架構Flink任務調度與執行task slot 和 task EventTime、Windows、WatermarksEventTimeWindowsWatermarks 批處理 VS 流式…

如何查找電腦的MAC地址

一. 什么是mac地址&#xff1f; mac地址本質上幫助我們連接到我們遇到的大多數本地網絡。每個網絡適配器通常由網絡接口??控制器(NIC) 制造商分配一個唯一的 mac 地址。 二. 如何查找mac地址 1.點擊網絡和Internet設置 2.點擊WLAN點擊硬件屬性 3.即可查看mac地址

智慧城市3d數據可視化系統提升信息匯報的時效和精準度

在信息大爆炸的時代&#xff0c;數據的力量無可估量。而如何將這些數據以直觀、高效的方式呈現出來&#xff0c;成為了一個亟待解決的問題。為此&#xff0c;我們推出了全新的3D可視化數據大屏系統&#xff0c;讓數據“躍然屏上”&#xff0c;助力您洞察先機&#xff0c;決勝千…

從零開始實現大語言模型(五):縮放點積注意力機制

1. 前言 縮放點積注意力機制(scaled dot-product attention)是OpenAI的GPT系列大語言模型所使用的多頭注意力機制(multi-head attention)的核心,其目標與前文所述簡單自注意力機制完全相同,即輸入向量序列 x 1 , x 2 , ? ? , x n x_1, x_2, \cdots, x_n x

pytorch訓練的時候 shm共享內存不足,導致訓練停止

1.查看shm情況 df -h /dev/shm內存已經滿了&#xff0c;因為之前訓練多次訓練意外停止到shm中的緩存不能及時被清理 2、手動清理shm 依然沒被釋放 3、查看關聯的進程&#xff0c;一個一個kill lsof |grep deletedkill -9 46619 44618 44617 。。。。。4、搞定

Spring @Scheduled學習

一. Jdk中的定時任務 我們平時在 Spring 項目中會使用 Scheduled 開啟定時任務&#xff1b; jdk 中其實也提供了定時任務線程池 ScheduledThreadPool&#xff0c;我們可以直接通過 Executors 工具類獲取&#xff1b; // 創建了核心線程數為 2 的 ScheduledThreadPool 對象 S…

ROS2 + 科大訊飛 初步實現機器人語音控制

環境配置&#xff1a; 電腦端&#xff1a; ubuntu22.04實體機作為上位機 ROS版本&#xff1a;ros2-humble 實體機器人&#xff1a; STM32 思嵐A1激光雷達 科大訊飛語音SDK 訊飛開放平臺-以語音交互為核心的人工智能開放平臺 實現步驟&#xff1a; 1. 下載和處理科大訊飛語音模…

開發指南048-前端模塊版本

平臺前端框架內置了一個文件version.vue <template> <div> <br> 應用名稱: {{name}} <br> 當前版本&#xff1a;{{version}} <br> 服務網關: {{gateway}} </div> </template> <scrip…

qt 創建一個包含兩按鈕,且安裝和自定義控件間沒有間距

在 Qt 中創建一個包含兩個按鈕且按鈕之間沒有間距的自定義控件&#xff0c;你可以使用 QHBoxLayout 或 QVBoxLayout&#xff08;取決于你希望按鈕是水平排列還是垂直排列&#xff09;&#xff0c;并設置布局的間距為 0。以下是一個簡單的示例&#xff0c;展示了如何創建一個水平…

Dataset for Stable Diffusion

1.Dataset for Stable Diffusion 筆記來源&#xff1a; 1.Flickr8k數據集處理 2.處理Flickr8k數據集 3.Github&#xff1a;pytorch-stable-diffusion 4.Flickr 8k Dataset 5.dataset_flickr8k.json 1.1 Dataset 采用Flicker8k數據集&#xff0c;該數據集有兩個文件&#xff…

Node.js_mongodb用戶名和密碼操作

mongodb用戶名和密碼操作 查看用戶密碼創建管理員用戶和密碼mongodb的目標是實現快速簡單部署,所以存在很多安全問題 默認配置下沒有用戶和密碼,無需身份驗證即可登錄,不像mysql那樣需要登錄才能操作數據庫本身安全問題:升級3.0以上版本查看用戶密碼 密碼是加密存儲的,并且…

前端工程化10-webpack靜態的模塊化打包工具之各種loader處理器

9.1、案例編寫 我們創建一個component.js 通過JavaScript創建了一個元素&#xff0c;并且希望給它設置一些樣式&#xff1b; 我們自己寫的css,要把他加入到Webpack的圖結構當中&#xff0c;這樣才能被webpack檢測到進行打包&#xff0c; style.css–>div_cn.js–>main…

速盾:ddos高防ip哪里好用?

隨著互聯網的飛速發展&#xff0c;DDoS攻擊問題逐漸突出。DDoS攻擊是一種通過在網絡上創建大量請求&#xff0c;使目標網絡或服務器過載而無法正常工作的攻擊方式。為了應對DDoS攻擊&#xff0c;提高網絡的安全性和穩定性&#xff0c;使用高防IP成為了一種常見的解決辦法。 DD…

Flower花所比特幣交易及交易費用科普

在加密貨幣交易中&#xff0c;選擇一個可靠的平臺至關重要。Flower花所通過提供比特幣交易服務脫穎而出。本文將介紹在Flower花所進行比特幣交易的基礎知識及其交易費用。 什么是Flower花所&#xff1f; Flower花所是一家加密貨幣交易平臺&#xff0c;為新手和資深交易者提供…

【C++】開源:drogon-web框架配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 這篇文章主要介紹drogon-web框架配置使用。 無專精則不能成&#xff0c;無涉獵則不能通。——梁啟超 歡迎來到我的博客&#xff0c;一起學習&#xff0c;共同進步。 喜歡的朋友可以關注一下&#xff0c;…

Linux系統編程-線程同步詳解

線程同步是指多個線程協調工作&#xff0c;以便在共享資源的訪問和操作過程中保持數據一致性和正確性。在多線程環境中&#xff0c;線程是并發執行的&#xff0c;因此如果多個線程同時訪問和修改共享資源&#xff0c;可能會導致數據不一致、競態條件&#xff08;race condition…

面試題008-Java-SpringBoot

面試題008-Java-SpringBoot 目錄 面試題008-Java-SpringBoot題目自測題目答案1. Spring 和 Spring Boot有什么區別&#xff1f;2. Spring Boot 的主要優點是什么&#xff1f;3. 什么是Spring Boot Starter&#xff1f;4. 介紹一下SpringBootApplication注解&#xff1f;5. Spri…