




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
題目:銀行個(gè)人賬戶(hù)信息管理系統(tǒng)銀行個(gè)人賬戶(hù)管理系統(tǒng)摘要 賬戶(hù)管理是現(xiàn)在每個(gè)銀行業(yè)務(wù)步驟中最關(guān)鍵一項(xiàng),在銀行各項(xiàng)業(yè)務(wù)步驟中起著承上啟下作用,可謂是銀行業(yè)務(wù)重中之重。 本文針對(duì)上述問(wèn)題,采取軟件工程開(kāi)發(fā)原理,依據(jù)軟件工程步驟過(guò)程規(guī)范,根據(jù)需求分析、概要設(shè)計(jì)、具體設(shè)計(jì)、程序編碼、測(cè)試、軟件應(yīng)用、軟件維護(hù)等過(guò)程開(kāi)發(fā)了一個(gè)銀行個(gè)人賬戶(hù)信息管理系統(tǒng)。采取Linux平臺(tái)作為開(kāi)發(fā)環(huán)境,QT、C++作為開(kāi)發(fā)工具,面向?qū)ο蠡O(shè)計(jì),關(guān)鍵設(shè)計(jì)了管理員登錄、新用戶(hù)開(kāi)戶(hù)、存取款、轉(zhuǎn)賬、查詢(xún)業(yè)務(wù),處理了銀行現(xiàn)在操作繁瑣步驟,方便快捷實(shí)現(xiàn)了銀行賬戶(hù)管理基礎(chǔ)任務(wù)。本設(shè)計(jì)設(shè)計(jì)銀行個(gè)人賬戶(hù)信息管理系統(tǒng),能使銀行工作人員輕松快捷完成對(duì)賬戶(hù)管理任務(wù),使銀行賬目管理工作系統(tǒng)化、快捷化、規(guī)范化、自動(dòng)化、高效化。關(guān)鍵詞:個(gè)人信息管理;QT;C++;面向?qū)ο?;PersonalbankaccountmanagementsystemABSTRACTAccountmanagementisoneofthemostimportantforeachbank'sbusinessprocesses,whichplaysaconnectingroleinthebank'svariousbusinessprocesses.Itcanbedescribedasthetopmostimportanttransactioninbanking.Fortheaboveproblems,inthispaper,adoptedthedevelopmentofsoftwareengineeringprinciples,basedonthesoftwareengineeringprocessspecificationprocess,inaccordancewiththeneedsanalysis,outlinedesign,detaileddesign,programcoding,testing,softwareapplications,andsoftwaremaintenanceprocess,wedevelopedapersonalbankaccountinformationmanagementsystems.UsedtheLinuxplatformasadevelopmentenvironment,andusedQT,C++asadevelopmenttool,object-orienteddesign,thispapermajordesignedoftheadministrator'slogin,newuseraccounts,withdrawals,transfers,businessinquiries,itsolvedthecumbersomeoperatingprocessofbanks,andachieveabasicbankaccountmanagementtasksconvenient.Thisdesigndesignedapersonalbankaccountinformationmanagementsystem,whichenablesthebankstafftocompletetheaccountmanagementtasksquicklyandeasily,sothemanagementofthebankaccountscanbecomesystematic,efficient,standardized,automatedandefficient.Keywords:PersonalInformationManagement(PIM);QT;C++;Object-oriented 目錄TOC\o"1-2"\h\z\u1本課題研究意義和目標(biāo) 11.1開(kāi)發(fā)背景 11.2中國(guó)外現(xiàn)實(shí)狀況 11.3自動(dòng)化管理銀行競(jìng)爭(zhēng)優(yōu)勢(shì)分析 22系統(tǒng)需求分析 32.1開(kāi)發(fā)設(shè)計(jì)思想 32.2可行性研究 32.3需求分析 42.4系統(tǒng)步驟圖設(shè)計(jì) 52.5用例描述 63設(shè)計(jì)過(guò)程及編碼 103.1 數(shù)據(jù)庫(kù)創(chuàng)建和使用 103.2建立Bank工程方法步驟 143.3添加QT設(shè)計(jì)界面類(lèi)設(shè)計(jì) 153.4管理員登陸設(shè)計(jì) 153.5主操控界面設(shè)計(jì) 173.6開(kāi)戶(hù)設(shè)計(jì) 183.7查詢(xún)?cè)O(shè)計(jì) 203.8存款設(shè)計(jì) 213.9取款設(shè)計(jì) 233.10轉(zhuǎn)賬設(shè)計(jì) 263.11修改密碼設(shè)計(jì) 284功效測(cè)試 304.1管理員登陸界面 304.2主操控界面 304.3開(kāi)戶(hù)界面 304.4查詢(xún)界面 314.5存款界面 324.6取款界面 334.7轉(zhuǎn)賬界面 344.8修改密碼界面 354.9判定和評(píng)定 365應(yīng)用和維護(hù) 376總結(jié) 38參考文件 39致謝 40附錄 411本課題研究意義和目標(biāo)1.1開(kāi)發(fā)背景伴隨社會(huì)經(jīng)濟(jì)發(fā)展,信息化程度不停深入,銀行傳統(tǒng)業(yè)務(wù)己愈來(lái)愈不能滿(mǎn)足銀行用戶(hù)需要。伴隨中國(guó)經(jīng)濟(jì)日益發(fā)展,中國(guó)銀行業(yè)將面臨愈加猛烈同行業(yè)競(jìng)爭(zhēng),怎樣提供更優(yōu)質(zhì)服務(wù),怎樣吸引更多用戶(hù),怎樣利用計(jì)算機(jī)技術(shù)加強(qiáng)銀行個(gè)人帳戶(hù)信息管理、進(jìn)行銀行業(yè)務(wù)再造,提升銀行工作效率和業(yè)務(wù)竟?fàn)幠芰κ菙[在各家銀行面前迫切需要處理問(wèn)題。伴隨銀行業(yè)務(wù)不停發(fā)展,業(yè)務(wù)種類(lèi)也是日益繁多,而各項(xiàng)業(yè)務(wù)處理互有差異,這就對(duì)銀行進(jìn)入電子化水平和對(duì)應(yīng)管理水平提出了要求。怎樣利用電子化手段構(gòu)建一個(gè)高效統(tǒng)一、通用靈活系統(tǒng)來(lái)管理多種多樣業(yè)務(wù),是每個(gè)商業(yè)銀行所要研究課題。支持決議系統(tǒng),需要在數(shù)據(jù)庫(kù)基礎(chǔ)上,進(jìn)行聯(lián)機(jī)分析處理,每次處理數(shù)據(jù)量大,響應(yīng)時(shí)間長(zhǎng)。尤其是銀行天天全部要處理大量開(kāi)戶(hù)、存取款、轉(zhuǎn)賬等業(yè)務(wù),而銀行人員現(xiàn)行應(yīng)用系統(tǒng)填寫(xiě)內(nèi)容較為復(fù)雜、步驟過(guò)于繁瑣,已經(jīng)是不能滿(mǎn)足用戶(hù)對(duì)于辦理業(yè)務(wù)時(shí)間上快捷性要求,做好存開(kāi)戶(hù)、存取款等是銀行工作關(guān)鍵步驟,然而要有效處理必需要有良好程序和數(shù)據(jù)管理系統(tǒng)來(lái)建立一個(gè)良好軟件系統(tǒng)來(lái)實(shí)現(xiàn)快速、有效、正確、安全處理銀行事物。銀行個(gè)人賬戶(hù)管理系統(tǒng)關(guān)鍵用于銀行儲(chǔ)蓄管理,它能夠幫助我們有效、正確、而且高效實(shí)現(xiàn)完成銀行柜臺(tái)業(yè)務(wù)。此系統(tǒng)操作方便效率、安全性高,只要擁有管理員賬號(hào)和密碼(也就是說(shuō)是銀行工作人員),就能夠?yàn)橛脩?hù)做開(kāi)戶(hù),開(kāi)戶(hù)以后就能夠方便為用戶(hù)辦理多種柜臺(tái)業(yè)務(wù)。1.2中國(guó)外現(xiàn)實(shí)狀況在信息化發(fā)展極為快速當(dāng)今社會(huì),金融經(jīng)濟(jì)日益趨向全球化,同行業(yè)競(jìng)爭(zhēng)變得愈加猛烈,國(guó)外銀行業(yè)掀起了一股比上世紀(jì)更為聲勢(shì)浩大信息化革命浪潮。國(guó)外銀行業(yè)信息化基礎(chǔ)設(shè)施框架已含有完善、電子銀行體系已走進(jìn)成熟階段,信息化建設(shè)正由業(yè)務(wù)層向管理決議層推進(jìn)。國(guó)際銀行業(yè)普遍存在著管理決議信息化、網(wǎng)點(diǎn)擴(kuò)張?zhí)摂M化、產(chǎn)品服務(wù)用戶(hù)化和非關(guān)鍵業(yè)務(wù)外包化等趨勢(shì)。在中國(guó),伴隨金融市場(chǎng)逐步開(kāi)放,銀行競(jìng)爭(zhēng)日趨猛烈。銀行領(lǐng)域競(jìng)爭(zhēng)將緊緊圍繞著用戶(hù),尤其是優(yōu)質(zhì)用戶(hù)這一稀缺資源進(jìn)行。不過(guò)在外資銀行涌入中國(guó)進(jìn)程中,我們很輕易地看到這個(gè)現(xiàn)象:外資銀行作為中國(guó)市場(chǎng)以后者,中國(guó)資源臨時(shí)是它們?nèi)蹴?xiàng),恰恰這首先正是中國(guó)銀行競(jìng)爭(zhēng)優(yōu)勢(shì)所在。然而,用戶(hù)資源經(jīng)營(yíng)管理確實(shí)中國(guó)銀行軟肋。中國(guó)多數(shù)銀行用戶(hù)關(guān)系管理還只是流于形式,這個(gè)問(wèn)題是相當(dāng)令人深思。利用用戶(hù)個(gè)人賬戶(hù)管理體系來(lái)進(jìn)行用戶(hù)關(guān)系管理正是應(yīng)對(duì)未來(lái)銀行用戶(hù)資源競(jìng)爭(zhēng)利器。用戶(hù)個(gè)人賬戶(hù)管理正是基于計(jì)算機(jī)技術(shù)和平臺(tái),經(jīng)過(guò)對(duì)銀行業(yè)務(wù)步驟重組來(lái)整適用戶(hù)信息資源,以更科學(xué)有效方法來(lái)管理用戶(hù)信息,在銀行內(nèi)部實(shí)現(xiàn)信息和資源共享,從而降低銀行營(yíng)運(yùn)成本,為用戶(hù)提供更經(jīng)濟(jì)、快捷、周到產(chǎn)品和服務(wù)來(lái)吸引用戶(hù),最終達(dá)成銀行價(jià)值最大化。1.3自動(dòng)化管理銀行競(jìng)爭(zhēng)優(yōu)勢(shì)分析因?yàn)樯鐣?huì)信息化不停深入發(fā)展和經(jīng)濟(jì)金融體制不停深入化,在知識(shí)經(jīng)濟(jì)和銀行電子化建設(shè)發(fā)展中,中國(guó)經(jīng)濟(jì)結(jié)構(gòu)也在不停地改變,社會(huì)對(duì)于金融服務(wù)需求日新月異,金融服務(wù)內(nèi)涵和外延變得愈加豐富。這就對(duì)于銀行管理提出了新要求。銀行管理日益趨向信息化、電子化、多元化。銀行電子化和現(xiàn)代化管理水平已經(jīng)成為銀行競(jìng)爭(zhēng)力關(guān)鍵組成要素,成為銀行市場(chǎng)運(yùn)作、金融創(chuàng)新、量化管理技術(shù)基礎(chǔ)。大致上來(lái)說(shuō),銀行賬戶(hù)管理系統(tǒng)化、自動(dòng)化和規(guī)范化,使銀行取得以下幾方面優(yōu)勢(shì):(1)差異化競(jìng)爭(zhēng)優(yōu)勢(shì);(2)低成本競(jìng)爭(zhēng)優(yōu)勢(shì);(3)目標(biāo)集聚性?xún)?yōu)勢(shì);(4)知識(shí)型優(yōu)勢(shì);(5)產(chǎn)業(yè)集聚型優(yōu)勢(shì)。2系統(tǒng)需求分析2.1開(kāi)發(fā)設(shè)計(jì)思想本系統(tǒng)開(kāi)發(fā)設(shè)計(jì)思想:系統(tǒng)應(yīng)該在銀行要求前提下,滿(mǎn)足銀行對(duì)于個(gè)人賬戶(hù)管理需求適應(yīng)銀行工作人員日常工作需要,并應(yīng)達(dá)成操作工程簡(jiǎn)便易行、安全可靠要求。依據(jù)系統(tǒng)設(shè)計(jì)目標(biāo)和關(guān)鍵功效和對(duì)開(kāi)發(fā)工具和環(huán)境選擇,經(jīng)過(guò)軟件工程設(shè)計(jì)方法,對(duì)系統(tǒng)可行性進(jìn)行分析,確定方案可行性。依據(jù)系統(tǒng)需求得到需求分析,在需求分析基礎(chǔ)上進(jìn)行設(shè)計(jì)編碼,完成后對(duì)系統(tǒng)進(jìn)行功效測(cè)試和應(yīng)用維護(hù)。系統(tǒng)采取模塊化程序設(shè)計(jì)方法,不僅能夠在系統(tǒng)設(shè)計(jì)時(shí)方便系統(tǒng)功效多種組合和修改,又能夠方便開(kāi)發(fā)人員以后對(duì)程序修改和和維護(hù)。系統(tǒng)要含有數(shù)據(jù)庫(kù)維護(hù)功效,即使方便用戶(hù)對(duì)數(shù)據(jù)增加修改等操作。2.2系統(tǒng)設(shè)計(jì)目標(biāo)和關(guān)鍵功效經(jīng)過(guò)銀行個(gè)人賬戶(hù)管理系統(tǒng),能夠使銀行對(duì)于個(gè)人賬戶(hù)管理實(shí)現(xiàn)系統(tǒng)化、自動(dòng)化、簡(jiǎn)便化,去除繁瑣信息錄入,從而方便快捷使銀行達(dá)成高效管理個(gè)人賬戶(hù)目標(biāo)。開(kāi)發(fā)關(guān)鍵任務(wù)是使工作人員能夠輕松方便快捷完成對(duì)個(gè)人賬戶(hù)管理任務(wù)。 設(shè)計(jì)銀行個(gè)人賬戶(hù)管理系統(tǒng)應(yīng)該含有最基礎(chǔ)賬戶(hù)管理功效,和對(duì)用戶(hù)信息改變統(tǒng)計(jì)功效,設(shè)計(jì)銀行個(gè)人賬戶(hù)信息管理系統(tǒng)需要完成關(guān)鍵功效是: 1、銀行工作人員即管理員登錄 2、管理員對(duì)用戶(hù)開(kāi)戶(hù)操作(包含用戶(hù)名、身份證、密碼填寫(xiě)) 3、對(duì)已經(jīng)有用戶(hù)(賬號(hào))查詢(xún)操作 4、對(duì)已經(jīng)有用戶(hù)(賬號(hào))存款操作 5、對(duì)已經(jīng)有用戶(hù)(賬號(hào))取款操作 6、對(duì)已經(jīng)有用戶(hù)(賬號(hào))修改密碼操作 7、對(duì)已經(jīng)有用戶(hù)(賬號(hào))之間轉(zhuǎn)賬操作2.2.3開(kāi)發(fā)工具和環(huán)境開(kāi)發(fā)工具:QT4.8.1、C++運(yùn)行環(huán)境:LINUX或UNIX2.2可行性研究可行性研究能使新系統(tǒng)達(dá)成以最小開(kāi)發(fā)成本取得最好經(jīng)濟(jì)效益。可行性研究目標(biāo),是依據(jù)開(kāi)發(fā)管理信息系統(tǒng)請(qǐng)求,經(jīng)過(guò)初步調(diào)查和系統(tǒng)目標(biāo)分析,對(duì)要開(kāi)發(fā)銀行個(gè)人帳戶(hù)管理信息系統(tǒng)從技術(shù)上、經(jīng)濟(jì)上、資源上和管理上進(jìn)行是否可行研究。這是一項(xiàng)確保資源合理使用、避免失誤和浪費(fèi)關(guān)鍵工作。因?yàn)閷?shí)現(xiàn)了現(xiàn)代化信息管理系統(tǒng)功效,這么就降低了人工消耗,也就是說(shuō)一臺(tái)機(jī)器替換了多個(gè)人工作,這么就能夠降低人員消耗上開(kāi)支。不僅如此,實(shí)現(xiàn)銀行系統(tǒng)管理能夠快速應(yīng)對(duì)多種業(yè)務(wù),在效率上也提升了速度,為發(fā)明更大價(jià)值提供了前提條件。系統(tǒng)對(duì)于計(jì)算機(jī)硬件、網(wǎng)絡(luò)和系統(tǒng)條件要求并不高,這么就方便了,銀行信息管理系統(tǒng)實(shí)施和普及應(yīng)用。對(duì)于管理和經(jīng)費(fèi)問(wèn)題上,全部是很透明和樂(lè)于讓人接收。系統(tǒng)實(shí)施運(yùn)行后,并不需要特定工作人員去管理,我們只需要一個(gè)管理員來(lái)管理一臺(tái)裝備。所以在管理經(jīng)費(fèi)上是不會(huì)有多大消耗。因?yàn)槭请娔X管理系統(tǒng),所以對(duì)于賬戶(hù)管理是相當(dāng)高。而銀行信息管理系統(tǒng)運(yùn)行過(guò)程不僅不違反銀行管理規(guī)章制度,還會(huì)有效地實(shí)現(xiàn)信息快速存取。因?yàn)椴粌H節(jié)省了銀行本身成本而且她管理效率也會(huì)提升了。2.3需求分析 結(jié)構(gòu)設(shè)計(jì)第一個(gè)階段就是需求分析,這個(gè)階段關(guān)鍵是為了搜集系統(tǒng)設(shè)計(jì)過(guò)程中所要用到基礎(chǔ)數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理步驟,從而組織成盡可能具體數(shù)據(jù),方便以后設(shè)計(jì)需要。管理員管理管理員管理存款取款轉(zhuǎn)賬修改密碼賬戶(hù)信息圖2-1數(shù)據(jù)流圖 經(jīng)過(guò)對(duì)銀行個(gè)人賬戶(hù)管理內(nèi)容及數(shù)據(jù)流分析,我們便能夠列出設(shè)計(jì)數(shù)據(jù)項(xiàng):開(kāi)戶(hù)信息表。包含:賬戶(hù)名、身份證、密碼、反復(fù)密碼。查詢(xún)信息表。包含:賬戶(hù)名、身份證、密碼、余額。存款信息表。包含:賬戶(hù)名、身份證、密碼、存款額。取款信息表。包含:賬戶(hù)名、身份證、密碼、取款額。轉(zhuǎn)賬信息表。包含:轉(zhuǎn)賬人、密碼、收款人、金額。修改密碼信息表。包含:賬戶(hù)名、身份證、密碼、新密碼、反復(fù)新密碼。2.4系統(tǒng)步驟圖設(shè)計(jì) 這一階段設(shè)計(jì)是基于需求分析上,經(jīng)過(guò)需求分析來(lái)設(shè)計(jì)出能夠滿(mǎn)足用戶(hù)需求多種實(shí)體和它們之間聯(lián)絡(luò),以方便下一步邏輯結(jié)構(gòu)設(shè)計(jì)。 依據(jù)系統(tǒng)設(shè)計(jì)要求系統(tǒng)步驟圖設(shè)計(jì)以下:YYes進(jìn)入主窗口退出賬戶(hù)名身份證密碼反復(fù)密碼賬戶(hù)名身份證密碼余額賬戶(hù)名身份證密碼存款額賬戶(hù)名身份證密碼取款額轉(zhuǎn)賬人轉(zhuǎn)出賬號(hào)密碼收款人轉(zhuǎn)入賬號(hào)金額賬戶(hù)名身份證密碼新密碼反復(fù)新密碼NO留在登陸界面開(kāi)戶(hù)查詢(xún)存款取款轉(zhuǎn)賬修改取消主窗口取消取消取消取消取消管理員登錄開(kāi)始用戶(hù)名密碼開(kāi)戶(hù)查詢(xún)存款取款轉(zhuǎn)賬修改密碼圖2-2系統(tǒng)步驟圖2.5用例描述2.5.1管理員登錄用例 管理員登錄用例表如表2-1表2-1管理員登錄用例表用例名稱(chēng)登錄用例描述描述了管理員怎樣登錄到系統(tǒng)中參與者管理員狀態(tài)審查經(jīng)過(guò)前置條件無(wú)后置條件假如用例成功,則管理員登錄到系統(tǒng)之。不然,系統(tǒng)狀態(tài)不變?;A(chǔ)操作步驟當(dāng)管理員想登錄到銀行信息系統(tǒng)中時(shí),用例開(kāi)啟。(1)系統(tǒng)提醒管理員輸入用戶(hù)名和密碼。(2)管理員輸入自己用戶(hù)名和密碼,提交。(3)系統(tǒng)驗(yàn)證輸入名字和密碼,管理員登錄系統(tǒng)成功??蛇x操作步驟假如輸入用戶(hù)名和(或)密碼無(wú)效,系統(tǒng)提醒錯(cuò)誤信息,用戶(hù)能夠重新輸入或中止該用例。2.5.2開(kāi)戶(hù)用例開(kāi)戶(hù)用例表如表2-2表2-2開(kāi)戶(hù)用例表用例名稱(chēng)開(kāi)戶(hù)用例描述本用例許可管理員經(jīng)過(guò)用戶(hù)提供信息給用戶(hù)開(kāi)戶(hù)參與者管理員狀態(tài)審查經(jīng)過(guò)前置條件在本用例開(kāi)始前,管理員必需登陸到系統(tǒng)中后置條件假如用例成功,則系統(tǒng)中會(huì)增加新建賬戶(hù)。不然,系統(tǒng)狀態(tài)不變?;A(chǔ)操作步驟當(dāng)用戶(hù)想在銀行開(kāi)戶(hù)時(shí),要向管理員提供賬戶(hù)名、身份證、密碼,用例開(kāi)啟。系統(tǒng)提醒管理員輸入需要要開(kāi)戶(hù)用戶(hù)賬戶(hù)名、身份證、密碼。管理員輸入新用戶(hù)賬戶(hù)名、身份證、密碼,提交。系統(tǒng)保留新賬戶(hù)信息。2.5.3存款用例 存款用例表如表2-3表2-3存款用例表用例名稱(chēng)存款用例描述本用例許可管理員借助用戶(hù)提供賬戶(hù)信息存款到帳戶(hù)中參與者管理員狀態(tài)審查經(jīng)過(guò)前置條件在本用例開(kāi)始前,管理員必需登陸到系統(tǒng)中后置條件假如用例成功,則用戶(hù)賬戶(hù)中存款金額發(fā)生改變。不然,系統(tǒng)狀態(tài)不變?;A(chǔ)操作步驟當(dāng)用戶(hù)想讓管理員存款到自己賬戶(hù)時(shí),要向管理員提供賬戶(hù)名、身份證、密碼和存款金額,用例開(kāi)啟。(1)系統(tǒng)提醒管理員輸入賬戶(hù)名、身份證、密碼和存款額。(2)管理員輸入相關(guān)信息后提交。(3)系統(tǒng)更新賬戶(hù)相關(guān)信息??蛇x操作步驟賬戶(hù)不存在或無(wú)效,顯示提醒信息,用戶(hù)能夠重新輸入或終止該用例。2.5.4取款用例取款用例表如表2-4表2-4取款用例表用例名稱(chēng)取款用例描述本用例許可管理員根據(jù)用戶(hù)要求從用戶(hù)帳戶(hù)中取款參與者管理員前置條件本用例開(kāi)始前,管理員必需登錄到系統(tǒng)中后置條件假如用例成功,則用戶(hù)賬戶(hù)中存款金額發(fā)生改變。不然,系統(tǒng)狀態(tài)不變。基礎(chǔ)操作步驟當(dāng)用戶(hù)想存錢(qián)到自己賬戶(hù)時(shí),要向管理員提供賬戶(hù)名、身份證、密碼、取款額,用例開(kāi)啟。系統(tǒng)提醒管理員輸入賬戶(hù)名、身份證、密碼和取款額。管理員輸入相關(guān)信息后提交,賬戶(hù)中存款金額是否足夠支付所取款項(xiàng)。更新賬戶(hù)相關(guān)信息??蛇x操作步驟賬戶(hù)中存款金額不足,顯示提醒信息,用戶(hù)能夠重新輸入金額或終止該用例。2.5.5查詢(xún)用例查詢(xún)用例表如表2-5表2-5查詢(xún)用例表用例名稱(chēng)查詢(xún)用例描述本用例許可管理員根據(jù)用戶(hù)要求從用戶(hù)帳戶(hù)中查詢(xún)余額參與者管理員前置條件本用例開(kāi)始前,管理員必需登錄到系統(tǒng)中后置條件系統(tǒng)狀態(tài)不變?;A(chǔ)操作步驟當(dāng)用戶(hù)想查詢(xún)到自己賬戶(hù)余額時(shí),要向管理員提供賬戶(hù)名、身份證、密碼,用例開(kāi)啟。(1)系統(tǒng)提醒管理員輸入賬戶(hù)名、身份證、密碼。(2)管理員輸入相關(guān)信息后提交。(3)顯示賬戶(hù)余額信息。2.5.6轉(zhuǎn)賬用例轉(zhuǎn)賬用例表如表2-6 表2-6轉(zhuǎn)賬用例表用例名稱(chēng)轉(zhuǎn)賬用例描述本用例許可管理員根據(jù)用戶(hù)要求將資金從一個(gè)賬戶(hù)轉(zhuǎn)到另一個(gè)賬戶(hù)。參與者管理員狀態(tài)審查經(jīng)過(guò)前置條件本用例開(kāi)始前,管理員必需登陸到系統(tǒng)中。后置條件假如用例成功,則用戶(hù)賬戶(hù)中存款金額發(fā)生改變。不然,系統(tǒng)狀態(tài)不變?;A(chǔ)操作步驟當(dāng)用戶(hù)要求轉(zhuǎn)帳時(shí),用例開(kāi)啟系統(tǒng)提醒管理員輸入轉(zhuǎn)賬人、密碼、收款人和所轉(zhuǎn)款項(xiàng)金額。管理員輸入相關(guān)信息后提交.系統(tǒng)確定賬戶(hù)中存款金額是否足夠支付所取款項(xiàng)。系統(tǒng)更新賬戶(hù)相關(guān)信息??蛇x操作步驟賬戶(hù)中存款金額不足,顯示提醒信息,用戶(hù)能夠重新輸入金額或終止該用例。2.5.7修改密碼用例修改密碼用例表如表2-7表2-7修改密碼用例表用例名稱(chēng)修改密碼用例描述本用例許可管理員根據(jù)用戶(hù)要求將原來(lái)密碼修改參與者管理員狀態(tài)審查經(jīng)過(guò)前置條件本用例開(kāi)始前,管理員必需登陸到系統(tǒng)中。后置條件假如用例成功,則用戶(hù)賬戶(hù)密碼發(fā)生改變。基礎(chǔ)操作步驟當(dāng)用戶(hù)要求修改密碼時(shí),用例開(kāi)啟(1)系統(tǒng)提醒管理員輸入賬戶(hù)名、身份證、密碼、新密碼、反復(fù)新密碼。(2)管理員輸入相關(guān)信息后提交.(3)系統(tǒng)更新賬戶(hù)相關(guān)信息。3設(shè)計(jì)過(guò)程及編碼 關(guān)鍵開(kāi)發(fā)設(shè)計(jì)思想:首先建立工程,利用QT將界面和類(lèi)頭文件、實(shí)現(xiàn)文件和界面文件完成,并編寫(xiě)代碼經(jīng)過(guò)ui界面得到輸入信息,將界面信息存入數(shù)據(jù)庫(kù)(或和數(shù)據(jù)庫(kù)數(shù)據(jù)匹配)以后,再合適添加代碼把不一樣界面文件經(jīng)過(guò)按鈕事件鏈接,從而能夠在不一樣界面之間跳轉(zhuǎn)[10]。 數(shù)據(jù)庫(kù)創(chuàng)建和使用數(shù)據(jù)庫(kù)創(chuàng)建[8]:終端狀態(tài)下,進(jìn)入mysql數(shù)據(jù)庫(kù),在mysql中創(chuàng)建數(shù)據(jù)庫(kù)表格。終端下輸入命令:Mysql–uroot–p123456回車(chē)回車(chē)后便進(jìn)入Mysql 建表語(yǔ)句以下:mysql>createdatabasetestdb;//建立數(shù)據(jù)庫(kù)mysql>usetestdb;//設(shè)定目前數(shù)據(jù)庫(kù)mysql>createtableadmin(adminidvarchar(30),admpasswdvarchar(30));//建立管理員信息數(shù)據(jù)庫(kù)表格mysql>insertintoadminvalues('abc','123');//添加數(shù)據(jù)mysql>createtableaccount(accountnamevarchar(30),accountNovarchar(30),accountpaswdvarchar(30),accountMoneydouble);//建立賬戶(hù)信息數(shù)據(jù)庫(kù)表格數(shù)據(jù)庫(kù)使用[9]: QSql
模塊提供了訪(fǎng)問(wèn)
SQL
數(shù)據(jù)庫(kù)接口,這些接口獨(dú)立于操作系統(tǒng),獨(dú)立于數(shù)據(jù)庫(kù)系統(tǒng)。Qt
中有很多支持這個(gè)接口類(lèi),這些類(lèi)型經(jīng)過(guò)
Qt
model/view
架構(gòu)將數(shù)據(jù)庫(kù)和用戶(hù)界面結(jié)合起來(lái)。數(shù)據(jù)庫(kù)連接由
QSqlDatabase
類(lèi)對(duì)象表示,Qt
經(jīng)過(guò)
driver
和不一樣數(shù)據(jù)庫(kù)通訊。 在進(jìn)行
SQL
查詢(xún)之前,需要和數(shù)據(jù)庫(kù)建立連接。通常,在程序?qū)嵤┣坝脩?hù)需要調(diào)用創(chuàng)建連接函數(shù)以建立和數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)設(shè)計(jì)思緒:數(shù)據(jù)庫(kù)使用分為四步:(1)取得界面信息(2)QsqlDatabase建立數(shù)據(jù)庫(kù)鏈接(3)QsqlQuery用于實(shí)施SQL語(yǔ)句(4)更新數(shù)據(jù)庫(kù)數(shù)據(jù)。本設(shè)計(jì)關(guān)鍵應(yīng)用到數(shù)據(jù)庫(kù)鏈接、查詢(xún)、插入和更新操作。數(shù)據(jù)庫(kù)設(shè)計(jì)以下:1.
建立數(shù)據(jù)庫(kù)連接在進(jìn)行SQL查詢(xún)之前,需要和數(shù)據(jù)庫(kù)建立連接。通常,在程序?qū)嵤┣坝脩?hù)需要調(diào)用創(chuàng)建連接函數(shù)以建立和數(shù)據(jù)庫(kù)連接。比如:首先要從界面得到輸入數(shù)據(jù)voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*連接數(shù)據(jù)庫(kù)得到管理員相關(guān)信息*/ AdminDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","", 3306,"root","123456");//它第一個(gè)參數(shù)指明了訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)driver;接下來(lái),分別設(shè)置數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)名,當(dāng)?shù)卦L(fǎng)問(wèn),端口設(shè)置,用戶(hù)名,密碼;最終,打開(kāi)數(shù)據(jù)庫(kù)連接[3]。 if(cflag){ Admina=adao.getAdminByIdAndPasswd(adminid,adminpasswd); qDebug(a.adminId.toLatin1()); qDebug(a.adminPasswd.toLatin1());//判定管理員ID和密碼是否和數(shù)據(jù)庫(kù)中定義管理員ID密碼相符 if(a.adminId==adminId &&a.adminPasswd==adminpasswd &&a.adminId!=""&&a.adminPasswd!=""){ AdminAllaa; this->close(); aa.exec(); }else{ qDebug("selectdbfailed"); QMessageBoxmsg(this); msg.setText("selectdbfailed!!"); msg.exec(); } }else{ qDebug("connectdbfailed"); QMessageBoxmsg(this); msg.setText("connectdbfailed!!"); msg.exec(); }
2.
實(shí)施select命令查詢(xún)
一旦建立連接,用戶(hù)就能夠使用QSqlQuery類(lèi)型實(shí)施SQL命令。本設(shè)計(jì)中實(shí)施SELECT命令以下[1]:AccountAccountDao::getAccountByNameAndIdAndPasswd(Accountaccount){QSqlQueryqu(myconn);qu.prepare("select*fromaccountwhereaccountname=?andaccountNo=?andaccountpaswd=?");qu.bindValue(0,account.getAccountName());qu.bindValue(1,account.getAccountNo());qu.bindValue(2,account.getAccountPasswd());Accounta;qu.exec();然后能夠處理查詢(xún)結(jié)果:if(qu.next()){a.setAccountName(qu.value(0).toString());a.setAccountNo(qu.value(1).toString());a.setAccountPasswd(qu.value(2).toString());a.setAccountMoney(qu.value(3).toDouble());}returna;}第一次調(diào)用query.next()時(shí),查詢(xún)統(tǒng)計(jì)指針指向第一條統(tǒng)計(jì);接下來(lái)每調(diào)用一次next(),指針向后移一條統(tǒng)計(jì),直到指針指向統(tǒng)計(jì)尾端(尾端是最終一條統(tǒng)計(jì)下一個(gè)位置),這時(shí)next()返回false。3.
實(shí)施insert命令先從界面得到需要插入數(shù)據(jù),連接好數(shù)據(jù)庫(kù)后,實(shí)施INSERT命令,向數(shù)據(jù)庫(kù)插入新數(shù)據(jù)。voidAddAccount::createAccount(){ /*從界面得到數(shù)據(jù)*/ QStringaname=ui->accountName->text(); QStringaid=ui->accountId->text(); QStringapaswd=ui->accountPasswd->text(); Accounta(aname,aid,apaswd,0.0); /*調(diào)用訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)對(duì)象把對(duì)象存入數(shù)據(jù)庫(kù)*/ AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");//連接數(shù)據(jù)庫(kù)/*鏈接到數(shù)據(jù)庫(kù)后實(shí)施insert命令更新數(shù)據(jù)庫(kù)[5]*/boolAccountDao::addAccount(Accountaccount){QSqlQueryqu(myconn);qu.prepare("insertintoaccountvalues(?,?,?,?)");qu.bindValue(0,account.getAccountName());qu.bindValue(1,account.getAccountNo());qu.bindValue(2,account.getAccountPasswd());qu.bindValue(3,account.getAccountMoney());
4.
SQL
update為了更新一條統(tǒng)計(jì),首先從QSqlTableModel中找到該統(tǒng)計(jì)位置。然后抽出統(tǒng)計(jì),更新域值,再將統(tǒng)計(jì)寫(xiě)入數(shù)據(jù)庫(kù)[3]:從界面得到需要改動(dòng)數(shù)據(jù)信息:voidTransfer::transferAccount(){ Accountsender; sender.setAccountName(ui->sname->text()); sender.setAccountNo(ui->sno->text());sender.setAccountPasswd(ui->spasswd->text());Accountreciver;reciver.setAccountName(ui->rname->text());reciver.setAccountNo(ui->rno->text());連接到數(shù)據(jù)庫(kù):AccountDaoadao;boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");if(cflag){Accounts=adao.getAccountByNameAndIdAndPasswd(sender);if(s.getAccountMoney()<ui->money->text().toDouble()){QMessageBoxmsg;msg.setText("havenotenoughmoney");msg.exec();return; } Accountr=adao.getAccountByNameAndId(reciver); qDebug(r.getAccountName().toLatin1()); qDebug(s.getAccountName().toLatin1()); adao.transferByAccount(s,r,ui->money->text().toDouble()); }}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì)對(duì)對(duì)應(yīng)數(shù)據(jù)進(jìn)行更新:voidAccountDao::transferByAccount(Accountsender,Accountrecever,doublemoney){myconn.transaction();QSqlQueryqu(myconn);qu.prepare("updateaccountsetaccountMoney=accountMoney-?whereaccountname=?");qu.bindValue(0,money);qu.bindValue(1,sender.getAccountName());boolf=qu.exec();qu.prepare("updateaccountsetaccountMoney=accountMoney+?whereaccountname=?");qu.bindValue(0,money);qu.bindValue(1,recever.getAccountName());boolff=qu.exec();if(f&&ff){qDebug("success!");mit();}else{qDebug("failed!");myconn.rollback();}3.2建立Bank工程方法步驟第一步:進(jìn)入QTCreator選擇創(chuàng)建項(xiàng)目,第二步:選擇QT控件項(xiàng)目,QTGui應(yīng)用圖3-1創(chuàng)建QT控件項(xiàng)目圖第三步:點(diǎn)擊下一步給項(xiàng)目起名稱(chēng)第四步:點(diǎn)擊下一步,創(chuàng)建源碼文件基礎(chǔ)類(lèi)信息圖3-2創(chuàng)建源碼文件基礎(chǔ)類(lèi)信息圖第六步:下一步點(diǎn)擊完成 這時(shí)候我們就完成了一個(gè)QT項(xiàng)目標(biāo)構(gòu)建,以后我們就能夠在其基礎(chǔ)上依據(jù)設(shè)計(jì)需要添加QT設(shè)計(jì)界面類(lèi)[7]。3.3添加QT設(shè)計(jì)界面類(lèi)設(shè)計(jì)第一步:在項(xiàng)目名Bank上右擊選擇新建文件第二步:選擇新建QT設(shè)計(jì)界面類(lèi)第三步:選擇DialogwithoutButtons界面模版第四步:填寫(xiě)需要添加類(lèi)名,頭文件名、源文件名和界面文件名稱(chēng)會(huì)隨類(lèi)名改變而改變。添加類(lèi)名是要注意類(lèi)名首字母要大寫(xiě)。第五步:點(diǎn)擊下一步,查對(duì)添加至項(xiàng)目無(wú)誤情況下,點(diǎn)擊完成。 這么,我們就將一個(gè)新類(lèi)添加到項(xiàng)目中,而且將頭文件、實(shí)現(xiàn)文件、界面文件一起創(chuàng)建完成。3.4管理員登陸設(shè)計(jì) 第一步:根據(jù)3.1步驟完成項(xiàng)目構(gòu)建后,Adminlogin界面類(lèi)會(huì)完成,系統(tǒng)會(huì)提供一個(gè)空界面,在空界面上我們依據(jù)管理員登陸界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。(2)選擇InputWidgets下LineEdit,給界面添加輸入框。(3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加完后以下圖圖3-3管理員登錄設(shè)計(jì)界面圖 (5)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。第二步:功效設(shè)計(jì) adminid:管理員ID adminpasswd:密碼adminid和adminpasswd從數(shù)據(jù)庫(kù)中查詢(xún)出來(lái)得到登陸界面輸入數(shù)據(jù)并做判定,登陸成功進(jìn)入主操作界面假如管理員ID和密碼不正確任意一個(gè)或全部不正確,則輸出"selectdbfailed!!",并彈出提醒對(duì)話(huà)框,但不是因?yàn)檩斎脲e(cuò)誤造成登錄失敗時(shí),則會(huì)輸出"connectdbfailed",并彈出提醒對(duì)話(huà)框。對(duì)應(yīng)代碼以下:voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*連接數(shù)據(jù)庫(kù)得到管理員相關(guān)信息*/ AdminDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","", 3306,"root","123456"); if(cflag){ Admina=adao.getAdminByIdAndPasswd(adminid,adminpasswd); qDebug(a.adminId.toLatin1()); qDebug(a.adminPasswd.toLatin1());//判定管理員ID和密碼是否和數(shù)據(jù)庫(kù)中定義管理員ID密碼相符 if(a.adminId==adminId &&a.adminPasswd==adminpasswd &&a.adminId!=""&&a.adminPasswd!=""){ AdminAllaa; this->close(); aa.exec(); }else{ qDebug("selectdbfailed"); QMessageBoxmsg(this); msg.setText("selectdbfailed!!"); msg.exec(); } }else{ qDebug("connectdbfailed"); QMessageBoxmsg(this); msg.setText("connectdbfailed!!"); msg.exec(); }}第三步:管理員ID和密碼輸入后點(diǎn)擊登錄則進(jìn)入主操控界面,點(diǎn)擊退出則退出登陸界面,對(duì)應(yīng)代碼以下:AddAccount::AddAccount(QWidget*parent): QDialog(parent), ui(newUi::AddAccount){ui->setupUi(this);connect(ui->createAccount,SIGNAL(clicked()), this,SLOT(createAccount())); connect(ui->cancel,SIGNAL(clicked()), this,SLOT(close()));}3.5主操控界面設(shè)計(jì) 按需求分析要求主操控界面關(guān)鍵設(shè)計(jì)開(kāi)戶(hù)、查詢(xún)、存款、取款、轉(zhuǎn)賬、修改密碼和退出七個(gè)選項(xiàng),界面設(shè)計(jì)過(guò)程以下:第一步:根據(jù)3.2步驟新建界面模版,填寫(xiě)Adminall類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。第二步:在建好空界面模版上,根據(jù)主操控界面用例要求,添加Button按鈕,并修改Button按鈕名稱(chēng)。完成界面圖以下:圖3-4主界面設(shè)計(jì)圖第三步:給各個(gè)按鈕創(chuàng)建連接分別點(diǎn)擊不一樣按鈕會(huì)進(jìn)入不一樣界面,每個(gè)cliked全部會(huì)對(duì)應(yīng)一個(gè)connect,經(jīng)過(guò)connect進(jìn)入對(duì)應(yīng)界面。關(guān)鍵代碼以下:connect(ui->createAccount,SIGNAL(clicked()), this,SLOT(createAccount())); connect(ui->seachAccount,SIGNAL(clicked()), this,SLOT(seachAccount())); connect(ui->changeAccount,SIGNAL(clicked()), this,SLOT(transferAccount())); connect(ui->deposite,SIGNAL(clicked()), this,SLOT(forDeposite())); connect(ui->withDraw,SIGNAL(clicked()), this,SLOT(withDraw())); connect(ui->changPasswd,SIGNAL(clicked()), this,SLOT(changePasswd())); connect(ui->quit,SIGNAL(clicked()), this,SLOT(close()));3.6開(kāi)戶(hù)設(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,開(kāi)戶(hù)需要有賬戶(hù)名、身份證、密碼、和反復(fù)密碼四項(xiàng)輸入。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)Addaccount類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)開(kāi)戶(hù)界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-5開(kāi)戶(hù)界面設(shè)計(jì)圖第四步:獲取界面填寫(xiě)數(shù)據(jù)存入數(shù)據(jù)庫(kù)設(shè)計(jì)。系統(tǒng)從管理員輸入數(shù)據(jù)得到信息,并把信息存放到數(shù)據(jù)庫(kù)中,開(kāi)戶(hù)成功則會(huì)彈出"createaccountsuccess!!"對(duì)話(huà)框,假如開(kāi)戶(hù)失敗則會(huì)彈出"createaccountfailed!!"對(duì)話(huà)框。假如開(kāi)戶(hù)成功,點(diǎn)擊提醒對(duì)話(huà)框確實(shí)定按鈕(以下圖),這么就得到了界面數(shù)據(jù),并用數(shù)據(jù)來(lái)構(gòu)建賬戶(hù)對(duì)象,調(diào)用訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)類(lèi),并把數(shù)據(jù)存入數(shù)據(jù)庫(kù),最終返回主操控界面。圖3-6開(kāi)戶(hù)成功界面演示圖數(shù)據(jù)庫(kù)設(shè)計(jì)需求關(guān)鍵代碼以下:voidAddAccount::createAccount(){ /*從界面得到數(shù)據(jù)*/ QStringaname=ui->accountName->text(); QStringaid=ui->accountId->text(); QStringapaswd=ui->accountPasswd->text(); Accounta(aname,aid,apaswd,0.0); /*調(diào)用訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)對(duì)象把對(duì)象存入數(shù)據(jù)庫(kù)*/ AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){ boolf=adao.addAccount(a); if(f){ QMessageBoxmsg(this); msg.setText("createaccountsuccess!!"); msg.exec(); }else{ QMessageBoxmsg(this); msg.setText("createaccountfailed!!"); msg.exec(); } } this->close();}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì) boolAccountDao::addAccount(Accountaccount){QSqlQueryqu(myconn);qu.prepare("insertintoaccountvalues(?,?,?,?)");qu.bindValue(0,account.getAccountName());qu.bindValue(1,account.getAccountNo());qu.bindValue(2,account.getAccountPasswd());qu.bindValue(3,account.getAccountMoney());returnqu.exec();3.7查詢(xún)?cè)O(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,查詢(xún)界面應(yīng)有賬戶(hù)名、身份證、密碼、余額(顯示)。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)Seachaccount類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)查詢(xún)界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-7查詢(xún)界面設(shè)計(jì)圖第四步:當(dāng)管理員在界面內(nèi)輸入一個(gè)賬戶(hù)信息時(shí),系統(tǒng)會(huì)經(jīng)過(guò)輸入賬戶(hù)信息,將賬戶(hù)信息傳輸給dao對(duì)象,dao對(duì)象在已存在數(shù)據(jù)庫(kù)中進(jìn)行查找,并將查找結(jié)果顯示在余額中。關(guān)鍵代碼以下:voidSeachAccount::seachAccount(){/*得到用戶(hù)名、身份證號(hào)和密碼*/QStringaname=ui->aname->text();QStringapasswd=ui->passwd->text();Accounta(aname,aid,apasswd,0.0);/*把這兩個(gè)信息傳給dao對(duì)象和數(shù)據(jù)庫(kù)中信息去匹配,并將余額顯示*/AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){ a=adao.getAccountByNameAndIdAndPasswd(a); } ui->money->setText(QString::number(a.getAccountMoney()));}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì)AccountAccountDao::getAccountByNameAndIdAndPasswd(Accountaccount){QSqlQueryqu(myconn);qu.prepare("select*fromaccountwhereaccountname=?andaccountNo=?andaccountpaswd=?");qu.bindValue(0,account.getAccountName());qu.bindValue(1,account.getAccountNo());qu.bindValue(2,account.getAccountPasswd());Accounta;qu.exec();if(qu.next()){a.setAccountName(qu.value(0).toString());a.setAccountNo(qu.value(1).toString());a.setAccountPasswd(qu.value(2).toString());a.setAccountMoney(qu.value(3).toDouble());}returna;}3.8存款設(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,存款界面應(yīng)有賬戶(hù)名、身份證、密碼、存款。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)Deposite類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)存款界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-8存款界面設(shè)計(jì)圖第四步:當(dāng)管理員在界面內(nèi)輸入一個(gè)賬戶(hù)信息和存款額時(shí),系統(tǒng)會(huì)經(jīng)過(guò)輸入賬戶(hù)信息,在數(shù)據(jù)庫(kù)中查找相對(duì)應(yīng)賬戶(hù),并將存款額傳輸給ado對(duì)象保留到對(duì)應(yīng)賬戶(hù)下,點(diǎn)擊存款后彈出對(duì)應(yīng)提醒對(duì)話(huà)框。關(guān)鍵代碼以下:voidDeposite::changeAccount(){Accounta(ui->dname->text(),ui->did->text(),ui->dpasswd->text(),ui->dmoney->text().toDouble()); if(a.getAccountMoney()<=0){ QMessageBoxmsg; msg.setText("depositemoneyisinvalid!"); msg.exec(); } AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){ adao.depositeAccount(a); QMessageBoxmsg; msg.setText("depositesuccess!"); msg.exec(); this->close(); }}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì)Accountdao.cpp中對(duì)應(yīng)代碼: voidAccountDao::depositeAccount(Accountaccount){QSqlQueryqu(myconn);Accounttemp=getAccountByNameAndIdAndPasswd(account);if(temp.getAccountName()==""&&temp.getAccountNo()==""&&temp.getAccountPasswd()==""){QMessageBoxmsg;msg.setText("depositeaccountnotexist!");msg.exec();return;}qu.prepare("updateaccountsetaccountMoney=accountMoney+?whereaccountname=?andaccountNo=?andaccountpaswd=?");qu.bindValue(0,account.getAccountMoney());qu.bindValue(1,account.getAccountName());qu.bindValue(2,account.getAccountNo());qu.bindValue(3,account.getAccountPasswd());boolf=qu.exec();if(f){QMessageBoxmsg;msg.setText("depositesuccess!");msg.exec();}}3.9取款設(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,取款界面應(yīng)有賬戶(hù)名、身份證、密碼、取款。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)Withdraw類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)取款界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-9取款界面設(shè)計(jì)第四步:當(dāng)管理員在界面內(nèi)輸入一個(gè)賬戶(hù)信息和取款額時(shí),系統(tǒng)會(huì)經(jīng)過(guò)輸入賬戶(hù)信息,在數(shù)據(jù)庫(kù)中查找相對(duì)應(yīng)賬戶(hù),并將取款額傳輸給ado對(duì)象保留到對(duì)應(yīng)賬戶(hù)下,點(diǎn)擊存款后彈出對(duì)應(yīng)提醒對(duì)話(huà)框。關(guān)鍵代碼以下:voidWithDraw::changeAccount(){Accounta(ui->wname->text(),ui->wid->text(),ui->wpasswd->text(),ui->wmoney->text().toDouble()); if(a.getAccountMoney()<=0){ QMessageBoxmsg; msg.setText("withdrawmoneyisinvalid!"); msg.exec(); return; }AccountDaoadao;boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");Accounttemp=adao.getAccountByNameAndIdAndPasswd(a);if(a.getAccountMoney()>temp.getAccountMoney()){QMessageBoxmsg;msg.setText("youhavenotenoughmoney!");msg.exec();return; } if(cflag){ adao.withdrawAccount(a); this->close(); }}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì)Accountdao.cpp中對(duì)應(yīng)代碼設(shè)計(jì):voidAccountDao::withdrawAccount(Accountaccount){QSqlQueryqu(myconn);Accounttemp=getAccountByNameAndIdAndPasswd(account);if(temp.getAccountName()==""&&temp.getAccountNo()==""&&temp.getAccountPasswd()==""){QMessageBoxmsg;msg.setText("withdrawaccountnotexist!");msg.exec();return;}if(account.getAccountMoney()<=0){QMessageBoxmsg;msg.setText("withdrawmoneyisinvalid!");msg.exec();return;}qu.prepare("updateaccountsetaccountMoney=accountMoney-?whereaccountname=?andaccountNo=?andaccountpaswd=?");qu.bindValue(0,account.getAccountMoney());qu.bindValue(1,account.getAccountName());qu.bindValue(2,account.getAccountNo());qu.bindValue(3,account.getAccountPasswd());boolf=qu.exec();if(f){QMessageBoxmsg;msg.setText("withdrawsuccess!");msg.exec();}}3.10轉(zhuǎn)賬設(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,轉(zhuǎn)賬界面應(yīng)有轉(zhuǎn)賬人、密碼、收款人、金額。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)Transfer類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)轉(zhuǎn)賬界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-10轉(zhuǎn)賬界面設(shè)計(jì)第四步:當(dāng)管理員在界面內(nèi)輸入轉(zhuǎn)賬人、密碼、收款人、金額時(shí),系統(tǒng)會(huì)經(jīng)過(guò)輸入信息,把相關(guān)轉(zhuǎn)賬信息包裝成對(duì)象,,并將轉(zhuǎn)賬金額傳輸給ado對(duì)象保留到對(duì)應(yīng)賬戶(hù)下,點(diǎn)擊轉(zhuǎn)賬后彈出對(duì)應(yīng)提醒對(duì)話(huà)框。關(guān)鍵代碼以下:voidTransfer::transferAccount(){ Accountsender; sender.setAccountName(ui->sname->text()); sender.setAccountNo(ui->sno->text());sender.setAccountPasswd(ui->spasswd->text());Accountreciver;reciver.setAccountName(ui->rname->text());reciver.setAccountNo(ui->rno->text());AccountDaoadao;boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");if(cflag){Accounts=adao.getAccountByNameAndIdAndPasswd(sender);if(s.getAccountMoney()<ui->money->text().toDouble()){QMessageBoxmsg;msg.setText("havenotenoughmoney");msg.exec();return; } Accountr=adao.getAccountByNameAndId(reciver); qDebug(r.getAccountName().toLatin1()); qDebug(s.getAccountName().toLatin1()); adao.transferByAccount(s,r,ui->money->text().toDouble()); }}經(jīng)過(guò)accountdao.cpp鏈接到數(shù)據(jù)庫(kù)保留對(duì)應(yīng)設(shè)計(jì)Accountdao.cpp中對(duì)應(yīng)代碼:voidAccountDao::transferByAccount(Accountsender,Accountrecever,doublemoney){myconn.transaction();QSqlQueryqu(myconn);qu.prepare("updateaccountsetaccountMoney=accountMoney-?whereaccountname=?");qu.bindValue(0,money);qu.bindValue(1,sender.getAccountName());boolf=qu.exec();qu.prepare("updateaccountsetaccountMoney=accountMoney+?whereaccountname=?");qu.bindValue(0,money);qu.bindValue(1,recever.getAccountName());boolff=qu.exec();if(f&&ff){qDebug("success!");mit();}else{qDebug("failed!");myconn.rollback();}3.11修改密碼設(shè)計(jì)第一步:分析。依據(jù)個(gè)人賬戶(hù)管理系統(tǒng)需求分析可知,修改密碼界面應(yīng)有賬戶(hù)名、身份證、密碼、新密碼、反復(fù)新密碼。第二步:按需求進(jìn)行設(shè)計(jì)。根據(jù)3.2步驟新建界面模版,填寫(xiě)ChangePasswd類(lèi)頭文件名、源文件名和界面文件名稱(chēng)。 第三步:在提供空界面上我們依據(jù)修改密碼界面用例,來(lái)添加組件。(1)選中ui界面文件,進(jìn)入ui設(shè)計(jì)界面,選擇DisplayWidgets下Label,給ui界面添加文本框,雙擊文本框,修改文本框顯示內(nèi)容。 (2)選擇InputWidgets下LineEdit,給界面添加輸入框。 (3)選擇Buttons下PushButton,給界面添加按鈕。(4)添加組件完成后,考慮到密碼保護(hù),我們要將密碼顯示修改為非明碼顯示,點(diǎn)擊選中密碼輸入文本框,在屬性欄中找到echoMode將其默認(rèn)Normal改換成Password。 (5)添加完后以下圖圖3-11修改密碼設(shè)計(jì)界面第四步:當(dāng)管理員在界面內(nèi)輸入賬戶(hù)名、身份證、密碼、新密碼、反復(fù)新密碼并點(diǎn)擊修改后,系統(tǒng)會(huì)經(jīng)過(guò)輸入信息,把相關(guān)修改信息包裝成對(duì)象,,并將轉(zhuǎn)賬金額傳輸給ado對(duì)象保留到對(duì)應(yīng)賬戶(hù)下,點(diǎn)擊點(diǎn)擊修改后會(huì)彈出對(duì)應(yīng)提醒對(duì)話(huà)框。關(guān)鍵代碼以下:voidChangePasswd::changePasswd(){ Accounta(ui->cname->text(),ui->cid->text(),ui->passwd->text(),0.0); if(ui->rnpasswd->text()!=ui->npasswd->text()){ QMessageBoxmsg; msg.setText("repeatnewpasswderror!"); msg.exec(); return; } AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){a=adao.getAccountByNameAndIdAndPasswd(a);if(a.getAccountName()!=""&&a.getAccountNo()!=""&&a.getAccountPasswd()!=""){adao.changePasswdAccount(a,ui->rnpasswd->text());this->close(); } }}Accountdao.cpp中對(duì)應(yīng)代碼:voidAccountDao::changePasswdAccount(Accountaccount,QStringnpasswd){QSqlQueryqu(myconn);qu.prepare("updateaccountsetaccountpaswd=?whereaccountname=?andaccountNo=?andaccountpaswd=?");qu.bindValue(0,npasswd);qu.bindValue(1,account.getAccountName());qu.bindValue(2,account.getAccountNo());qu.bindValue(3,account.getAccountPasswd());boolf=qu.exec();if(f){QMessageBoxmsg;msg.setText("changepasswdsuccess!");msg.exec();}4功效測(cè)試我們以加中國(guó)農(nóng)業(yè)銀行為例,進(jìn)行測(cè)試4.1管理員登陸界面用戶(hù)進(jìn)入系統(tǒng)首先會(huì)看到以下界面圖4-1管理員登陸界面4.2主操控界面正確輸入管理員ID和密碼后進(jìn)入賬戶(hù)管理主界面圖4-2主控制界面4.3開(kāi)戶(hù)界面 從賬戶(hù)管理主界面選擇要實(shí)施任務(wù),首優(yōu)異行開(kāi)戶(hù),選擇開(kāi)戶(hù)進(jìn)入開(kāi)戶(hù)界面圖4-3開(kāi)戶(hù)界面根據(jù)要求輸入賬戶(hù)名、身份證號(hào)、密碼,選擇開(kāi)戶(hù),開(kāi)戶(hù)成功則會(huì)出現(xiàn)開(kāi)戶(hù)成功提醒對(duì)話(huà)框。圖4-4開(kāi)戶(hù)成功提醒對(duì)話(huà)框4.4查詢(xún)界面 選擇查詢(xún)選項(xiàng)進(jìn)入查詢(xún)界面圖4-5查詢(xún)界面4.5存款界面圖4-6存款界面輸入賬戶(hù)名、身份證、密碼、存款額,點(diǎn)擊存款,存款成功顯示提醒對(duì)話(huà)框圖4-7存款成功提醒對(duì)話(huà)框存款失敗顯示提醒對(duì)話(huà)框圖4-8存款失敗提醒對(duì)話(huà)框4.6取款界面圖4-9取款界面輸入賬戶(hù)名、身份證、密碼和取款額點(diǎn)擊取款成功話(huà)彈出成功提醒對(duì)話(huà)框圖4-10取款成功提醒對(duì)話(huà)框4.7轉(zhuǎn)賬界面圖4-11轉(zhuǎn)賬界面輸入轉(zhuǎn)賬人賬戶(hù)名、密碼和收款人賬戶(hù)名和轉(zhuǎn)賬金額,點(diǎn)擊轉(zhuǎn)賬,轉(zhuǎn)賬成功彈出success提醒對(duì)話(huà)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度廚師技能競(jìng)賽合作舉辦協(xié)議
- 人力資源招聘事務(wù)文書(shū)草案
- 酒店經(jīng)營(yíng)管理權(quán)合作協(xié)議
- 電商平臺(tái)用戶(hù)免責(zé)條款協(xié)議
- 工作紀(jì)律修訂內(nèi)容
- 高效會(huì)議事務(wù)組織與實(shí)施流程文書(shū)
- 公司股東間股權(quán)認(rèn)購(gòu)及合作開(kāi)發(fā)協(xié)議表
- 《正弦定理在三角形中的應(yīng)用:高中數(shù)學(xué)教案》
- 三農(nóng)金融服務(wù)平臺(tái)建設(shè)方案
- 工作目標(biāo)實(shí)現(xiàn)路徑規(guī)劃
- 數(shù)學(xué)與體育融合課程設(shè)計(jì)
- 七年級(jí)英語(yǔ)閱讀理解專(zhuān)項(xiàng)訓(xùn)練(含答案)共20篇
- 初步設(shè)計(jì)法律規(guī)范
- 社區(qū)獲得性肺炎疾病查房
- 神奇的光:如何形成彩虹
- 三、膽石癥課件
- 兔子坡(閱讀課上課課件)
- 固定資產(chǎn)清查盤(pán)點(diǎn)明細(xì)表
- 220kV升壓站調(diào)試施工方案
- 立式單軸木工銑床安全操作規(guī)程
- 重癥患者識(shí)別課件
評(píng)論
0/150
提交評(píng)論