国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

天河做網(wǎng)站哪家好沒干過網(wǎng)絡(luò)推廣能干嗎

天河做網(wǎng)站哪家好,沒干過網(wǎng)絡(luò)推廣能干嗎,邯鄲做網(wǎng)站公司,成都網(wǎng)站網(wǎng)站建設(shè)項(xiàng)目含有源碼、文檔、PPT、配套開發(fā)軟件、軟件安裝教程、項(xiàng)目發(fā)布教程、包運(yùn)行成功以及課程答疑! 軟件開發(fā)環(huán)境及開發(fā)工具: 操作系統(tǒng):Windows 10、Windows 7、Windows 8 開發(fā)語言:java 前端技術(shù):JavaScript、VUE.j…

?

項(xiàng)目含有源碼、文檔、PPT、配套開發(fā)軟件、軟件安裝教程、項(xiàng)目發(fā)布教程、包運(yùn)行成功以及課程答疑!

軟件開發(fā)環(huán)境及開發(fā)工具:

操作系統(tǒng):Windows 10、Windows 7、Windows 8

開發(fā)語言:java

前端技術(shù):JavaScript、VUE.js(2.X)、css3、vue-element-admin

后端技術(shù):springboot? 2.7.7

開發(fā)工具:IDEA

數(shù)據(jù)庫:MySQL 5.7.26(版本號(hào))

數(shù)據(jù)庫管理工具:Navicat

jdk:java 8及以上

緩存:redis 4.0.1

注:每個(gè)學(xué)校每個(gè)老師對論文的格式要求不一樣,故本論文只供參考,本論文頁數(shù)達(dá)到60頁以上,字?jǐn)?shù)在6000及以上。

基于Java+SpringMvc+Vue技術(shù)的慈善捐贈(zèng)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)

目錄

第一章 緒論

1.1?研究背景

1.2?研究現(xiàn)狀

1.3 研究內(nèi)容

第二章 相關(guān)技術(shù)介紹

2.1 ?Java語言

2.2 HTML網(wǎng)頁技術(shù)

2.3 MySQL數(shù)據(jù)庫

2.4 Springboot 框架介紹

2.5 VueJS介紹

2.6 ElementUI介紹

第三章 系統(tǒng)分析

3.1 可行性分析

3.2 系統(tǒng)性能分析

3.3 系統(tǒng)功能分析

3.4?系統(tǒng)流程分析

第四章 系統(tǒng)設(shè)計(jì)

4.1 系統(tǒng)概要設(shè)計(jì)

4.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

4.3?系統(tǒng)順序圖設(shè)計(jì)

4.4?系統(tǒng)關(guān)系圖設(shè)計(jì)

4.5 數(shù)據(jù)庫設(shè)計(jì)

第五章? 系統(tǒng)詳細(xì)設(shè)計(jì)

5.1 用戶模板系統(tǒng)

5.1 登錄

5.2 注冊

5.3 首頁

5.4 自愿活動(dòng)

?編輯

5.5 新聞

5.6 流言管理

5.7 個(gè)人中心

5.2 后臺(tái)管理員管理

5.2.1 登錄

5.2.2 自愿者用戶管理

5.2.3 活動(dòng)管理

5.2.4 留言板管理

5.2.5 站內(nèi)新聞管理

第六章? 部分代碼實(shí)現(xiàn)

6.1? Spring boot? 配置代碼

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

6.3 Md5 加密算法代碼

6.4 ?部分?jǐn)?shù)據(jù)庫代碼

第七章 系統(tǒng)測試

7.1 測試定義

7.2 測試目的

7.3 測試方案

7.4 測試結(jié)論

第八章 結(jié) 論

致謝

附一、論文參考:

附二、其他案例:?

?附三、源碼獲取:


?

第四章 系統(tǒng)設(shè)計(jì)


4.1 系統(tǒng)概要設(shè)計(jì)


? ? ?系統(tǒng)采用B/S架構(gòu),通過Web瀏覽器進(jìn)行訪問和操作。系統(tǒng)包括前臺(tái)和后臺(tái)兩個(gè)主要部分:

1、用戶模塊包括:登陸與注冊,個(gè)人中心,留言板,志愿活動(dòng)評(píng)論,收藏表,站內(nèi)新聞,活動(dòng)類型,報(bào)名活動(dòng)。

2、管理員功能模塊包括:管理員的登錄,首頁,個(gè)人中心,站內(nèi)新聞管理,志愿活動(dòng)評(píng)論管理,留言管理,志愿活動(dòng)管理,收藏管理。

。

4.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)


? ? 整個(gè)系統(tǒng)是由多個(gè)功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進(jìn)行逐個(gè)的功能設(shè)計(jì),使得每一個(gè)模塊都有相對應(yīng)的功能設(shè)計(jì),然后進(jìn)行系統(tǒng)整體的設(shè)計(jì)。

本系統(tǒng)結(jié)構(gòu)圖如圖4-2所示。?

4.3?系統(tǒng)順序圖設(shè)計(jì)

4.3.1?登錄模塊順序圖

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

4.3.2?添加信息模塊順序圖

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

4.4?系統(tǒng)關(guān)系圖設(shè)計(jì)

本系統(tǒng)各類之間關(guān)系圖如圖4-2所示。

4.5 數(shù)據(jù)庫設(shè)計(jì)

? ? ? ?一個(gè)好的數(shù)據(jù)庫可以關(guān)系到程序開發(fā)的優(yōu)劣,數(shù)據(jù)庫設(shè)計(jì)離不開表結(jié)構(gòu)的設(shè)計(jì),還有表與表之間的聯(lián)系,以及系統(tǒng)開發(fā)需要設(shè)計(jì)的數(shù)據(jù)表內(nèi)容等信息。在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)期間,要結(jié)合實(shí)際情況來對數(shù)據(jù)庫進(jìn)行針對性的開發(fā)設(shè)計(jì)[12]。

4.4.1 數(shù)據(jù)庫E-R圖設(shè)計(jì)
本系統(tǒng)采用的是mysql數(shù)據(jù)庫,數(shù)據(jù)存儲(chǔ)快,因?yàn)閭€(gè)人博客管理系統(tǒng),主要的就是對信息的管理,信息內(nèi)容比較多,這就需要好好的設(shè)計(jì)一個(gè)好的數(shù)據(jù)庫,分類要清楚,不能添加信息的時(shí)候,造成信息太過混亂,設(shè)計(jì)好的數(shù)據(jù)庫首先就需要先把各個(gè)實(shí)體之間的關(guān)系表達(dá)明確,系統(tǒng)的E-R圖如下圖所示:?

4.4.2 邏輯結(jié)構(gòu)設(shè)計(jì)
? ? ? ?邏輯結(jié)構(gòu)設(shè)計(jì)是把概念結(jié)構(gòu)設(shè)計(jì)階段畫好的數(shù)據(jù)庫ER圖轉(zhuǎn)換為關(guān)系模型。該系統(tǒng)的關(guān)系模型的邏輯結(jié)構(gòu)是由主要一下關(guān)系模式組成,具體的關(guān)系模式如下:

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

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

(3)角色權(quán)限信息(主鍵id、角色id、角色名稱、關(guān)聯(lián)的菜單id、關(guān)聯(lián)的菜單名、新增時(shí)間、過期時(shí)間)

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

(5)文章信息(主鍵id、創(chuàng)建日期、文章名稱、文章內(nèi)容描述、文章類型、文章標(biāo)簽、文章點(diǎn)贊數(shù)、文章訪問數(shù)、父節(jié)點(diǎn)id、上傳用戶id、上傳用戶姓名、狀態(tài)、文章審核狀態(tài)、審核人id、審核人)

(6)評(píng)論信息(主鍵id、創(chuàng)建日期、文章id、文章名、評(píng)論人id、評(píng)論人姓名、評(píng)論內(nèi)容、是否審核、評(píng)論時(shí)間等)

第五章? 系統(tǒng)詳細(xì)設(shè)計(jì)

本系統(tǒng)包括:

1、用戶模塊包括:登陸與注冊,個(gè)人中心,留言板,志愿活動(dòng)評(píng)論,收藏表,站內(nèi)新聞,活動(dòng)類型,報(bào)名活動(dòng)。

2、管理員功能模塊包括:管理員的登錄,首頁,個(gè)人中心,站內(nèi)新聞管理,志愿活動(dòng)評(píng)論管理,留言管理,志愿活動(dòng)管理,收藏管理。

5.1 用戶模板系統(tǒng)

5.1 登錄

?

5.2 注冊

5.3 首頁

5.4 自愿活動(dòng)
5.5 新聞

5.6 流言管理

5.7 個(gè)人中心

5.2 后臺(tái)管理員管理

5.2.1 登錄

5.2.2 自愿者用戶管理

5.2.3 活動(dòng)管理

5.2.4 留言板管理

5.2.5 活動(dòng)報(bào)名管理

5.2.5 站內(nèi)新聞管理

第六章? 部分代碼實(shí)現(xiàn)

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#實(shí)體掃描,多個(gè)package用逗號(hào)或者分號(hào)分隔typeAliasesPackage: com.entityglobal-config:#主鍵類型  0:"數(shù)據(jù)庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"field-strategy: 2#駝峰下劃線轉(zhuǎn)換db-column-underline: true#刷新mapper 調(diào)試神器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 項(xiàng)目mybatis plus 設(shè)置 jdbcTypeForNull (oracle數(shù)據(jù)庫需配置JdbcType.NULL, 默認(rèn)是Other)
jdbc-type-for-null: 'null'

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

/*** 用戶賬戶:用于保存用戶登錄信息(User)表控制層*/
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {/*** 服務(wù)對象*/@Autowiredpublic UserController(UserService service) {setService(service);}/*** Token服務(wù)*/@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, "驗(yàn)證碼不能為空");}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("[執(zhí)行登錄接口]");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, "賬號(hào)或密碼不能為空");}if (resultList == null || password == null) {return error(30000, "賬號(hào)或密碼不能為空");}//判斷是否有這個(gè)用戶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);//查詢用戶審核狀態(tài)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,"該用戶審核未通過");}}//查詢用戶狀態(tài)if (byUsername.getState()!=1){return error(30000,"用戶非可用狀態(tài),不能登錄");}String md5password = service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存儲(chǔ)Token到數(shù)據(jù)庫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, "賬號(hào)或密碼不正確");}}/*** 修改密碼* @param data* @param request* @return*/@PostMapping("change_password")public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){// 根據(jù)Token獲取UserIdString token = request.getHeader("x-auth-token");Integer userId = tokenGetUserId(token);// 根據(jù)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,"密碼修改失敗!");}/*** 登錄態(tài)* @param request* @return*/@GetMapping("state")public Map<String, Object> state(HttpServletRequest request) {JSONObject ret = new JSONObject();// 獲取狀態(tài)String token = request.getHeader("x-auth-token");// 根據(jù)登錄態(tài)獲取用戶IDInteger userId = tokenGetUserId(token);log.info("[返回userId] {}",userId);if(userId == null || userId == 0){return error(10000,"用戶未登錄!");}// 根據(jù)用戶ID獲取用戶Map<String,String> query = new HashMap<>();query.put("user_id" ,String.valueOf(userId));// 根據(jù)用戶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,"用戶未登錄!");}}/*** 登錄態(tài)* @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);// 根據(jù)登錄態(tài)獲取用戶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);// 全局?jǐn)?shù)組private final static String[] strDigits = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};/*** 16進(jìn)制字符*/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信息發(fā)生異常!" + ex.toString());return null;} finally {try {if (null != fis) {fis.close();}} catch (IOException e) {logger.error("獲取MD5信息發(fā)生異常!" + e.toString());}}}/*** 把byte[]數(shù)組轉(zhuǎn)換成十六進(jìn)制字符串表示形式** @param tmp 要轉(zhuǎn)換的byte[]* @return 十六進(jìn)制字符串表示形式*/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;}// 返回形式為數(shù)字跟字符串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];}// 返回形式只為數(shù)字private static String byteToNum(byte bByte) {int iRet = bByte;System.out.println("iRet1=" + iRet);if (iRet < 0) {iRet += 256;}return String.valueOf(iRet);}// 轉(zhuǎn)換字節(jié)數(shù)組為16進(jìn)制字串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() 該函數(shù)返回值為存放哈希值結(jié)果的byte數(shù)組resultString = byteToString(md.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}}

6.4 ?部分?jǐn)?shù)據(jù)庫代碼

第七章 系統(tǒng)測試


一個(gè)系統(tǒng)設(shè)計(jì)好后,就會(huì)進(jìn)入測試階段,測試的目標(biāo)是檢驗(yàn)設(shè)計(jì)好的網(wǎng)站是否可以正常無誤的運(yùn)行,盡可能的發(fā)現(xiàn)網(wǎng)站的問題,已使后期網(wǎng)站投入使用后網(wǎng)站盡少出錯(cuò)。

7.1 測試定義


系統(tǒng)測試主要是判斷系統(tǒng)是否可以正常運(yùn)行,功能模塊是否可以實(shí)現(xiàn)操作。程序代碼中是否有錯(cuò)誤出現(xiàn)。測試程序是開發(fā)過程中的一個(gè)主要問題。就算系統(tǒng)完成的再好,再進(jìn)行程序測試時(shí)也會(huì)也會(huì)發(fā)現(xiàn)一個(gè)重來沒有被發(fā)現(xiàn)的錯(cuò)誤信息。

測試不僅是系統(tǒng)開發(fā)的開始,而且應(yīng)該貫穿整個(gè)系統(tǒng)的整個(gè)生命周期。評(píng)估系統(tǒng)質(zhì)量的方法不局限于系統(tǒng)編碼和過程,應(yīng)該與軟件設(shè)計(jì)工作和歷史需求分析密切相關(guān)。系統(tǒng)錯(cuò)誤,不一定是代碼錯(cuò)誤,可能是階段的設(shè)計(jì)摘要和設(shè)計(jì)細(xì)節(jié)存在問題,問題也可能出現(xiàn)在需求分析階段[13]。從實(shí)際情況來看,最初的問題很可能是一個(gè)小錯(cuò)誤,根據(jù)按鈕的原理,按鈕后的按鈕位錯(cuò)將是所有位錯(cuò)。該系統(tǒng)的原因也同樣適用,隨著后續(xù)的開發(fā)工作,誤差將越來越嚴(yán)重。因此就應(yīng)該對系統(tǒng)進(jìn)行測試,在一開始就發(fā)現(xiàn)系統(tǒng)中存在的問題,就能保證以后系統(tǒng)能夠正常穩(wěn)定的運(yùn)行。在測試系統(tǒng)中,開發(fā)人員應(yīng)該站在用戶的角度來處理測試工作,而現(xiàn)在主要的測試方法是黑盒測試。測試的目的可以概括為以下幾點(diǎn):首先,用戶界面和用戶需求是一致的,設(shè)置界面和設(shè)計(jì)風(fēng)格統(tǒng)一;第二,創(chuàng)新設(shè)計(jì)接口規(guī)范設(shè)計(jì)標(biāo)準(zhǔn),具有獨(dú)特的審美特征;最后,人類傳統(tǒng)的接口以滿足審美需求,不能盲目地追求一種獨(dú)特的,合理的規(guī)劃布局,符合審美標(biāo)準(zhǔn)。

7.2 測試目的


測試的目的在于要對系統(tǒng)的穩(wěn)定和可操作性能進(jìn)行對照檢查。對于軟件的開發(fā)利用最終的目的在最后的測試和試用,這是一個(gè)不可缺少的重要環(huán)節(jié)。對于軟件開發(fā)者而言,在對每一個(gè)單獨(dú)的功能進(jìn)行編排時(shí)候,都要有單獨(dú)的測試,并通過測試階段才可以研發(fā)多個(gè)功能性軟件,這樣既縮短了研發(fā)時(shí)間,也可以在的單個(gè)的早期測試中發(fā)現(xiàn)問題,以免融合后的軟件,在查找問題時(shí)就很難快速解決或者急速定位問題。

本系統(tǒng)開發(fā)設(shè)計(jì)完成后,需要對其進(jìn)行系統(tǒng)測試,測試的主要目的就是發(fā)現(xiàn)并找出系統(tǒng)中存在的問題,并及時(shí)的進(jìn)行解決,確保系統(tǒng)可以正常穩(wěn)定的運(yùn)行下去,在進(jìn)行系統(tǒng)測試的時(shí)候,在一定要非常的認(rèn)真、仔細(xì),切記不能粗心,不能放過一個(gè)漏洞,測試時(shí)候一定不要著急,要按照之前指定好的測試步驟一步一步進(jìn)行,并且將測試的結(jié)果進(jìn)行詳細(xì)的記錄,我們在進(jìn)行測試的時(shí)候做好選擇自動(dòng)化的測試,這樣既可以節(jié)省時(shí)間而且也能確保測試的準(zhǔn)確性,如果采用人工測試的方法就不會(huì)這么的方便,由于人工測試有很多不確定的因素,在測試過程中很可能會(huì)出現(xiàn)一些問題,用機(jī)器測試就不會(huì)出現(xiàn)任何的問題,而且機(jī)器不會(huì)疲憊會(huì)一直二等工作下去。在測試的時(shí)候一定要非常專注,時(shí)刻關(guān)注著測試的結(jié)果,一但發(fā)現(xiàn)異常及時(shí)進(jìn)行修改,最后,測試完之后的文檔應(yīng)該保存下來,方便以后測試時(shí)用到。系統(tǒng)測試的方法有很多,對于本個(gè)人博客管理系統(tǒng)的測試,我們使用了測試用得最多的黑盒測試方法來對該系統(tǒng)進(jìn)行測試。

7.3 測試方案


對測試計(jì)劃的把握是測試方案的重中之重。所有的技術(shù)難點(diǎn)應(yīng)該都被包含在這個(gè)測試計(jì)劃之中。而且我們要保證能與目標(biāo)形成一致性,以至于能夠測試出一些主要存在的錯(cuò)誤和一些錯(cuò)誤的漏洞??梢酝昝澜鉀Q這些問題就只有白盒測試或者黑盒測試[14]。

構(gòu)造測試是白盒測試的另一個(gè)名字,了解與分析程序的結(jié)構(gòu)以及性能功用的,從而我們可以得到最終想要的結(jié)果并且觀察出是不是每一條程序都能得到。

性能測試是黑盒測試別稱,程序本身的運(yùn)作通過程序的進(jìn)程來觀察,主要是看一下程序是不是能夠像我們預(yù)期的目標(biāo)那樣發(fā)展,看一看我們的程序最終能不能完整的得到我們最后想要的功能和儲(chǔ)存想得到的數(shù)據(jù),到最后看一下我們的這個(gè)程序完整性能不能達(dá)到要求。

(1)模塊測試

單元測試就是模塊測試,顧名思義就是測試每個(gè)模塊所承擔(dān)的功能是否能夠?qū)崿F(xiàn),這個(gè)測試就是為了找出代碼在實(shí)際的設(shè)計(jì)運(yùn)轉(zhuǎn)中某一些小的程序所出現(xiàn)的偏差,很好地改正這些錯(cuò)誤,就說明我們模塊測試進(jìn)行很成功過。

(2)集成測試:

集成測試就是對系統(tǒng)的測試以及對他子系統(tǒng)的一些性能測試,他檢查的事系統(tǒng)的包裝程序信息。找出其中的問題。他的優(yōu)勢主要有以下這幾點(diǎn):

軟件耗費(fèi)較少。

可以提前發(fā)現(xiàn)端口的錯(cuò)誤。

更好的地位系統(tǒng)中錯(cuò)誤的位置。

從底部往上面進(jìn)行的方案針對于偏下層的結(jié)構(gòu),而中間的結(jié)構(gòu)就采用折中的方法。

(3)驗(yàn)收測試:

終于到了結(jié)尾性的工作了。就是為了給用戶看一下我們的系統(tǒng)功能是否達(dá)到了預(yù)期的效果。我采用了性能測試也就是黑盒測試對系統(tǒng)進(jìn)行測試。

其結(jié)果是分別是:

有一定的差異在用戶的需求。

再者就是結(jié)果與之差不了多少。

到了最后了,我們發(fā)現(xiàn)的問題都是與用戶的需求存在一定的關(guān)聯(lián)。

1、登錄測試

測試點(diǎn):登錄

測試的目標(biāo):輸入賬號(hào)密碼以及驗(yàn)證碼后系統(tǒng)會(huì)自動(dòng)進(jìn)行驗(yàn)證是否正確。

所用的環(huán)境:Windows10和IE瀏覽器。

輸入信息:用戶名、密碼。

步驟:

(1)首先我們打來瀏覽器,進(jìn)入該系統(tǒng)的登錄界面。

(2)在進(jìn)入頁面登錄部分以后可以進(jìn)行對用戶名、密碼進(jìn)行測試,具體測試輸入情況如下表6.1所示。

表6.1 登錄測試?

序號(hào)用戶名輸入密碼輸入期望結(jié)果
1155462192251244566提示“用戶名或者密碼錯(cuò)誤,或賬號(hào)未經(jīng)審核”
2aaaaa123456提示“用戶名或密碼錯(cuò)誤,或者賬號(hào)未經(jīng)審核”
315546219225hangguowei登陸成功

7.4 測試結(jié)論


在線學(xué)習(xí)交流平臺(tái)按設(shè)計(jì)要求基本都可以達(dá)到,此系統(tǒng)具有完整的軟件功能,良好的用戶界面,能夠正確的處理錯(cuò)誤信息,而且能夠準(zhǔn)確的提出錯(cuò)誤的種類。但是系統(tǒng)測試時(shí)也出現(xiàn)了一些系統(tǒng)的不足和缺陷,所以在今后的日子里我會(huì)對其視覺上的不足作出修改,其次系統(tǒng)的代碼和數(shù)據(jù)庫出現(xiàn)了非常多的冗余現(xiàn)象,都是因?yàn)閷幊碳夹g(shù)的應(yīng)用不夠熟練,在日后我會(huì)加強(qiáng)自己的自身學(xué)習(xí)和能力,減少這樣的冗余現(xiàn)象。

經(jīng)過對上述的測試結(jié)果分析,本系統(tǒng)無論是在技術(shù)方面,還是操作方面,還是經(jīng)濟(jì)方面都是完全可以實(shí)行的,并且經(jīng)過測試,該系統(tǒng)操作簡單,所有的功能都可以實(shí)現(xiàn),因此該系統(tǒng)可以滿足人們的使用需求,值得被推廣。

總體說來,軟件通過測試。?

第八章 結(jié) 論

本文研究了在線學(xué)習(xí)交流平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),在文章開端首先對個(gè)研究背景、研究現(xiàn)狀和研究內(nèi)容作了簡單的介紹,然后通過系統(tǒng)分析,引申出本系統(tǒng)研究的主要內(nèi)容。

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

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

通過這次對在線學(xué)習(xí)交流平臺(tái)的開發(fā),讓我學(xué)到了更多的知識(shí),同時(shí)通過這次系統(tǒng)的設(shè)計(jì)也讓我明白了自己在哪方面有不足,以后加以學(xué)習(xí)爭取可以開發(fā)住更多有用的適用的系統(tǒng)軟件,本次系統(tǒng)的設(shè)計(jì)提高了我的編程水平,為了我今后系統(tǒng)的開發(fā)打下了結(jié)實(shí)的基礎(chǔ)。?

參考文獻(xiàn)
[1] 高永強(qiáng).基于深度學(xué)習(xí)的個(gè)性化推薦研究[J].工業(yè)控制計(jì)算機(jī),2021,34(10):90-92.
[2] 張安淇,李元旭.互聯(lián)網(wǎng)知識(shí)共享平臺(tái)信息過載效應(yīng)與弱化機(jī)制——基于知乎的案例研究[J].
情報(bào)科學(xué),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īng)濟(jì)”升溫 寵物吸金強(qiáng)勁[J].中國對外貿(mào)易,2021(04):54-55.
[5] 狗民網(wǎng).2020 年中國寵物行業(yè)白皮書.
[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] 鄧園園,吳美香,潘家輝.基于物品的改進(jìn)協(xié)同過濾算法及應(yīng)用[].計(jì)算機(jī)系統(tǒng)應(yīng)用,
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] 吳青洋,程旭,鄧程鵬,丁浩軒,張宏,林勝海.基于聚類和獎(jiǎng)懲用戶模型的協(xié)同過濾算法[J].計(jì)
算機(jī)系統(tǒng)應(yīng)用,2020,29(08):135-143.DOI:10.15888/j.cnki.csa.007491.
[16] 陸文超,崔海朋.一種基于融合自編碼與神經(jīng)網(wǎng)絡(luò)的協(xié)同過濾算法[J].中國水運(yùn)(下半
月),2022,22(03):18-20.
[17] 王寧,沈正一,崔德龍,劉晴瑞.結(jié)合協(xié)同過濾與隱語義模型的視頻推薦策略[J].湖南工程學(xué)院
學(xué)報(bào)(自然科學(xué)版),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] 張術(shù)梅.MVC架構(gòu)下網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)思考[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 應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J].無線互聯(lián)科技,2021,18(11):108-109.
[22] 胡世洋,賴森林.淺論SSM框架在構(gòu)建“微農(nóng)”信息服務(wù)中的應(yīng)用[J].電腦知識(shí)與技
術(shù),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技術(shù)設(shè)計(jì)與實(shí)現(xiàn)簡易Web計(jì)算器[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前端開發(fā)設(shè)計(jì)方法研究[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技術(shù)在就業(yè)網(wǎng)站用戶信息管理中的應(yīng)用[J].電腦知識(shí)與技
術(shù),2021,17(33):9-11.DOI:10.14004/j.cnki.ckt.2021.3303.?

致謝


在畢業(yè)設(shè)計(jì)的過程中,通過對在線學(xué)習(xí)交流平臺(tái)的設(shè)計(jì),我受益匪淺。在這段時(shí)間里,大學(xué)四年所學(xué)的知識(shí)得到了綜合的運(yùn)用,掌握了軟件開發(fā)的基本方法,了解了當(dāng)今軟件開發(fā)的一些新技術(shù)。

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

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

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

附一、論文參考:

附二、其他案例:?

?

??

?

?附三、源碼獲取:

大家點(diǎn)贊、收藏、關(guān)注、評(píng)論啦 、查看👇🏻👇🏻👇🏻獲取聯(lián)系方式👇🏻👇🏻👇🏻w908925859
打卡 文章 更新 308/ ?365天

?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻

Java項(xiàng)目精品實(shí)戰(zhàn)案例《100套》

Java微信小程序項(xiàng)目實(shí)戰(zhàn)《100套》?

http://aloenet.com.cn/news/41220.html

相關(guān)文章:

  • 通遼做網(wǎng)站制作公司一個(gè)公司可以做幾個(gè)百度推廣
  • 網(wǎng)購app有哪些?長沙seo計(jì)費(fèi)管理
  • 網(wǎng)站設(shè)計(jì)的總結(jié)深圳網(wǎng)站快速排名優(yōu)化
  • 免費(fèi)建站網(wǎng)站大全長沙網(wǎng)站推廣seo
  • 網(wǎng)站建設(shè)后臺(tái)是什么推廣聯(lián)盟平臺(tái)
  • 購物網(wǎng)站開發(fā)實(shí)戰(zhàn)企業(yè)網(wǎng)站優(yōu)化排名
  • 做國際貿(mào)易都用什么網(wǎng)站seo優(yōu)化排名是什么
  • 網(wǎng)站建設(shè)驗(yàn)收標(biāo)準(zhǔn)銷售推廣方案
  • 烏魯木齊培訓(xùn)網(wǎng)站建設(shè)網(wǎng)站自然優(yōu)化
  • 黃驊市第三中學(xué)關(guān)鍵詞優(yōu)化包年推廣
  • 如何寫一個(gè)可以做報(bào)價(jià)計(jì)算的網(wǎng)站網(wǎng)絡(luò)服務(wù)網(wǎng)絡(luò)推廣
  • 為什么自己做的網(wǎng)站別的電腦打不開廣州新聞最新消息今天
  • 怎么做游戲自動(dòng)充值的網(wǎng)站重慶高端網(wǎng)站seo
  • 信息化平臺(tái)的功能介紹搜索引擎優(yōu)化 簡歷
  • 深圳住房和建設(shè)局網(wǎng)站輪候大廳網(wǎng)絡(luò)營銷屬于什么專業(yè)類型
  • 移動(dòng)端使用wordpress富文本編輯器便宜的seo官網(wǎng)優(yōu)化
  • 全自動(dòng)網(wǎng)站建設(shè)最新實(shí)時(shí)大數(shù)據(jù)
  • wordpress好用還是dede磐石網(wǎng)站seo
  • 上海高端定制網(wǎng)站公司關(guān)鍵詞優(yōu)化的技巧
  • 門戶網(wǎng)登錄入口seo軟件定制
  • wordpress視覺編輯器seo在線優(yōu)化工具
  • 上海網(wǎng)站公司電話seo推廣是什么意思
  • 權(quán)大師的網(wǎng)站是哪個(gè)公司做的香港疫情最新消息
  • 網(wǎng)站建設(shè)為中心百度關(guān)鍵詞收錄
  • 個(gè)人主頁自助建站搜索引擎的工作原理分為
  • 孝感 網(wǎng)站建設(shè)百度電商廣告代運(yùn)營
  • 棗莊專業(yè)做網(wǎng)站競價(jià)廣告代運(yùn)營
  • 網(wǎng)站域名個(gè)人備案查詢推廣平臺(tái)排行榜app
  • 國外超酷設(shè)計(jì)網(wǎng)站游戲推廣
  • 如何做服裝的微商城網(wǎng)站重慶森林經(jīng)典臺(tái)詞獨(dú)白