李嘉誠
(南昌大學(xué)軟件學(xué)院,江西南昌330047)
?
基于安卓的個人理財系統(tǒng)研發(fā)
李嘉誠
(南昌大學(xué)軟件學(xué)院,江西南昌330047)
摘要:基于個人手機進(jìn)行簡便有效整理個人財務(wù),對個人來說很必要。本文在簡要介紹本系統(tǒng)研發(fā)工具的基礎(chǔ)上,首先對開發(fā)系統(tǒng)進(jìn)行了需求分析,得到系統(tǒng)的功能需求。隨后對系統(tǒng)進(jìn)行了概要設(shè)計和詳細(xì)設(shè)計。最后對系統(tǒng)進(jìn)行了功能測試,并對測試結(jié)果進(jìn)行了分析,在總結(jié)、分析的基礎(chǔ)上,指出了系統(tǒng)存在的不足及需要改進(jìn)的地方,為今后開發(fā)類似系統(tǒng)提供借鑒和幫助。該系統(tǒng)功能完善、用戶界面友好、運行穩(wěn)定,可完成日常個人財務(wù)信息的管理和維護。
關(guān)鍵詞:個人理財系統(tǒng);數(shù)據(jù)庫;安卓;智能手機
簡便有效整理個人財務(wù)對個人來說很必要?;谑謾C的個人簡易通用理財系統(tǒng)的研發(fā)具有極其重要的現(xiàn)實意義。本系統(tǒng)基于安卓研發(fā),它適合對個人財務(wù)管理,具有資金收入、支出、編輯和統(tǒng)計等基本功能。系統(tǒng)操作簡單、用戶界面友好、運行穩(wěn)定,可完成日常個人財務(wù)信息的管理和維護。
Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要適用于便攜設(shè)備。Android以Java為編程語言,從接口到功能的變化層出不窮。短短幾年時間Android與Symbian、ios已形成三足鼎立之勢,而Symbian系統(tǒng)不斷臃腫為人所詬病,ios只能運行在自家硬件系統(tǒng)上,這限制了一些用戶。[1-3]
SQLiteDatabase是Android SDK中操作數(shù)據(jù)庫的核心類之一。使用SQLiteDatabase可打開數(shù)據(jù)庫,也可對數(shù)據(jù)庫進(jìn)行操作。然而為了數(shù)據(jù)庫升級的需要及使用更方便,使用SQLiteOpenHelper的子類來完成創(chuàng)建、打開數(shù)據(jù)庫及各種數(shù)據(jù)庫操作。[4-6]
(一)系統(tǒng)結(jié)構(gòu)設(shè)計
個人理財系統(tǒng)主要面向個人用戶,用戶只要記錄流水賬信息便可預(yù)算得到相應(yīng)的統(tǒng)計結(jié)果。本系統(tǒng)的主要功能包括收入賬單,支出賬單及賬單管理。[8]系統(tǒng)結(jié)構(gòu)設(shè)計如圖1所示。
圖1:系統(tǒng)結(jié)構(gòu)設(shè)計
(二)本系統(tǒng)流程
系統(tǒng)操作流程是先注冊,后登錄進(jìn)入主界面,在主界面下分別完成收入登記,支出登記,結(jié)算和查詢等基本財務(wù)管理,還能修改密碼和安全退出,如圖2所示。
本系統(tǒng)用到移動數(shù)據(jù)庫SQLiteOpenHelper,并封裝成一個輔助類DataBaseAdapter繼承于SQLiteOpenHelper,該類構(gòu)造器中,調(diào)用Context中方法創(chuàng)建,并打開一個指定名稱的數(shù)據(jù)庫對象。當(dāng)需要創(chuàng)建或打開一個數(shù)據(jù)庫,并獲得數(shù)據(jù)庫對象時,首先根據(jù)指定的文件名創(chuàng)建一個輔助對象,然后調(diào)用該對象的getWritableDatabase或getReadableDatabase方法獲得SQLiteDatabase對象。[6]數(shù)據(jù)庫中有三張表分別為user、add、out。user表符號化用戶名、密碼、真實姓名和身份證號。add表符號化用戶名、收入來源、收入金額、時間和解釋。out表符號化用戶名、支持去向、指出金額、時間和解釋。
圖2 系統(tǒng)操作流程
調(diào)用getReadableDatabase方法返回的并不總是只讀數(shù)據(jù)庫對象,一般來說該方法getWriteableDatabase方法的返回情況相同,只有在數(shù)據(jù)庫僅開放只讀權(quán)限或磁盤已滿時才會返回一個只讀的數(shù)據(jù)庫對象。
(一)本系統(tǒng)啟動界面設(shè)計與實現(xiàn)
界面包含TextView、EditView和Button三個控件,皆用線性布局。啟動界面進(jìn)入登陸界面,若屬首次使用本程序,需初始化本程序的SQlite數(shù)據(jù)庫,建庫、建Table,初始化賬目數(shù)據(jù)。[7]否則直接登陸,如無賬號則先注冊。點擊注冊按鈕,跳轉(zhuǎn)到注冊界面,注冊界面呈線性布局。
三個textview控件和三個exittext控件兩個按鈕代碼在這里都為必填項,如果用戶沒有填寫里面的一項而點提交的話,會彈出對話框提升用戶不允許為空。在填寫用戶名的時候系統(tǒng)會檢查用戶名是否已經(jīng)注冊過,假如用戶名注冊過,會彈出對話框提示用戶用戶名被占用。[8]如果用戶點擊取消程序?qū){(diào)用public void cancel(View view){}方法,返回到登陸界面。如果用戶填寫正確且點擊提交按鈕,程序?qū){(diào)用public void main(View view){}方法。在此方法中將用戶填寫的數(shù)據(jù)存入數(shù)據(jù)庫中,并跳轉(zhuǎn)到成功界面,提示用戶注冊成功是否立即進(jìn)入。
此界面是由一個TextView控件和兩個Button組成,通過線性布局實現(xiàn)。[9]當(dāng)用戶點擊否按鈕,程序?qū)⒄{(diào)用public void log(View view){}方法,進(jìn)入到主界面。
(二)功能選擇界面
當(dāng)用戶注冊成功或者登陸成功,會進(jìn)入到主界面。主界面由一個TextView控件和5個按鈕組成,通過線性布局實現(xiàn)。當(dāng)用戶點擊不同按鈕收入、支出、結(jié)算、查詢、修改密碼、退出時,程序會調(diào)用相應(yīng)方法將界面跳轉(zhuǎn)到對應(yīng)界面。
(三)開支表和收支表
用戶可以在開支表上記錄某一天消費情況。此表布局文件是線性的,每項由一個TextView和一個EditView組成,選擇時間是通過DatePicker控件實現(xiàn),還有兩個按鈕分別為保存和取消。
用戶如果點擊取消按鈕,程序?qū)⒄{(diào)用public void acencel (View view){}方法,不保存數(shù)據(jù)并返回到主界面。當(dāng)用戶填寫完數(shù)據(jù),并點擊保存按鈕,程序?qū)⒄{(diào)用public void asave (View view){}方法,將用戶填寫的消費情況保存到數(shù)據(jù)庫并跳轉(zhuǎn)到主界面。收支表的實現(xiàn)類似開支表,不再累敘。
(四)時間設(shè)置對話框
每次進(jìn)入新增開支界面,都會對系統(tǒng)時間的初始化,此功能通過DatePicker控件來實現(xiàn)。
<DatePicker
android:id="@+id/i_datepicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
當(dāng)程序調(diào)用這個控件,該控件都會調(diào)用系統(tǒng)當(dāng)前時間來進(jìn)行初始化。
(五)賬單管理
用戶可以在該界面上查看某段時間內(nèi)的個人所定的預(yù)算和收入情況,當(dāng)用戶在主界面點擊查詢按鈕時,程序?qū){(diào)用public void inquire(View view){}方法,先跳轉(zhuǎn)到選擇時間界面。
當(dāng)用戶選擇好時間點擊確定按鈕之后,程序?qū)⒄{(diào)用public class InquireResultActivity extends Activity{}類將用戶選擇的時間作為查詢條件將一天的收入支出查詢出來并且算出剩余多少,將結(jié)果顯示到界面上。
本系統(tǒng)的資金收入、支出、編輯和統(tǒng)計等個人理財功能得到實現(xiàn),經(jīng)測試系統(tǒng)操作簡單、界面友好、穩(wěn)運行定,能實現(xiàn)日常個人財務(wù)信息的管理和維護。
參考文獻(xiàn):
[1] [美]Rogers Cadenhead.Java編程入門經(jīng)典(第4版)[M].梅興文,譯.北京:人民郵電出版社,2007.156-179.
[2] [美]Bruce Eckel. Thinking In Java[M].英文第4版.北京:機械工業(yè)出版社,2007.57-98.
[3]朱喜福,戴舒樽,王曉勇.Java網(wǎng)絡(luò)編程基礎(chǔ)[M].人民郵電出版社, 2008.87-96.
[4]劉永華,于春華.實用Java網(wǎng)絡(luò)編程技術(shù)[M].中國電力出版社, 2009.112-153.
[5]朱振元,朱承,劉聆.Java語言及其網(wǎng)絡(luò)應(yīng)用[M].人民郵電出版社, 2006:130-188.
[6]趙毅.跨平臺程序設(shè)計語言——Java[M].西安:西安電子科技大學(xué)出版社,2006.174-233.
[7]王路群.Java高級程序設(shè)計[M].北京:中國水利水電出版社,2006.142-186.
[8]陳學(xué)峰,柴俊霞.Linux下基于Socket的網(wǎng)絡(luò)編程[J].淮北煤炭師范學(xué)院學(xué)報:自然科學(xué)版,2004,(3):29-34.
[9]徐長勝,戴超.一種快速開發(fā)web應(yīng)用程序方法的研究[J].計算機工程與設(shè)計,2004,(12):2237-2239.