引言:暑假到了,學校裡的食堂基本上都關門了,剩下的視窗做的菜又實在難吃,於是發揚自己動手、豐衣足食的精神,偶決定和GF一起在寢室做飯(還不能被樓管發現,否則會被通報批評,鬱悶)。然後GF就提出,將每天的花費記下來,看最後會比在食堂吃省多少。既然要記帳,就要有個記帳軟體,網上搜了一下,有個叫翔龍家庭記帳本(還是免費版哦,贊一個)的軟體做的還不錯,基本上可以滿足我們的需要(可以按日記錄收入與支出,制定分類,算出統計,檢索合格帳目,另外還有使用者管理、Database Backup這些功能)。不過偶一直有個習慣,就是自己開發一些日常軟體,把自己的想法用軟體表現出來,剛好現在正在學C#,就決定用C#開發一個了。(七彎八繞終於繞的主題了)
基本的功能與上面的軟體差不多,大致說說我的想法吧:
1、用樹形控制項查看每天的帳目,分年、月、日三級。點日結點的時候,可以看到每天的詳細帳目(買了什麼東西,花了多少錢),點月結點的時候就只看到這個月每天的花費,不詳細顯示,點年的時候效果差不多。用Datagrid顯示記錄。
2、資料的儲存我想了兩種方式,一個是用access儲存,這樣可以用ADO.NET,操作起來比較簡單一些(問個問題,SqlHelper支不支援Access啊?),資料庫的建模偶是這樣想的:
就建一個表,account,分這麼幾個欄位
這麼設計主要還是因為自己水平太菜,所以選了個最不動腦子的建模方式。雖然這種方式有冗餘,年月日存在多值依賴,而且沒有把統計值給單列出來(這樣就不用每次查看帳目時都做SUM運算)。但我覺得在記錄比較少的時候對效能影響不大,就這樣偷個懶了。就說把統計值單列出來吧,那年、月、日都要有自己的統計值,每次修改帳目都涉及四個表的修改,挺麻煩的。
另外就是用XML,我認為這也是最好的方式,因為本來要表達的就是一個樹形對象,用它儲存可以減少很多冗餘,用DOM可以一次性裝入整個記憶體(我覺得就算有個幾千條記錄也不會超過100K的),不過統計的計算就比較麻煩了,得用XPath一個個的找去求吧。
現在的想法是先用ACCESS做,然後有時間了再用XML實現一個,兩個方式實現一個介面,用一個原廠模式。(再問個問題,用Datagrid載入資料庫、XML都可以吧)
3、加入帳目的時候調用日曆控制項,獲得使用者選擇的日期。對使用者的輸入進行驗證時,我就只對金額輸入進行限制(用Regex),分類由使用者建立之後再選擇。
4、用個ini檔案記錄使用者上次選擇的帳目結點還有其他的喜好設定。
由於是第一個C#項目,所以不敢做太複雜了(按條件搜尋、Database Backup、使用者管理)以後再說,先把最早的版本做出來再說。現在正在準備考研,沒時間搞,等月底回家了再開始著手,爭取一兩個星期之內把第一個版本做出來,對以後可能進行開發的部分,預留個介面。
偶的水平絕對是初學,想法很菜,大家不要笑哦。歡迎多交流。