鄒珺
摘? 要:早期的賬單管理大部分都是人工操作,其缺點(diǎn)是耗費(fèi)大量的人力和時(shí)間。為了讓用戶高效、便捷地管理賬單,賬單管理程序能實(shí)現(xiàn)簡單的個(gè)人消費(fèi)管理,它能夠記錄和統(tǒng)計(jì)個(gè)人每月的花銷,提供良好的歷史信息查詢功能。本文主要描述使用WPF技術(shù)實(shí)現(xiàn)賬單管理程序,通過典型的三層架構(gòu)模式進(jìn)行開發(fā),為每一個(gè)層創(chuàng)建一個(gè)類庫,為用戶界面層創(chuàng)建一個(gè)WPF項(xiàng)目,具體由邏輯分層實(shí)現(xiàn)程序的功能,使用接口來實(shí)現(xiàn)層與層之間的解耦,針對賬單管理可以達(dá)到良好的效果。
關(guān)鍵詞:賬單管理程序;架構(gòu);WPF
中圖分類號:TP312? ? ?文獻(xiàn)標(biāo)識碼: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)了很多弊端,特別是人工操作,會帶來很多誤差,甚至很嚴(yán)重的問題。為了避免上述問題,開發(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)可以在多語言間進(jìn)行切換,實(shí)現(xiàn)多語言功能。
本程序使用WPF實(shí)現(xiàn)其具體功能,通過軟件分層架構(gòu)模式,解決因軟件復(fù)雜度的增加而帶來的開發(fā)和維護(hù)問題,將解決方案的組件分隔到不同的層中,自底向上分別是用于訪問數(shù)據(jù)的數(shù)據(jù)訪問層、用于處理業(yè)務(wù)邏輯的中間業(yè)務(wù)邏輯層、用于呈現(xiàn)用戶界面的表示層,重點(diǎn)是結(jié)合分層架構(gòu)中的邏輯分層來實(shí)現(xiàn)[1]。
2 賬單管理程序概述(Overview of the bill management program)
賬單管理程序使用三層架構(gòu)進(jìn)行開發(fā),開發(fā)過程中,每一層會創(chuàng)建一個(gè)對應(yīng)的類庫項(xiàng)目,其功能模塊分別為賬單、圖表、存檔和雜項(xiàng)。使用TabControl控件來分頁顯示賬單信息,賬單頁面用一個(gè)DataGrid控件顯示過去31天的賬單記錄。用戶在底部的文本框中輸入賬單記錄,單擊“添加”按鈕,輸入的賬單信息將添加到DataGrid控件中。單擊下一頁按鈕,將會切換到圖表頁面,該頁面使用圖表的形式顯示賬單統(tǒng)計(jì)信息,賬單管理器主界面如圖1所示,賬單圖表頁面如圖2所示。
3? 分層結(jié)構(gòu)的實(shí)現(xiàn)(Implementation of hierarchical structure)
3.1? ?實(shí)現(xiàn)數(shù)據(jù)訪問層
數(shù)據(jù)訪問層提供了一種彈性的與數(shù)據(jù)庫無關(guān)的架構(gòu),所以可以使用接口來定義數(shù)據(jù)訪問契約。不同類型的數(shù)據(jù)庫通過實(shí)現(xiàn)這個(gè)接口,來提供特定數(shù)據(jù)庫類型的功能,而業(yè)務(wù)邏輯層通過調(diào)用這個(gè)接口來獲取數(shù)據(jù),不用知道特定數(shù)據(jù)庫細(xì)節(jié)信息[3]。數(shù)據(jù)庫訪問架構(gòu)如圖5所示。
3.2? ?實(shí)現(xiàn)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層實(shí)現(xiàn)在BillsBusinessLogicLib項(xiàng)目中,該層實(shí)現(xiàn)了與數(shù)據(jù)訪問層相同的架構(gòu)。將業(yè)務(wù)邏輯層中將要實(shí)現(xiàn)的功能抽象為一個(gè)接口,調(diào)用方只與接口進(jìn)行交互,不用關(guān)心具體的業(yè)務(wù)邏輯實(shí)現(xiàn)[4]。業(yè)務(wù)邏輯層與數(shù)據(jù)訪問層緊密聯(lián)系,同時(shí)提供給表示層顯示的數(shù)據(jù),在業(yè)務(wù)邏輯層中定義了一個(gè)接口和一個(gè)實(shí)現(xiàn)接口的類,以及一個(gè)自定義異常類,如圖6所示。
賬單管理業(yè)務(wù)邏輯接口定義了賬單管理系統(tǒng)中將要出現(xiàn)的功能邏輯方法或?qū)傩?,軟件分層的目的在于?shí)現(xiàn)層次分明,層與層之間不能過度耦合,通過定義接口,讓調(diào)用方只與接口交互,不用關(guān)心特定的實(shí)現(xiàn)細(xì)節(jié)[5]。這樣的設(shè)計(jì)方式也便于維護(hù)和擴(kuò)展,例如軟件運(yùn)行一段時(shí)間,現(xiàn)有的業(yè)務(wù)邏輯不能滿足業(yè)務(wù)處理的需求,那么可以通過定義一個(gè)新類,實(shí)現(xiàn)業(yè)務(wù)邏輯接口,讓調(diào)用端無縫的調(diào)用新的業(yè)務(wù)邏輯層,實(shí)現(xiàn)層與層之間的解耦。
3.3? ?實(shí)現(xiàn)表示層