系統的概要設計大緻涉及到UML圖的包圖和類圖。是從系統的大體架構上進行設計。利用分層的思想将該程式進行切分,使得程式更有條理性,不同的層次負責不同的工作。這樣才能實作利益的最大化。
我們已經學過了‘三層架構’‘MVC’,起碼是聽說過了。裡面大概的包含什麼東西已經知道了。接下來的就是運用實際的項目來促進對這些知識的深入了解和了解。
三層架構和MVC是存在差别的,這些差别影響不了我們對程式整體的把控,隻是從不同的角度進行分層的。基本思想是相同的。
對于該系統我們就按照‘三層架構’的分層方法來進行分層。看看目标程式應該怎樣拆分,各層當中(各包當中)應該包含哪些類,這些類都具哪些相同之處!
針對‘三層架構’來說,UI層是用來界面層主要是獲得使用者需求的。使用者通過界面和程式進行互動。将使用者的需求轉換成機器可以讀懂的需求,這就是UI層的作用,就像是一個飯館裡的服務員,KFC的前台從業人員
UI層要和控制層(BLL層)進行互動(UI層向BLL層發出指令),而BLL層需要完成的工作就是配置設定任務。對界面傳進來的需求進行分析,再将任務配置設定給”各機關”進行處理。
DAL層是用來完成資料處理的。直接和資料庫進行交流,對資料進行操作來完成程式響應功能。
下面就《機房收費系統》用‘三層架構’的思想進行分層:
這是傳統的三層架構模型,如圖所示,我們對程式設計,可以就按照這樣的模型設計,也可以在此基礎上做一些修改(例如:添加一些接口,增加一些其他作用的包,都是允許的)。要針對不同的程式進行不同的設計。
有了這個大體的架構了就好辦了,剩下的工作就是要結合系統的實際情況進行處理了。首先要對程式進行一下分析。
我們先看實體,實體是用來傳遞的參數。應與資料庫表互相對應,通過屬性進行封裝。傳遞到目的子產品時在利用屬性進行處理。
我們首先來設計一下UI層。界面層應該是和用例是一一對應的,(也有可能不對應,看界面是怎樣設計的了)。
我們首先來設計一下窗體,看看應該定義哪些類。我們應該按照以角色為标準畫的用例圖來設計界面、設計類。窗體的顯示要以角色的不同來控制。
我是這樣設計程式界面的。首先有三個不同的主界面,分别是:MdiFrmTeacher、MdiFrmAccountant和 MdiFrmAdministrator。不同的角色登入後顯示相對應的主界面,在主界面上通過菜單來調出自己需要的功能。
再
從各自的菜單項引出需要定義的類,首先從教師的角度進行闡述。
我們需要從這些菜單項中提煉出一些需要建立窗體的和需要建立的類。
在教師的主界面當中有一個“DataGridView”控件,很多資訊都需要此控件顯示。是以也會省去很多看起來差不多的窗體。下面我們來逐一分析一下這些菜單項。
這五個菜單中列出了教師具有的所有功能。通過點選來實作相應的操作。
首先看一下“檔案”菜單下的内容:
這裡隻有修改密碼需要建立一個窗體來實作(FrmChPwd),其餘的顯示都隻需要在“DataGridView”控件中顯示就可以了。用MdiFrmTeacher的方法實作。
在“查詢”菜單下的功能是查詢功能,是以可以設計在同一個窗體中(FrmFindRecord),模仿Microsoft word 中的查找對話框設計我的查詢窗體。如圖所示:
在不同的頁籤下有不同的内容,這裡就不一一展示了。需要強調 的是,查詢結果需在“DataGridView”控件中顯示。
圖中顯示的是“操作”菜單下的功能。圖中上、下機的功能是需要有一個子窗體(FrmOnDownline)來顯示其功能的。其窗體如下圖顯示:
(FrmOnDownline)對于不同的使用者還有些細微的變化,如果是在冊的固定使用者,那麼隻要顯示使用者的資訊就可以了。如果是臨時使用者,就需要教師為臨時使用者辦理充值工作了。(教師不執行固定使用者的充值業務)
除了這個變化還有一些其他的改變,就不細說了。
管理下機(全部下機),就直接用MdiFrmTeacher的方法實作了,不用再單獨設計窗體了。(標明下機)通過右擊 “DataGridView”的快捷菜單實作。
而“工作日記本”還沒有設計好,但是他必須要有一個窗體來實作其功能。(此功能如果在時間和精力允許的條件下,才會考慮)
接下來我們繼續看一下菜單。“賬”菜單下有兩個功能,這兩個功能可以使用同一個窗體,也可以将“檢視賬務明細”這個功能在主窗體顯示。
我們這裡就按後者來設計,給結賬設計一個窗體(FrmSettleAccounts)。
最後再設計一個幫助窗體(FrmHelp)就ok了
接下來從Accountant的角度來設計界面:
MdiFrmAccountant基本上和Teacher的一樣。隻是在菜單項有所不同。
我們詳細的看一下這個窗體有什麼樣的功能,需要什麼建立哪些窗體?
看一下它的菜單項。
如圖所示,在開始菜單下,隻有“修改密碼”需要建立窗體, 不過在分析MdiFrmTeacher時已經建好了,就不用再建立了。
在操作菜單下的,充值、注冊、退卡都需要建立建立窗體,我為這些操作已經預先建好了。如下圖所示:
這就是那三個窗體,分别是FrmEntry、FrmRecharge、FrmCancellation。
查詢和老師的查詢是完全相同的,隻是在工作記錄上有些差異,一個是接收老師的資料,一個是接受會計的資料。
在賬中,我們應該做一個界面FrmSettleAccountsA.它包含有日結,月結和年結,我們通過這些菜單調節時間,也可以再進入結賬狀态下調整時間。
“檢視賬務明細”我們建立一個較大的窗體,檢視賬務。
這樣我們就可以根據我們自己的需要來進行查詢了。無論是老師,還是會計的結賬都在掌握之中。
MdiFrmAccountant會計的窗體也已近建立完畢了。基本上可以完成任務了。 下面剩下的是級别最高的管理者了。我們還需要詳細的設計其窗體。
MdiFrmAdministrator主窗體建立如下:
管理者的工作主要是考慮系統的管理。怎樣将機房上機這項工作開展好。從人員的配備上,還有收費制度上,要有一個明确的規劃。
除此之外,還要對教師和會計的工作進行監督。包括兩個方面:1.值班資訊進行查詢 2. 結賬款項進行查詢
另外還要了解機房上機的這項工作的開展情況,了解學生來上機的情況。是以對學生也要有一定的控制。
我們看一下各菜單。
檔案菜單下隻需要再添加一個窗體就夠了(FrmAddUser),其他的已經在上面添加好了。
财務管理,用原來那個就可以了。而對教師或會計的工作記錄查詢就需要重新安排了,FrmWorkInfo。
教師值班安排:FrmSetRota,(窗體大緻形式如圖所示。在中間加一個可以讀取可以寫入的控件即可。)
基礎資料設定FrmSetBasalData。