本項目基於IDEA進行開發,前端使用mdui框架,後端基於MVC開發模式實現,數據庫方面使用了Mysql,主要使用了數據庫的備份還原以及觸發器的技術。數據庫連接方面主要使用阿里巴巴的Druid連接池和Spring的JdbcTemplate,版本控制方面基於Git和Github進行版本控制。已上傳github,也歡迎大家觀看我的博客
一. 內容與要求
設計內容:
在線投稿審稿管理系統數據庫包括以下功能:作者、審稿人的信息管理(錄入、修改、刪除等);稿件類型、稿件信息的管理;稿件的審閱過程管理稿費、審稿費和版面費的管理; 創建存儲過程,統計指定作者的稿件信息 ;創建觸發器,當收到審稿費時自動修改審稿費收到標記爲“是”; 具有數據備份和數據恢復功能。
要求: 數據庫系統要根據設計內容和要求進行分析與設計,要考慮系統的完整性約束,系統中的數據表設計應合理、高效,儘量減少數據冗餘。(規範到3NF或BCNF系統完成對數據庫數據的增加、修改、刪除、查詢功能)
二. 開發環境
- JDK8LST (Java Development Kit)
JDK是 Java 語言的軟件開發工具包,主要用於移動設備、嵌入式設備上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境(JVM+Java系統類庫)和JAVA工具,使用版本是Java 8長期支持版。 - Web服務器 Tomcat 8.5.31
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。 - 開發工具 IDEA
2019.2.4IDEA 全稱 IntelliJ IDEA,是java編程語言開發的集成環境。IntelliJ在業界被公認爲最好的java開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創新的GUI設計等方面的功能可以說是超常的。 - 數據庫 Mysql 5.5
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。
三. 頁面展示
-
審稿人和作者登錄界面
-
管理員主界面
-
作者主界面
-
審稿人主界面
具體功能界面 -
管理員管理作者界面(可實現對作者的CURD)
-
管理員管理稿件主界面(可實現對稿件的CURD)
-
管理員對審稿人的CURD
-
當然管理員還有數據庫備份和還原的功能
指定在D盤下的mysql下生成backup.sql
-
作者修改個人信息界面
關於審覈者和作者其他的界面就不做詳細介紹了,其實最複雜就是審覈者和管理員之間的關係。
四. 需求分析
信息要求
- 作者基本信息
- 稿件基本信息
- 審稿人基本信息
安全性與完整性需求安全性需求
安全性需求:
- 作者和審稿人登錄系統時,需要輸入正確的用戶名和密碼,方可登陸系統。
- 作者登錄系統後,只能修改本人的身份。
- 登錄系統後長時間(30min)未操作,需要重新登錄。
- 觸發器,審稿人收到稿費後,審稿標記完成審稿。
完整性需求:
- 實體完整性:作者編號、稿件編號、審稿人編號分別爲作者、稿件、審稿人主碼。
- 參照完整性:發佈訂單作者和稿件編號與基本表作者編號、稿件編號登陸對應;審覈訂單審稿人和稿件編號與基本表審稿人編號、稿件編號登陸對應系統。
- 用戶定義完整性:審覈訂單表中,審稿狀態爲0、1和2,其中0表示待審覈;1表示審覈通過;2表示審覈不通過。用戶密碼必須爲六位及以上。
處理需求
該系統的基本業務要求如下:一名審稿人可以審閱多篇稿件,同時一篇稿件也可以被多個審稿人審覈。一名作者可以發佈多篇稿件,同時一篇稿件也可以被多個作者發佈。
根據在線審稿系統業務情況,該系統被分爲登錄,管理,發佈,審閱四大系統模塊。
- 登錄認證/退出系統
(1)登錄認證,判別身份。
(2)將權限作爲變量傳入系統。 - 管理系統(1)審閱人,作者的管理。
(2)審閱人,作者,稿件初始化。(3)審稿和發佈系統的開發與關閉。
(4)數據庫備份與還原。 - 發佈系統
(1)修改作者個人信息。
(2)發佈稿件。
(3)修改發佈的稿件。
(4)查看稿件狀態。 - 審閱系統
(1)修改審閱人信息。
(2)審閱稿件。查看稿件狀態。
總體結構圖如下:
五. 部分代碼分析
數據庫的備份與還原
主要調用JdbcUtils包中的這兩個語句:
//數據庫還原public static void backup() throws IOException {
Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /c D:/mysql/dbbackup.bat"); }
//數據庫備份
public static void restore() throws IOException {
Runtime.getRuntime().exec("C:/Windows/System32/cmd.exe /c D:/mysql/dbrestore.bat");
}
(1)數據庫還原語句如下:
mysqldump -uroot -pzzd..000 submission_review_system > D:\mysql\backup.sql
在windows命令行中運行得到如下效果:
(2)數據庫備份語句如下:
mysql -uroot -pzzd..000 submission_review_system < D:\mysql\backup.sql
六. 總結
我發現這其中需要很多知識我們沒有接觸過,去網上查資料時候發現我們前邊所學到僅僅是皮毛,還有很多需要我們掌握東西我們根本不知道。同時也發現有很多已經學過東西我們沒有理解到位,不能靈活運用於實際,不能很好用來解決問題,這就需要我們不斷大量實踐,通過不斷自學,不斷地發現問題,思考問題,進而解決問題。
我不僅瞭解到了在完成系統中數據庫所起的巨大作用是軟件所自帶的數據結構比擬不了的,同時在完成系統的過程中體驗數據庫關係模式的設計以滿足第三範式或者BC範式規範化,數據庫的觸發器等等新鮮的知識。這些數據庫相關的知識對於我的啓發很大,學習軟件工程,不僅要掌握一門門技術語言,數據庫知識也要過關。
最後,如果這篇文章對大家有用的話,不勝感激!!!