銀行個(gè)人賬戶信息管理系統(tǒng)樣本_第1頁
銀行個(gè)人賬戶信息管理系統(tǒng)樣本_第2頁
銀行個(gè)人賬戶信息管理系統(tǒng)樣本_第3頁
銀行個(gè)人賬戶信息管理系統(tǒng)樣本_第4頁
銀行個(gè)人賬戶信息管理系統(tǒng)樣本_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

題目:銀行個(gè)人賬戶信息管理系統(tǒng)銀行個(gè)人賬戶管理系統(tǒng)摘要 賬戶管理是當(dāng)前每個(gè)銀行業(yè)務(wù)流程中最重要一項(xiàng),在銀行各項(xiàng)業(yè)務(wù)流程中起著承上啟下作用,可謂是銀行業(yè)務(wù)重中之重。 本文針對上述問題,采用軟件工程開發(fā)原理,根據(jù)軟件工程流程過程規(guī)范,按照需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼、測試、軟件應(yīng)用、軟件維護(hù)等過程開發(fā)了一種銀行個(gè)人賬戶信息管理系統(tǒng)。采用Linux平臺作為開發(fā)環(huán)境,QT、C++作為開發(fā)工具,面向?qū)ο蠡O(shè)計(jì),重要設(shè)計(jì)了管理員登錄、新顧客開戶、存取款、轉(zhuǎn)賬、查詢業(yè)務(wù),解決了銀行當(dāng)前操作繁瑣流程,以便快捷實(shí)現(xiàn)了銀行賬戶管理基本任務(wù)。本設(shè)計(jì)設(shè)計(jì)銀行個(gè)人賬戶信息管理系統(tǒng),能使銀行工作人員輕松快捷完畢對賬戶管理任務(wù),使銀行賬目管理工作系統(tǒng)化、快捷化、規(guī)范化、自動化、高效化。核心詞:個(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本課題研究意義和目 11.1開發(fā)背景 11.2國內(nèi)外現(xiàn)狀 11.3自動化管理銀行競爭優(yōu)勢分析 22系統(tǒng)需求分析 32.1開發(fā)設(shè)計(jì)思想 32.2可行性研究 32.3需求分析 42.4系統(tǒng)流程圖設(shè)計(jì) 52.5用例描述 63設(shè)計(jì)過程及編碼 103.1 數(shù)據(jù)庫創(chuàng)立與使用 103.2建立Bank工程辦法環(huán)節(jié) 143.3添加QT設(shè)計(jì)界面類設(shè)計(jì) 153.4管理員登陸設(shè)計(jì) 153.5主操控界面設(shè)計(jì) 173.6開戶設(shè)計(jì) 183.7查詢設(shè)計(jì) 203.8存款設(shè)計(jì) 213.9取款設(shè)計(jì) 233.10轉(zhuǎn)賬設(shè)計(jì) 263.11修改密碼設(shè)計(jì) 284功能測試 304.1管理員登陸界面 304.2主操控界面 304.3開戶界面 304.4查詢界面 314.5存款界面 324.6取款界面 334.7轉(zhuǎn)賬界面 344.8修改密碼界面 354.9判斷與評估 365應(yīng)用與維護(hù) 376總結(jié) 38參照文獻(xiàn) 39道謝 40附錄 411本課題研究意義和目1.1開發(fā)背景隨著社會經(jīng)濟(jì)發(fā)展,信息化限度不斷進(jìn)一步,銀行老式業(yè)務(wù)己愈來愈不能滿足銀行客戶需要。隨著國內(nèi)經(jīng)濟(jì)日益發(fā)展,國內(nèi)銀行業(yè)將面臨更加激烈同行業(yè)競爭,如何提供更優(yōu)質(zhì)服務(wù),如何吸引更多客戶,如何運(yùn)用計(jì)算機(jī)技術(shù)加強(qiáng)銀行個(gè)人帳戶信息管理、進(jìn)行銀行業(yè)務(wù)再造,提高銀行工作效率和業(yè)務(wù)竟?fàn)幠芰κ菙[在各家銀行面前迫切需要解決問題。隨著銀行業(yè)務(wù)不斷發(fā)展,業(yè)務(wù)種類也是日益繁多,而各項(xiàng)業(yè)務(wù)解決互有差別,這就對銀行進(jìn)入電子化水平和相應(yīng)管理水平提出了規(guī)定。如何運(yùn)用電子化手段構(gòu)建一種高效統(tǒng)一、通用靈活系統(tǒng)來管理各種各樣業(yè)務(wù),是每個(gè)商業(yè)銀行所要研究課題。支持決策系統(tǒng),需要在數(shù)據(jù)庫基本上,進(jìn)行聯(lián)機(jī)分析解決,每次解決數(shù)據(jù)量大,響應(yīng)時(shí)間長。特別是銀行每天都要解決大量開戶、存取款、轉(zhuǎn)賬等業(yè)務(wù),而銀行人員現(xiàn)行應(yīng)用系統(tǒng)填寫內(nèi)容較為復(fù)雜、流程過于繁瑣,已經(jīng)是不能滿足客戶對于辦理業(yè)務(wù)時(shí)間上快捷性規(guī)定,做好存開戶、存取款等是銀行工作重要環(huán)節(jié),然而要有效解決必要要有良好程序和數(shù)據(jù)管理系統(tǒng)來建立一種良好軟件系統(tǒng)來實(shí)現(xiàn)迅速、有效、精確、安全解決銀行事物。銀行個(gè)人賬戶管理系統(tǒng)重要用于銀行儲蓄管理,它可以協(xié)助咱們有效、精確、并且高效實(shí)現(xiàn)完畢銀行柜臺業(yè)務(wù)。此系統(tǒng)操作以便效率、安全性高,只要擁有管理員賬號和密碼(也就是說是銀行工作人員),就可覺得顧客做開戶,開戶之后就可以以便為顧客辦理各種柜臺業(yè)務(wù)。1.2國內(nèi)外現(xiàn)狀在信息化發(fā)展極為迅速當(dāng)今社會,金融經(jīng)濟(jì)日益趨向全球化,同行業(yè)競爭變得更加激烈,國外銀行業(yè)掀起了一股比上世紀(jì)更為聲勢浩大信息化革命浪潮。國外銀行業(yè)信息化基本設(shè)施框架已具備完善、電子銀行體系已走進(jìn)成熟階段,信息化建設(shè)正由業(yè)務(wù)層向管理決策層推動。國際銀行業(yè)普遍存在著管理決策信息化、網(wǎng)點(diǎn)擴(kuò)張?zhí)摂M化、產(chǎn)品服務(wù)客戶化以及非核心業(yè)務(wù)外包化等趨勢。在國內(nèi),隨著金融市場逐漸開放,銀行競爭日趨激烈。銀行領(lǐng)域競爭將緊扣著客戶,特別是優(yōu)質(zhì)客戶這一稀缺資源進(jìn)行。但是在外資銀行涌入中華人民共和國進(jìn)程中,咱們很容易地看到這個(gè)現(xiàn)象:外資銀行作為中華人民共和國市場日后者,國內(nèi)資源暫時(shí)是它們?nèi)蹴?xiàng),恰恰這一方面正是國內(nèi)銀行競爭優(yōu)勢所在。然而,客戶資源經(jīng)營管理的確國內(nèi)銀行軟肋。國內(nèi)多數(shù)銀行客戶關(guān)系管理還只是流于形式,這個(gè)問題是相稱令人深思。運(yùn)用客戶個(gè)人賬戶管理體系來進(jìn)行客戶關(guān)系管理正是應(yīng)對將來銀行客戶資源競爭利器??蛻魝€(gè)人賬戶管理正是基于計(jì)算機(jī)技術(shù)和平臺,通過對銀行業(yè)務(wù)流程重組來整合客戶信息資源,以更科學(xué)有效辦法來管理客戶信息,在銀行內(nèi)部實(shí)現(xiàn)信息和資源共享,從而減少銀行營運(yùn)成本,為客戶提供更經(jīng)濟(jì)、快捷、周到產(chǎn)品和服務(wù)來吸引客戶,最后達(dá)到銀行價(jià)值最大化。1.3自動化管理銀行競爭優(yōu)勢分析由于社會信息化不斷進(jìn)一步發(fā)展和經(jīng)濟(jì)金融體制不斷進(jìn)一步化,在知識經(jīng)濟(jì)和銀行電子化建設(shè)發(fā)展中,國內(nèi)經(jīng)濟(jì)構(gòu)造也在不斷地變化,社會對于金融服務(wù)需求日新月異,金融服務(wù)內(nèi)涵和外延變得更加豐富。這就對于銀行管理提出了新規(guī)定。銀行管理日益趨向信息化、電子化、多元化。銀行電子化和當(dāng)代化管理水平已經(jīng)成為銀行競爭力重要構(gòu)成要素,成為銀行市場運(yùn)作、金融創(chuàng)新、量化管理技術(shù)基本。大體上來說,銀行賬戶管理系統(tǒng)化、自動化和規(guī)范化,使銀行獲得如下幾方面優(yōu)勢:(1)差別化競爭優(yōu)勢;(2)低成本競爭優(yōu)勢;(3)目的集聚性優(yōu)勢;(4)知識型優(yōu)勢;(5)產(chǎn)業(yè)集聚型優(yōu)勢。2系統(tǒng)需求分析2.1開發(fā)設(shè)計(jì)思想本系統(tǒng)開發(fā)設(shè)計(jì)思想:系統(tǒng)應(yīng)當(dāng)在銀行規(guī)定前提下,滿足銀行對于個(gè)人賬戶管理需求適應(yīng)銀行工作人員尋常工作需要,并應(yīng)達(dá)到操作工程簡便易行、安全可靠規(guī)定。依照系統(tǒng)設(shè)計(jì)目的和重要功能和對開發(fā)工具和環(huán)境選取,通過軟件工程設(shè)計(jì)辦法,對系統(tǒng)可行性進(jìn)行分析,擬定方案可行性。依照系統(tǒng)需求得到需求分析,在需求分析基本上進(jìn)行設(shè)計(jì)編碼,完畢后對系統(tǒng)進(jìn)行功能測試和應(yīng)用維護(hù)。系統(tǒng)采用模塊化程序設(shè)計(jì)辦法,不但可以在系統(tǒng)設(shè)計(jì)時(shí)以便系統(tǒng)功能各種組合與修改,又可以以便開發(fā)人員日后對程序修改和和維護(hù)。系統(tǒng)要具備數(shù)據(jù)庫維護(hù)功能,雖然以便顧客對數(shù)據(jù)增長修改等操作。2.2系統(tǒng)設(shè)計(jì)目的和重要功能通過銀行個(gè)人賬戶管理系統(tǒng),可以使銀行對于個(gè)人賬戶管理實(shí)現(xiàn)系統(tǒng)化、自動化、簡便化,去除繁瑣信息錄入,從而以便快捷使銀行達(dá)到高效管理個(gè)人賬戶目。開發(fā)重要任務(wù)是使工作人員可以輕松以便快捷完畢對個(gè)人賬戶管理任務(wù)。 設(shè)計(jì)銀行個(gè)人賬戶管理系統(tǒng)應(yīng)當(dāng)具備最基本賬戶管理功能,以及對客戶信息變化記錄功能,設(shè)計(jì)銀行個(gè)人賬戶信息管理系統(tǒng)需要完畢重要功能是: 1、銀行工作人員即管理員登錄 2、管理員對客戶開戶操作(涉及顧客名、身份證、密碼填寫) 3、對已有客戶(賬號)查詢操作 4、對已有客戶(賬號)存款操作 5、對已有客戶(賬號)取款操作 6、對已有客戶(賬號)修改密碼操作 7、對已有客戶(賬號)之間轉(zhuǎn)賬操作2.2.3開發(fā)工具和環(huán)境開發(fā)工具:QT4.8.1、C++運(yùn)營環(huán)境:LINUX或UNIX2.2可行性研究可行性研究能使新系統(tǒng)達(dá)到以最小開發(fā)成本獲得最佳經(jīng)濟(jì)效益。可行性研究目,是依照開發(fā)管理信息系統(tǒng)祈求,通過初步調(diào)查和系統(tǒng)目的分析,對要開發(fā)銀行個(gè)人帳戶管理信息系統(tǒng)從技術(shù)上、經(jīng)濟(jì)上、資源上和管理上進(jìn)行與否可行研究。這是一項(xiàng)保證資源合理使用、避免失誤和揮霍重要工作。由于實(shí)現(xiàn)了當(dāng)代化信息管理系統(tǒng)功能,這樣就減少了人工消耗,也就是說一臺機(jī)器代替了各種人工作,這樣就可以減少人員消耗上開支。不但如此,實(shí)現(xiàn)銀行系統(tǒng)管理可以迅速應(yīng)對各種業(yè)務(wù),在效率上也提高了速度,為創(chuàng)造更大價(jià)值提供了前提條件。系統(tǒng)對于計(jì)算機(jī)硬件、網(wǎng)絡(luò)和系統(tǒng)條件規(guī)定并不高,這樣就以便了,銀行信息管理系統(tǒng)實(shí)行和普及應(yīng)用。對于管理和經(jīng)費(fèi)問題上,都是非常透明和樂于讓人接受。系統(tǒng)實(shí)行運(yùn)營后,并不需要特定工作人員去管理,咱們只需要一種管理員來管理一臺裝備。因此在管理經(jīng)費(fèi)上是不會有多大消耗。由于是電腦管理系統(tǒng),因此對于賬戶管理是相稱高。而銀行信息管理系統(tǒng)運(yùn)營過程不但不違背銀行管理規(guī)章制度,還會有效地實(shí)現(xiàn)信息迅速存取。由于不但節(jié)約了銀行自身成本并且她管理效率也會提高了。2.3需求分析 構(gòu)造設(shè)計(jì)第一種階段就是需求分析,這個(gè)階段重要是為了收集系統(tǒng)設(shè)計(jì)過程中所要用到基本數(shù)據(jù)、數(shù)據(jù)構(gòu)造和數(shù)據(jù)解決流程,從而組織成盡量詳細(xì)數(shù)據(jù),以便后來設(shè)計(jì)需要。管理員管理管理員管理存款取款轉(zhuǎn)賬修改密碼賬戶信息圖2-1數(shù)據(jù)流圖 通過對銀行個(gè)人賬戶管理內(nèi)容及數(shù)據(jù)流分析,咱們便可以列出設(shè)計(jì)數(shù)據(jù)項(xiàng):開戶信息表。涉及:賬戶名、身份證、密碼、重復(fù)密碼。查詢信息表。涉及:賬戶名、身份證、密碼、余額。存款信息表。涉及:賬戶名、身份證、密碼、存款額。取款信息表。涉及:賬戶名、身份證、密碼、取款額。轉(zhuǎn)賬信息表。涉及:轉(zhuǎn)賬人、密碼、收款人、金額。修改密碼信息表。涉及:賬戶名、身份證、密碼、新密碼、重復(fù)新密碼。2.4系統(tǒng)流程圖設(shè)計(jì) 這一階段設(shè)計(jì)是基于需求分析上,通過需求分析來設(shè)計(jì)出可以滿足顧客需求各種實(shí)體以及它們之間聯(lián)系,以以便下一步邏輯構(gòu)造設(shè)計(jì)。 依照系統(tǒng)設(shè)計(jì)規(guī)定系統(tǒng)流程圖設(shè)計(jì)如下:YYes進(jìn)入主窗口退出賬戶名身份證密碼重復(fù)密碼賬戶名身份證密碼余額賬戶名身份證密碼存款額賬戶名身份證密碼取款額轉(zhuǎn)賬人轉(zhuǎn)出賬號密碼收款人轉(zhuǎn)入賬號金額賬戶名身份證密碼新密碼重復(fù)新密碼NO留在登陸界面開戶查詢存款取款轉(zhuǎn)賬修改取消主窗口取消取消取消取消取消管理員登錄開始顧客名密碼開戶查詢存款取款轉(zhuǎn)賬修改密碼圖2-2系統(tǒng)流程圖2.5用例描述2.5.1管理員登錄取例 管理員登錄取例表如表2-1表2-1管理員登錄取例表用例名稱登錄用例描述描述了管理員如何登錄到系統(tǒng)中參加者管理員狀態(tài)審查通過前置條件無后置條件如果用例成功,則管理員登錄到系統(tǒng)之。否則,系統(tǒng)狀態(tài)不變?;静僮髁鞒坍?dāng)管理員想登錄到銀行信息系統(tǒng)中時(shí),用例啟動。(1)系統(tǒng)提示管理員輸入顧客名和密碼。(2)管理員輸入自己顧客名和密碼,提交。(3)系統(tǒng)驗(yàn)證輸入名字和密碼,管理員登錄系統(tǒng)成功??蛇x操作流程如果輸入顧客名和(或)密碼無效,系統(tǒng)提示錯(cuò)誤信息,顧客可以重新輸入或中斷該用例。2.5.2開戶用例開戶用例表如表2-2表2-2開戶用例表用例名稱開戶用例描述本用例容許管理員通過客戶提供信息給客戶開戶參加者管理員狀態(tài)審查通過前置條件在本用例開始前,管理員必要登陸到系統(tǒng)中后置條件如果用例成功,則系統(tǒng)中會增長新建賬戶。否則,系統(tǒng)狀態(tài)不變?;静僮髁鞒坍?dāng)顧客想在銀行開戶時(shí),要向管理員提供賬戶名、身份證、密碼,用例啟動。系統(tǒng)提示管理員輸入需要要開戶客戶賬戶名、身份證、密碼。管理員輸入新客戶賬戶名、身份證、密碼,提交。系統(tǒng)保存新賬戶信息。2.5.3存款用例 存款用例表如表2-3表2-3存款用例表用例名稱存款用例描述本用例容許管理員借助客戶提供賬戶信息存款到帳戶中參加者管理員狀態(tài)審查通過前置條件在本用例開始前,管理員必要登陸到系統(tǒng)中后置條件如果用例成功,則客戶賬戶中存款金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變?;静僮髁鞒坍?dāng)客戶想讓管理員存款到自己賬戶時(shí),要向管理員提供賬戶名、身份證、密碼和存款金額,用例啟動。(1)系統(tǒng)提示管理員輸入賬戶名、身份證、密碼和存款額。(2)管理員輸入有關(guān)信息后提交。(3)系統(tǒng)更新賬戶有關(guān)信息??蛇x操作流程賬戶不存在或者無效,顯示提示信息,顧客可以重新輸入或終結(jié)該用例。2.5.4取款用例取款用例表如表2-4表2-4取款用例表用例名稱取款用例描述本用例容許管理員按照客戶規(guī)定從客戶帳戶中取款參加者管理員前置條件本用例開始前,管理員必要登錄到系統(tǒng)中后置條件如果用例成功,則客戶賬戶中存款金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變?;静僮髁鞒坍?dāng)客戶想存錢到自己賬戶時(shí),要向管理員提供賬戶名、身份證、密碼、取款額,用例啟動。系統(tǒng)提示管理員輸入賬戶名、身份證、密碼和取款額。管理員輸入有關(guān)信息后提交,賬戶中存款金額與否足夠支付所取款項(xiàng)。更新賬戶有關(guān)信息??蛇x操作流程賬戶中存款金額局限性,顯示提示信息,顧客可以重新輸入金額或終結(jié)該用例。2.5.5查詢用例查詢用例表如表2-5表2-5查詢用例表用例名稱查詢用例描述本用例容許管理員按照客戶規(guī)定從客戶帳戶中查詢余額參加者管理員前置條件本用例開始前,管理員必要登錄到系統(tǒng)中后置條件系統(tǒng)狀態(tài)不變。基本操作流程當(dāng)客戶想查詢到自己賬戶余額時(shí),要向管理員提供賬戶名、身份證、密碼,用例啟動。(1)系統(tǒng)提示管理員輸入賬戶名、身份證、密碼。(2)管理員輸入有關(guān)信息后提交。(3)顯示賬戶余額信息。2.5.6轉(zhuǎn)賬用例轉(zhuǎn)賬用例表如表2-6 表2-6轉(zhuǎn)賬用例表用例名稱轉(zhuǎn)賬用例描述本用例容許管理員按照顧客規(guī)定將資金從一種賬戶轉(zhuǎn)到另一種賬戶。參加者管理員狀態(tài)審查通過前置條件本用例開始前,管理員必要登陸到系統(tǒng)中。后置條件如果用例成功,則客戶賬戶中存款金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變?;静僮髁鞒坍?dāng)客戶規(guī)定轉(zhuǎn)帳時(shí),用例啟動系統(tǒng)提示管理員輸入轉(zhuǎn)賬人、密碼、收款人和所轉(zhuǎn)款項(xiàng)金額。管理員輸入有關(guān)信息后提交.系統(tǒng)確認(rèn)賬戶中存款金額與否足夠支付所取款項(xiàng)。系統(tǒng)更新賬戶有關(guān)信息??蛇x操作流程賬戶中存款金額局限性,顯示提示信息,顧客可以重新輸入金額或終結(jié)該用例。2.5.7修改密碼用例修改密碼用例表如表2-7表2-7修改密碼用例表用例名稱修改密碼用例描述本用例容許管理員按照顧客規(guī)定將本來密碼修改參加者管理員狀態(tài)審查通過前置條件本用例開始前,管理員必要登陸到系統(tǒng)中。后置條件如果用例成功,則客戶賬戶密碼發(fā)生變化?;静僮髁鞒坍?dāng)客戶規(guī)定修改密碼時(shí),用例啟動(1)系統(tǒng)提示管理員輸入賬戶名、身份證、密碼、新密碼、重復(fù)新密碼。(2)管理員輸入有關(guān)信息后提交.(3)系統(tǒng)更新賬戶有關(guān)信息。3設(shè)計(jì)過程及編碼 重要開發(fā)設(shè)計(jì)思想:一方面建立工程,運(yùn)用QT將界面和類頭文獻(xiàn)、實(shí)現(xiàn)文獻(xiàn)以及界面文獻(xiàn)完畢,并編寫代碼通過ui界面得到輸入信息,將界面信息存入數(shù)據(jù)庫(或與數(shù)據(jù)庫數(shù)據(jù)匹配)之后,再恰當(dāng)添加代碼把不同界面文獻(xiàn)通過按鈕事件鏈接,從而可以在不同界面之間跳轉(zhuǎn)[10]。 數(shù)據(jù)庫創(chuàng)立與使用數(shù)據(jù)庫創(chuàng)立[8]:終端狀態(tài)下,進(jìn)入mysql數(shù)據(jù)庫,在mysql中創(chuàng)立數(shù)據(jù)庫表格。終端下輸入命令:Mysql–uroot–p123456回車回車后便進(jìn)入Mysql 建表語句如下:mysql>createdatabasetestdb;//建立數(shù)據(jù)庫mysql>usetestdb;//設(shè)定當(dāng)前數(shù)據(jù)庫mysql>createtableadmin(adminidvarchar(30),admpasswdvarchar(30));//建立管理員信息數(shù)據(jù)庫表格mysql>insertintoadminvalues('abc','123');//添加數(shù)據(jù)mysql>createtableaccount(accountnamevarchar(30),accountNovarchar(30),accountpaswdvarchar(30),accountMoneydouble);//建立賬戶信息數(shù)據(jù)庫表格數(shù)據(jù)庫使用[9]: QSql

模塊提供了訪問

SQL

數(shù)據(jù)庫接口,這些接口獨(dú)立于操作系統(tǒng),獨(dú)立于數(shù)據(jù)庫系統(tǒng)。Qt

中有諸多支持這個(gè)接口類,這些類型通過

Qt

model/view

架構(gòu)將數(shù)據(jù)庫與顧客界面結(jié)合起來。數(shù)據(jù)庫連接由

QSqlDatabase

類對象表達(dá),Qt

通過

driver

與不同數(shù)據(jù)庫通訊。 在進(jìn)行

SQL

查詢之前,需要與數(shù)據(jù)庫建立連接。普通,在程序執(zhí)行前顧客需要調(diào)用創(chuàng)立連接函數(shù)以建立與數(shù)據(jù)庫連接數(shù)據(jù)庫設(shè)計(jì)思路:數(shù)據(jù)庫使用分為四步:(1)獲得界面信息(2)QsqlDatabase建立數(shù)據(jù)庫鏈接(3)QsqlQuery用于執(zhí)行SQL語句(4)更新數(shù)據(jù)庫數(shù)據(jù)。本設(shè)計(jì)重要應(yīng)用到數(shù)據(jù)庫鏈接、查詢、插入和更新操作。數(shù)據(jù)庫設(shè)計(jì)如下:1.

建立數(shù)據(jù)庫連接在進(jìn)行SQL查詢之前,需要與數(shù)據(jù)庫建立連接。普通,在程序執(zhí)行前顧客需要調(diào)用創(chuàng)立連接函數(shù)以建立與數(shù)據(jù)庫連接。例如:一方面要從界面得到輸入數(shù)據(jù)voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*連接數(shù)據(jù)庫得到管理員有關(guān)信息*/ AdminDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","", 3306,"root","123456");//它第一種參數(shù)指明了訪問數(shù)據(jù)庫driver;接下來,分別設(shè)立數(shù)據(jù)庫數(shù)據(jù)庫名,本地訪問,端口設(shè)立,顧客名,密碼;最后,打開數(shù)據(jù)庫連接[3]。 if(cflag){ Admina=adao.getAdminByIdAndPasswd(adminid,adminpasswd); qDebug(a.adminId.toLatin1()); qDebug(a.adminPasswd.toLatin1());//判斷管理員ID和密碼與否與數(shù)據(jù)庫中定義管理員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.

執(zhí)行select命令查詢

一旦建立連接,顧客就可以使用QSqlQuery類型執(zhí)行SQL命令。本設(shè)計(jì)中執(zhí)行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();然后可以解決查詢成果: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í),查詢記錄指針指向第一條記錄;接下來每調(diào)用一次next(),指針向后移一條記錄,直到指針指向記錄尾端(尾端是最后一條記錄下一種位置),這時(shí)next()返回false。3.

執(zhí)行insert命令先從界面得到需要插入數(shù)據(jù),連接好數(shù)據(jù)庫后,執(zhí)行INSERT命令,向數(shù)據(jù)庫插入新數(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)用訪問數(shù)據(jù)庫對象把對象存入數(shù)據(jù)庫*/ AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");//連接數(shù)據(jù)庫/*鏈接到數(shù)據(jù)庫后執(zhí)行insert命令更新數(shù)據(jù)庫[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為了更新一條記錄,一方面從QSqlTableModel中找到該記錄位置。然后抽出記錄,更新域值,再將記錄寫入數(shù)據(jù)庫[3]:從界面得到需要改動數(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ù)庫: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()); }}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(yīng)設(shè)計(jì)對相應(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工程辦法環(huán)節(jié)第一步:進(jìn)入QTCreator選取創(chuàng)立項(xiàng)目,第二步:選取QT控件項(xiàng)目,QTGui應(yīng)用圖3-1創(chuàng)立QT控件項(xiàng)目圖第三步:點(diǎn)擊下一步給項(xiàng)目起名稱第四步:點(diǎn)擊下一步,創(chuàng)立源碼文獻(xiàn)基本類信息圖3-2創(chuàng)立源碼文獻(xiàn)基本類信息圖第六步:下一步點(diǎn)擊完畢 這時(shí)候咱們就完畢了一種QT項(xiàng)目構(gòu)建,之后咱們就可以在其基本上依照設(shè)計(jì)需要添加QT設(shè)計(jì)界面類[7]。3.3添加QT設(shè)計(jì)界面類設(shè)計(jì)第一步:在項(xiàng)目名Bank上右擊選取新建文獻(xiàn)第二步:選取新建QT設(shè)計(jì)界面類第三步:選取DialogwithoutButtons界面模版第四步:填寫需要添加類名,頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱會隨類名變化而變化。添加類名是要注意類名首字母要大寫。第五步:點(diǎn)擊下一步,核對添加至項(xiàng)目無誤狀況下,點(diǎn)擊完畢。 這樣,咱們就將一種新類添加到項(xiàng)目中,并且將頭文獻(xiàn)、實(shí)現(xiàn)文獻(xiàn)、界面文獻(xiàn)一起創(chuàng)立完畢。3.4管理員登陸設(shè)計(jì) 第一步:按照3.1環(huán)節(jié)完畢項(xiàng)目構(gòu)建后,Adminlogin界面類會完畢,系統(tǒng)會提供一種空界面,在空界面上咱們依照管理員登陸界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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ù)庫中查詢出來得到登陸界面輸入數(shù)據(jù)并做判斷,登陸成功進(jìn)入主操作界面如果管理員ID和密碼不對的任意一種或都不對的,則輸出"selectdbfailed!!",并彈出提示對話框,但不是由于輸入錯(cuò)誤導(dǎo)致登錄失敗時(shí),則會輸出"connectdbfailed",并彈出提示對話框。相應(yīng)代碼如下:voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*連接數(shù)據(jù)庫得到管理員有關(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ù)庫中定義管理員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)擊退出則退出登陸界面,相應(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ī)定主操控界面重要設(shè)計(jì)開戶、查詢、存款、取款、轉(zhuǎn)賬、修改密碼和退出七個(gè)選項(xiàng),界面設(shè)計(jì)過程如下:第一步:按照3.2環(huán)節(jié)新建界面模版,填寫Adminall類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。第二步:在建好空界面模版上,按照主操控界面用例規(guī)定,添加Button按鈕,并修改Button按鈕名稱。完畢界面圖如下:圖3-4主界面設(shè)計(jì)圖第三步:給各個(gè)按鈕創(chuàng)立連接分別點(diǎn)擊不同按鈕會進(jìn)入不同界面,每個(gè)cliked都會相應(yīng)一種connect,通過connect進(jìn)入相應(yīng)界面。重要代碼如下: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開戶設(shè)計(jì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,開戶需要有賬戶名、身份證、密碼、和重復(fù)密碼四項(xiàng)輸入。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫Addaccount類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照開戶界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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開戶界面設(shè)計(jì)圖第四步:獲取界面填寫數(shù)據(jù)存入數(shù)據(jù)庫設(shè)計(jì)。系統(tǒng)從管理員輸入數(shù)據(jù)得到信息,并把信息存儲到數(shù)據(jù)庫中,開戶成功則會彈出"createaccountsuccess!!"對話框,如果開戶失敗則會彈出"createaccountfailed!!"對話框。如果開戶成功,點(diǎn)擊提示對話框擬定按鈕(如下圖),這樣就得到了界面數(shù)據(jù),并用數(shù)據(jù)來構(gòu)建賬戶對象,調(diào)用訪問數(shù)據(jù)庫類,并把數(shù)據(jù)存入數(shù)據(jù)庫,最后返回主操控界面。圖3-6開戶成功界面演示圖數(shù)據(jù)庫設(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)用訪問數(shù)據(jù)庫對象把對象存入數(shù)據(jù)庫*/ 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();}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(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查詢設(shè)計(jì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,查詢界面應(yīng)有賬戶名、身份證、密碼、余額(顯示)。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫Seachaccount類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照查詢界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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查詢界面設(shè)計(jì)圖第四步:當(dāng)管理員在界面內(nèi)輸入一種賬戶信息時(shí),系統(tǒng)會通過輸入賬戶信息,將賬戶信息傳遞給dao對象,dao對象在已存在數(shù)據(jù)庫中進(jìn)行查找,并將查找成果顯示在余額中。重要代碼如下:voidSeachAccount::seachAccount(){/*得到顧客名、身份證號和密碼*/QStringaname=ui->aname->text();QStringapasswd=ui->passwd->text();Accounta(aname,aid,apasswd,0.0);/*把這兩個(gè)信息傳給dao對象與數(shù)據(jù)庫中信息去匹配,并將余額顯示*/AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){ a=adao.getAccountByNameAndIdAndPasswd(a); } ui->money->setText(QString::number(a.getAccountMoney()));}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(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ì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,存款界面應(yīng)有賬戶名、身份證、密碼、存款。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫Deposite類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照存款界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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)輸入一種賬戶信息和存款額時(shí),系統(tǒng)會通過輸入賬戶信息,在數(shù)據(jù)庫中查找相相應(yīng)賬戶,并將存款額傳遞給ado對象保存到相應(yīng)賬戶下,點(diǎn)擊存款后彈出相應(yīng)提示對話框。重要代碼如下: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(); }}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(yīng)設(shè)計(jì)Accountdao.cpp中相應(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ì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,取款界面應(yīng)有賬戶名、身份證、密碼、取款。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫Withdraw類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照取款界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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)輸入一種賬戶信息和取款額時(shí),系統(tǒng)會通過輸入賬戶信息,在數(shù)據(jù)庫中查找相相應(yīng)賬戶,并將取款額傳遞給ado對象保存到相應(yīng)賬戶下,點(diǎn)擊存款后彈出相應(yīng)提示對話框。重要代碼如下: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(); }}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(yīng)設(shè)計(jì)Accountdao.cpp中相應(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ì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,轉(zhuǎn)賬界面應(yīng)有轉(zhuǎn)賬人、密碼、收款人、金額。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫Transfer類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照轉(zhuǎn)賬界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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)會通過輸入信息,把有關(guān)轉(zhuǎn)賬信息包裝成對象,,并將轉(zhuǎn)賬金額傳遞給ado對象保存到相應(yīng)賬戶下,點(diǎn)擊轉(zhuǎn)賬后彈出相應(yīng)提示對話框。重要代碼如下: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()); }}通過accountdao.cpp鏈接到數(shù)據(jù)庫保存相應(yīng)設(shè)計(jì)Accountdao.cpp中相應(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ì)第一步:分析。依照個(gè)人賬戶管理系統(tǒng)需求分析可知,修改密碼界面應(yīng)有賬戶名、身份證、密碼、新密碼、重復(fù)新密碼。第二步:按需求進(jìn)行設(shè)計(jì)。按照3.2環(huán)節(jié)新建界面模版,填寫ChangePasswd類頭文獻(xiàn)名、源文獻(xiàn)名和界面文獻(xiàn)名稱。 第三步:在提供空界面上咱們依照修改密碼界面用例,來添加組件。(1)選中ui界面文獻(xiàn),進(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)輸入賬戶名、身份證、密碼、新密碼、重復(fù)新密碼并點(diǎn)擊修改后,系統(tǒng)會通過輸入信息,把有關(guān)修改信息包裝成對象,,并將轉(zhuǎn)賬金額傳遞給ado對象保存到相應(yīng)賬戶下,點(diǎn)擊點(diǎn)擊修改后會彈出相應(yīng)提示對話框。重要代碼如下: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中相應(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功能測試咱們以加中華人民共和國農(nóng)業(yè)銀行為例,進(jìn)行測試4.1管理員登陸界面顧客進(jìn)入系統(tǒng)一方面會看到如下界面圖4-1管理員登陸界面4.2主操控界面對的輸入管理員ID和密碼后進(jìn)入賬戶管理主界面圖4-2主控制界面4.3開戶界面 從賬戶管理主界面選取要執(zhí)行任務(wù),一方面進(jìn)行開戶,選取開戶進(jìn)入開戶界面圖4-3開戶界面按照規(guī)定輸入賬戶名、身份證號、密碼,選取開戶,開戶成功則會浮現(xiàn)開戶成功提示對話框。圖4-4開戶成功提示對話框4.4查詢界面 選取查詢選項(xiàng)進(jìn)入查詢界面圖4-5查詢界面4.5存款界面圖4-6存款界面輸入賬戶名、身份證、密碼、存款額,點(diǎn)擊存款,存款成功顯示提示對話框圖4-7存款成功提示對話框存款失敗顯示提示對話框圖4-8存款失敗提示對話框4.6取款界面圖4-9取款界面輸入賬戶名、身份證、密碼和取款額點(diǎn)擊取款成功話彈出成功提示對話框圖4-10取款成功提示對話框4.7轉(zhuǎn)賬界面圖4-11轉(zhuǎn)賬界面輸入轉(zhuǎn)賬人賬戶名、密碼和收款人賬戶名以及轉(zhuǎn)賬金額,點(diǎn)擊轉(zhuǎn)賬,轉(zhuǎn)賬成功彈出success提示對話框圖4-12轉(zhuǎn)賬成功提示對話框如果余額局限性在則轉(zhuǎn)賬失敗圖4-13轉(zhuǎn)賬失敗

溫馨提示

  • 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

提交評論