一 序言
本文主要闡述的是一個數據可視化學生成績分析系統的軟件系統設計方案。這個項目來源於我的工程實踐任務。
項目簡介:建立一個系統,這個系統采用經典架構,具有一定的安全性、穩定性。在具體功能上,要實現對於成績最基本的管理功能,包括錄入、查看、修改等。此外最重要的一點是,該系統被期望能夠根據現有各科成績的離散情況,依比例完成數據轉換,使得各類數據的離散值均勻,並可以根據不同類別對數據進行統計分析。最后,系統還應當能對大數據進行分析並推導出有預測性的結論。
關於此系統的需求分析與概念原型部分的討論,有興趣的讀者可移步至我之前在博客園上的博文:
https://www.cnblogs.com/wonaicaocao/p/14082428.html
本文將從軟件系統的設計方面進行探討,爭取給出一個合理實用的設計方案。
二 軟件架構風格
軟件架構風格,又稱軟件體系結構風格,是描述某一特定應用領域中系統組織方式的慣用模式。軟件架構風格反映了領域中眾多系統所共有的結構和語義特性,並指導如何將各個模塊和子系統有效地組織成一個完整的系統。對軟件體系結構風格的研究和實踐促進對設計的重用,一些經過實踐證實的解決方案也可以可靠地用於解決新的問題。
考慮本項目,很明顯,該系統要被多用戶進行使用,而且要為這些用戶所操作的信息提供存儲空間與反應機制,而且為了適應現代化辦公的需要,該系統需要可以被手機、平板、計算機等各種設備訪問。因此,B/S架構成為了實現這一系統的不二選擇。在上次作業完成后,經過考慮,與老師商討,決定不再采用上次文章所提到的C/S架構,轉而使用便捷靈活的B/S架構。
B/S架構主要使用不斷成熟的瀏覽器技術,結合客戶端腳本語言和ActiveX技術來實現。對於C/S架構中要使用復雜軟件實現的功能,本架構采用電腦自帶的瀏覽器便可實現。它不僅業務擴展方便,而且維護成本低且共享性強,已經成為當今應用程序的首選體系結構。
三層結構中,數據庫服務器和客戶端不直接耦合,而是通過中間層進行耦合,與兩層結構相比它具有更加優秀的維護性、靈活性與可擴展性。目前三層結構常應用於B/S架構系統中。用戶通過瀏覽器訪問web服務器,服務器從數據庫中調動、修改數據。
三 軟件設計模式
軟件設計模式又稱設計模式,是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。算法不是設計模式,因為算法致力於解決問題而非設計問題。設計模式通常描述了一組相互緊密作用的類與對象。設計模式提供一種討論軟件設計的公共語言,使得熟練設計者的設計經驗可以被初學者和其他設計者掌握。
本項目從各種意義上考慮都是一個面向對象的項目,不論是語言(Java)還是架構(B/S)等,故而采用觀察者模式作為行為模式,定義對象間的一種一對多的依賴關系,以便當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並自動刷新;采用原型模式作為創建模式,用原型實例指定創建對象的種類,並且通過拷貝這個原型來創建新的對象。采用適配器模式為結構模式,將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。
四 軟件開發環境
本系統在Microsoft Windows10系統上進行開發。設計並實現過程中采用了以下開發環境:
(1)Eclipse。它是一款開源的Java語言開發工具,屬於IBM公司的產品。它可以通過添加插件來擴展各種開發軟件所需功能,是當下利用Java語言進行系統設計最常用的平台之一;
(2)Java SE 8.0版本。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE是基礎包,但是也包含了支持 Java Web 服務開發的類,並為其它Java版本提供基礎;
(3)Tomcat服務器。Tomcat是Apache軟件基金會的一個核心項目,它的代碼完全開源且免費,擁有技術先進、性能穩定的優點,目前已經成為比較流行的web應用服務器,它是一個可以獨立運行的Servlet容器;
(4)MySQL數據庫。最初由MySQL AB公司開發,其社區版本完全免費,同時具有各種優良特性,已經成為目前最流行的關系數據庫管理系統之一。
本系統采用目前設計上流行的SSM框架,即Spring+SpringMVC+MyBatis。
(1)Spring。Spring是一款完全開源且免費的框架,可以實現一站式編程。它采用模塊化的組織方式,可以用於聲明式事務的處理,具有靈活多樣的特點。
(2)SpringMVC。它將各個層進行解耦操作,極大地簡化了代碼。它采用工作者模式,前端控制器負責接受請求,而應用控制器負責執行請求。客戶端向Web容器發命令,由前端控制器進行攔截,將業務需求發給應用控制器,二者又分別在視圖層與模型層進行交互操作,最終將結果返回。
(3)MyBatis。MyBatis是一款開源且輕量的持久層框架,支持動態SQL、調用存儲過程以及高級映射。它可以通過簡單的XML文件或注解進行配置與映射,自動將Java對象映射成數據庫中的記錄。它實現了代碼與SQL語句的隔離管理,降低了二者之間的耦合度,因此它得到了廣泛使用。
五 系統數據庫設計
我在數據庫中設計了如下幾張表:管理員賬戶表、教師賬戶表、學生賬戶表、成績表、通知表、學生資料表和教師資料表。通過這些表來存放數據,從而完成預期的任務。
(1)管理員賬戶表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
賬號 |
Mcount |
varchar |
20 |
主鍵,非空 |
密碼 |
Mpwd |
varchar |
15 |
可空 |
密保問題 |
Mquestion |
varchar |
30 |
可空 |
(2)教師賬戶表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
賬號 |
Tcount |
varchar |
20 |
主鍵,非空 |
密碼 |
Tpwd |
varchar |
15 |
可空 |
密保問題 |
Tquestion |
varchar |
30 |
可空 |
工號 |
Tnum |
varchar |
10 |
可空 |
(3)學生賬戶表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
賬號 |
Scount |
varchar |
20 |
主鍵,非空 |
密碼 |
Spwd |
varchar |
15 |
可空 |
密保問題 |
Squestion |
varchar |
30 |
可空 |
學號 |
Snum |
varchar |
10 |
可空 |
(4)成績表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
學期 |
Sem |
varchar |
20 |
聯合主鍵,非空 |
課程號 |
C'no |
varchar |
15 |
聯合主鍵,非空 |
課程名 |
Course |
varchar |
30 |
可空 |
授課老師 |
Teacher |
varchar |
10 |
可空 |
學號 |
Snum |
varchar |
10 |
可空 |
分數 |
Score |
double |
20 |
可空 |
備注 |
Extra |
varchar |
20 |
可空 |
(5)通知表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
編號 |
ID |
Int |
10 |
主鍵,非空 |
種類 |
Type |
varchar |
15 |
可空 |
內容 |
Infor |
varchar |
30 |
可空 |
接收者 |
Reciever |
varchar |
10 |
可空 |
(6)學生資料表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
學號 |
Snum |
varchar |
20 |
主鍵,非空 |
姓名 |
Sname |
varchar |
15 |
可空 |
性別 |
Ssex |
varchar |
30 |
可空 |
班級 |
Sclass |
varchar |
10 |
可空 |
狀態 |
Ssitu |
varchar |
10 |
可空 |
(7)教師資料表
中文名稱 |
字段名稱 |
類型 |
長度 |
是否允許為空 |
工號 |
Tnum |
varchar |
20 |
主鍵,非空 |
姓名 |
Tname |
varchar |
15 |
可空 |
性別 |
Tsex |
varchar |
30 |
可空 |
部門 |
Tdepart |
varchar |
10 |
可空 |
職稱 |
Tjob |
varchar |
10 |
可空 |
六 軟件系統視圖
接下來將展示基於本數據可視化學生成績分析系統繪制的各種視圖,通過這些視圖,整個軟件系統的層次、邏輯、布局以及運作方式將詳盡展示出來。
分解視圖
分解視圖通過將軟件系統進行層次化解析來繪制出視圖,使得整個軟件系統可以層次分明的展示出來。本項目的分解視圖如下:
依賴視圖
依賴視圖詳細展示了一個軟件系統內各模塊之間的依賴關系。依賴視圖基於分解視圖的基礎上進行繪制,用虛線箭頭表示兩個模塊間的數據依賴關系。
泛化視圖
泛化視圖展現了軟件模塊之間的一般化或具體化的關系,描述了軟件在抽象層面上的關系,進一步展示了整個軟件系統的各層架構。
其中,Manager、Student、Teacher均繼承自賬戶管理;TData、SData均繼承自信息管理。
執行視圖(流程圖)
執行視圖的表現形式有多種,如流程圖、時序圖等。本文選擇自己最熟悉、最常用的流程圖來表征。
部署視圖
部署視圖有助於設計人員分析一個設計的質量屬性,比如軟件處理網絡高並發的能力、軟件對處理器的計算需求等。它將執行實體和計算機資源建立映射關系。
工作分配視圖
工作分配視圖有利於跟蹤不同項目團隊和成員的工作任務的進度,也有利於在項目團隊和成員之間合理地分配和調整項目資源。
實現視圖(項目結構)
以下是目前構建出的項目結構,在接下來的日子里會根據具體要求進行調整。
七 概念模型的工作機制
程序=算法+數據結構,這個規約我們並不陌生,早在剛開始接觸計算機專業時就已經理解。那么概念原型是什么呢?類比程序的“等式”,可以分析出,概念原型=用例+數據模型,這樣一來這一概念就顯得有尤為清晰了。
由上的所有歸納匯總,不難分析出系統細節,下面根據不同的用例來闡述整個整個概念模型的工作過程:
①管理員:登陸之后,可以管理各類賬號,包括添加、移除等操作;也可以對成績類進行管理,如多開一門課、安排一次考試等;還可以管理信息,如調整教師職位、改變學生狀態;
②教師:登陸之后,可以更改自己的密碼(要回答密保問題)、可以錄入最近的考試成績,還可以對成績進行分析,看看教學情況是否理想,並預測下一次的考試結果;
③學生:登陸之后可以看看系統通知,了解一下最新的成績動態,可以按單科或總學年查看自己的成績;若對自己的成績不滿意,可以查看經由系統分析后得出的見解,從而更好地鼓勵自己學習。
八 總結
本文詳細論述了一個基於B/S模式的數據可視化學生成績分析系統的詳細軟件設計方案,給出了它的設計模式、設計風格、設計視圖、數據庫與概念模型工作過程,既為接下來的工程實踐操作打下了基礎,又實踐、鞏固了軟件工程的相關知識。對於過程中出現的不足,在日后的項目開發中會進行不斷地改進。
參考資料
1.https://www.cnblogs.com/wonaicaocao/p/14082428.html
2.https://www.cnblogs.com/fanlinglong/p/12583902.html
3.https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%A3%8E%E6%A0%BC/11004536?fr=aladdin
4.https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/2117635?fr=aladdin