




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 本科畢業(yè)論文(設(shè)計(jì))基于Android平臺(tái)的個(gè)人理財(cái)軟件的設(shè)計(jì)與實(shí)現(xiàn)二級(jí)學(xué)院醫(yī)藥信息工程學(xué)院專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí)醫(yī)學(xué)智能2011級(jí)(1)班學(xué)生姓名林彬健學(xué) 號(hào)1107505151指導(dǎo)教師王鶴嫻2015 年 3 月誠(chéng) 信 聲 明我聲明,所呈交的畢業(yè)論文(設(shè)計(jì))是本人在老師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我查證,除了文中特別加以標(biāo)注和致謝的地方外,論文(設(shè)計(jì))中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得其他教育機(jī)構(gòu)的學(xué)位或證書(shū)而使用過(guò)的材料。我承諾,論文(設(shè)計(jì))中的所有內(nèi)容均真實(shí)、可信。畢業(yè)論文(設(shè)計(jì))作者(簽名): 年 月 日基于Android平臺(tái)的個(gè)人理財(cái)軟件的設(shè)
2、計(jì)與實(shí)現(xiàn)【摘要】:個(gè)人理財(cái)管理系統(tǒng)是基于Android系統(tǒng)開(kāi)發(fā)的一款手機(jī)應(yīng)用程序。它主要是為了滿足人們?cè)诳旃?jié)奏的生活中可以隨時(shí)記下自己的收支情況的需求。個(gè)人理財(cái)管理系統(tǒng)與傳統(tǒng)的記賬方式相比,體現(xiàn)了它的便捷性、安全性及可擴(kuò)展性。系統(tǒng)采用Eclipse+ Android Developer Tools作為開(kāi)發(fā)工具,以SQLite為數(shù)據(jù)庫(kù)。系統(tǒng)功能包括:用戶賬戶的注冊(cè)、用戶切換、用戶名密碼修改、賬戶刪除,語(yǔ)音識(shí)別記賬,收入信息的增刪改,支出信息的增刪改,收入類型的增刪,支出類型的增刪,收入信息分類統(tǒng)計(jì),支出信息分類統(tǒng)計(jì),收入支出總額統(tǒng)計(jì),數(shù)據(jù)還原、清空等等。系統(tǒng)具有界面簡(jiǎn)潔鮮明、功能便捷易用、操作人
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 國(guó)內(nèi)外現(xiàn)狀和發(fā)展趨勢(shì)12設(shè)計(jì)開(kāi)發(fā)所用到的工具和技術(shù)32.1系統(tǒng)開(kāi)發(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)濟(jì)可行性73.3系統(tǒng)功能模塊74系統(tǒng)總體設(shè)計(jì)94.1系統(tǒng)總體設(shè)計(jì)分析94.2系統(tǒng)流程圖94.3 系統(tǒng)特點(diǎn)94.4 數(shù)據(jù)庫(kù)設(shè)計(jì)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)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)135.1 主界面設(shè)計(jì)135.2 收入/支出插入數(shù)據(jù)界面165.3 語(yǔ)音記賬界面215.4 類別維護(hù)界面315.5 收入/支出統(tǒng)計(jì)界面316.論文總結(jié)38參考文
9、獻(xiàn)39致 謝40緒論1.1 選題背景出門(mén)口訣“伸手要賞錢(qián)”分別代表著身份證、手機(jī)、鑰匙、傘、錢(qián)。在后PC時(shí)代的今天,手機(jī)成為最重要的移動(dòng)終端,是我們出門(mén)出行的必?cái)y物。以前,或許我們的手機(jī)只能為我們提供基本通信功能,而隨著Android系統(tǒng)的誕生,我們的生活迎來(lái)了一場(chǎng)不亞于“工業(yè)革命”帶給我們的巨大變化。基于Android系統(tǒng)的手機(jī)處理各類信息的能力得到了質(zhì)的提升。而Android這個(gè)開(kāi)源的操作系統(tǒng),將享受這項(xiàng)優(yōu)質(zhì)服務(wù)的權(quán)利給了所有愿意使用它的人。Android從08年9月的1.1版到去年的L版,一路走來(lái),從基本走向優(yōu)化,全方面地為我們提供了出色的網(wǎng)絡(luò)、多媒體、通訊、娛樂(lè)等功能。這匹黑馬,從誕生
10、伊始到去年7月的“全球市場(chǎng)占有率達(dá)81.9%”,告訴我們它的出現(xiàn)是多么受人們歡迎。它備受追捧的原因不外乎它完全的對(duì)第三方軟件開(kāi)發(fā)商和我們這些開(kāi)發(fā)者的開(kāi)發(fā)。我們可以在它上面實(shí)現(xiàn)無(wú)限自主的“自定義”。它宛如一張白紙,我們可以在上面隨意畫(huà)出自己想要的東西。它,貴在給予了我們自由。1.2 課題研究的目的和意義隨著高速經(jīng)濟(jì)化,我們的生活節(jié)奏越來(lái)越快。我們忙東忙西,總會(huì)容易忽略忘記了一些生活細(xì)節(jié),比如收支管理。為了更好的釋放一些時(shí)間來(lái)享受我們的生活,我們期待有這么一款軟件來(lái)幫助管理這些小數(shù)據(jù)。建立在Android操作系統(tǒng)上的個(gè)人理財(cái)系統(tǒng),方便我們隨時(shí)隨地地記錄著這些零散的數(shù)據(jù),從此我們不必再為收支費(fèi)心,清
11、心地查看數(shù)據(jù)統(tǒng)計(jì)結(jié)果是我們唯一要做的事。1.3 國(guó)內(nèi)外現(xiàn)狀和發(fā)展趨勢(shì)安卓在手機(jī)上的應(yīng)用使得手機(jī)的功能有了很大改善,這使得越來(lái)越多的入主要依靠手機(jī)查詢大量信息,而用戶們不斷提高的需求也決定了越來(lái)越多的基于安卓平臺(tái)的應(yīng)用軟件及系統(tǒng)的產(chǎn)生。若是基于安卓平臺(tái)的個(gè)人理財(cái)系統(tǒng)得到廣泛推廣,人們能從該應(yīng)用顯而易見(jiàn)的了解到個(gè)人的財(cái)務(wù)狀況,明確的使用自身錢(qián)財(cái),了解到日常中支出比例,調(diào)整支出,正確理財(cái)。(1) 開(kāi)放性手機(jī)平臺(tái):android是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。Google通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、手機(jī)公司和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開(kāi)放式的智能
12、手機(jī)操作系統(tǒng),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng)。(2) 網(wǎng)絡(luò)集成性很高:涵蓋了生活中各個(gè)方面的網(wǎng)絡(luò)應(yīng)用,對(duì)長(zhǎng)期使用網(wǎng)絡(luò)、信息依賴度比較高的人群很合適。(3) Android具備創(chuàng)新性自從:Google開(kāi)發(fā)出Android后,許多人認(rèn)為其技術(shù)可信度要比其它操作系統(tǒng)略勝一籌,但這并不是用戶購(gòu)買Android智能手機(jī)的唯一原因。人們認(rèn)為Android是一種相對(duì)較新的、又較為成熟的技術(shù),在達(dá)到巔峰之前還有很大發(fā)展空間。(4) Android平臺(tái)在數(shù)量上逐漸主宰市場(chǎng):市場(chǎng)分析機(jī)構(gòu)NPD發(fā)布的數(shù)據(jù)顯示,2014年4-6月份發(fā)售的智能手機(jī)中,33%為Android手機(jī),而RIM手機(jī)發(fā)售比例為28%,iP
13、hone為22%.(5) Android在其它領(lǐng)域的拓展:android不僅促進(jìn)了手機(jī)產(chǎn)業(yè)的發(fā)展,它的全面計(jì)算服務(wù)和豐富的功能支持,已將應(yīng)用拓展到手機(jī)以外的其他領(lǐng)域。Android平臺(tái)的通用性可以適用于不同的屏幕、有線和無(wú)線設(shè)備。Android的系統(tǒng)和應(yīng)用程序開(kāi)發(fā)人員將更多的涉足多媒體、移動(dòng)互聯(lián)網(wǎng)設(shè)備、數(shù)字視頻和家庭娛樂(lè)設(shè)備、汽車、醫(yī)藥、網(wǎng)絡(luò)、監(jiān)測(cè)儀器和工業(yè)管理、機(jī)頂盒等新領(lǐng)域。2設(shè)計(jì)開(kāi)發(fā)所用到的工具和技術(shù)2.1系統(tǒng)開(kāi)發(fā)工具個(gè)人財(cái)務(wù)管理系統(tǒng)的開(kāi)發(fā)及運(yùn)行環(huán)境如下所述:操作系統(tǒng):Windows7JDK環(huán)境:Java Development Kit version=1.7.0_45開(kāi)發(fā)工具:Ecli
14、pse version=4.2.0Android Software Development Kit version=4.4.2Android Developer Tools Build: v22.3.0-887826開(kāi)發(fā)語(yǔ)言:Java、XML數(shù)據(jù)庫(kù)軟件:SQLite 運(yùn)行平臺(tái):Windows虛擬機(jī):720P(1080x720)2.2 Android的介紹Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由An
15、dy Rubin開(kāi)發(fā),主要支持手機(jī)。2005年8月由Google收購(gòu)注資。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。它采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語(yǔ)言開(kāi)發(fā),只提供基本功能;中間層包括函數(shù)庫(kù)Library和虛擬機(jī)Virtual Machine,由C+開(kāi)發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開(kāi)發(fā),以Java作為編寫(xiě)程序的一部分。不存在任何以往阻礙移
16、動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件。android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和linux核心層。藍(lán)色的代表java程序,黃色的代碼為運(yùn)行JAVA程序而實(shí)現(xiàn)的虛擬機(jī),綠色部分為C/C+語(yǔ)言編寫(xiě)的程序庫(kù),紅色的代碼內(nèi)核(linux內(nèi)核+driver)。在Application Framework之下,由C/C+的程序庫(kù)組成,通過(guò)JNI完成從JAVA到C的調(diào)用。圖2-1 Android架構(gòu)2.3 Eclipse的介紹eclipse-galileoEclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就
17、其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司開(kāi)發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開(kāi)發(fā)環(huán)境,2001年11月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為Ganymede的3.4版
18、。2009年7月發(fā)布代號(hào)為GALILEO的3.5版。Eclipse是著名的跨平臺(tái)的自由集成開(kāi)發(fā)環(huán)境(IDE)。最初主要用來(lái)Java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)插件使其作為其他計(jì)算機(jī)語(yǔ)言比如C+和Python的開(kāi)發(fā)工具。Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開(kāi)發(fā)商以Eclipse為框架開(kāi)發(fā)自己的IDE。Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Ecli
19、pse項(xiàng)目已經(jīng)發(fā)展成為了一個(gè)龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項(xiàng)目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個(gè)開(kāi)發(fā)源碼項(xiàng)目,它其實(shí)是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開(kāi)放源碼,任何人都可以免費(fèi)得到,并可以在此基礎(chǔ)上開(kāi)發(fā)各自的插件,因此越來(lái)越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項(xiàng)目,并宣稱Eclipse將來(lái)能成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE集大成者,使用者只需下載各種語(yǔ)言的插件即可。
20、2.4 SQLite的介紹SQLite,是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開(kāi)源的世界著名數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生
21、于2000年5月。 至2015年已經(jīng)有15個(gè)年頭,SQLite也迎來(lái)了一個(gè)版本 SQLite 3已經(jīng)發(fā)布。3系統(tǒng)需求分析3.1需求分析生活中記錄日?;ㄤN、收入總是瑣碎累心的。特別是紙質(zhì)記錄,除了攜帶不方便外,還很容易丟失損毀。這個(gè)時(shí)候,若是我們身邊常帶的手機(jī)上有這么一款可以隨時(shí)記錄收入和支出的軟件,因?yàn)樵谟涗浭罩У耐瑫r(shí),會(huì)有一些注意事項(xiàng)需要標(biāo)注,比如欠錢(qián)還錢(qián)注意事項(xiàng)。在對(duì)各項(xiàng)數(shù)據(jù)進(jìn)行記錄后,用戶會(huì)希望看到對(duì)各類數(shù)據(jù)的統(tǒng)計(jì),所以需要滿足基本需求的統(tǒng)計(jì)模塊。為了保證數(shù)據(jù)安全,增設(shè)賬戶模塊。為了區(qū)分各用戶的操作習(xí)慣,所以增設(shè)收入支出類型管理模塊和系統(tǒng)設(shè)置模塊。3.2 可行性分析3.2.1 系統(tǒng)可行性
22、可行性分析實(shí)在目前市場(chǎng)己有的類似系統(tǒng)調(diào)查的基礎(chǔ)上,辯證新系統(tǒng)的研發(fā)是否具備開(kāi)發(fā)必要性和可能性,對(duì)新系統(tǒng)的研發(fā)從技術(shù)、經(jīng)濟(jì)、社會(huì)因素等多個(gè)方面進(jìn)行相關(guān)的分析和研究,以避免造成不必要的投資失誤,保證和提高新系統(tǒng)開(kāi)發(fā)成功的把握??尚行匝芯康哪康木褪且宰钚〉臅r(shí)間、金錢(qián)代價(jià)確定疑難問(wèn)題是否能夠妥善解決。3.2.2 技術(shù)可行性此系統(tǒng)需要在Android手機(jī)操作系統(tǒng)上運(yùn)行,用Eclipse進(jìn)行開(kāi)發(fā),數(shù)據(jù)庫(kù)我選用輕量級(jí)的SqLite。開(kāi)發(fā)所需的軟件技術(shù)成熟穩(wěn)定,且支持Android系統(tǒng)的手機(jī)也分布廣泛,可以完全滿足所以的開(kāi)發(fā)需求。至于自己在Android方面雖然沒(méi)有基礎(chǔ),鑒于之前有Java編程經(jīng)驗(yàn)且時(shí)間充裕,
23、有足夠時(shí)間來(lái)學(xué)習(xí)空白的知識(shí)。 3.2.3 經(jīng)濟(jì)可行性從市場(chǎng)經(jīng)濟(jì)來(lái)看,近年來(lái),國(guó)人生活品質(zhì)提升,逐漸重視生活品質(zhì),手機(jī)應(yīng)用便成了人們生活的一部分。當(dāng)今社會(huì)己步入了一個(gè)全新的信息時(shí)代,人類的每個(gè)活動(dòng)都和“信息”緊密的聯(lián)系在一起,小至個(gè)人的衣食住行,大及國(guó)家大事新聞發(fā)布,都依與信息的傳播與發(fā)布,而社會(huì)中最活躍的,在市場(chǎng)經(jīng)濟(jì)高速發(fā)展的現(xiàn)在,手機(jī)應(yīng)用普遍化,生活化,低端化成了不可阻擋的趨勢(shì)。從技術(shù)經(jīng)濟(jì)來(lái)看,由于SQLite數(shù)據(jù)庫(kù)和Android SDK都是開(kāi)源的免費(fèi)的開(kāi)發(fā)學(xué)習(xí)工具,而且本系統(tǒng)使用靈活方便,技術(shù)也不是很復(fù)雜,開(kāi)發(fā)周期較短,因此開(kāi)發(fā)成本較低。市場(chǎng)前景非??春茫哉f(shuō)技術(shù)經(jīng)濟(jì)方面來(lái)看,本項(xiàng)目也
24、是可行的。由此可以看出本系統(tǒng)開(kāi)發(fā)所產(chǎn)生的效益將大于投入,所以開(kāi)發(fā)本項(xiàng)目是可行的、必要的。 綜上所述,個(gè)人理財(cái)系統(tǒng)充分利用了軟硬件資源,技術(shù)成熟,成本低廉,操作簡(jiǎn)單,管理方便,使理財(cái)記賬擺脫空間的限制,實(shí)現(xiàn)自動(dòng)化處理和信息化管理,因此,本系統(tǒng)的實(shí)施是可行的。3.3系統(tǒng)功能模塊(1) 用戶管理:可以設(shè)置當(dāng)前用戶(2) 類別維護(hù):用戶可以添加日常收入、日常支出的類別,并且可以刪除相應(yīng)的類別,填寫(xiě)類別詳細(xì)。(3) 日常收入:用戶可以按照日常收入日期、金額、類別、備注進(jìn)行數(shù)據(jù)的增添(4) 日常支出:用戶可以按照日常支出日期、金額、類別、備注進(jìn)行數(shù)據(jù)的增添(5) 收入支出統(tǒng)計(jì):按照一定的數(shù)據(jù)查詢條件,用戶
25、可以對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。個(gè)人理財(cái)類別維護(hù)用戶信息收入支出查詢收入支出統(tǒng)計(jì)收入支出插入收入類別維護(hù)支出類別維護(hù)手動(dòng)輸入語(yǔ)音輸入收入插入數(shù)據(jù)支出插入數(shù)據(jù)收入統(tǒng)計(jì)支出統(tǒng)計(jì)收入數(shù)據(jù)查詢支出數(shù)據(jù)查詢用戶信息維護(hù)圖3-1 個(gè)人理財(cái)管理系統(tǒng)功能結(jié)構(gòu)圖4系統(tǒng)總體設(shè)計(jì)4.1系統(tǒng)總體設(shè)計(jì)分析系統(tǒng)設(shè)計(jì)是系統(tǒng)開(kāi)發(fā)過(guò)程中的核心,從需求出發(fā),總體上描述系統(tǒng)架構(gòu)應(yīng)該包含的組成要素。系統(tǒng)總體設(shè)計(jì)盡可能模塊化,描述了各個(gè)模塊之間的關(guān)聯(lián)。模塊化是一種很重要的設(shè)計(jì)思想,把一個(gè)復(fù)雜的系統(tǒng)分解為一些規(guī)模較小、功能簡(jiǎn)單的、更易于建立和修改的部分。一方面,各個(gè)模塊具有相對(duì)獨(dú)立性,可以分別加以設(shè)計(jì)實(shí)現(xiàn);另一方面,模塊之間的相互關(guān)系則通過(guò)一定的方
26、式予以說(shuō)明。各模塊在這些關(guān)系的約束下共同構(gòu)成一個(gè)統(tǒng)一的整體,完成系統(tǒng)的功能。總體設(shè)計(jì)的核心內(nèi)容就是依據(jù)需求分析定義的功能,合理、有效地實(shí)現(xiàn)系統(tǒng)中定義的各種需求,包括模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)等。4.2系統(tǒng)流程圖根據(jù)系統(tǒng)分析以及功能需求,系統(tǒng)的基本流程可以描述為:主界面選擇各子功能模塊,如下圖所示:個(gè)人理財(cái)系統(tǒng)密碼管理模塊用戶登錄模塊收/支數(shù)據(jù)查詢類別管理模塊收/支記錄模塊圖4-1 系統(tǒng)流程圖4.3 系統(tǒng)特點(diǎn)(1)目的明確:理財(cái)就是以管錢(qián)為中心,通過(guò)抓好賺錢(qián)、生錢(qián)、護(hù)錢(qián),三個(gè)環(huán)節(jié),管好自己手中的現(xiàn)金流動(dòng),讓資產(chǎn)在保值的基礎(chǔ)上,實(shí)現(xiàn)穩(wěn)定持續(xù)的增長(zhǎng)。(2)功能齊全:系統(tǒng)覆蓋了理財(cái)所需要的功能,收支,統(tǒng)計(jì)。
27、(3)適應(yīng)性強(qiáng):系統(tǒng)采用基于模型的設(shè)計(jì)思,用戶的特點(diǎn)抽象出管理模型,根據(jù)模型進(jìn)行系統(tǒng)設(shè)計(jì),使系統(tǒng)具有很好的開(kāi)放性的拓展性,能夠高效率地適應(yīng)各用戶群體的需求。4.4 數(shù)據(jù)庫(kù)設(shè)計(jì)4.4.1 tb_account(賬戶表)tb_account用于管理系統(tǒng)各個(gè)用戶信息。_id為用戶的唯一標(biāo)識(shí),為表的主鍵,也為其他表的_id相對(duì)應(yīng)。Username和pwd分別代表著用戶名和密碼。這兩個(gè)是用戶后期可以修改的。賬戶表中存在著一個(gè)特殊的用戶:默認(rèn)用戶。它的用戶名密碼用戶不可見(jiàn)。用戶在沒(méi)有登陸的情況下,數(shù)據(jù)保存在這個(gè)用戶下方。表4-1 用戶賬戶表字段名數(shù)據(jù)類型是否主鍵描述_idIntegerY用戶idUSERN
28、AMEVARCHAR(20)N用戶名PWDVARCHAR(50)N密碼4.4.2 tb_income(收入信息表)TYPE_ID與tb_itype表的type_id對(duì)應(yīng)。No為收入信息的編號(hào),不同用戶的收入信息存入數(shù)據(jù)庫(kù)的時(shí)候,都是以no=1為起始的,進(jìn)而往后遞增。表4-2 收入信息表字段名數(shù)據(jù)類型是否主鍵描述_idINTEGERN用戶idNOINTEGERY編號(hào)MONEYDECIMALN收入金額TIMEDATEN收入時(shí)間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對(duì)應(yīng)。No為收入信息的編號(hào),不同用戶的支出信息存入數(shù)據(jù)庫(kù)的時(shí)候,都是以no=1為起始的,進(jìn)而往后遞增。表4-3 支出信息表字段名數(shù)據(jù)類型是否主鍵描述_idINTEGERN用戶idNOINTEGERY自增MONEYDECIMALN支出金額TIMEDATEN支出時(shí)間TYPE_IDINTEGERN支出類別ADDRESSVARCHAR(100)N消費(fèi)地點(diǎn)MARKVARCHAR(200)N備注PHOTOVARCHAR(200)N照片KINDVARCHAR(10)N類別4.4.4 tb_ptyp
30、e(支出類型表)tb_ ptype為支出類型表。由于每個(gè)用戶都有對(duì)應(yīng)的用戶習(xí)慣,在添加支出信息時(shí),收入類型的種類、使用頻率都會(huì)有所不同。在此設(shè)計(jì)支出類型表,可以為用戶提供修改支出類型的服務(wù),根據(jù)自己的使用頻率修改支出類型。表4-4 支出類型表字段名數(shù)據(jù)類型是否主鍵可否為空描述_idINTEGERNN用戶idnoINTEGERYN類型編號(hào)type_idINTEGERNN類型id4.4.5 tb_itype(收入類型表)tb_itype為收入類型表。由于每個(gè)用戶都有對(duì)應(yīng)的用戶習(xí)慣,在添加收入信息時(shí),收入類型的種類、使用頻率都會(huì)有所不同。在此設(shè)計(jì)收入類型表,可以為用戶提供修改收入類型的服務(wù),根據(jù)自己
31、的使用頻率修改收入類型。表4-5 收入類型表字段名數(shù)據(jù)類型是否主鍵可否為空描述_idINTEGERNN用戶idnoINTEGERYN類型編號(hào)type_idINTEGERNN類型id5系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)5.1 主界面設(shè)計(jì)快速記個(gè)人記賬軟件主界面,有4個(gè)Fragment頁(yè)面。圖5-1 為快速記主界面主界面使用4個(gè)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)建一個(gè)PopuWidow對(duì)象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)聽(tīng)菜單里控件的事件就必須要調(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è)置允許在外點(diǎn)擊消失
35、popWindow.setOutsideTouchable(true);/ 設(shè)置背景,這個(gè)是為了點(diǎn)擊“返回Back”也能使其消失,并且并不會(huì)影響你的背景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)聽(tīng)菜單的關(guān)閉事件popWindow.setOnDismissListener(new OnDismissListener() Overridepublic void onDismiss() / 改變顯示的按鈕圖片為正常狀態(tài)changeButtonImage(););/ 監(jiān)聽(tīng)觸屏事件popWindow.setTouchInterceptor(new OnTouchListener() public boolean onTouch(View view, MotionEvent event) if (event.getAction() = MotionEvent.ACTION_OUTSID
37、E) / 改變顯示的按鈕圖片為正常狀態(tài)changeButtonImage();return false;);/* * 點(diǎn)擊了“明細(xì)”按鈕 */private void clickFriendfeedBtn() / 實(shí)例化Fragment頁(yè)面fragmentPage1 = new FragmentPage1();/ 得到Fragment事務(wù)管理器FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();/ 替換當(dāng)前的頁(yè)面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對(duì)象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對(duì)象intent.putExtra("cwp.id", userid);startActivity(intent);/* * 點(diǎn)擊了中間按鈕 */private void clickToggleBtn() showPopupWindow(plusImageView);/ 改變按鈕顯示的圖片為按下時(shí)的狀態(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ù)界面添加軟鍵盤(pán),來(lái)添加收入/支出消費(fèi)記錄圖5-2 收入/支出插入數(shù)據(jù)界面添加收/支部分代碼,需要判斷是添加模式還是修改模式,是添加收入還是添加支出:btnSaveButton.setOnCli
42、ckListener(new OnClickListener() / 為保存按鈕設(shè)置監(jiān)聽(tīng)事件SuppressLint("NewApi")Overridepublic void onClick(View arg0) if (typemode = "add") / 添加模式String strMoney = txtMoney.getText().toString();/ 獲取金額文本框的值if (type = "pay") / 支出if (!strMoney.isEmpty() / 判斷金額不為空/ 創(chuàng)建InaccountDAO對(duì)象Pay
43、DAO payDAO = new PayDAO(AddPay.this);/ 創(chuàng)建Tb_inaccount對(duì)象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, "請(qǐng)輸入收入金額!",Toast.LENGTH_SHORT).show(); else / 收入if (!strMoney.isEmpty() / 判斷金額不為空/ 創(chuàng)建InaccountDAO對(duì)象IncomeDAO incomeDAO = new IncomeDAO(AddPay.this);/ 創(chuàng)建Tb_inaccount對(duì)象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, "請(qǐng)輸入收入金額!",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對(duì)象tb_pay.set_id(userid); / 設(shè)置useridtb_pay.setNo(Integer.parseInt(strno); / 設(shè)置編號(hào)tb_pay.setMoney(get2Double(txtMoney.getText().toString();/ 設(shè)置金額tb_pay.setTime(setTimeFormat(txtTime.getText().toString();/ 設(shè)置時(shí)間tb_pay.setType(spType.getSelectedItemPosition() + 1);/ 設(shè)置類別tb_pay.setAddress(txtAd
48、dress.getText().toString();/ 設(shè)置地點(diǎn)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, "請(qǐng)輸入收入金額!",Toast.LENGTH_SHORT).show(); else / 收入if (!txtM
49、oney.getText().toString().isEmpty() / 判斷金額不為空Tb_income tb_income = new Tb_income();/ 創(chuàng)建Tb_income對(duì)象tb_income.set_id(userid);/ 設(shè)置編號(hào)tb_income.setNo(Integer.parseInt(strno);/ 設(shè)置編號(hào)tb_income.setMoney(get2Double(txtMoney.getText().toString();/ 設(shè)置金額tb_income.setTime(setTimeFormat(txtTime.getText().toString(
50、);/ 設(shè)置時(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, "請(qǐng)輸入收入金額!",Toast.LENGTH_SHORT).show(););軟鍵盤(pán)部分代碼:public void onKey(int primaryCode, int keyCodes) Editable editable = ed.getText();if (typemode.equals("ModifyInP") / 添加模式獲取開(kāi)始光標(biāo)ed.setSelection(editable.length();int start = ed.getSelectionStart();if (primaryCode = Keyboard.KEYCODE_DELETE) / 刪
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司收購(gòu)合同協(xié)議
- 2025年九江貨運(yùn)資格證考試題庫(kù)
- 化工原料混合比例控制方法
- 品牌市場(chǎng)占有率統(tǒng)計(jì)表(行業(yè))
- 2025年吳忠如何考貨運(yùn)從業(yè)資格證
- 培訓(xùn)合作協(xié)議合同
- 零售業(yè)市場(chǎng)競(jìng)爭(zhēng)測(cè)試卷
- 市場(chǎng)調(diào)研反饋表格-市場(chǎng)反饋收集
- 2025年烏魯木齊貨運(yùn)從業(yè)資格證模擬試題答案大全及答案
- 認(rèn)知2地面點(diǎn)位的表示方法
- 新人教版高中數(shù)學(xué)必修第一冊(cè)-3.3 冪函數(shù)【課件】
- 國(guó)有企業(yè)保密管理制度
- 幼兒園師德師風(fēng)培訓(xùn)課件
- Unit2大單元整體教學(xué)設(shè)計(jì)-小學(xué)英語(yǔ)四年級(jí)上冊(cè)(Joinin外研劍橋英語(yǔ))
- 人美版(2024)七年級(jí)上冊(cè)美術(shù)第二單元 色彩魅力第1課《自然的色彩》教學(xué)設(shè)計(jì)
- 2024年水利安全員(B證)考試題庫(kù)-下(多選、判斷題)
- 酒店室內(nèi)裝修工程施工組織設(shè)計(jì)
- 神經(jīng)病學(xué)專業(yè)英語(yǔ)詞匯
- 2024年高級(jí)纖維檢驗(yàn)員職業(yè)鑒定理論考試題庫(kù)(含答案)
- 心肺復(fù)蘇科普課件
- 員工食堂就餐統(tǒng)計(jì)表
評(píng)論
0/150
提交評(píng)論