論文基于JAVA的銀行賬戶管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
論文基于JAVA的銀行賬戶管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
論文基于JAVA的銀行賬戶管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
論文基于JAVA的銀行賬戶管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
論文基于JAVA的銀行賬戶管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

43/48摘要隨著我國信息產(chǎn)業(yè)的迅速發(fā)展以與中國加入世界貿(mào)易組織,國外銀行之間的競爭也越來越激烈,如何發(fā)展業(yè)務(wù)以吸引更多顧客是各銀行面對的當(dāng)務(wù)之急。于此同時(shí),賬戶管理是銀行業(yè)務(wù)流程過程中十分重要且必備的環(huán)節(jié)之一,并且現(xiàn)在銀行的業(yè)務(wù)越來越多,吸引的客戶也越來越多,銀行賬戶的高效管理就越顯重要。銀行賬戶管理系統(tǒng)是針對銀行賬戶的日常管理而設(shè)計(jì),操作方便而且界面簡潔,使用Java作為編程語言,Eclipse作為開發(fā)工具,Mysql作為后臺數(shù)據(jù)存儲,采用軟件工程的開發(fā)原理,按照需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼、軟件測試等過程進(jìn)行規(guī)設(shè)計(jì)。本銀行賬戶管理系統(tǒng)具有良好的容錯(cuò)性,在出現(xiàn)誤操作時(shí)能與時(shí)的給出相關(guān)錯(cuò)誤提示,以便于用戶與時(shí)地更正。設(shè)計(jì)過程思路清晰,模塊劃分簡潔,設(shè)計(jì)各階段分工明確,極大的提高了本系統(tǒng)的實(shí)現(xiàn)。關(guān)鍵詞:賬戶管理;業(yè)務(wù)流程;Java;Eclipse;軟件工程

AbstractWiththerapiddevelopmentoftheinformationindustryandChina'saccessiontotheworldtradeorganization,thecompetitionbetweendomesticandforeignbankisalsomoreandmorefierce.Howtodevelopbusinesstoattractmorecustomersatthemomentistheproblemmanybanksconfront.Atthesametime,accountmanagementisoneoftheimportantandnecessarylinksintheprocessofbankbusiness.Besides,thebankbusinessesnowadaysarebecominglargerandlarger,andmoreandmorecustomersareattracted,soefficientmanagementofbankaccountseemsextremelyimportant.Bankaccountmanagementsystemisdesignedforthedailyadministrationofbankaccount.Itiseasytooperateandhasaconciseinterface.ItusesJavaasaprogramminglanguage,applyEclipseasdevelopmenttools,chooseMysqlasthebackgrounddatastorageandadoptthesoftwareengineeringevelopmentprinciple.Itisdesignedaccordingtotherequirementanalysis,generaldesign,detaileddesign,programcode,softwaretestandsoon.Thisbankaccountmanagementsystemisgoodatfaulttolerance.Whendealingwiththewrongoperation,itcanpointouttherelatederrorsintime,sothatuserscancorrecttheerrorstimely.Thethinkingofthedesignprocessisclear,themodulepartitionisconciseandthedivisionofeachstageisexplicit,whichcontributealottotheachivementofthissystem.Keywords:accountmanagement;softwareengineering;Java;Eclipse;businessprocess目錄第1章緒論11.1概述11.2可行性分析11.2.1技術(shù)可行性11.2.2經(jīng)濟(jì)可行性11.2.3管理可行性21.3設(shè)計(jì)意義21.4設(shè)計(jì)目標(biāo)2第2章開發(fā)工具與運(yùn)行環(huán)境32.1開發(fā)工具32.1.1Java語言特性32.1.2Eclipse32.1.3Mysql與NavicatforMysql42.2運(yùn)行環(huán)境4第3章系統(tǒng)需求分析53.1功能模塊分析53.1.1用戶注冊53.1.2用戶登錄53.1.3用戶主菜單53.1.4存款功能63.1.5取款功能63.1.6轉(zhuǎn)賬功能63.1.7查詢功能73.1.8修改密碼73.1.9返回功能83.2業(yè)務(wù)流程分析83.3數(shù)據(jù)流程分析83.3.1系統(tǒng)關(guān)聯(lián)圖83.3.2頂層圖93.3.3數(shù)據(jù)流圖9第4章數(shù)據(jù)庫分析104.1數(shù)據(jù)庫需求分析104.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)114.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)114.4數(shù)據(jù)庫結(jié)構(gòu)的實(shí)現(xiàn)12第5章系統(tǒng)設(shè)計(jì)145.1用戶實(shí)體145.2界面代碼設(shè)計(jì)155.3數(shù)據(jù)庫的連接175.4功能模塊的實(shí)現(xiàn)18第6章系統(tǒng)測試19第7章總結(jié)與展望257.1總結(jié)257.2展望25參考文獻(xiàn)26致27附錄28第1章緒論1.1概述進(jìn)入21世紀(jì)之后,隨著科技的飛速發(fā)展和社會進(jìn)步,尤其是計(jì)算機(jī)在大圍的普與,人工智能化的計(jì)算機(jī)應(yīng)用也逐步的由大規(guī)模科學(xué)計(jì)算的海量數(shù)據(jù)處理轉(zhuǎn)向大規(guī)模的事務(wù)處理和對工作流的管理,這就產(chǎn)生了以計(jì)算機(jī)為核心,以數(shù)據(jù)庫管理系統(tǒng)為開發(fā)環(huán)境的管理信息系統(tǒng)在大規(guī)模的事務(wù)處理和對工作流的管理等方面的應(yīng)用,特別是在銀行賬戶管理之中的應(yīng)用日益受到人們的關(guān)注。自中國加入WTO之后,我國信息產(chǎn)業(yè)發(fā)展迅速,手工管理方式在銀行賬戶管理等需要大量事務(wù)處理的應(yīng)用中已顯得越來越不適用,采用IT技術(shù)提高服務(wù)質(zhì)量和管理水平勢在必行[1],銀行必須提高自己的工作效率,迎接挑戰(zhàn)。1.2可行性分析可行性分析能使新系統(tǒng)達(dá)到以最小的開發(fā)成本取得最佳的經(jīng)濟(jì)效益,其目的也是根據(jù)開發(fā)管理信息系統(tǒng)的需求,通過初步調(diào)查和系統(tǒng)目標(biāo)分析,對要開發(fā)的銀行賬戶管理信息系統(tǒng)從技術(shù)上、經(jīng)濟(jì)上和管理上進(jìn)行是否可行的研究與分析,這既是保證資源的有效合理利用,也是避免在日常工作中的失誤而導(dǎo)致的種種浪費(fèi)現(xiàn)象。1.2.1技術(shù)可行性技術(shù)方面,本系統(tǒng)采用Java語言進(jìn)行設(shè)計(jì),Java也是我們比較熟悉的語言。由于是初次設(shè)計(jì)銀行管理系統(tǒng),在技術(shù)和知識層面上的欠缺,導(dǎo)致在制作過程中遇到許多的困難,編程和設(shè)計(jì)的時(shí)候,明顯感覺到知識積累的不夠,并且很多知識點(diǎn)已經(jīng)淡忘。通過與老師的溝通,在老師的細(xì)心指導(dǎo)下,以與我們的一起努力,翻閱了大量的資料,多操作多實(shí)踐,本系統(tǒng)才得以比較順利的開發(fā)出來。因?yàn)閷?shí)踐和技術(shù)方面的不足,使得我們設(shè)計(jì)的程序依然存在很多不完善的地方,我們會在以后的開發(fā)中繼續(xù)學(xué)習(xí)鉆研,使本系統(tǒng)能更完善更適用。1.2.2經(jīng)濟(jì)可行性本系統(tǒng)相對較小也比較簡單,不需要投入大量資金,同時(shí)又存在著實(shí)用性,能改善使用方法在財(cái)力和人力上的過度消耗。因此這個(gè)新系統(tǒng)一經(jīng)使用便可收到很好的成效,做到合理節(jié)約和合理利用資源。銀行方面在使用新系統(tǒng)時(shí)只需要花一定資金購買一部分計(jì)算機(jī)與軟件就能實(shí)現(xiàn)自動化,既提高了工作效率并且也減少了工作人員的工作量,這使銀行在處理業(yè)務(wù)方面得到很大的提升空間。1.2.3管理可行性使用管理方面的可行性,在沒有使用銀行管理系統(tǒng)前,采取的是人工方式,相對而言耗時(shí)大,效率低且造成一定的資源浪費(fèi)。通過設(shè)計(jì)銀行管理系統(tǒng),可以對銀行的一半業(yè)務(wù)進(jìn)行有序的管理,對于客戶的個(gè)人資料也不需要做大量繁瑣的等級工作,變的相對簡單容易操作且不用耗費(fèi)大量人力財(cái)力[2]。1.3設(shè)計(jì)意義第三產(chǎn)業(yè)在一個(gè)國家經(jīng)濟(jì)中所占的比例是經(jīng)濟(jì)結(jié)構(gòu)是否先進(jìn)成熟的重要標(biāo)準(zhǔn)之一。而金融業(yè)是第三產(chǎn)業(yè)中最為重要的產(chǎn)業(yè),是其他所有產(chǎn)業(yè)的力量后盾,為其他產(chǎn)業(yè)的正常運(yùn)營提供保障。銀行作為金融業(yè)的執(zhí)行機(jī)構(gòu),越來越龐大的儲蓄用戶數(shù)目和資金流通量對銀行賬戶管理的可靠性每天都在進(jìn)行苛刻的考驗(yàn)。所以銀行的經(jīng)營方式和服務(wù)手段需轉(zhuǎn)向電子化、網(wǎng)絡(luò)化、多元化、個(gè)性化的方向發(fā)展,同時(shí),銀行的電子化和現(xiàn)代化管理水平為銀行在市場運(yùn)作、金融創(chuàng)新、客戶服務(wù)以與量化管理上奠定了技術(shù)基礎(chǔ),這將會使得銀行獲得很大的競爭優(yōu)勢,不但有利于擴(kuò)大客戶群,穩(wěn)固業(yè)務(wù)基礎(chǔ),而且可以增加收益來源,完善業(yè)務(wù)結(jié)構(gòu),增強(qiáng)了抵御風(fēng)險(xiǎn)的能力。1.4設(shè)計(jì)目標(biāo)本論文的目的是使銀行賬戶管理清晰化、透明化,便與操作,易于管理。通過功能的模塊優(yōu)化組合實(shí)現(xiàn)不同的管理細(xì)節(jié),使管理過程實(shí)現(xiàn)最大程度的自動化與信息化,并能自動對人工操作環(huán)節(jié)進(jìn)行復(fù)查,使賬戶出錯(cuò)率降至最低。賬戶管理的最明顯特征是信息處理量比較大,所管理的業(yè)務(wù)流程也相應(yīng)繁多,因此本銀行賬戶管理系統(tǒng)的有效管理必須實(shí)現(xiàn)計(jì)算機(jī)化處理,真正意義使得系統(tǒng)能夠?qū)崿F(xiàn)管理的系統(tǒng)化、自動化、規(guī)化以與信息化和智能化等[3],從而達(dá)到提高賬戶管理效率的目的。第2章開發(fā)工具與運(yùn)行環(huán)境開發(fā)工具一般在軟件開發(fā)過程是一個(gè)必不可少的,其屬于一種被軟件開發(fā)工程師定性的認(rèn)為是為特定的軟件包、系統(tǒng)(或軟件)框架以與操作平臺等創(chuàng)建應(yīng)用性軟件的特殊軟件。在一個(gè)完善的系統(tǒng)的開發(fā)過程中,必要的開發(fā)工具將為整個(gè)開發(fā)的過程減少較多的成本和時(shí)間,提高了開發(fā)效率。同時(shí)每個(gè)系統(tǒng)的開發(fā)平臺不一樣,其所搭建的開發(fā)環(huán)境當(dāng)然也會有很大的差別。開發(fā)環(huán)境是基于硬件和宿至軟件的基礎(chǔ)上,為支持系統(tǒng)軟件和應(yīng)用軟件的工程化開發(fā)和維護(hù)而使用的一組軟件,簡稱SDE。它由軟件工具和環(huán)境集成機(jī)制構(gòu)成,前者用以支持軟件開發(fā)的相關(guān)過程、活動和任務(wù),后者為工具集成和軟件的開發(fā)、維護(hù)與管理提供統(tǒng)一的支持。本系統(tǒng)依據(jù)開發(fā)的實(shí)體需求,采用的開發(fā)工具有Eclipse、Mysql和NavicatforMysql。2.1開發(fā)工具2.1.1Java語言特性Java是Sun公司推出的新的一代面向?qū)ο蟪绦蛟O(shè)計(jì)語言,特別適合于Internet應(yīng)用程序開發(fā),它的平臺無關(guān)性致使它能夠風(fēng)靡全球,引起一片熱潮,用Java編程已經(jīng)成為技術(shù)人員的一種時(shí)尚[4]。Java是一種簡單的面象對象的分布式的解釋的健壯的安全的結(jié)構(gòu)中立的可移植的性能很優(yōu)異的多線程的動態(tài)的語言,Java的誕生是對傳統(tǒng)計(jì)算機(jī)模式的挑戰(zhàn),對計(jì)算機(jī)軟件開發(fā)和軟件產(chǎn)業(yè)都產(chǎn)生了深遠(yuǎn)的影響,對軟件開發(fā)帶來了新的革命,重視使用第三方構(gòu)件集成,利用平臺的基礎(chǔ)設(shè)施服務(wù),實(shí)現(xiàn)開發(fā)各個(gè)階段的重要技術(shù),重視開發(fā)團(tuán)隊(duì)的組織和文化理念,協(xié)作,創(chuàng)作,責(zé)任,誠信是人才的基本素質(zhì)??傊?,目前以看到了Java對信息時(shí)代的重要性,未來還會不斷發(fā)展,Java在應(yīng)用方面將會有更廣闊的前景。Java還提供了一個(gè)功能強(qiáng)大語言庫,幾乎沒有一點(diǎn)含混特征,比C++安全性好,與此同時(shí),Java去掉了多個(gè)C和C++功能和特征,如指針運(yùn)算結(jié)構(gòu)typedefs#define需要釋放存全局變量的定義,而在Java虛擬機(jī)中增加了垃圾回收機(jī)制[6],由系統(tǒng)自動釋放存,讓Java的語言功能很精煉。2.1.2EclipseEclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JavaDevelopmentKit,JDK)。雖然大多數(shù)用戶很樂于將Eclipse當(dāng)作Java集成開發(fā)環(huán)境(IDE)來使用,Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個(gè)組件主要針對希望擴(kuò)展Eclipse的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對于給Eclipse提供插件,以與給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。這種平等和一致性并不僅限于Java開發(fā)工具。盡管Eclipse是使用Java語言開發(fā)的,Eclipse框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ)。基于Eclipse的應(yīng)用程序的一個(gè)突出例子是IBM®Rational®SoftwareArchitect,它構(gòu)成了IBMJava開發(fā)工具系列的基礎(chǔ)[7]。2.1.3Mysql與NavicatforMysqlMysql是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MysqlAB公司。在2008年1月16號被Sun公司收購。而2009年,Sun又被Oracle收購。Mysql是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫。這樣就增加了速度并提高了靈活性。Mysql的SQL“結(jié)構(gòu)化查詢語言”。SQL[8]是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。Mysql軟件采用了GPL(GNU通用公共許可證)。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型為了降低總體擁有成本而選擇了Mysql作為數(shù)據(jù)庫[9]。Navicat是一套快速、可靠,在市場中也是一套價(jià)格相宜的數(shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理與降低系統(tǒng)管理成本而設(shè)。NavicatforMysql是Mysql的客戶端工具,同時(shí)也是一個(gè)強(qiáng)大的Mysql數(shù)據(jù)庫服務(wù)器管理和開發(fā)工具。它的設(shè)計(jì)符合數(shù)據(jù)庫管理員、開發(fā)人員與中小企業(yè)的需要。Navicat是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創(chuàng)建、組織、訪問并共用信息。2.2運(yùn)行環(huán)境軟件環(huán)境:JDK1.6,Windows2000以上的操作系統(tǒng);硬件環(huán)境:最低IntelPentiumII500MHz;安裝存(RAM):512MB(最好1GB以上)。第3章系統(tǒng)需求分析3.1功能模塊分析本論文介紹的銀行賬戶管理系統(tǒng)針對普通用戶的日常業(yè)務(wù)需求設(shè)置了用戶注冊、用戶登錄、用戶主菜單、用戶存款、用戶取款、用戶轉(zhuǎn)賬、用戶查詢余額、用戶設(shè)置密碼以與返回退出系統(tǒng)9大模塊,用戶需要嚴(yán)格依據(jù)系統(tǒng)規(guī)定的業(yè)務(wù)流程,并根據(jù)當(dāng)前的業(yè)務(wù)狀態(tài)選擇所要辦理的業(yè)務(wù),進(jìn)行實(shí)時(shí)操作,管理自己的財(cái)務(wù)賬戶,全自動化處理[8],簡單易用,方便快捷。3.1.1用戶注冊對于新客戶,需要辦理注冊手續(xù),才能進(jìn)入系統(tǒng)完成其他的業(yè)務(wù)辦理。用戶注冊需要用戶提供真實(shí)有效的用戶名、密碼、號、等相關(guān)信息,待數(shù)據(jù)校驗(yàn)無誤,提交完成,注冊才能成功,如表1所示。表1用戶注冊輸入處理操作1.用戶名2.密碼3.確認(rèn)密碼4.證件號5.電子信息校驗(yàn)1.?dāng)?shù)據(jù)不符合輸入要求,無法注冊,給出提示;2.信息校驗(yàn)無誤,確認(rèn)提交,注冊成功。3.1.2用戶登錄在此模塊中需要用戶輸入用戶名和密碼,再與數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行匹配,當(dāng)用戶名和密碼與數(shù)據(jù)庫中的對應(yīng)數(shù)據(jù)完全一致時(shí),方可進(jìn)入操作界面,否則用戶無法進(jìn)入業(yè)務(wù)界面選擇相應(yīng)的業(yè)務(wù)辦理,如表2所示。表2用戶登錄輸入處理操作1.用戶名2.密碼驗(yàn)證用戶名與密碼1.如果用戶名或者密碼不正確,給出提示;2.用戶名、密碼正確,進(jìn)入用戶主菜單界面。3.1.3用戶主菜單在用戶輸入信息,待校驗(yàn)完全正確方可登錄,之后即可進(jìn)入到主菜單模塊,在該模塊中羅列了用戶的所有業(yè)務(wù)(包括存款、取款、轉(zhuǎn)賬、查詢、修改密碼以與返回退出)供用戶選擇,用戶只需要選擇相應(yīng)的業(yè)務(wù),就可以選擇實(shí)現(xiàn)不同的系統(tǒng)功能,辦理相應(yīng)的業(yè)務(wù),如表3所示。表3用戶主菜單輸入處理操作1.存款2.取款3.轉(zhuǎn)賬4.查詢余額5.修改密碼6.返回用戶根據(jù)自己的需要,選擇相應(yīng)的業(yè)務(wù)根據(jù)用戶的選擇,進(jìn)入相應(yīng)的業(yè)務(wù)界面。3.1.4存款功能在用戶主菜單中,用戶選擇“存款”,即可進(jìn)入“存款”子模塊,該模塊需要用戶輸入存款金額,且要求輸入的金額必須大于0并且為100的倍數(shù),否則用戶無法進(jìn)行存款,如表4所示。表4存款功能輸入處理操作存款金額金額的校驗(yàn)1.金額不符要求,提示出錯(cuò)信息;2.金額符合要求,提示存款成功。3.1.5取款功能在用戶主菜單中,用戶選擇“取款”,即可進(jìn)入“取款”子模塊,該模塊需要用戶輸入取款金額,而且要求輸入的金額必須大于0并且為100的倍數(shù),還有取款金額不能大于該用戶卡中的余額,否則用戶無法進(jìn)行取款業(yè)務(wù),如表5所示。表5取款功能輸入處理操作取款金額金額校驗(yàn)1.金額不符要求,提示出錯(cuò)信息;2.金額符合要求,提示存款成功。3.1.6轉(zhuǎn)賬功能在用戶主菜單中,用戶選擇“轉(zhuǎn)賬”,即可進(jìn)入“轉(zhuǎn)賬”子模塊,該模塊需要用戶輸入轉(zhuǎn)入賬戶的ID,以與轉(zhuǎn)入金額。在數(shù)據(jù)庫中需要對轉(zhuǎn)入賬號的ID進(jìn)行檢索,如果數(shù)據(jù)庫中存在轉(zhuǎn)入賬戶的ID,才能進(jìn)行下一步的轉(zhuǎn)賬操作,同時(shí)也要對輸入的金額進(jìn)行校驗(yàn),當(dāng)兩者均符合要求時(shí),方可轉(zhuǎn)賬成功,否則給出相關(guān)錯(cuò)誤提示,轉(zhuǎn)賬失敗,如表6所示。表6轉(zhuǎn)賬功能輸入處理操作1.轉(zhuǎn)入賬號2.轉(zhuǎn)入金額ID檢索金額校驗(yàn)1.與數(shù)據(jù)庫匹配,根據(jù)ID是否存在,提示相關(guān)信息;2.金額不符要求,錯(cuò)誤提示;3.符合要求,提示轉(zhuǎn)賬成功。3.1.7查詢功能在用戶主菜單中,用戶選擇“查詢”,即可進(jìn)入“查詢余額”子模塊,該模塊不需要用戶輸入任何信息,進(jìn)入該模塊后即可看到當(dāng)前登錄用戶的賬戶中的余額,如表7所示。輸入處理操作無信息確認(rèn)退出系統(tǒng)確認(rèn)信息后返回到用戶主菜單;或者退出系統(tǒng)。表7查詢功能3.1.8修改密碼在用戶主菜單中,用戶選擇“修改密碼”,即可進(jìn)入“修改密碼”子模塊,該模塊需要用戶輸入相關(guān)注冊信息(如用戶名、密碼、確認(rèn)密碼、證件號、電子等),并對輸入的信息進(jìn)行條件約束,當(dāng)所有條件均滿足時(shí)方可完成注冊,否則給出相關(guān)錯(cuò)誤提示,注冊失敗,如表8所示。輸入處理操作1.用戶名2.密碼3.確認(rèn)密碼4.證件號5.電子信息校驗(yàn)信息校驗(yàn)無誤,即可完成注冊,同時(shí)跳轉(zhuǎn)到登錄模塊,否則提示相關(guān)錯(cuò)誤信息。表8修改密碼3.1.9返回功能在用戶主菜單中,選擇“返回”,即可返回到登錄模塊或者直接退出系統(tǒng),如表9所示。輸入處理操作無無返回到登錄模塊,或者直接退出系統(tǒng)。表9返回功能3.2業(yè)務(wù)流程分析本銀行賬戶管理系統(tǒng)的設(shè)置是單用戶多操作的模式,之前如果沒有賬戶的用戶必須先注冊開戶,之后用戶需要用自己的真實(shí)登錄,確認(rèn)無誤后方可登錄到主菜單界面,實(shí)現(xiàn)相關(guān)業(yè)務(wù)操作。主要業(yè)務(wù)流程如下圖1所示。圖1系統(tǒng)業(yè)務(wù)流程圖3.3數(shù)據(jù)流程分析3.3.1系統(tǒng)關(guān)聯(lián)圖本銀行賬戶管理系統(tǒng)直接面向?qū)ο笫怯脩?,而用戶只需要?shí)施對本系統(tǒng)的操作,然后由系統(tǒng)處理數(shù)據(jù),并且將相關(guān)數(shù)據(jù)信息反饋給用戶,如圖2所示。圖2系統(tǒng)關(guān)聯(lián)圖3.3.2頂層圖在系統(tǒng)的后臺管理中,必然會涉與到大量數(shù)據(jù)的存儲與讀取,那么在數(shù)據(jù)存儲之前就需要對用戶提供的數(shù)據(jù)進(jìn)行分析校驗(yàn),只有在符合規(guī)的情況下,將處理后的數(shù)據(jù)反饋給用戶,如圖3所示。圖3系統(tǒng)頂層圖3.3.3數(shù)據(jù)流圖數(shù)據(jù)流圖能夠簡潔的表達(dá)出功能需求和數(shù)據(jù)需求與其聯(lián)系,如圖4所示,用戶在注冊或者登陸時(shí),經(jīng)過后臺的檢驗(yàn)處理,在數(shù)據(jù)正確無誤的情況下,才能辦理如存款、取款、轉(zhuǎn)賬等相關(guān)業(yè)務(wù),并且同步更新數(shù)據(jù)庫中數(shù)據(jù)信息。圖4數(shù)據(jù)詳細(xì)流程圖第4章數(shù)據(jù)庫分析4.1數(shù)據(jù)庫需求分析數(shù)據(jù)庫需求分析是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)中必不可少的,而且也是要做的第一個(gè)階段,這個(gè)階段主要是要收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以與數(shù)據(jù)處理的流程等等,組成一份詳盡的數(shù)據(jù)字典[10],為以后進(jìn)一步設(shè)計(jì)打下基礎(chǔ)。首先,在仔細(xì)調(diào)查銀行賬戶管理過程的基礎(chǔ)上,同時(shí)根據(jù)日常用戶的基本的業(yè)務(wù)需求,我們可以得到本系統(tǒng)所要完成實(shí)現(xiàn)的用戶的業(yè)務(wù)模塊,如圖5所示。圖5系統(tǒng)功能模塊圖通過對銀行賬戶管理的容和數(shù)據(jù)流程的分析,可對用戶詳細(xì)的屬性設(shè)置描述如下(見表10—表15)。數(shù)據(jù)項(xiàng)名稱:id數(shù)據(jù)項(xiàng)名稱:name數(shù)據(jù)項(xiàng)類型:整型數(shù)據(jù)項(xiàng)類型:文本數(shù)據(jù)項(xiàng)長度:25數(shù)據(jù)項(xiàng)長度:0可否為空:不可可否為空:不可是否主鍵:是是否主鍵:否簡述:銀行賬戶的序號簡述:進(jìn)入系統(tǒng)的用戶名表10用戶id屬性表11用戶name屬性表12用戶password屬性表13用戶personid屬性數(shù)據(jù)項(xiàng)名稱:password數(shù)據(jù)項(xiàng)名稱:personid數(shù)據(jù)項(xiàng)類型:字符型數(shù)據(jù)項(xiàng)類型:字符型數(shù)據(jù)項(xiàng)長度:25數(shù)據(jù)項(xiàng)長度:25可否為空:不可可否為空:不可是否主鍵:否是否主鍵:否簡述:用戶的登錄密碼簡述:用戶的有效證件號表14用戶email屬性表15用戶balance屬性數(shù)據(jù)項(xiàng)名稱:email數(shù)據(jù)項(xiàng)名稱:balance數(shù)據(jù)項(xiàng)類型:字符型數(shù)據(jù)項(xiàng)類型:浮點(diǎn)型數(shù)據(jù)項(xiàng)長度:25數(shù)據(jù)項(xiàng)長度:25可否為空:可以可否為空:不可是否主鍵:否是否主鍵:否簡述:用戶的電子簡述:用戶的賬戶余額4.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)這一設(shè)計(jì)階段是在需求分析的基礎(chǔ)上,設(shè)計(jì)出能滿足用戶需求的各種實(shí)體,以與它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。在本銀行賬戶管理系統(tǒng)中,對于用戶的基礎(chǔ)數(shù)據(jù)有、密碼、證件號以與等,同時(shí),已注冊用戶要有自己的賬戶ID,還得為用戶提供準(zhǔn)確的余額信息。圖6用戶實(shí)體圖4.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)在數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)階段,需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為Mysql數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)[11]。在上面的實(shí)體結(jié)構(gòu)的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格。銀行賬戶管理系統(tǒng)數(shù)據(jù)庫中用戶的基本信息表的設(shè)計(jì)如下表16所示。表16用戶基本信息表字段名數(shù)據(jù)類型長度可否為空說明idint25否主鍵nametext無否passwordvarchar25否personidvarchar25否emailvarchar25可以balancedouble25否4.4數(shù)據(jù)庫結(jié)構(gòu)的實(shí)現(xiàn)在需求分析、概念結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上得到數(shù)據(jù)庫的邏輯結(jié)構(gòu)之后,就可以在Mysql數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)該邏輯結(jié)構(gòu)[12]。實(shí)現(xiàn)數(shù)據(jù)庫的邏輯結(jié)構(gòu)的方式是借助NavicatforMysql來管理實(shí)現(xiàn),詳細(xì)步驟如下所述。1.打開NavicatforMysql,選擇“Connection”出現(xiàn)“NewConnection”界面,在ConnectionName標(biāo)簽中填入項(xiàng)目名,如“mybams”,其他選擇默認(rèn),見圖7,之后可以看到如圖8所示的界面。圖7新建Connection圖8Connection列表2.選中“mybams”,鼠標(biāo)右擊選擇“NewDatabase”,在DatabaseName標(biāo)簽中填入數(shù)據(jù)庫名,Characterset選擇“utf--UTF-8Unicode”,其他選擇默認(rèn),如圖9。圖9新建DataBase3.雙擊展開“accounts”數(shù)據(jù)庫,選中“Tables”,鼠標(biāo)右擊選中“NewTable”,進(jìn)入填寫數(shù)據(jù)項(xiàng)信息的界面,選中下面的“AutoIncrement”(表示id為自動增加),填寫完信息后保存,提示填入表名(如allaccount)即可,如圖10所示。圖10新建Table4.這樣我們在Mysql數(shù)據(jù)庫系統(tǒng)中就創(chuàng)建了一個(gè)accounts數(shù)據(jù)庫,并在該數(shù)據(jù)庫下創(chuàng)建一個(gè)“allaccount”數(shù)據(jù)表,在后期的操作中只要連接到該數(shù)據(jù)庫,就可以直接對數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行操作。第5章系統(tǒng)設(shè)計(jì)5.1用戶實(shí)體本系統(tǒng)面向?qū)ο笫怯脩?,需要對用戶的一些特性給予描述,對于之后的操縱進(jìn)行方便有效的管理。1.用戶實(shí)體的代碼描述如下:publicclassAccount{privatelongid;//賬戶序號privateStringpassword;//賬戶密碼privateStringname;//真實(shí)privateStringpersonId;//privateStringemail;//客戶的電子privatedoublebalance;//賬戶余額publicAccount(Stringpassword,Stringname,StringpersonId,Stringemail,doublebalance){this.password=password;=name;this.personId=personId;this.email=email;this.balance=balance; }}2.定義一個(gè)接口,所涉與到的方法只定義不實(shí)現(xiàn),代碼如下:publicinterfaceAccountDao{ publicAccountaddAccount(Accounta); //添加賬戶 publicAccountdeleteAccount(Accounta);//刪除賬戶 publicAccountupdateAccount(Accounta);//更新賬戶 publicAccountfindAccountById(longid);//根據(jù)id查找賬戶 publicAccountlogin(Stringname,Stringpassword); //用戶登錄}3.為用戶編寫其他相關(guān)的類(如BankDB),在該類中有用戶開戶(注冊)、存款、取款等方法,用戶會通過調(diào)用BankDB中的方法來操作自己的賬戶。4.定義一個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)接口中的所有方法,并且通過訪問數(shù)據(jù)庫更新賬戶。5.2界面代碼設(shè)計(jì)1.啟動系統(tǒng)即可彈出用戶登錄界面。代碼如下:publicclassBAMSClientextendsjavax.swing.JFrame{ privateCardLayoutc; privatestaticBAMSClientclient=newBAMSClient();//創(chuàng)建BAMSClient單例 privateBAMSClient(){ initComponents(); } staticBAMSClientgetInstance(){ returnclient; } privatevoidinitComponents(){ c=newCardLayout(); setLayout(c);//在此JFrame中添加打開系統(tǒng)的第一個(gè)界面; this.add("user_login",newUserLoginPanel(c)); } publicstaticvoidmain(Stringargs[]){ java.awt.EventQueue.invokeLater(newRunnable(){ publicvoidrun(){ BAMSClient.getInstance().setVisible(true); } }); }}2.其他界面的跳轉(zhuǎn)。以實(shí)現(xiàn)“登錄”按鈕為例,代碼如下:publicclassUserLoginPanelextendsjavax.swing.JPanel{ privateAccountacc=null; privateCardLayoutlayout; publicUserLoginPanel(CardLayoutc){ layout=c; initComponents(); }//為utten按鈕添加事件監(jiān)聽;utton1.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(java.awt.event.ActionEventevt){ uttonActionPerformed(evt); }});protectedvoiduttonActionPerformed(ActionEventevt){//utten1為“登錄”按鈕;登錄成功后跳轉(zhuǎn)到用戶所有業(yè)務(wù)界面;if(evt.getSource()==utton1){BAMSClient.getInstance().getContentPane().add("user_allbusiness",newUserBusinessPanel(layout,acc)); layout.show(BAMSClient.getInstance().getContentPane(),"user_allbusiness"); }}}3.在本系統(tǒng)中還有多個(gè)“取消”、“返回”和“退出”按鈕,其功能也都是直接進(jìn)行界面的跳轉(zhuǎn)。其實(shí)現(xiàn)代碼都是一樣的,格式如下://為按鈕添加事件監(jiān)聽;uttonX.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){ uttonActionPerformed(evt); }});//為按鈕重寫執(zhí)行的操作;PrivatevoiduttonActionPerformed(java.awt.event.ActionEventevt){ //返回或者取消的按鈕(后面的X或Y表示當(dāng)前按鈕的序號);if(evt.getSource()==uttonX){layout.show(BAMSClient.getInstance().getContentPane(),"目標(biāo)界面"); } //退出的按鈕;if(evt.getSource()==uttonY){ System.exit(0);}}5.3數(shù)據(jù)庫的連接在數(shù)據(jù)庫需求分析階段,我們已經(jīng)建立了一個(gè)accounts數(shù)據(jù)庫,那么現(xiàn)在需要做的是設(shè)計(jì)實(shí)現(xiàn)與數(shù)據(jù)庫的連接,以便于后期對數(shù)據(jù)庫的訪問。1.連接數(shù)據(jù)庫。importjava.sql.Connection;importjava.sql.DriverManager;publicclassJDBCUtil{publicstaticfinalStringurl="jdbc:Mysql://localhost:3306/accounts";publicstaticfinalStringuser="root";publicstaticfinalStringpassword="000000";privatestaticConnectionconn;//防止類對象的冗余和使用數(shù)據(jù)庫用大量的存在,建議使用單例模式;privatestaticJDBCUtiljdbcutil=newJDBCUtil();publicstaticJDBCUtilgetInstance(){returnjdbcutil; }privateJDBCUtil(){try{//加載Mysql數(shù)據(jù)庫驅(qū)動 Class.forName(".Mysql.jdbc.Driver");//根據(jù)注冊的驅(qū)動類來管理驅(qū)動,并獲得驅(qū)動類上的數(shù)據(jù)庫連接;conn=DriverManager.getConnection(url,user,password); }catch(Exceptione){ e.printStackTrace(); } }publicConnectiongetConnection(){returnconn; }}2.使用完成以后,再斷開數(shù)據(jù)庫連接。importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;publicclassBase{publicConnectiongetConnection(){returnJDBCUtil.getInstance().getConnection(); }publicvoidcloseConnection(Connectionconn,PreparedStatementps,Statementsm,ResultSetrs,ResultSetMetaDatarsmd)throwsSQLException{if(conn!=null){conn.close();}if(ps!=null){ps.close(); }if(sm!=null){sm.close();}if(rs!=null){rs.close();} }}5.4功能模塊的實(shí)現(xiàn)限于篇幅所限,此部分代碼將于附錄部分給予詳細(xì)介紹。第6章系統(tǒng)測試打開系統(tǒng),在系統(tǒng)登錄界面(圖11),點(diǎn)擊“退出”按鈕即可直接退出關(guān)閉系統(tǒng);點(diǎn)擊“注冊”按鈕,進(jìn)入用戶注冊界面(圖12),在該界面中,用戶需輸入用戶名(必須為漢字)、密碼(6位數(shù)字)、確認(rèn)密碼(6位數(shù)字,并與上次密碼一樣)、證件號(8位)、(可不填),以上信息輸入符合要求后點(diǎn)擊“確定”,將提示注冊成功(圖13),并返回到用戶登錄界面,反之如果上面的信息只要有一項(xiàng)不符合規(guī)定,將提示注冊失?。▓D14),并自動清空當(dāng)前所填的信息。圖11登陸界面圖12注冊界面圖13注冊成功提示圖14注冊失敗提示在注冊界面中的“重置”按鈕可以清空所有當(dāng)前所填的信息,“返回”按鈕則可以返回到用戶登錄界面。點(diǎn)擊“登錄”按鈕,如果信息校驗(yàn)正確,進(jìn)入用戶主菜單界面,否則登錄失敗,提示錯(cuò)誤信息(圖15)。圖15登陸失敗提示在用戶主菜單界面(圖16),有“存款”、“取款”、“轉(zhuǎn)賬”、“查詢”、“修改密碼”和“返回”六個(gè)基本業(yè)務(wù),用戶可以選擇相應(yīng)的業(yè)務(wù)進(jìn)行辦理。圖16業(yè)務(wù)界面在用戶主菜單界面選擇“存款”選項(xiàng),即可進(jìn)入用戶存款業(yè)務(wù)界面(圖17),用戶只需要輸入存款金額(必須大于0且為100的整數(shù)),然后點(diǎn)擊“確認(rèn)”就可存款成功,并提示存款信息(圖18),之后清空用戶之前輸入的數(shù)據(jù)。在存款界面中還有“刪除”和“返回”兩個(gè)按鈕,“刪除”是實(shí)現(xiàn)逆序依次刪除輸入的數(shù)據(jù),“取消”則返回到主菜單界面。圖17存款界面圖18存款成功提示圖19取款成功提示在用戶主菜單界面選擇“取款”選項(xiàng),即可進(jìn)入用戶取款業(yè)務(wù)界面(圖20),用戶只需要輸入取款金額(必須大于0且為100的整數(shù)),然后點(diǎn)擊“確認(rèn)”就可取款成功,并提示取款信息(圖19),之后清空用戶之前輸入的數(shù)據(jù)。圖20取款界面在用戶主菜單界面選擇“查詢”選項(xiàng),進(jìn)入查詢余額的界面(圖21),該界面可以顯示出當(dāng)前登錄用戶的賬戶余額?!按_定”返回到主菜單界面,“退出”是關(guān)閉系統(tǒng)。圖21查詢余額界面用戶主菜單界面選擇“轉(zhuǎn)賬”選項(xiàng),進(jìn)入轉(zhuǎn)賬界面(圖22),該界面需要用戶輸入收款人的ID,點(diǎn)擊“檢索”可對此ID進(jìn)行檢索,如果ID不存在,提示用戶不存在信息(圖23),無法轉(zhuǎn)賬;如果該ID的用戶存在,提示收款人的信息(圖24),確定之后方可輸入轉(zhuǎn)賬金額,點(diǎn)擊“確定”轉(zhuǎn)賬成功,并提示轉(zhuǎn)賬信息(圖25)。圖22轉(zhuǎn)賬界面圖23信息檢索錯(cuò)誤提示圖24信息檢索成功提示圖25轉(zhuǎn)賬成功提示在用戶主菜單界面選擇“修改密碼”選項(xiàng),進(jìn)入修改密碼界面(圖26),用戶需要輸入當(dāng)前密碼、新密碼和確認(rèn)密碼,而且新密碼與確認(rèn)密碼必須一樣,方可成功修改,之后提示修改成功信息(圖27),否則無法修改,提示錯(cuò)誤信息(圖28),并清空當(dāng)前已填記錄。圖26修改密碼界面圖27修改密碼成功提示圖28修改密碼失敗提示第7章總結(jié)與展望7.1總結(jié)在該系統(tǒng)的整個(gè)開發(fā)流程中,使我基本熟悉了一個(gè)管理系統(tǒng)的設(shè)計(jì)步驟以與在軟件開發(fā)方面的設(shè)計(jì)思路,每個(gè)階段的分工任務(wù)都需要明確。同時(shí),在這段時(shí)間中,我對面向?qū)ο缶幊痰乃枷胗辛酥匦碌恼J(rèn)識,通過本系統(tǒng)的設(shè)計(jì),不僅加深了以前所學(xué)的理論知識,也學(xué)到了很多新的知識,提高自己全面思考和實(shí)踐能力。7.2展望目前,本銀行賬戶管理系統(tǒng)能夠滿足用戶的基本需求要求,可對開戶、存款、取款、轉(zhuǎn)賬、查詢余額還有修改密碼進(jìn)行操作,實(shí)現(xiàn)賬戶管理的基本功能。在設(shè)計(jì)銀行賬戶管理系統(tǒng)時(shí),多次用到繼承,很多功能實(shí)現(xiàn)的代碼是相似的,對數(shù)據(jù)的操作是使用Mysql數(shù)據(jù)庫來實(shí)現(xiàn)的,所有對數(shù)據(jù)的操作都能在數(shù)據(jù)庫中表現(xiàn)出來。在開發(fā)實(shí)現(xiàn)時(shí)遇到很多料想不到的問題,在這里很感指導(dǎo)老師的指導(dǎo)和幫助,讓我能夠與時(shí)改正錯(cuò)誤,最終完成本系統(tǒng)所要展示的所有功能。但是由于時(shí)間的關(guān)系,本系統(tǒng)中還是存在一些不足,功能比較單一,希望在以后會把功能完善,開發(fā)出一個(gè)真正符合實(shí)際意義的銀行賬戶管理系統(tǒng)。同時(shí),為了鞏固和提高自身的能力,復(fù)習(xí)和常做項(xiàng)目是必不可少的,同時(shí)要虛心學(xué)習(xí),不驕傲自滿,認(rèn)真聽取他人的建議。參考文獻(xiàn)[1]刑思.賬戶管理系統(tǒng)的整合意義[J].金融電子化,2005,8(03):2-6.[2](美)斯蒂芬·哈格,梅芙·卡明斯,埃米·菲利普斯,譯者:嚴(yán)建援.信息時(shí)代的管理信息系統(tǒng)[M].:機(jī)械工業(yè),2007.[3]海藩.軟件工程導(dǎo)論[M].:清華大學(xué),1998.[4]CSDN社區(qū)電子雜志.J2SE5.0新特性精解[J].JAVA,2005,5(01):8-13.[5]衛(wèi)琴.Java面向?qū)ο缶幊蘙M].:電子工業(yè),2012.[6]BruceEckel(美).Java編程思想(第4版)[M].:機(jī)械工業(yè),2007.[7]云濤,龔玲.Eclipse精要與高級開發(fā)技術(shù)[M].:電子工業(yè),2005.[8]PaulWilton,JohnColly著,敖富江譯.SQL入門經(jīng)典[M].:清華大學(xué),2006.[9]RickF.vanderLans(荷).Mysql開發(fā)者SQL權(quán)威指南[M].:機(jī)械工業(yè),2008.[10]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論[M].:高等教育,2000.[11]立科.數(shù)據(jù)庫開發(fā)技術(shù)與工程實(shí)踐[M].:人民郵電,2003.[12]朱揚(yáng)勇.數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與開發(fā)[M].:清華大學(xué),2007.08.致經(jīng)過幾個(gè)月的辛苦努力與不斷鉆研,在***老師的指導(dǎo)與幫助下,銀行賬戶管理系統(tǒng)終于制作完畢。開發(fā)過程中遇到了很多的問題,***老師都會給予悉心的幫助和關(guān)懷,為我提供了良好的條件。這次畢業(yè)設(shè)計(jì)能夠按時(shí)、按要求完成,與王老師的指導(dǎo)與幫助是分不開的。與此同時(shí),我要感大學(xué)四年來向我授過課的老師,他們讓我學(xué)到了很多寶貴的知識。還要感我的同學(xué)和朋友,在我畢業(yè)設(shè)計(jì)的過程中,他們給了我很多無私的幫助和支持,使我得到了許多有益的啟發(fā)。最后,我要再次向?qū)?**老師、學(xué)校的老師和親愛的同學(xué)表示深深的意!***年月號附錄附錄A源程序主要代碼/***定義一個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)接口中的所有方法,并且通過訪問數(shù)據(jù)庫更新賬戶*/publicclassAccountDaoImpextendsBaseimplementsAccountDao{privateAccountacc;privateConnectionconn;privatePreparedStatementps;privateResultSetrs;publicAccountDaoImp(){conn=getConnection();}//注冊用戶publicAccountaddAccount(Accounta){Stringsql="insertintoallaccount(password,name,personid,email,balance)values(?,?,?,?,?)";try{ps=conn.prepareStatement(sql);ps.setString(1,a.getPassword());ps.setString(2,a.getName());ps.setString(3,a.getPassword());ps.setString(4,a.getEmail());ps.setDouble(5,a.getBalance());intstatus=ps.executeUpdate();if(status==1){returna;}}catch(SQLExceptione){e.printStackTrace();}returnnull;}//根據(jù)id查找用戶publicAccountfindAccountById(longid){acc=null;Stringsql="select*fromallaccountwhereid=?";try{ps=conn.prepareStatement(sql);ps.setLong(1,id);rs=ps.executeQuery();while(rs.next()){intdb_id=rs.getInt("id");Stringdb_password=rs.getString("password");Stringdb_name=rs.getString("name");Stringdb_personid=rs.getString("personid");Stringdb_email=rs.getString("email");doubledb_balance=rs.getDouble("balance");acc=newAccount(db_password,db_name,db_personid,db_email,db_balance);acc.setId(db_id);}}catch(Exceptione){}returnacc;}//用戶登錄publicAccountlogin(Stringname,Stringpassword){acc=null;Stringsql="select*fromallaccountwherename=?andpassword=?";try{ps=conn.prepareStatement(sql);ps.setString(1,name);ps.setString(2,password);rs=ps.executeQuery();while(rs.next()){intdb_id=rs.getInt("id");Stringdb_password=rs.getString("password");Stringdb_name=rs.getString("name");Stringdb_personid=rs.getString("personid");Stringdb_email=rs.getString("email");doubledb_balance=rs.getDouble("balance");acc=newAccount(db_password,db_name,db_personid,db_email,db_balance);acc.setId(db_id);}}catch(Exceptione){e.printStackTrace();}returnacc;}//更新用戶數(shù)據(jù)publicAccountupdateAccount(Accounta){Stringsql="updateallaccountsetpassword=?,name=?,personid=?,email=?,balance=?whereid=?";try{ps=conn.prepareStatement(sql);ps.setString(1,a.getPassword());ps.setString(2,a.getName());ps.setString(3,a.getPersonId());ps.setString(4,a.getEmail());ps.setDouble(5,a.getBalance());ps.setLong(6,a.getId());intstatus=ps.executeUpdate();if(status==1){returna;}}catch(SQLExceptione){e.printStackTrace();}returnnull;}}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/***為用戶編寫其他相關(guān)類,在該類中有用戶注冊、存款、取款等方法,用戶會通*過調(diào)用BankDB中的方法來操作自己的賬戶。*/publicclassBankDB{privateAccountDaoImpadi=null;privateAccountacc=null; //臨時(shí)定義一個(gè)account對象privatedoublebalance;privatestaticBankDBb=newBankDB();//定義一個(gè)類的私有的對象并實(shí)例化//將bank的無參數(shù)的構(gòu)造器私有化privateBankDB(){ adi=newAccountDaoImp();}//提供一個(gè)類的公開的外間獲取本類的對象的方法publicstaticBankDBgetInstance(){ returnb;}//用戶開戶(注冊),返回新創(chuàng)建的Account對象publicAccountregister(Stringpassword,Stringensurepassword, Stringname,Stringpersonid,Stringemail){ if( name.matches("^[\u4e00-\u9fa5]+$") &&personid.matches("^[1-9][0-9]{6}[0-9X]$") &&password.matches("^[0-9]{5}[0-9]$") &&password.equalsIgnoreCase(ensurepassword) &&email.matches("\\w+\\w+\\.\\w+")||email.equals("")){ acc=newAccount(password,name,personid,email,0.0d); JOptionPane.showMessageDialog(null,"恭喜您注冊成功!"); acc=adi.addAccount(acc); returnacc; }else{ returnnull; }}//用戶登錄,返回Account對象publicAccountlogin(Stringusername,Stringpassword){ acc=adi.login(username,password); returnacc;}//用戶存款(deposit),返回修改過的Account對象publicdoubledeposit(Accountacc,doublecash){ acc.setBalance(acc.getBalance()+cash); adi.updateAccount(acc); returnbalance;}//用戶轉(zhuǎn)賬;publicStringTransfer(Accountacc,longtransfer_id,doublecash){ Accounttransfer=findAccountById(transfer_id); if(transfer!=null){ if(transfer.getName().equals(acc.getName())){ return"不能對自己轉(zhuǎn)賬!"; } elseif(acc.getBalance()>=cash){transfer.setBalance(transfer.getBalance()+cash);//更新轉(zhuǎn)入賬戶 adi.updateAccount(transfer); acc.setBalance(acc.getBalance()-cash);//更新轉(zhuǎn)出賬戶 adi.updateAccount(acc); return"轉(zhuǎn)賬成功"; }else{ return"您的余額不足!"; } }else{ return"轉(zhuǎn)入賬戶不存在"; }}//用戶取款(withdraw),返回修改過的Account對象publicAccountwithDraw(Accountacc,doublecash){ doublemoney=acc.getBalance(); if(money>=cash){ acc.setBalance(money-cash); adi.updateAccount(acc); JOptionPane.showMessageDialog(null,"您已成功取款:"+cash+"元"); }else{ JOptionPane.showMessageDialog(null,"余額不足"); } returnnull;}//根據(jù)用戶id查找用戶;publicAccountfindAccountById(longid){ acc=adi.findAccountById(id); returnacc;}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/***注冊界面。用戶填寫注冊信息后,通過BankDB中的register方法對這些信息校驗(yàn)*驗(yàn),待校驗(yàn)通過后,再用AccountDaoImp中的addAccount方法在數(shù)據(jù)庫中進(jìn)行*添加新用戶的注冊信息,成功后跳轉(zhuǎn)到登錄界面,供用戶登錄。*/publicclassUserRegisterPanelextendsjavax.swing.JPanel{privateCardLayoutlayout;publicUserRegisterPanel(){ initComponents(); }publicUserRegisterPanel(CardLayoutc){ layout=c; initComponents(); }privatevoiduttonActionPerformed(java.awt.event.ActionEventevt){if(evt.getSource()==utton3){ jTextField1.setText(""); jPasswordField1.setText(""); jPasswordField2.setText(""); jTextField2.setText(""); jTextField3.setText(""); layout.show(BAMSClient.getInstance().getContentPane(),"user_login"); }elseif(evt.getSource()==utton1){ Stringreg_name=jTextField1.getText().replace("","").trim(); Stringreg_pass=newString(jPasswordField1.getText().replace("","")).trim(); Stringreg_enpass=newString(jPasswordField2.getText().replace("","")).trim(); Stringreg_personid=jTextField2.getText().replace("","").trim(); Stringreg_email=jTextField3.getText().replace("","").trim(); BankDBb=BankDB.getInstance();if(b.register(reg_pass,reg_enpass,reg_name,reg_personid, reg_email)!=null){ layout.show(BAMSClient.getInstance().getContentPane(), "user_login"); }else{ JOptionPane.showMessageDialog(null,"注冊失?。?); } jTextField1.setText(""); jPasswordField1.setText(""); jPasswordField2.setText(""); jTextField2.setText(""); jTextField3.setText(""); jCheckBox1.setSelected(false); }elseif(evt.getSource()==utton2){ jTextField1.setText(""); jPasswordField1.setText(""); jPasswordField2.setText(""); jTextField2.setText(""); jTextField3.setText(""); jCheckBox1.setSelected(false); } }}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/***登錄界面。用戶輸入登錄信息后,通過BankDB中的login方法再調(diào)用AccountDao*Imp中的login方法,該方法將與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行匹配,如果數(shù)據(jù)庫中有當(dāng)前*填入的信息,則可以登錄成功,進(jìn)入用戶業(yè)務(wù)操作界面,否則登錄失敗。*/publicclassUserLoginPanelextendsjavax.swing.JPanel{ privateAccountacc=null; privateCardLayoutlayout; publicUserLoginPanel(CardLayoutc){ layout=c; initComponents(); } publicAccountgetAcc(){ returnacc; } publicvoidsetAcc(Accountacc){ this.acc=acc; } protectedvoiduttonActionPerformed(ActionEventevt){ //登陸按鈕; if(evt.getSource()==utton1){ Stringreg_name=jTextField1.getText().replace("","").trim(); Stringreg_pass=newString(jPasswordField1.getPassword()).replace("","").trim(); BankDBb=BankDB.getInstance(); acc=b.login(reg_name,reg_pass); if(acc!=null){ BAMSClient.getInstance().getContentPane().add("user_allbusiness", newUserBusinessPanel(layout,acc)); layout.show(BAMSClient.getInstance().getContentPane(), "user_allbusiness"); jTextField1.setText(""); jPasswordField1.setText(""); }else{ JOptionPane.showMessageDialog(null,"請?zhí)钊胝_的信息!"); } } //注冊按鈕; if(evt.getSource()==utton2){ BAMSClient.getInstance().getContentPane().add("user_register", newUserRegisterPanel(layout)); layout.show(BAMSClient.getInstance().getContentPane(), "us

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論