鄒珺
摘? 要:早期的賬單管理大部分都是人工操作,其缺點(diǎn)是耗費(fèi)大量的人力和時(shí)間。為了讓用戶高效、便捷地管理賬單,賬單管理程序能實(shí)現(xiàn)簡(jiǎn)單的個(gè)人消費(fèi)管理,它能夠記錄和統(tǒng)計(jì)個(gè)人每月的花銷(xiāo),提供良好的歷史信息查詢功能。本文主要描述使用WPF技術(shù)實(shí)現(xiàn)賬單管理程序,通過(guò)典型的三層架構(gòu)模式進(jìn)行開(kāi)發(fā),為每一個(gè)層創(chuàng)建一個(gè)類庫(kù),為用戶界面層創(chuàng)建一個(gè)WPF項(xiàng)目,具體由邏輯分層實(shí)現(xiàn)程序的功能,使用接口來(lái)實(shí)現(xiàn)層與層之間的解耦,針對(duì)賬單管理可以達(dá)到良好的效果。
關(guān)鍵詞:賬單管理程序;架構(gòu);WPF
中圖分類號(hào):TP312? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:Most bill management used to be manually conducted with the shortcoming of consuming a lot of manpower and time.In order to enable users to manage bills efficiently and conveniently,the bill management program can realize simple personal consumption management.It can record and count individual monthly expenses and provide good historical information query function.This paper mainly describes how to use WPF technology to implement bill management program through the typical three-tier architecture model to develop,creating a class library for each tier and a WPF project for the user interface layer,specifically realizing the function of the program by logical hierarchy,using interface to achieve decoupling between tiers,which brings good results for bill management.
Keywords:bill management program;framework;WPF
1? ?引言(Introduction)
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,傳統(tǒng)的賬單管理出現(xiàn)了很多弊端,特別是人工操作,會(huì)帶來(lái)很多誤差,甚至很?chē)?yán)重的問(wèn)題。為了避免上述問(wèn)題,開(kāi)發(fā)了賬單管理程序,該程序能提供的功能包括:(1)顯示每月的費(fèi)用記錄;(2)存檔支出記錄;(3)顯示最近的消費(fèi)底線;(4)花費(fèi)統(tǒng)計(jì)圖表;(5)特定時(shí)間段內(nèi)的花費(fèi)統(tǒng)計(jì)圖表;(6)顯示關(guān)于每張賬單的信息;(7)可以將賬單存檔記錄導(dǎo)出到文件進(jìn)行備份;(8)可以在多語(yǔ)言間進(jìn)行切換,實(shí)現(xiàn)多語(yǔ)言功能。
本程序使用WPF實(shí)現(xiàn)其具體功能,通過(guò)軟件分層架構(gòu)模式,解決因軟件復(fù)雜度的增加而帶來(lái)的開(kāi)發(fā)和維護(hù)問(wèn)題,將解決方案的組件分隔到不同的層中,自底向上分別是用于訪問(wèn)數(shù)據(jù)的數(shù)據(jù)訪問(wèn)層、用于處理業(yè)務(wù)邏輯的中間業(yè)務(wù)邏輯層、用于呈現(xiàn)用戶界面的表示層,重點(diǎn)是結(jié)合分層架構(gòu)中的邏輯分層來(lái)實(shí)現(xiàn)[1]。
2 賬單管理程序概述(Overview of the bill management program)
賬單管理程序使用三層架構(gòu)進(jìn)行開(kāi)發(fā),開(kāi)發(fā)過(guò)程中,每一層會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的類庫(kù)項(xiàng)目,其功能模塊分別為賬單、圖表、存檔和雜項(xiàng)。使用TabControl控件來(lái)分頁(yè)顯示賬單信息,賬單頁(yè)面用一個(gè)DataGrid控件顯示過(guò)去31天的賬單記錄。用戶在底部的文本框中輸入賬單記錄,單擊“添加”按鈕,輸入的賬單信息將添加到DataGrid控件中。單擊下一頁(yè)按鈕,將會(huì)切換到圖表頁(yè)面,該頁(yè)面使用圖表的形式顯示賬單統(tǒng)計(jì)信息,賬單管理器主界面如圖1所示,賬單圖表頁(yè)面如圖2所示。
3? 分層結(jié)構(gòu)的實(shí)現(xiàn)(Implementation of hierarchical structure)
3.1? ?實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)訪問(wèn)層提供了一種彈性的與數(shù)據(jù)庫(kù)無(wú)關(guān)的架構(gòu),所以可以使用接口來(lái)定義數(shù)據(jù)訪問(wèn)契約。不同類型的數(shù)據(jù)庫(kù)通過(guò)實(shí)現(xiàn)這個(gè)接口,來(lái)提供特定數(shù)據(jù)庫(kù)類型的功能,而業(yè)務(wù)邏輯層通過(guò)調(diào)用這個(gè)接口來(lái)獲取數(shù)據(jù),不用知道特定數(shù)據(jù)庫(kù)細(xì)節(jié)信息[3]。數(shù)據(jù)庫(kù)訪問(wèn)架構(gòu)如圖5所示。
3.2? ?實(shí)現(xiàn)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層實(shí)現(xiàn)在BillsBusinessLogicLib項(xiàng)目中,該層實(shí)現(xiàn)了與數(shù)據(jù)訪問(wèn)層相同的架構(gòu)。將業(yè)務(wù)邏輯層中將要實(shí)現(xiàn)的功能抽象為一個(gè)接口,調(diào)用方只與接口進(jìn)行交互,不用關(guān)心具體的業(yè)務(wù)邏輯實(shí)現(xiàn)[4]。業(yè)務(wù)邏輯層與數(shù)據(jù)訪問(wèn)層緊密聯(lián)系,同時(shí)提供給表示層顯示的數(shù)據(jù),在業(yè)務(wù)邏輯層中定義了一個(gè)接口和一個(gè)實(shí)現(xiàn)接口的類,以及一個(gè)自定義異常類,如圖6所示。
賬單管理業(yè)務(wù)邏輯接口定義了賬單管理系統(tǒng)中將要出現(xiàn)的功能邏輯方法或?qū)傩?,軟件分層的目的在于?shí)現(xiàn)層次分明,層與層之間不能過(guò)度耦合,通過(guò)定義接口,讓調(diào)用方只與接口交互,不用關(guān)心特定的實(shí)現(xiàn)細(xì)節(jié)[5]。這樣的設(shè)計(jì)方式也便于維護(hù)和擴(kuò)展,例如軟件運(yùn)行一段時(shí)間,現(xiàn)有的業(yè)務(wù)邏輯不能滿足業(yè)務(wù)處理的需求,那么可以通過(guò)定義一個(gè)新類,實(shí)現(xiàn)業(yè)務(wù)邏輯接口,讓調(diào)用端無(wú)縫的調(diào)用新的業(yè)務(wù)邏輯層,實(shí)現(xiàn)層與層之間的解耦。
3.3? ?實(shí)現(xiàn)表示層