開發環境
開發語言:Java 框架:springboot JDK版本:JDK1.8 服務器:tomcat7 數據庫:mysql
5.7(一定要5.7版本) 數據庫工具:Navicat11 開發軟件:eclipse/myeclipse/idea Maven包:Maven3.3.9 瀏覽器:谷歌瀏覽器后臺路徑地址:localhost:8080/項目名稱/admin/dist/index.html
前臺路徑地址:localhost:8080/項目名稱/front/dist/index.html (無前臺不需要輸入)管理員賬號:admin 管理員密碼:admin
開發技術簡介
Java語言
Java語言是目前最流行的語言之一,不僅可以做桌面窗口形式的程序,還可以做瀏覽器訪問的程序,目前最流行的就是用Java語言作為基礎,做各種程序的后臺處理。Java語言是操作變量的語言,而變量則是Java對于數據存在形式的定義,變量用來操作內存,而內存則牽扯到計算機安全問題,這樣Java語言反而有了免疫直接針對用Java語言開發出來的程序的病毒,有效的提高了Java語言開發出來程序的生存能力。Java是具有動態運行能力的一種語言,Java的類不僅僅可以用Java核心提供的基礎類,還可以進行重寫,這樣會讓Java的功能變得更加豐富,甚至可以編寫一些功能模塊進行封裝,然后其他項目如果需要用到這些可以復用的功能,完全可以直接引用,然后在用得地方調用方法即可。Java是一種開源的語言,可以對Java里面的各種類以及引用方法進行追溯,甚至可以對已經編譯過的語言進行反編譯,這樣不僅僅提高學習的效率,并且可以學習其他從業者提供的優雅的編程方式。Java語言發展到現在,已經在各個行業扎根,學習Java可以從事的行業很多,并且學習的方法很多,網上有很多免費的教程,甚至有些高深的知識也只需要付費就可以進行學習,而不是像Java語言之初,每一個編程人員都需要用記事本進行手動編碼,現在有很多集成開發環境幫助Java從業者。選擇Java語言進行編程,是一種很好的解決問題的方式。
MYSQL數據庫
一般學習程序開發的人員如果學習數據庫的話,肯定是要學習MySQL數據庫,MySQL數據庫通過這么多年的不斷發展,社區版本都是免費的,最重要的是小巧,占用電腦空間比較小,讓更多的開發人員可以不需要更換更高級的電腦就可以進行學習。學習只是一個方面,最重要的是MySQL市場占有率是世界第一,基本上十個公司就有七八個用得MySQL數據庫。MySQL的優點不只是這么粗淺,MySQL首先是開源的,只要不是商用就不用花錢,并且大型的數據也是支持的,只要是市面上存在的操作系統,MySQL都可以有對應的版本可供使用。因為MySQL是開源的,如果有對MySQL有特殊需求的甚至可以自己修改源碼,達到符合自己使用的目的。MySQL數據庫好處多多,最重要的一點符合本設計的開發需求,可以說本設計只用到了MySQL的一些基礎功能,而這點基礎功能就完全夠用。MySQL學習的教程網上很多,許多關于入門的教程就完全可以達到普通程序員的開發水平,只需要把基本的知識學會了,到公司里面也只是根據不同的業務邏輯進行不同的語句編寫而已。
Eclipse開發工具
Eclipse是開源免費的,僅僅這樣理解也許會給人一種免費沒有好貨的感覺,其實不是這樣的。Eclipse是一個開發源代碼的開發工具,這樣會很安全,因為是開源的,如果對使用者的電腦有害,肯定能找到原因所在,所以這一點安全方面是不用擔心的。Eclipse是不用安裝的,這樣就不用對系統盤增加壓力,可以放到任何一個盤里,使用的時候打開,不用的時候關閉,不會偷偷的在后臺運行,不需要增加注冊表負擔,啟動還必須依靠Java的JDK才可以啟動,有效的避免了一些病毒入侵,如果病毒入侵改變了源代碼,就不能運行了,只能重新刪除文件夾重新解壓一份新的Eclipse即可,用起來很安全。Eclipse發展到現在,已經可以支持其他的開發語言了,家族越來越強大,功能越來越多,最重要的還是沒有收費,這一點就讓新手開發者省下很多的資金用來培養自己的學習,而不用花錢買了開發軟件才發現自己不適合進行開發,永遠免費的策略可以永遠讓人有想使用的機會。最重要的是Eclipse并不是免費功能就不夠用,恰恰相反,不僅功能強大,用起來完全符合本設計的開發需求,所以選用了Eclipse作為開發工具。
Spring Boot框架
Spring
Boot適合初學者,也適合從以前的Spring框架開發者學習,學習起來是很方便的,不管是純英文教程還是中文教程,國內外都有很多學習的資料。Spring
Boot可以運行所有的Spring項目,進行無縫切換。內置了Servlet
容器,不需要對代碼進行打包變成WAR就可以運行。自帶應用監控,運行的時候可以實時的對正在運行的項目進行監控,可以隨時發現問題所在并且能定位發生的問題,可以讓程序員及時的修改問題。
詳細視頻演示
請聯系我獲取更詳細的演示視頻
系統功能部分效果
核心代碼
package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上傳文件映射表*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{@Autowiredprivate ConfigService configService;/*** 上傳文件*/@RequestMapping("/upload")@IgnoreAuthpublic R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException("上傳文件不能為空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime()+"."+fileExt;File dest = new File(upload.getAbsolutePath()+"/"+fileName);file.transferTo(dest);/*** 如果使用idea或者eclipse重啟項目,發現之前上傳的圖片或者文件丟失,將下面一行代碼注釋打開* 請將以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替換成你本地項目的upload路徑,* 并且項目路徑不能存在中文、空格等特殊字符*/
// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路徑以后請將該行最前面的//注釋去掉**/if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下載文件*/@IgnoreAuth@RequestMapping("/download")public ResponseEntity<byte[]> download(@RequestParam String fileName) {try {File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}File file = new File(upload.getAbsolutePath()+"/"+fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", fileName); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);}}
系統功能測試
本系統首先在本地服務器上進行了安裝和測試,之后鑒于對系統的結構和處理方法的充分熟悉和對系統特性的充分了解,對系統進行了白盒測試和黑盒試驗。
在發展軟件系統的整個過程中,人們必須面臨錯綜復雜性的實際問題,所以,在軟件系統生存周期的各個過程中都必然地會形成錯誤。應用軟件檢測目的在于:出現出錯并運行某個程序的步驟,而應用軟件檢測的最重要目的便是找到其中尚未發生的出錯。
為了制定出合理的測試計劃,根據以下原則開始了測量;任何測試都要追溯到客戶需要;當確定了客戶使用模型后就要著手制定測試計劃,并在編碼以前就對整個軟件測試工作做出規劃和制定;御用Pareto原理,主要對占出了百分之八十九以上的最易于出錯的約百分之二十的模板實施了檢測,并從小規模開始逐步實施大量檢測,范圍一般從主要檢測單編程模板再到完全集成的模板;同時精心設計了檢測方法,盡可能地全面覆蓋所有程序邏輯并使其滿足要求的能力。
結論
本系統相對于我查閱到的其他系統具有如下優點:其功能全面、易于日后程序更新、數據庫管理容易、界面友好、操作方便、效率高、安全性好。
本系統在技術層面具有如下優點:第一,用java實現動態頁面,使軟件系統具備了很好的可維護性和可復用性。其次,在本系統的編寫流程中使用的是Spring
Boot框架,該框架將更有效的把顯示功能與邏輯分開,使得模塊更易于管理,尤其適用于大型項目的編寫。第三,后臺使用的MySQL數據庫系統,MySQL的數據庫系統引擎主要集中在了對XML標準的支持,同時具備可擴充、容易應用和安全性高的優點。
綜上所述,通過這次從零開始的畢業設計是一次全新的開始,也期待圓滿結束。我也希望這次的設計能通過我后期的自主學習把它趨向于完美,成為我的自主創作經驗。