?????
基于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所示。
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及以上。