摘要:家庭是一個小小的管理單元, 它的管理已經(jīng)成為世人注目的焦點。隨著時代的發(fā)展, 家庭的格局發(fā)生重大的變化, 家庭財務(wù)的收入和支出是一個零碎而又與切身利益相關(guān)的問題。每一個家庭好比一個小型企業(yè),有著收入、支出及凈利,大部分家庭會用腦、用手記錄這些煩瑣的數(shù)據(jù),因此很多家庭都需要一個智能的管家來協(xié)助他們管理家庭財務(wù)。如何實現(xiàn)方便化和標(biāo)準(zhǔn)化的管理來提高家庭經(jīng)營效益, 就成為一個新的議題。家庭財務(wù)管理信息系統(tǒng)是在迫切需要詳細(xì)了解自家財務(wù)狀況的情況下著手開發(fā)的,它可以有效地記錄和管理家庭的收支情況、合理規(guī)劃和支配家庭資金,并可以通過統(tǒng)計分析來獲得家庭人員在一段時期內(nèi)的消費和收入信息,完全替代手記、腦記的煩瑣,利于調(diào)節(jié)家庭財政狀況,給家庭財務(wù)管理帶來了極大的方便,是家庭理財?shù)暮脦褪?。本系統(tǒng)后臺數(shù)據(jù)庫使用SQL Server2000,前臺開發(fā)工具使用JAVA Swing技術(shù),為單機版數(shù)據(jù)庫管理信息系統(tǒng)。通過對該系統(tǒng)的開發(fā),更加了解管理信息系統(tǒng)的需求、設(shè)計和實現(xiàn)的完整過程,從而實現(xiàn)本系統(tǒng)的特色和優(yōu)勢。
關(guān)鍵詞:家庭財務(wù)管理;收入;支出;Java
中圖分類號:TP315文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)28-0037-05
Design and Realization of Family's Financial Management System
SUN Gen-qin1, WU Jun-ping2
(1.Gannan Normal University, Ganzhou 341000, China; 2. Gannan Normal University, Ganzhou 341000, China)
Abstract: Family is the small unit in society and its management have attracted more and more people's attention. With the development of society, the pattern of family have changed a lot. The incoming and spending is trival but important topic in family. Most families will record all these trival datas by writing and memorying. However, many of them can't have a clear understanding of the family financial status. Therefore, we need an intelligent financial helper to help us managing our money. How to improve family's financial profits have become a new issue. Taking the above reasons into account, we developed Family financial manage-ment system. It can record and manage family's spending situation. It also can acquire information about the incoming and consumption through statistics. By virtue of sparing the effort of writing, it brings many convenience to people. This system uses SQL Server2000 database and JAVA Swing technology. In other words, it belongs to SCM database management system. Through the develop-ment of this system, we have a better understanding of the demands analysis, design and realization.
Key words: Family Financial Management; incoming;spending;Java
1 引言
國家統(tǒng)計局2008年1月24日發(fā)布的統(tǒng)計數(shù)據(jù)顯示,截至2007年末,我國居民儲蓄存款余額為172534億元,比上年末增加10967億元,特別是像上海、深圳等發(fā)達(dá)城市,居民的可支配收入正在逐步達(dá)到中等發(fā)達(dá)國家水平,許多居民除了購房、購車外還有大量的金融資產(chǎn),如何分配、管理金融資產(chǎn)是居民最大的需求。大多數(shù)個人對金融方面的需求從儲蓄、保管金融資產(chǎn)向金融資產(chǎn)的保值、增值轉(zhuǎn)變。有些人盲目投資于股市而導(dǎo)致大量損失,還有許多人把大部分資產(chǎn)存在銀行做定期儲蓄,這些人都不知如何合理分配其金融資產(chǎn)。如何安排自己富余的現(xiàn)金,如何籌集自己所需的資金,成為了一個現(xiàn)實的問題,這就要求能夠提供更好的家庭理財服務(wù)。
家庭財務(wù)管理系統(tǒng)是每一個家庭的管理者管理家庭財務(wù)不可缺少的管理信息系統(tǒng),它的內(nèi)容對于家庭的管理者來說是至關(guān)重要的,所以家庭財務(wù)管理信息系統(tǒng)應(yīng)該能夠為每一個家庭的管理者提供充足的信息和快捷的統(tǒng)計手段,大大方便了家庭的管理者合理理財。
隨著計算機科學(xué)技術(shù)日漸成熟,網(wǎng)上銀行的迅速發(fā)展,其強大的功能已為人們深刻認(rèn)識,并已進入人類社會的各個領(lǐng)域,發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一部分,使用計算機對家庭財務(wù)進行管理具有手工管理所無法比擬的優(yōu)點,如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長和成本低等,這些優(yōu)點能夠極大地提高家庭財務(wù)管理的效率。因此,開發(fā)這樣一款管理軟件是很有必要的事情,也是將計算機應(yīng)用于現(xiàn)實管理一次很有意義的實踐活動。
2 系統(tǒng)設(shè)計目標(biāo)
隨著現(xiàn)代家庭財務(wù)管理觀念進一步提高,管理財務(wù)的手段也變得更加豐富。生活水平和文化水平的提高,家庭購買電腦的能力和應(yīng)用電腦的能力也開始提高,人們應(yīng)用電腦進行家庭財務(wù)管理的觀念也在增強,因此,開發(fā)一款通用型家庭財務(wù)軟件已經(jīng)成為社會需求。本系統(tǒng)開發(fā)的是一款家庭通用型財務(wù)管理軟件,系統(tǒng)目標(biāo)是把適合家庭化的常用財務(wù)管理手段及家庭日常收支管理實現(xiàn)計算機化管理,使家庭及家庭成員的收支活動更好地進行記錄并加以統(tǒng)計分析,也使家庭理財變得方便、快捷、安全、全面。
本系統(tǒng)是典型的管理信息系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和前臺應(yīng)用程序開發(fā)兩個方面。對于前者要求建立起資源的“一致性和完整性”,對于后者則要求應(yīng)用程序具有“功能完備、使用方便、易于擴展”等特點。
根據(jù)家庭財務(wù)管理系統(tǒng)的日常工作流程與內(nèi)容,本系統(tǒng)所實現(xiàn)的功能如下:
1) 賬戶管理功能:建立新賬戶、賬戶瀏覽和刪除帳戶等功能。
2) 收支管理功能:收入明細(xì)記賬、消費支出記賬、收入類型管理和支出類型管理等功能。
3) 債權(quán)債務(wù)管理功能:管理銀行存款賬戶和債權(quán)債務(wù)賬戶。
4) 報表圖表管理功能:日常收支統(tǒng)計、現(xiàn)金流量圖、家庭賬戶統(tǒng)計、銀行存款統(tǒng)計和債權(quán)債務(wù)統(tǒng)計等功能。
5) 系統(tǒng)設(shè)置:用戶管理、修改密碼、退出系統(tǒng)和皮膚設(shè)置等功能。
6) 數(shù)據(jù)維護:備份數(shù)據(jù)庫和還原數(shù)據(jù)庫功能。
7) 常用工具:記事本、計算器、通訊錄和個稅計算器等功能。
3 系統(tǒng)需求分析
3.1 系統(tǒng)業(yè)務(wù)概述
家庭財務(wù)的中心內(nèi)容是賬務(wù)管理。人們幾乎每一天都會經(jīng)過許多次貨幣活動。其中包括了買入賣出實物、娛樂消費、起居飲食消費、發(fā)放工資和收繳保費等。如果能把各類不同的活動進行分類,建立不同的賬戶,分別對活動進行管理,那么無論現(xiàn)在還是將來,你的賬務(wù)就會清楚明白了??梢越⑷缦沦~戶:現(xiàn)金賬戶、支票賬戶、存款賬戶、外匯賬戶、實物賬戶、保險賬戶和借貸賬戶,建立好賬戶后就可對這些賬戶進行操作。上面是賬戶的分類,可由實際情況來選擇不同的賬戶。每天,我們對自己賬務(wù)的操作有如下幾類:添加新的數(shù)據(jù)項,比如今天我賣出了多少歐元,生活中,我們就要對自己還有多少歐元,今天所得的利潤進行統(tǒng)計?,F(xiàn)在我們把這些工作放到程序里去實現(xiàn),就是這樣的操作:某賬戶今天是添加還是減少,比如對歐元的操作就是減少,如果與這個操作相關(guān)的賬戶是現(xiàn)金,然后根據(jù)貨幣兌換率提供的值計算現(xiàn)金賬戶今天該錄入的數(shù)值;再如變賣所有古董的收藏,再存入銀行,在軟件的實現(xiàn)就為把古董的變賣值轉(zhuǎn)入存款賬戶;日常生活中,當(dāng)我們要對一周來,外匯交易的情況進行了解,就非常困難,而觀察外匯一個月里的利率走勢就更加是問題。若在程序中實現(xiàn),只要把它存放到一個數(shù)據(jù)表里就可以了。歸根結(jié)底,賬戶的操作一般如下:新添、刪除、增加、減少、查找、轉(zhuǎn)賬和統(tǒng)計,對重要的數(shù)據(jù)還可以打印和生成圖表、報表。因此賬戶管理還需要一個統(tǒng)計分析的過程,可定義這樣一個過程:分析數(shù)據(jù)、生成報表和圖表。比如日常收支統(tǒng)計可建立日常收支圖表,以數(shù)據(jù)表、柱形圖和圓餅圖的方式對日常收支狀況加以統(tǒng)計,統(tǒng)計可按家庭成員、賬戶名稱、收支類型和時間段分類統(tǒng)計,也可綜合統(tǒng)計,以報表或圖表的形式統(tǒng)計并可打印輸出,用以存檔。系統(tǒng)業(yè)務(wù)框架圖如圖1所示。
3.2 系統(tǒng)需求分析
3.2.1 系統(tǒng)問題描述
家庭財務(wù)管理主要由日常記賬管理和應(yīng)用各種理財手段進行理財實現(xiàn)家庭資金的最大增值。記賬按范圍和使用方式可分為現(xiàn)金記賬、定期存款記賬、活期記賬、外匯交易記賬、實物資產(chǎn)記賬、債權(quán)債務(wù)記賬和保險記賬。它們分別對應(yīng)于現(xiàn)金賬戶、定期存款賬戶、活期賬戶、外匯交易賬戶、實物資產(chǎn)賬戶、債權(quán)債務(wù)賬戶和保險賬戶?,F(xiàn)金賬戶可為不同家庭成員建立自己的賬戶,也可一人建立幾個賬戶,以便把自己的現(xiàn)金按類歸劃,按用途有效的進行消費計劃和統(tǒng)計?;钇谫~戶對應(yīng)于各家庭成員的銀行活期賬戶;外匯交易賬戶對應(yīng)所開的外匯交易賬戶,外匯記賬可以對近期的外匯活動詳細(xì)信息進行查詢和瀏覽,并對盈利情況統(tǒng)計,外匯賬戶和一資金轉(zhuǎn)賬賬戶相連,可以進入日常收支統(tǒng)計數(shù)據(jù)中;實物賬戶主要為各家庭成員對家庭財產(chǎn)的增加和減少活動進行跟蹤和記錄,這樣隨時可以對家庭的財產(chǎn)擁有狀況進行瀏覽和查詢,方便家庭財產(chǎn)的添置和管理。
3.2.2 系統(tǒng)功能需求
3.2.2.1 賬本管理功能
整個系統(tǒng)相當(dāng)于一個賬本,按用途和目的可在賬本上建立不同的賬戶。
建立新賬戶功能:建立新賬戶可為不同的家庭成員建立不同類型的賬戶,賬戶按類型和用途分為現(xiàn)金賬戶、定期存款賬戶、活期賬戶、外匯交易賬戶、實物資產(chǎn)賬戶,債權(quán)債務(wù)賬戶和保險賬戶?,F(xiàn)金賬戶為不同成員或一成員的不同現(xiàn)金用途分別建立,記錄日常收支,方便掌握現(xiàn)金的使用狀況和流向;活期賬戶用于記錄在不同銀行建立的活期賬戶;定期存款賬戶用于記錄在不同銀行建立的定期賬戶;外匯交易賬戶為用戶開設(shè)的外匯賬戶建立;實物資產(chǎn)賬戶可按不同成員或不同類目建立,用于家庭資產(chǎn)流動的記錄;債權(quán)債務(wù)賬戶為現(xiàn)金的借入借出進行記錄;保險賬戶記錄不同的保險項目,以便對不同種的保險項目分別管理,分別記錄每一項保險的變化信息。
賬戶瀏覽選擇功能:對系統(tǒng)的所有賬戶進行瀏覽,或按不同類別瀏覽,查看賬戶余額,貨幣類型??商砑淤~戶,刪除賬戶,和查看賬戶詳細(xì)信息,并在記賬時選擇進行記賬的賬戶名稱。
3.2.2.2 記賬管理功能
收支記賬:對現(xiàn)金賬戶、活期賬戶、信用卡賬戶的日常收支活動進行記錄,對每天的消費及時入賬,便于對家庭收支或個人收支的查詢和統(tǒng)計。它記錄了收支活動的日期,收支類型,活動說明,收入金額,支出金額,余額,及家庭成員名稱。
外匯交易記賬:對一特定外匯賬戶的外匯活動進行記錄,它記錄了每次交易的交易日期、賣出幣種、買入幣種、賣出金額、買入金額、兌換率、轉(zhuǎn)賬賬戶和簡要說明信息。通過外匯交易的轉(zhuǎn)賬賬戶,可自動將外匯交易的資金流動加入對應(yīng)賬戶的收支記賬記錄上,作為一次收支活動記入。
實物資產(chǎn)記賬:對一特定實物資產(chǎn)賬戶進行物品的增加、減少進行記錄,它記錄了物品種類、物品名稱、物品數(shù)量、單件成本和總成本等信息。選擇付賬賬戶,可作為一類收支活動記入對應(yīng)收支賬戶。
定期存款記賬:可在定期存款賬戶上,添加定期存單、刪除存單,它記錄了存入日期、存單名稱、存單類型、存入金額、到期金額、是否銷戶、幣種、余額和說明信息。
債權(quán)債務(wù)記賬:對一特定債權(quán)債務(wù)賬戶的借入借出進行跟蹤記賬,它記錄了每次借入借出活動的日期、借入金額、借出金額及說明信息。債權(quán)債務(wù)活動將作為一項收入支出活動自動轉(zhuǎn)入對應(yīng)資金賬戶的收支記錄上。
保險實物記賬:對每一項保險項目的變動信息及時登記。
收支分類:收支分類主要為各種收支活動按一種統(tǒng)一的標(biāo)準(zhǔn)進行分類,便于對各類收支進行分類統(tǒng)計。用戶可以用收支分類表自行添加新的收支類型、刪除不需要的或模糊的類目,并可查詢和瀏覽系統(tǒng)中所有類目信息。收支類型為各種記賬活動提供選擇。
3.2.2.3 收支記賬管理功能
共享記賬管理功能中的收支記賬功能,分出這一塊主要是為了更好地對日常收支進行記賬管理,其中收支計劃日歷,用來對未來的收入支出提前制定計劃。
3.2.2.4 報表和圖表功能
現(xiàn)金流量圖:現(xiàn)金賬戶跟日常收支最為密切,以柱形圖或圓餅圖的方式形象描繪出各現(xiàn)金賬戶的資產(chǎn)金額情況,用戶可以通過其及時掌握現(xiàn)金流向和日常的收支狀況。
銀行存款和債權(quán)債務(wù)統(tǒng)計:銀行存款賬戶是記錄銀行存款信息,以報表、柱形圖或圓餅圖的方式詳細(xì)統(tǒng)計出各銀行賬戶和各用戶的存款信息;債權(quán)債務(wù)賬戶記錄所有的借入借出狀況,可按借貸類型、用戶、借貸對象進行分類統(tǒng)計,以便總體上瀏覽家庭的債權(quán)債務(wù)信息。
日常收支統(tǒng)計:以柱形圖、折線圖或圓餅圖的方式對日常收支狀況加以統(tǒng)計,可按家庭成員、賬戶名稱、收支類型、時間段進行分類統(tǒng)計也可綜合統(tǒng)計。時間上可選擇按年、月及時間段進行收支統(tǒng)計。以報表圖表的形式輸出統(tǒng)計結(jié)果,并能打印輸出,用以文件存檔。支出分析數(shù)據(jù)流圖如圖2所示。
3.2.2.5 常用工具
包括記事本、通訊錄、計算器、個稅計算器等常用工具。記事本和計算器都是從操作系統(tǒng)中調(diào)用的;通訊錄可添加、刪除和瀏覽通訊信息,幫助家庭更好的管理家庭的通訊信息;個稅計算器是根據(jù)最新的個稅計算方法而設(shè)計,能準(zhǔn)確的計算出個人應(yīng)繳納稅和每月實發(fā)工資,界面友好、操作簡單。
3.2.2.6 其他功能
數(shù)據(jù)備份和還原功能:把系統(tǒng)以前的和當(dāng)前的記賬數(shù)據(jù)進行備份和還原,可將其保存到指定目錄下,增大數(shù)據(jù)的安全性。
用戶管理功能:管理員可添加或刪除 普通用戶,并設(shè)置初始密碼,
系統(tǒng)退出功能:關(guān)閉整個系統(tǒng),保存數(shù)據(jù),安全退出。
系統(tǒng)皮膚更換功能。
軟件版本實現(xiàn)軟件的相關(guān)信息。
3.3 系統(tǒng)可行性分析
3.3.1 經(jīng)濟和市場可行性分析
現(xiàn)在,人們的生活水平和文化素質(zhì)普遍提高,并且開始注重生活質(zhì)量。隨著市場經(jīng)濟的快速發(fā)展,觀念的不斷更新,個人理財意識普遍增強,特別是家庭理財意識得到很大發(fā)展。在意識上,一方面,人們對家庭和個人的各方面消費有進行統(tǒng)計和分析的愿望,以便更好地做好家庭收支計劃和家庭財務(wù)管理。另一方面,各種理財手段不斷豐富,如何把各種理財手段統(tǒng)一起來,并且能更加方便的操作成為要求。隨著精神和物質(zhì)生活的提高,人們購置和使用計算機的能力也在增強,人均計算機擁有量在快速提高。這些條件說明,人們有購買一款家庭財務(wù)管理軟件的需求,在一個可接受的價格范圍內(nèi),將購買這種軟件。綜上所述,開發(fā)一款通用型家庭財務(wù)管理軟件具有經(jīng)濟和市場可行性。
3.3.2 技術(shù)可行性分析
開發(fā)一款通用型家庭財務(wù)軟件,項目規(guī)模可以在中等偏下。技術(shù)上主要涉及界面設(shè)計和數(shù)據(jù)庫設(shè)計,在開發(fā)工具方面,可采用易移植性的JAVA技術(shù)。利用軟件工程原理,采用面向?qū)ο蟮木幊谭椒?,其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和前臺應(yīng)用程序開發(fā),實現(xiàn)家庭理財?shù)淖詣踊托畔⒒脩艨梢园凑諜?quán)限的不同讀取或修改相關(guān)數(shù)據(jù)。通過本系統(tǒng)可進行賬本管理、記賬管理、報表和圖表、系統(tǒng)設(shè)置、數(shù)據(jù)維護和常用工具等操作。原型系統(tǒng)將在Windows XP平臺上采用NetBeans 6.0進行開發(fā),數(shù)據(jù)庫采用SQL Server 2000。通過分析,本課題在技術(shù)上是可行的。
4 系統(tǒng)總體設(shè)計
Client/Server(C/S)是當(dāng)前數(shù)據(jù)庫應(yīng)用程序中極為流行的一種方式,尤其是網(wǎng)絡(luò)技術(shù)的充分發(fā)展后,當(dāng)前很多系統(tǒng)都采用這種方式進行構(gòu)造??蛻?服務(wù)器是在網(wǎng)絡(luò)基礎(chǔ)上,以數(shù)據(jù)庫管理為后援,以計算機為網(wǎng)上工作站的一種系統(tǒng)結(jié)構(gòu),該結(jié)構(gòu)的關(guān)鍵在把網(wǎng)絡(luò)環(huán)境上的數(shù)據(jù)庫存取和應(yīng)用程序一分為二??蛻?服務(wù)器是建立在LAN的基礎(chǔ)上,但它比以往的文件服務(wù)系統(tǒng)有了很大的改進。首先,它消除了不必要的網(wǎng)絡(luò)傳輸負(fù)擔(dān);其次,它使數(shù)據(jù)庫服務(wù)器的計算機被高度優(yōu)化,以適應(yīng)數(shù)據(jù)處理的需要。相比之下以往的宿主式計算機系統(tǒng)除了數(shù)據(jù)處理之外,還要承擔(dān)應(yīng)用的工作,從而降低了工作效率。另一方面,由于作為客戶的計算機如今主要承擔(dān)應(yīng)用方面的專門任務(wù),這就有可能使其高度優(yōu)化。由此可見,客戶/服務(wù)器體系在網(wǎng)絡(luò)連接上和設(shè)備上并沒有什么變化,只是改變軟件應(yīng)用系統(tǒng)的配置方法,從而有利于應(yīng)用系統(tǒng)資源的合理分配,明顯地改變了整個系統(tǒng)的運行性能,有效地增強了系統(tǒng)的可擴充性和可維護性。
客戶/服務(wù)器技術(shù)的基本原理就是把數(shù)據(jù)處理與應(yīng)用程序分開,分別交給數(shù)據(jù)庫(server)和工作站(client)執(zhí)行。數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)僅需一次性存貯后可以被很多不同的應(yīng)用軟件存取。數(shù)據(jù)庫服務(wù)器處理的僅僅是數(shù)據(jù)請求,并將所請求的數(shù)據(jù)(而非整個文件)傳送給應(yīng)用程序。因此,對數(shù)據(jù)庫服務(wù)器來說,它的功能主要是:維護數(shù)據(jù)的完整性和安全性,錯誤恢復(fù)以及改善用戶并發(fā)存取和修改數(shù)據(jù)。而客戶機就集中在用戶和應(yīng)用程序之間的交互性作業(yè)。與其它類型的系統(tǒng)比較,Client/Server方式主要有以下一些特點:
1) 具有更高的效率。
2) 具有更靈活的擴展性。
3) 工作站具有更大的獨立性。
4) 數(shù)據(jù)具有更高的安全性。
針對家庭財務(wù)管理的業(yè)務(wù)需求和數(shù)據(jù)處理的復(fù)雜程度,本系統(tǒng)采用三層體系結(jié)構(gòu),三層體系結(jié)構(gòu)圖如圖3所示。
瘦客戶端:采取上面的結(jié)構(gòu)我們將大部分的業(yè)務(wù)處理過程封裝到應(yīng)用層,在客戶端只要實現(xiàn)用戶的操作界面和一些簡單的業(yè)務(wù)邏輯,客戶端變得小巧、靈活,易于安裝、部署和維護。在本系統(tǒng)實際開發(fā)過程將使用Swing提供的大量控件和FineReport報表工具完成,主要是大量的數(shù)據(jù)錄入界面、查詢統(tǒng)計和報表生成。
應(yīng)用層:通過將業(yè)務(wù)邏輯封裝到此層,實現(xiàn)對業(yè)務(wù)規(guī)則的集中控制,以便業(yè)務(wù)邏輯修改,提高對外部環(huán)境的快速反應(yīng)能力。系統(tǒng)中采用JAVA類來實現(xiàn)對家庭財務(wù)管理業(yè)務(wù)的封裝,在客戶端通過調(diào)用類方法來獲取服務(wù)。
集中數(shù)據(jù)管理:通過數(shù)據(jù)管理層的集中管理,可以實現(xiàn)數(shù)據(jù)庫連接的高速緩存、復(fù)用、負(fù)載平衡,從而大大提高系統(tǒng)吞吐量和響應(yīng)時間。
5 系統(tǒng)的詳細(xì)設(shè)計
家庭財務(wù)管理信息系統(tǒng)是基于Swing技術(shù)的一款C/S類管理信息系統(tǒng)(MIS)。該系統(tǒng)實現(xiàn)了記錄和管理家庭的收支情況,合理規(guī)劃和支配家庭資金,并可以通過查詢統(tǒng)計來獲得家庭人員在一段時期內(nèi)的消費,收入信息,合理規(guī)劃和支配家庭資金,完全替代了手記腦記的煩瑣,利于調(diào)節(jié)家庭財政狀況。
5.1 用戶管理設(shè)計
用戶分三類,為超級管理員、普通管理員和普通用戶。只有管理員才可進入用戶管理窗口進行添加、刪除用戶、把普通用戶升級為普通管理員、把普通管理員降為普通用戶和恢復(fù)密碼等操作,普通用戶沒有此權(quán)限。刪除普通管理員必須先降級為普通用戶才可刪除。用戶忘記了密碼,可以選中該用戶數(shù)據(jù)行通過點擊恢復(fù)密碼按鈕將其恢復(fù)為初試密碼。
添加用戶的基本代碼如下:
Private void jButtonAddNewUserActionPerformed(java.awt.event.ActionEvent evt){
String name=this.jTextFieldUserName.getText().trim();
int nowColNum=jTableUser.getSelectedColumn();
int nowRowNum=jTableUser.getSelectedRow();
Connectioncon=1;
PreparedStatement pstmt=1;
//獲取表格當(dāng)前模型
DefaultTableModel myModel=((DefaultTableModel)jTableUser.getModel());
int rowNum=myModel.getRowCount();//獲取表格總行數(shù)
int ColNum=myModel.getColumnCount();//獲取表格總列數(shù)
if(rowNum>=0){
if(name.equals(\"\")){
JOptionPane.showMessageDialog(1, \"請輸入用戶名!\", \"提示\",
JOptionPane.ERROR_MESSAGE);
return;
}else if(name.length()>15){
JOptionPane.showMessageDialog(1, \"用戶名長度應(yīng)小于15!\", \"
提示\", JOptionPane.ERROR_MESSAGE);
return; }
else{
try{ con=DBConnection.getConnection();
pstmt=con.prepareStatement(\"insert admin (UserName,UserPassword)
values(?,?)\");
pstmt.setString(1,name);
pstmt.setString(2,\"123\");
pstmt.executeUpdate();
//JOptionPane.showMessageDialog(1, \"添加數(shù)據(jù)成功!\", \"提示\",
JOptionPane.INFORMATION_MESSAGE);
//創(chuàng)建一個用來存儲新添加行內(nèi)容的Vector
Vector addRow=new Vector();
addRow.add(name);
myModel.getDataVector().add(addRow);
myModel.fireTableStructureChanged();
jTextFieldUserName.setText(\"\");
pstmt.close();
con.close();}
catch(Exception e){
JOptionPane.showMessageDialog(1, \"操作失敗,請檢查是否重名!\", \"
提示\", JOptionPane.ERROR_MESSAGE);}}}}
5.2 賬戶管理設(shè)計
賬戶管理包括賬戶設(shè)置、資金轉(zhuǎn)賬和轉(zhuǎn)賬記錄。賬戶設(shè)置主要是添加新賬戶,每個賬戶包括賬戶名稱、賬號、余額、開戶人、賬戶密碼和說明。每個賬戶都有自己的6位數(shù)字密碼,刪除賬戶必須輸入正確密碼才可操作,賬戶安全性有很大的提高。
資金轉(zhuǎn)賬功能可方便不同賬戶之間的資金流通,輸轉(zhuǎn)出賬戶、轉(zhuǎn)入賬戶、轉(zhuǎn)賬時間、轉(zhuǎn)賬金額和轉(zhuǎn)出賬戶密碼即可對不同賬戶進行資金轉(zhuǎn)賬。
以下為修改賬戶核心代碼:
try{ con=DBConnection.getConnection();
Statement stat=con.createStatement();
ResultSet rs=stat.executeQuery(\"select * from zhangHu where
ZhangHuName='\"+ZHname+\"'\");
rs.next();
if((rs.getString(\"Password\")).equals(password))
{String updateSql=\"update zhangHu set
ZhangHuNumber='\"+ZHnumber+\"',ZhangHuAmount=\"+amount+\",KHR='\"+user+\"',Text='\"+text+\"' whereZhangHuName='\"+ZHname+\"'\";
pstmt=con.prepareStatement(updateSql);
pstmt.executeUpdate();
//JOptionPane.showMessageDialog(1, \"保存數(shù)據(jù)成功!\",
\"提示\", JOptionPane.INFORMATION_MESSAGE);
//把修改后的值替換到表格中原來的值
jTableZhangHu.setValueAt(ZHnumber.trim(),nowRowNum,1); jTableZhangHu.setValueAt(Float.valueOf(amount),nowRowNum,2);
jTableZhangHu.setValueAt(user.trim(),nowRowNum,3);
jTableZhangHu.setValueAt(text.trim(),nowRowNum,4);
CalcelMessage();//更新表格視圖
}else{
JOptionPane.showMessageDialog(1, \"密碼錯誤,不可修改!\", \"提示\", JOptionPane.ERROR_MESSAGE);
return;}
rs.close();
stat.close();
pstmt.close();
con.close();}
catch(Exception e){
JOptionPane.showMessageDialog(1, \"操作失敗!\", \"提示\",
JOptionPane.ERROR_MESSAGE);}
以下為資金轉(zhuǎn)賬功能核心代碼:
try{
Connection con=DBConnection.getConnection();
con.setAutoCommit(1);//事物,1為手動提交
Statement stat=con.createStatement();
ResultSet rs=stat.executeQuery(\"select * from zhangHu where
ZhangHuName='\"+outZhangHu+\"'\");
rs.next();
if((rs.getString(\"Password\")).equals(password))
{//如果密碼正確則進行轉(zhuǎn)賬
PreparedStatement pstmt=con.prepareStatement(\"insert into zhuanZhang (OutZhangHu,InZhangHu,ZhuanZhangTime,ZhuanZhangAmount,Text) values(?,?,?,?,?)\");
pstmt.setString(1,outZhangHu);
pstmt.setString(2,inZhangHu);
pstmt.setString(3,data);pstmt.setFloat(4,amount);pstmt.setString(5,text);pstmt.executeUpdate();// \"添加數(shù)據(jù)成功!//進行轉(zhuǎn)賬操作,把轉(zhuǎn)出賬戶金額添加到轉(zhuǎn)入帳戶中String outSql=\"update zhangHu set ZhangHuAmount=ZhangHuAmount-\"+amount+\" where ZhangHuName='\"+outZhangHu+\"'\";String inSql=\"update zhangHu set ZhangHuAmount=ZhangHuAmount+\"+amount+\" where ZhangHuName='\"+inZhangHu+\"'\";PreparedStatement outpstmt=con.prepareStatement(outSql);outpstmt.executeUpdate(); PreparedStatement inpstmt=con.prepareStatement(inSql);inpstmt.executeUpdate();con.commit();//提交事物JOptionPane.showMessageDialog(1, \"轉(zhuǎn)賬成功!\", \"提示\",
(下轉(zhuǎn)第93頁)