基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)_第1頁
基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)_第2頁
基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)_第3頁
基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)_第4頁
基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 本科畢業(yè)論文(設(shè)計)基于Android平臺的個人理財軟件的設(shè)計與實現(xiàn)二級學(xué)院醫(yī)藥信息工程學(xué)院專 業(yè)計算機科學(xué)與技術(shù)班 級醫(yī)學(xué)智能2011級(1)班學(xué)生姓名林彬健學(xué) 號1107505151指導(dǎo)教師王鶴嫻2015 年 3 月誠 信 聲 明我聲明,所呈交的畢業(yè)論文(設(shè)計)是本人在老師指導(dǎo)下進行的研究工作及取得的研究成果。據(jù)我查證,除了文中特別加以標注和致謝的地方外,論文(設(shè)計)中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得其他教育機構(gòu)的學(xué)位或證書而使用過的材料。我承諾,論文(設(shè)計)中的所有內(nèi)容均真實、可信。畢業(yè)論文(設(shè)計)作者(簽名): 年 月 日基于Android平臺的個人理財軟件的設(shè)

2、計與實現(xiàn)【摘要】:個人理財管理系統(tǒng)是基于Android系統(tǒng)開發(fā)的一款手機應(yīng)用程序。它主要是為了滿足人們在快節(jié)奏的生活中可以隨時記下自己的收支情況的需求。個人理財管理系統(tǒng)與傳統(tǒng)的記賬方式相比,體現(xiàn)了它的便捷性、安全性及可擴展性。系統(tǒng)采用Eclipse+ Android Developer Tools作為開發(fā)工具,以SQLite為數(shù)據(jù)庫。系統(tǒng)功能包括:用戶賬戶的注冊、用戶切換、用戶名密碼修改、賬戶刪除,語音識別記賬,收入信息的增刪改,支出信息的增刪改,收入類型的增刪,支出類型的增刪,收入信息分類統(tǒng)計,支出信息分類統(tǒng)計,收入支出總額統(tǒng)計,數(shù)據(jù)還原、清空等等。系統(tǒng)具有界面簡潔鮮明、功能便捷易用、操作人

3、性化等特征?!娟P(guān)鍵字】:收支管理;Android;SQLite;Personal Financial Management System Design and ImplementationAbstract:Personal financial management system is based on the Android system developed a mobile application.It is mainly to meet those people who want to write down their income and expenditure more quickly

4、 and conveniently in the fast-paced life. Compared with the traditional method, Personal financial management system reflects more convenience,security and scalability. Especially in this day and age, people are on the side of the phone. System uses Eclipse and Android Developer Tools as a developme

5、nt tool and SQLite as the database. Android technology is now very mature, we can easily develop.Personal Financial Management System of the main functional modules,including: user account registration, user switching, username password changes, account deletion, Income information management,Expend

6、iture information management,voice recognition accounting,Type of income management, Expenditure Type Manager, Income information classification statistics, expenditure information classification statistics, total income and expenditure statistics,Data reduction, data emptied and so on. The system h

7、as a simple and clear interface, easy-to-use features, user-friendly operation and other featuresKeywords: Revenue and expenditure management;Android;SQLite;目 錄1 緒論11.1 選題背景11.2 課題研究的目的和意義11.3 國內(nèi)外現(xiàn)狀和發(fā)展趨勢12設(shè)計開發(fā)所用到的工具和技術(shù)32.1系統(tǒng)開發(fā)工具32.2 Android的介紹32.3 Eclipse的介紹42.4 SQLite的介紹53系統(tǒng)需求分析63.1需求分析63.2 可行性分析63

8、.2.1 系統(tǒng)可行性63.2.2 技術(shù)可行性63.2.3 經(jīng)濟可行性73.3系統(tǒng)功能模塊74系統(tǒng)總體設(shè)計94.1系統(tǒng)總體設(shè)計分析94.2系統(tǒng)流程圖94.3 系統(tǒng)特點94.4 數(shù)據(jù)庫設(shè)計104.4.1 tb_account(賬戶表)1104.4.2 tb_income(收入信息表)1104.4.3 tb_pay(支出信息表)114.4.4 tb_ptype(支出類型表)124.4.5 tb_itype(收入類型表)125系統(tǒng)詳細設(shè)計與實現(xiàn)135.1 主界面設(shè)計135.2 收入/支出插入數(shù)據(jù)界面165.3 語音記賬界面215.4 類別維護界面315.5 收入/支出統(tǒng)計界面316.論文總結(jié)38參考文

9、獻39致 謝40緒論1.1 選題背景出門口訣“伸手要賞錢”分別代表著身份證、手機、鑰匙、傘、錢。在后PC時代的今天,手機成為最重要的移動終端,是我們出門出行的必攜物。以前,或許我們的手機只能為我們提供基本通信功能,而隨著Android系統(tǒng)的誕生,我們的生活迎來了一場不亞于“工業(yè)革命”帶給我們的巨大變化?;贏ndroid系統(tǒng)的手機處理各類信息的能力得到了質(zhì)的提升。而Android這個開源的操作系統(tǒng),將享受這項優(yōu)質(zhì)服務(wù)的權(quán)利給了所有愿意使用它的人。Android從08年9月的1.1版到去年的L版,一路走來,從基本走向優(yōu)化,全方面地為我們提供了出色的網(wǎng)絡(luò)、多媒體、通訊、娛樂等功能。這匹黑馬,從誕生

10、伊始到去年7月的“全球市場占有率達81.9%”,告訴我們它的出現(xiàn)是多么受人們歡迎。它備受追捧的原因不外乎它完全的對第三方軟件開發(fā)商和我們這些開發(fā)者的開發(fā)。我們可以在它上面實現(xiàn)無限自主的“自定義”。它宛如一張白紙,我們可以在上面隨意畫出自己想要的東西。它,貴在給予了我們自由。1.2 課題研究的目的和意義隨著高速經(jīng)濟化,我們的生活節(jié)奏越來越快。我們忙東忙西,總會容易忽略忘記了一些生活細節(jié),比如收支管理。為了更好的釋放一些時間來享受我們的生活,我們期待有這么一款軟件來幫助管理這些小數(shù)據(jù)。建立在Android操作系統(tǒng)上的個人理財系統(tǒng),方便我們隨時隨地地記錄著這些零散的數(shù)據(jù),從此我們不必再為收支費心,清

11、心地查看數(shù)據(jù)統(tǒng)計結(jié)果是我們唯一要做的事。1.3 國內(nèi)外現(xiàn)狀和發(fā)展趨勢安卓在手機上的應(yīng)用使得手機的功能有了很大改善,這使得越來越多的入主要依靠手機查詢大量信息,而用戶們不斷提高的需求也決定了越來越多的基于安卓平臺的應(yīng)用軟件及系統(tǒng)的產(chǎn)生。若是基于安卓平臺的個人理財系統(tǒng)得到廣泛推廣,人們能從該應(yīng)用顯而易見的了解到個人的財務(wù)狀況,明確的使用自身錢財,了解到日常中支出比例,調(diào)整支出,正確理財。(1) 開放性手機平臺:android是Google開發(fā)的基于Linux平臺的開源手機操作系統(tǒng)。Google通過與運營商、設(shè)備制造商、手機公司和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標準化、開放式的智能

12、手機操作系統(tǒng),在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。(2) 網(wǎng)絡(luò)集成性很高:涵蓋了生活中各個方面的網(wǎng)絡(luò)應(yīng)用,對長期使用網(wǎng)絡(luò)、信息依賴度比較高的人群很合適。(3) Android具備創(chuàng)新性自從:Google開發(fā)出Android后,許多人認為其技術(shù)可信度要比其它操作系統(tǒng)略勝一籌,但這并不是用戶購買Android智能手機的唯一原因。人們認為Android是一種相對較新的、又較為成熟的技術(shù),在達到巔峰之前還有很大發(fā)展空間。(4) Android平臺在數(shù)量上逐漸主宰市場:市場分析機構(gòu)NPD發(fā)布的數(shù)據(jù)顯示,2014年4-6月份發(fā)售的智能手機中,33%為Android手機,而RIM手機發(fā)售比例為28%,iP

13、hone為22%.(5) Android在其它領(lǐng)域的拓展:android不僅促進了手機產(chǎn)業(yè)的發(fā)展,它的全面計算服務(wù)和豐富的功能支持,已將應(yīng)用拓展到手機以外的其他領(lǐng)域。Android平臺的通用性可以適用于不同的屏幕、有線和無線設(shè)備。Android的系統(tǒng)和應(yīng)用程序開發(fā)人員將更多的涉足多媒體、移動互聯(lián)網(wǎng)設(shè)備、數(shù)字視頻和家庭娛樂設(shè)備、汽車、醫(yī)藥、網(wǎng)絡(luò)、監(jiān)測儀器和工業(yè)管理、機頂盒等新領(lǐng)域。2設(shè)計開發(fā)所用到的工具和技術(shù)2.1系統(tǒng)開發(fā)工具個人財務(wù)管理系統(tǒng)的開發(fā)及運行環(huán)境如下所述:操作系統(tǒng):Windows7JDK環(huán)境:Java Development Kit version=1.7.0_45開發(fā)工具:Ecli

14、pse version=4.2.0Android Software Development Kit version=4.4.2Android Developer Tools Build: v22.3.0-887826開發(fā)語言:Java、XML數(shù)據(jù)庫軟件:SQLite 運行平臺:Windows虛擬機:720P(1080x720)2.2 Android的介紹Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由An

15、dy Rubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良Android系統(tǒng)。該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。它采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和虛擬機Virtual Machine,由C+開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。不存在任何以往阻礙移

16、動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟件。android分為四個層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和linux核心層。藍色的代表java程序,黃色的代碼為運行JAVA程序而實現(xiàn)的虛擬機,綠色部分為C/C+語言編寫的程序庫,紅色的代碼內(nèi)核(linux內(nèi)核+driver)。在Application Framework之下,由C/C+的程序庫組成,通過JNI完成從JAVA到C的調(diào)用。圖2-1 Android架構(gòu)2.3 Eclipse的介紹eclipse-galileoEclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就

17、其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開發(fā)環(huán)境,2001年11月貢獻給開源社區(qū),現(xiàn)在它由非營利軟件供應(yīng)商聯(lián)盟Eclipse基金會(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務(wù)平臺規(guī)范為運行時架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號為Ganymede的3.4版

18、。2009年7月發(fā)布代號為GALILEO的3.5版。Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如C+和Python的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Ecli

19、pse項目已經(jīng)發(fā)展成為了一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個開發(fā)源碼項目,它其實是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開放源碼,任何人都可以免費得到,并可以在此基礎(chǔ)上開發(fā)各自的插件,因此越來越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項目,并宣稱Eclipse將來能成為可進行任何語言開發(fā)的IDE集大成者,使用者只需下載各種語言的插件即可。

20、2.4 SQLite的介紹SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項目。它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生

21、于2000年5月。 至2015年已經(jīng)有15個年頭,SQLite也迎來了一個版本 SQLite 3已經(jīng)發(fā)布。3系統(tǒng)需求分析3.1需求分析生活中記錄日?;ㄤN、收入總是瑣碎累心的。特別是紙質(zhì)記錄,除了攜帶不方便外,還很容易丟失損毀。這個時候,若是我們身邊常帶的手機上有這么一款可以隨時記錄收入和支出的軟件,因為在記錄收支的同時,會有一些注意事項需要標注,比如欠錢還錢注意事項。在對各項數(shù)據(jù)進行記錄后,用戶會希望看到對各類數(shù)據(jù)的統(tǒng)計,所以需要滿足基本需求的統(tǒng)計模塊。為了保證數(shù)據(jù)安全,增設(shè)賬戶模塊。為了區(qū)分各用戶的操作習(xí)慣,所以增設(shè)收入支出類型管理模塊和系統(tǒng)設(shè)置模塊。3.2 可行性分析3.2.1 系統(tǒng)可行性

22、可行性分析實在目前市場己有的類似系統(tǒng)調(diào)查的基礎(chǔ)上,辯證新系統(tǒng)的研發(fā)是否具備開發(fā)必要性和可能性,對新系統(tǒng)的研發(fā)從技術(shù)、經(jīng)濟、社會因素等多個方面進行相關(guān)的分析和研究,以避免造成不必要的投資失誤,保證和提高新系統(tǒng)開發(fā)成功的把握。可行性研究的目的就是以最小的時間、金錢代價確定疑難問題是否能夠妥善解決。3.2.2 技術(shù)可行性此系統(tǒng)需要在Android手機操作系統(tǒng)上運行,用Eclipse進行開發(fā),數(shù)據(jù)庫我選用輕量級的SqLite。開發(fā)所需的軟件技術(shù)成熟穩(wěn)定,且支持Android系統(tǒng)的手機也分布廣泛,可以完全滿足所以的開發(fā)需求。至于自己在Android方面雖然沒有基礎(chǔ),鑒于之前有Java編程經(jīng)驗且時間充裕,

23、有足夠時間來學(xué)習(xí)空白的知識。 3.2.3 經(jīng)濟可行性從市場經(jīng)濟來看,近年來,國人生活品質(zhì)提升,逐漸重視生活品質(zhì),手機應(yīng)用便成了人們生活的一部分。當今社會己步入了一個全新的信息時代,人類的每個活動都和“信息”緊密的聯(lián)系在一起,小至個人的衣食住行,大及國家大事新聞發(fā)布,都依與信息的傳播與發(fā)布,而社會中最活躍的,在市場經(jīng)濟高速發(fā)展的現(xiàn)在,手機應(yīng)用普遍化,生活化,低端化成了不可阻擋的趨勢。從技術(shù)經(jīng)濟來看,由于SQLite數(shù)據(jù)庫和Android SDK都是開源的免費的開發(fā)學(xué)習(xí)工具,而且本系統(tǒng)使用靈活方便,技術(shù)也不是很復(fù)雜,開發(fā)周期較短,因此開發(fā)成本較低。市場前景非??春?,所以說技術(shù)經(jīng)濟方面來看,本項目也

24、是可行的。由此可以看出本系統(tǒng)開發(fā)所產(chǎn)生的效益將大于投入,所以開發(fā)本項目是可行的、必要的。 綜上所述,個人理財系統(tǒng)充分利用了軟硬件資源,技術(shù)成熟,成本低廉,操作簡單,管理方便,使理財記賬擺脫空間的限制,實現(xiàn)自動化處理和信息化管理,因此,本系統(tǒng)的實施是可行的。3.3系統(tǒng)功能模塊(1) 用戶管理:可以設(shè)置當前用戶(2) 類別維護:用戶可以添加日常收入、日常支出的類別,并且可以刪除相應(yīng)的類別,填寫類別詳細。(3) 日常收入:用戶可以按照日常收入日期、金額、類別、備注進行數(shù)據(jù)的增添(4) 日常支出:用戶可以按照日常支出日期、金額、類別、備注進行數(shù)據(jù)的增添(5) 收入支出統(tǒng)計:按照一定的數(shù)據(jù)查詢條件,用戶

25、可以對數(shù)據(jù)進行統(tǒng)計。個人理財類別維護用戶信息收入支出查詢收入支出統(tǒng)計收入支出插入收入類別維護支出類別維護手動輸入語音輸入收入插入數(shù)據(jù)支出插入數(shù)據(jù)收入統(tǒng)計支出統(tǒng)計收入數(shù)據(jù)查詢支出數(shù)據(jù)查詢用戶信息維護圖3-1 個人理財管理系統(tǒng)功能結(jié)構(gòu)圖4系統(tǒng)總體設(shè)計4.1系統(tǒng)總體設(shè)計分析系統(tǒng)設(shè)計是系統(tǒng)開發(fā)過程中的核心,從需求出發(fā),總體上描述系統(tǒng)架構(gòu)應(yīng)該包含的組成要素。系統(tǒng)總體設(shè)計盡可能模塊化,描述了各個模塊之間的關(guān)聯(lián)。模塊化是一種很重要的設(shè)計思想,把一個復(fù)雜的系統(tǒng)分解為一些規(guī)模較小、功能簡單的、更易于建立和修改的部分。一方面,各個模塊具有相對獨立性,可以分別加以設(shè)計實現(xiàn);另一方面,模塊之間的相互關(guān)系則通過一定的方

26、式予以說明。各模塊在這些關(guān)系的約束下共同構(gòu)成一個統(tǒng)一的整體,完成系統(tǒng)的功能。總體設(shè)計的核心內(nèi)容就是依據(jù)需求分析定義的功能,合理、有效地實現(xiàn)系統(tǒng)中定義的各種需求,包括模塊設(shè)計、數(shù)據(jù)庫設(shè)計等。4.2系統(tǒng)流程圖根據(jù)系統(tǒng)分析以及功能需求,系統(tǒng)的基本流程可以描述為:主界面選擇各子功能模塊,如下圖所示:個人理財系統(tǒng)密碼管理模塊用戶登錄模塊收/支數(shù)據(jù)查詢類別管理模塊收/支記錄模塊圖4-1 系統(tǒng)流程圖4.3 系統(tǒng)特點(1)目的明確:理財就是以管錢為中心,通過抓好賺錢、生錢、護錢,三個環(huán)節(jié),管好自己手中的現(xiàn)金流動,讓資產(chǎn)在保值的基礎(chǔ)上,實現(xiàn)穩(wěn)定持續(xù)的增長。(2)功能齊全:系統(tǒng)覆蓋了理財所需要的功能,收支,統(tǒng)計。

27、(3)適應(yīng)性強:系統(tǒng)采用基于模型的設(shè)計思,用戶的特點抽象出管理模型,根據(jù)模型進行系統(tǒng)設(shè)計,使系統(tǒng)具有很好的開放性的拓展性,能夠高效率地適應(yīng)各用戶群體的需求。4.4 數(shù)據(jù)庫設(shè)計4.4.1 tb_account(賬戶表)tb_account用于管理系統(tǒng)各個用戶信息。_id為用戶的唯一標識,為表的主鍵,也為其他表的_id相對應(yīng)。Username和pwd分別代表著用戶名和密碼。這兩個是用戶后期可以修改的。賬戶表中存在著一個特殊的用戶:默認用戶。它的用戶名密碼用戶不可見。用戶在沒有登陸的情況下,數(shù)據(jù)保存在這個用戶下方。表4-1 用戶賬戶表字段名數(shù)據(jù)類型是否主鍵描述_idIntegerY用戶idUSERN

28、AMEVARCHAR(20)N用戶名PWDVARCHAR(50)N密碼4.4.2 tb_income(收入信息表)TYPE_ID與tb_itype表的type_id對應(yīng)。No為收入信息的編號,不同用戶的收入信息存入數(shù)據(jù)庫的時候,都是以no=1為起始的,進而往后遞增。表4-2 收入信息表字段名數(shù)據(jù)類型是否主鍵描述_idINTEGERN用戶idNOINTEGERY編號MONEYDECIMALN收入金額TIMEDATEN收入時間TYPE_IDINTEGERN收入類別HANDLERVARCHAR(100)N放款方MARKVARCHAR(200)N備注PHOTOVARCHAR(200)N照片KINDVA

29、RCHAR(10)N類別4.4.3 tb_pay(支出信息表)TYPE_ID與tb_ptype表的type_id對應(yīng)。No為收入信息的編號,不同用戶的支出信息存入數(shù)據(jù)庫的時候,都是以no=1為起始的,進而往后遞增。表4-3 支出信息表字段名數(shù)據(jù)類型是否主鍵描述_idINTEGERN用戶idNOINTEGERY自增MONEYDECIMALN支出金額TIMEDATEN支出時間TYPE_IDINTEGERN支出類別ADDRESSVARCHAR(100)N消費地點MARKVARCHAR(200)N備注PHOTOVARCHAR(200)N照片KINDVARCHAR(10)N類別4.4.4 tb_ptyp

30、e(支出類型表)tb_ ptype為支出類型表。由于每個用戶都有對應(yīng)的用戶習(xí)慣,在添加支出信息時,收入類型的種類、使用頻率都會有所不同。在此設(shè)計支出類型表,可以為用戶提供修改支出類型的服務(wù),根據(jù)自己的使用頻率修改支出類型。表4-4 支出類型表字段名數(shù)據(jù)類型是否主鍵可否為空描述_idINTEGERNN用戶idnoINTEGERYN類型編號type_idINTEGERNN類型id4.4.5 tb_itype(收入類型表)tb_itype為收入類型表。由于每個用戶都有對應(yīng)的用戶習(xí)慣,在添加收入信息時,收入類型的種類、使用頻率都會有所不同。在此設(shè)計收入類型表,可以為用戶提供修改收入類型的服務(wù),根據(jù)自己

31、的使用頻率修改收入類型。表4-5 收入類型表字段名數(shù)據(jù)類型是否主鍵可否為空描述_idINTEGERNN用戶idnoINTEGERYN類型編號type_idINTEGERNN類型id5系統(tǒng)詳細設(shè)計與實現(xiàn)5.1 主界面設(shè)計快速記個人記賬軟件主界面,有4個Fragment頁面。圖5-1 為快速記主界面主界面使用4個Fragment和PopupWindow生成,部分代碼:/* * 顯示PopupWindow彈出菜單 */private void showPopupWindow(View parent) DisplayMetrics dm = parent.getResources().getDispl

32、ayMetrics();int w_screen = dm.widthPixels;int h_screen = dm.heightPixels;/ System.out.println("你的設(shè)備w_screen:" + w_screen + " h_screen:" +/ h_screen);if (popWindow = null) LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view

33、= layoutInflater.inflate(R.layout.popwindow_layout, null);popWinLayout = (LinearLayout) view.findViewById(R.id.popwindow);/ 創(chuàng)建一個PopuWidow對象float radiowith = w_screen / 480.0f;float radioheight = h_screen / 800.0f;popWindow = new PopupWindow(view,(int) (popWinLayout.getLayoutParams().width), h_screen

34、 / 4);/ 使其聚集 ,要想監(jiān)聽菜單里控件的事件就必須要調(diào)用此方法popWindow.setFocusable(true);pop_voiceView = (LinearLayout) popWinLayout.findViewById(R.id.pop_voice);pop_quickView = (LinearLayout) popWinLayout.findViewById(R.id.pop_quick);pop_voiceView.setOnClickListener(this);pop_quickView.setOnClickListener(this);/ 設(shè)置允許在外點擊消失

35、popWindow.setOutsideTouchable(true);/ 設(shè)置背景,這個是為了點擊“返回Back”也能使其消失,并且并不會影響你的背景popWindow.setBackgroundDrawable(new BitmapDrawable();/ 設(shè)置菜單顯示的位置int xPos = (w_screen - popWinLayout.getLayoutParams().width) / 2;popWindow.showAsDropDown(parent, xPos, 12);/ popWindow.showAsDropDown(parent, Gravity.CENTER, 0

36、);/ 監(jiān)聽菜單的關(guān)閉事件popWindow.setOnDismissListener(new OnDismissListener() Overridepublic void onDismiss() / 改變顯示的按鈕圖片為正常狀態(tài)changeButtonImage(););/ 監(jiān)聽觸屏事件popWindow.setTouchInterceptor(new OnTouchListener() public boolean onTouch(View view, MotionEvent event) if (event.getAction() = MotionEvent.ACTION_OUTSID

37、E) / 改變顯示的按鈕圖片為正常狀態(tài)changeButtonImage();return false;);/* * 點擊了“明細”按鈕 */private void clickFriendfeedBtn() / 實例化Fragment頁面fragmentPage1 = new FragmentPage1();/ 得到Fragment事務(wù)管理器FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();/ 替換當前的頁面fragmentTransaction.repl

38、ace(R.id.frame_content, fragmentPage1);/ 事務(wù)管理提交fragmentTmit();friendfeedFl.setSelected(true);friendfeedIv.setSelected(true);myfeedFl.setSelected(false);myfeedIv.setSelected(false);homeFl.setSelected(false);homeIv.setSelected(false);moreFl.setSelected(false);moreIv.setSelected(false);此處省略類似的函數(shù).privat

39、e void clickPop_voiceBtn() Intent intent = new Intent(MainActivity.this, AddPay.class);/ 創(chuàng)建Intent對象intent.putExtra("cwp.id", userid);intent.putExtra("cwp.voice", "");/ 設(shè)置傳遞數(shù)據(jù)startActivity(intent);private void clickPop_quickBtn() Intent intent = new Intent(MainActivity.t

40、his, AddPay.class);/ 創(chuàng)建Intent對象intent.putExtra("cwp.id", userid);startActivity(intent);/* * 點擊了中間按鈕 */private void clickToggleBtn() showPopupWindow(plusImageView);/ 改變按鈕顯示的圖片為按下時的狀態(tài)plusImageView.setImageResource(R.drawable.toolbar_plusback);toggleImageView.setImageResource(R.drawable.toolb

41、ar_btn_pressed);/* * 改變顯示的按鈕圖片為正常狀態(tài) */private void changeButtonImage() plusImageView.setImageResource(R.drawable.toolbar_plus);toggleImageView.setImageResource(R.drawable.toolbar_btn_normal);5.2 收入/支出插入數(shù)據(jù)界面添加軟鍵盤,來添加收入/支出消費記錄圖5-2 收入/支出插入數(shù)據(jù)界面添加收/支部分代碼,需要判斷是添加模式還是修改模式,是添加收入還是添加支出:btnSaveButton.setOnCli

42、ckListener(new OnClickListener() / 為保存按鈕設(shè)置監(jiān)聽事件SuppressLint("NewApi")Overridepublic void onClick(View arg0) if (typemode = "add") / 添加模式String strMoney = txtMoney.getText().toString();/ 獲取金額文本框的值if (type = "pay") / 支出if (!strMoney.isEmpty() / 判斷金額不為空/ 創(chuàng)建InaccountDAO對象Pay

43、DAO payDAO = new PayDAO(AddPay.this);/ 創(chuàng)建Tb_inaccount對象Tb_pay tb_pay = new Tb_pay(userid,payDAO.getMaxNo(userid) + 1,get2Double(strMoney),setTimeFormat(null),(spType.getSelectedItemPosition() + 1),txtAddress.getText().toString(),txtMark.getText().toString();payDAO.add(tb_pay);/ 添加收入信息Toast.makeText(

44、AddPay.this,"新增收入數(shù)據(jù)添加成功!", Toast.LENGTH_SHORT).show();gotoback(); else Toast.makeText(AddPay.this, "請輸入收入金額!",Toast.LENGTH_SHORT).show(); else / 收入if (!strMoney.isEmpty() / 判斷金額不為空/ 創(chuàng)建InaccountDAO對象IncomeDAO incomeDAO = new IncomeDAO(AddPay.this);/ 創(chuàng)建Tb_inaccount對象Tb_income tb_in

45、come = new Tb_income(userid,incomeDAO.getMaxNo(userid) + 1,get2Double(strMoney),setTimeFormat(null),(spType.getSelectedItemPosition() + 1),txtInhandler.getText().toString(),txtMark.getText().toString();System.out.println("money"+ get2Double(strMoney);incomeDAO.add(tb_income);/ 添加收入信息/ 彈出信息

46、提示Toast.makeText(AddPay.this,"新增收入數(shù)據(jù)添加成功!", Toast.LENGTH_SHORT).show();gotoback(); else Toast.makeText(AddPay.this, "請輸入收入金額!",Toast.LENGTH_SHORT).show(); else / 修改模式if (type = "pay") / 支出if (!txtMoney.getText().toString().isEmpty() / 判斷金額不為空Tb_pay tb_pay = new Tb_pay()

47、; / 創(chuàng)建Tb_pay對象tb_pay.set_id(userid); / 設(shè)置useridtb_pay.setNo(Integer.parseInt(strno); / 設(shè)置編號tb_pay.setMoney(get2Double(txtMoney.getText().toString();/ 設(shè)置金額tb_pay.setTime(setTimeFormat(txtTime.getText().toString();/ 設(shè)置時間tb_pay.setType(spType.getSelectedItemPosition() + 1);/ 設(shè)置類別tb_pay.setAddress(txtAd

48、dress.getText().toString();/ 設(shè)置地點tb_pay.setMark(txtMark.getText().toString();/ 設(shè)置備注payDAO.update(tb_pay);/ 更新支出信息Toast.makeText(AddPay.this, "數(shù)據(jù)修改成功!",Toast.LENGTH_SHORT).show();gotoback(); else Toast.makeText(AddPay.this, "請輸入收入金額!",Toast.LENGTH_SHORT).show(); else / 收入if (!txtM

49、oney.getText().toString().isEmpty() / 判斷金額不為空Tb_income tb_income = new Tb_income();/ 創(chuàng)建Tb_income對象tb_income.set_id(userid);/ 設(shè)置編號tb_income.setNo(Integer.parseInt(strno);/ 設(shè)置編號tb_income.setMoney(get2Double(txtMoney.getText().toString();/ 設(shè)置金額tb_income.setTime(setTimeFormat(txtTime.getText().toString(

50、);/ 設(shè)置時間tb_income.setType(spType.getSelectedItemPosition() + 1);/ 設(shè)置類別tb_income.setHandler(txtInhandler.getText().toString();/ 設(shè)置付款方tb_income.setMark(txtMark.getText().toString();/ 設(shè)置備注incomeDAO.update(tb_income);/ 更新收入信息Toast.makeText(AddPay.this, "數(shù)據(jù)修改成功!",Toast.LENGTH_SHORT).show();goto

51、back(); else Toast.makeText(AddPay.this, "請輸入收入金額!",Toast.LENGTH_SHORT).show(););軟鍵盤部分代碼:public void onKey(int primaryCode, int keyCodes) Editable editable = ed.getText();if (typemode.equals("ModifyInP") / 添加模式獲取開始光標ed.setSelection(editable.length();int start = ed.getSelectionStart();if (primaryCode = Keyboard.KEYCODE_DELETE) / 刪

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論