每個月收到信用卡賬單時,我總會又驚又惑。上個月怎麼又花了那麼多錢?看著每一筆出帳流水,猛抓頭皮卻怎麼也記不起來這錢是用在了哪兒。痛定思痛,採取行動,我要記賬。作為一個信奉技術能改變世界的IT人,我理所當然的在網上搜尋各種電子記賬本。線上的記賬功能不敢用怕被騷擾),一些單機記賬軟體提供的功能又不是我想要的。
與此同時,最近空下來的時候,我在看SQLite方面的資料。SQLite的簡潔、小巧讓我有些愛不釋手。就此決定給自己做個記賬本,用SQLite作為本機資料引擎。
功能概述
我需要的記賬功能比較簡單:
第一、記錄每一筆消費,並可以添加需要的標籤。當我查看明細時,能知道自己買了啥。
第二、對我來說,消費只需要分成兩種:‘生活必需消費’和‘享受消費’。每周、每月可以看到這兩種消費所佔的比例、金額。
第三、能查看自己近6個月的消費走勢。
根據這3點需求,我為自己度身定製了這款記賬工具。
圖1是記賬本的啟動框。
程式將啟動一個背景工作執行緒來檢查記賬程式路徑下是否已存在賬本資料庫,若沒有則建立該資料庫和所需的表結構。同時定時器將輪詢檢查結果。
圖1)
圖2是記賬本的主介面。
很多其他記賬軟體把消費分成餐飲,交通,買衣服……或者更細。一筆賬到底歸為哪一類要想個半天,同時出的圖表複雜但又意義不大。
為自己做的賬本只有兩種消費類別,對應兩個大按鈕,點擊即可進入記賬介面。這兩種消費所佔的比例和總額是我每月的關注點。
主介面的最下方還有3個按鈕,分別對應‘返回主介面’、‘退出程式’、‘查看報表’。在任何其它介面中,這三個按鈕的圖案、功能都保持一致。
圖2)
點擊主介面上的綠色或紅色按鈕就會進入到記賬介面。3所示
標題、表徵圖、主色調區分了不同的消費。該介面的設計也是希望最簡化,省去了消費時間選擇框,預設為目前記錄時間。
該介面的一個亮點是‘標籤選擇框’。框中的標籤是動態產生的。系統會取近一個月時間,使用最頻繁的10個標籤來顯示。程式碼分析部分還會展開)
這裡記錄的標籤,會出現在後面的明細報表中,這是我用來對賬的。
圖3)
最後來看一下這個小工具能產生的圖表與報表,4所示
該工具能輸出3種報表,分別是消費比例圖,近6月消費走勢圖,消費對賬明細。對於圖表,滑鼠至於色塊上方時將顯示消費金額。
這3個報表也本著減少操作,降低複雜度,簡潔好用為宗旨,所以只提供了最必要的功能。
圖4)
程式結構
看了工具的介面設計後,讓我們來看一下程式結構,5所示
圖5)
整個Solution最主要由3個Project組成。
1. DataAccessLayer.SQLite封裝了對SQLite訪問的方法
2. ForSingle 主程式
3. UserControls 自訂使用者控制項
需要說明的是:
這個工具所有介面最下方的3個按鈕保持統一,所以我在UserControls中畫了一個BaseForm圖中橙色框標出),讓主介面繼承自BaseForm。
其他的每一個介面都做成UserControl,在主程式中控制它們的建立與顯示。中綠色框標出。
SQLite對於本地應用是個不錯的選擇,我使用的是一個封裝成ADO.NET介面的SQLite引擎。以下連結供參考:
我使用的類庫:http://sqlite.phxsoftware.com/
SQLite官方網站:http://www.sqlite.org/