委外網(wǎng)站開發(fā)合同模板什么軟件可以發(fā)布廣告信息
詳細視頻演示
請聯(lián)系我獲取更詳細的視頻演示
項目運行截圖
技術(shù)框架
后端采用SpringBoot框架
Spring Boot 是一個用于快速開發(fā)基于 Spring 框架的應用程序的開源框架。它采用約定大于配置的理念,提供了一套默認的配置,讓開發(fā)者可以更專注于業(yè)務邏輯而不是配置文件。Spring Boot 通過自動化配置和約定大于配置的方式,大大簡化了應用程序的配置工作。開發(fā)者不再需要手動配置大量的 XML 文件或繁瑣的注解,框架提供了默認的配置,根據(jù)項目的依賴關(guān)系和約定,自動完成配置。Spring Boot 使用Maven或 Gradle 進行構(gòu)建,自動下載項目依賴,并提供了許多插件簡化構(gòu)建過程。開發(fā)者可以使用 Spring Initializr 來生成一個基礎(chǔ)的項目結(jié)構(gòu),然后根據(jù)需要選擇所需的依賴。
前端框架Vue
Vue.js的設(shè)計目標之一是使其盡可能簡單、易于理解和上手。Vue 提供了直觀的 API,使開發(fā)者能夠輕松地構(gòu)建交互式的用戶界面。Vue.js 提供了簡單而強大的數(shù)據(jù)綁定機制,通過使用指令(例如 v-model)可以實現(xiàn)視圖和數(shù)據(jù)的雙向綁定。當數(shù)據(jù)發(fā)生變化時,視圖會自動更新,反之亦然,使得開發(fā)者不必手動處理 DOM 操作。Vue.js 提供了一組生命周期鉤子函數(shù),允許開發(fā)者在組件的不同階段執(zhí)行自定義邏輯。這包括創(chuàng)建、掛載、更新和銷毀等階段,為開發(fā)者提供了更多靈活性。
可行性分析
可行性分析是每開發(fā)一個項目必不可少的一部分,可行性分析可以直接影響一個系統(tǒng)的存活問題,針對開發(fā)意義進行分析,還有就是是否可以通過所開發(fā)的系統(tǒng)來彌補傳統(tǒng)手工統(tǒng)計模式的不足,是否能夠更好的解決阿博圖書館管理系統(tǒng)存在的問題等,通過對該阿博圖書館管理系統(tǒng)的開發(fā)設(shè)計,不僅能夠逐步減少工作人員的工作量,而且還可以進行高效工作和管理。所以該系統(tǒng)的開發(fā)實現(xiàn)了最大的意義和價值,在系統(tǒng)完成后,利益是否大過于成本,是否能夠達到預期效果,這些方面都要進行可行性分析,再通過分析之后,就可以決定是否開發(fā)此系統(tǒng)。該阿博圖書館管理系統(tǒng)的開發(fā)設(shè)計中,以下幾點進行了可行性分析:技術(shù)可行性:通過Java技術(shù)的采用,由于該技術(shù)不斷成熟,所以使用該技術(shù)設(shè)計阿博圖書館管理系統(tǒng)是具有可行性的。經(jīng)濟可行性:在開發(fā)過程中,系統(tǒng)完成后的利益是否大過于開發(fā)成本。操作可行性:阿博圖書館管理系統(tǒng)的開發(fā)設(shè)計中,方便用戶的可操作性和實用性。
系統(tǒng)測試
從多個角度進行測試找到系統(tǒng)中存在的問題是本系統(tǒng)首要的測試目的,通過功能測試尋找出系統(tǒng)缺陷并改正,確保系統(tǒng)沒有缺陷。在測試過程中證明系統(tǒng)滿足客戶需求,發(fā)現(xiàn)問題和不足及時改正。測試完成之后得出測試結(jié)論。
系統(tǒng)測試的目的
系統(tǒng)測試是必不可少且考驗耐心的過程。其重要性在于,它是保證系統(tǒng)質(zhì)量和牢靠性的最后一道關(guān),也是整個系統(tǒng)開發(fā)過程的最后一次檢查。
系統(tǒng)測試主要是為了避免用戶在使用時發(fā)生問題,增強用戶體驗感,為了不影響用戶的使用,我們需要從多角度、多思路去考慮系統(tǒng)可能遇到的問題,通過不同的模擬場景來發(fā)現(xiàn)缺陷并解決問題。在測試的過程中也可以了解到該系統(tǒng)的質(zhì)量情況,系統(tǒng)功能是否健全,系統(tǒng)邏輯是否順暢。一個合格的系統(tǒng)測試過程完成后將大大提升系統(tǒng)質(zhì)量和使用感。測試的目標是驗證系統(tǒng)是否符合需求規(guī)格說明書的定義,并找出與需求規(guī)格說明書不符合或與之沖突的內(nèi)容。測試過程中一定站在用戶的角度考慮問題,避免一些不切實際的場景,浪費測試時間,從而可能會引起問題導致預期結(jié)果與實際結(jié)果不符。
系統(tǒng)功能測試
對系統(tǒng)功能模塊進行測試,通過點擊、輸入邊界值和必填項非必填項的驗證等方法進行一系列的黑盒測試。通過編寫測試用例,根據(jù)測試用例中的內(nèi)容進行測試,最后得出測試結(jié)論。
登錄功能測試方案:當需要登入該系統(tǒng)時,通過賬戶密碼等功能點進行驗證,用戶在輸入時需要輸入與數(shù)據(jù)庫內(nèi)存儲的數(shù)據(jù)匹配的內(nèi)容,當其中某項輸入錯誤時系統(tǒng)將提示輸入錯誤。此界面對角色權(quán)限也有相應的校驗,當用戶角色的帳號選擇管理員角色登錄時,也會報錯。登錄功能測試用例如下表所示。
輸入數(shù)據(jù) | 預期結(jié)果 | 實際結(jié)果 | 結(jié)果分析 |
用戶名:guanliyuan 密碼:123456 驗證碼:正確輸入 | 登入系統(tǒng) | 成功登入系統(tǒng) | 和估算結(jié)果一樣 |
用戶名:guanliyuan 密碼:111111 驗證碼:正確輸入 | 密碼錯誤 | 密碼錯誤,請重新輸入密碼 | 和估算結(jié)果一樣 |
用戶名:guanliyuan 密碼:123456 驗證碼:錯誤輸入 | 驗證碼錯誤 | 驗證碼信息錯誤 | 和估算結(jié)果一樣 |
用戶名:空 密碼:123456 驗證碼:正確輸入 | 用戶名必填 | 請輸入用戶名 | 和估算結(jié)果一樣 |
用戶名:guanliyuan 密碼:空 驗證碼:正確輸入 | 密碼錯誤 | 密碼錯誤,請重新輸入密碼 | 和估算結(jié)果一樣 |
用戶管理功能測試方案:用戶管理主要有添加、編輯、刪除、查找用戶功能。添加用戶時,必填項不填,檢驗系統(tǒng)是否有非空檢驗;添加已有的用戶信息,檢驗是否提示用戶名已被使用;刪除用戶信息,系統(tǒng)將檢驗是否進行此操作;更改用戶信息,更改用戶信息后頁面是否可以展示出來。用戶管理測試用例如下表所示。
輸入數(shù)據(jù) | 預期結(jié)果 | 實際結(jié)果 | 結(jié)果分析 |
填入用戶基本信息 | 添加成功,在用戶列表中顯示 | 該用戶出現(xiàn)在在列表中 | 和估算結(jié)果一樣 |
修改用戶信息 | 編輯成功,修改信息成功被修改 | 用戶信息被修改 | 和估算結(jié)果一樣 |
選中刪除用戶 | 系統(tǒng)詢問是否刪除用戶,確認后用戶被刪除 | 系統(tǒng)詢問是否刪除用戶,確認后查找不到用戶信息 | 和估算結(jié)果一樣 |
添加用戶時不填用戶名 | 提示用戶名不能為空 | 提示用戶名不能為空 | 和估算結(jié)果一樣 |
填入已有用戶名 | 添加失敗,提示用戶名重復 | 添加失敗,提示用戶名重復 | 和估算結(jié)果一樣 |
數(shù)據(jù)庫表設(shè)計
列名 | 數(shù)據(jù)類型 | 長度 | 約束 |
id | int | 11 | PRIMARY KEY |
addtime | 行2內(nèi)容 | 行2內(nèi)容 | DEFAULT NULL |
jieyuedanhao | varchar | 64 | DEFAULT NULL |
tushubianhao | varchar | 64 | DEFAULT NULL |
tushumingcheng | varchar | 12 | DEFAULT NULL |
fakuanshuoming | varchar | 64 | DEFAULT NULL |
fakuanjine | varchar | 64 | DEFAULT NULL |
fakuanriqi | varchar | 64 | DEFAULT NULL |
yonghuming | varchar | 64 | DEFAULT NULL |
shouji | varchar | 64 | DEFAULT NULL |
代碼參考
/*** 通用接口*/
@RestController
public class CommonController{@Autowiredprivate CommonService commonService;@Autowiredprivate ConfigService configService;private static AipFace client = null;private static String BAIDU_DITU_AK = null;@RequestMapping("/location")public R location(String lng,String lat) {if(BAIDU_DITU_AK==null) {BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();if(BAIDU_DITU_AK==null) {return R.error("請在配置管理中正確配置baidu_ditu_ak");}}Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);return R.ok().put("data", map);}/*** 人臉比對* * @param face1 人臉1* @param face2 人臉2* @return*/@RequestMapping("/matchFace")public R matchFace(String face1, String face2) {if(client==null) {/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();String token = BaiduUtil.getAuth(APIKey, SecretKey);if(token==null) {return R.error("請在配置管理中正確配置APIKey和SecretKey");}client = new AipFace(null, APIKey, SecretKey);client.setConnectionTimeoutInMillis(2000);client.setSocketTimeoutInMillis(60000);}JSONObject res = null;try {File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);String img1 = Base64Util.encode(FileUtil.FileToByte(file1));String img2 = Base64Util.encode(FileUtil.FileToByte(file2));MatchRequest req1 = new MatchRequest(img1, "BASE64");MatchRequest req2 = new MatchRequest(img2, "BASE64");ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();requests.add(req1);requests.add(req2);res = client.match(requests);System.out.println(res.get("result"));} catch (FileNotFoundException e) {e.printStackTrace();return R.error("文件不存在");} catch (IOException e) {e.printStackTrace();} return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));}
數(shù)據(jù)庫腳本
CREATE TABLE `yonghu` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',`yonghuming` varchar(200) NOT NULL COMMENT '用戶名',`mima` varchar(200) NOT NULL COMMENT '密碼',`xingming` varchar(200) DEFAULT NULL COMMENT '姓名',`xingbie` varchar(200) DEFAULT NULL COMMENT '性別',`touxiang` varchar(200) DEFAULT NULL COMMENT '頭像',`shouji` varchar(200) DEFAULT NULL COMMENT '手機',`shenfenzheng` varchar(200) DEFAULT NULL COMMENT '身份證',PRIMARY KEY (`id`),UNIQUE KEY `yonghuming` (`yonghuming`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222324596 DEFAULT CHARSET=utf8mb3 COMMENT='用戶';
CREATE TABLE `messages` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',`userid` bigint NOT NULL COMMENT '留言人id',`username` varchar(200) DEFAULT NULL COMMENT '用戶名',`content` longtext NOT NULL COMMENT '留言內(nèi)容',`reply` longtext COMMENT '回復內(nèi)容',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222424131 DEFAULT CHARSET=utf8mb3 COMMENT='留言板';
CREATE TABLE `token` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵',`userid` bigint NOT NULL COMMENT '用戶id',`username` varchar(100) NOT NULL COMMENT '用戶名',`tablename` varchar(100) DEFAULT NULL COMMENT '表名',`role` varchar(100) DEFAULT NULL COMMENT '角色',`token` varchar(200) NOT NULL COMMENT '密碼',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增時間',`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '過期時間',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COMMENT='token表';
獲取源碼
我們有上萬多套源碼,歡迎咨詢。
可定制、修改、部署、講解、代寫文檔、PPT。
獲取源碼查看底部卡片或者頂部名字