银行个人账户信息管理系统样本_第1页
银行个人账户信息管理系统样本_第2页
银行个人账户信息管理系统样本_第3页
银行个人账户信息管理系统样本_第4页
银行个人账户信息管理系统样本_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:银行个人账户信息管理系统银行个人账户管理系统摘要 账户管理是当前每个银行业务流程中最重要一项,在银行各项业务流程中起着承上启下作用,可谓是银行业务重中之重。 本文针对上述问题,采用软件工程开发原理,根据软件工程流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一种银行个人账户信息管理系统。采用Linux平台作为开发环境,QT、C++作为开发工具,面向对象化设计,重要设计了管理员登录、新顾客开户、存取款、转账、查询业务,解决了银行当前操作繁琐流程,以便快捷实现了银行账户管理基本任务。本设计设计银行个人账户信息管理系统,能使银行工作人员轻松快捷完毕对账户管理任务,使银行账目管理工作系统化、快捷化、规范化、自动化、高效化。核心词:个人信息管理;QT;C++;面向对象;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开发背景 11.2国内外现状 11.3自动化管理银行竞争优势分析 22系统需求分析 32.1开发设计思想 32.2可行性研究 32.3需求分析 42.4系统流程图设计 52.5用例描述 63设计过程及编码 103.1 数据库创立与使用 103.2建立Bank工程办法环节 143.3添加QT设计界面类设计 153.4管理员登陆设计 153.5主操控界面设计 173.6开户设计 183.7查询设计 203.8存款设计 213.9取款设计 233.10转账设计 263.11修改密码设计 284功能测试 304.1管理员登陆界面 304.2主操控界面 304.3开户界面 304.4查询界面 314.5存款界面 324.6取款界面 334.7转账界面 344.8修改密码界面 354.9判断与评估 365应用与维护 376总结 38参照文献 39道谢 40附录 411本课题研究意义和目1.1开发背景随着社会经济发展,信息化限度不断进一步,银行老式业务己愈来愈不能满足银行客户需要。随着国内经济日益发展,国内银行业将面临更加激烈同行业竞争,如何提供更优质服务,如何吸引更多客户,如何运用计算机技术加强银行个人帐户信息管理、进行银行业务再造,提高银行工作效率和业务竟争能力是摆在各家银行面前迫切需要解决问题。随着银行业务不断发展,业务种类也是日益繁多,而各项业务解决互有差别,这就对银行进入电子化水平和相应管理水平提出了规定。如何运用电子化手段构建一种高效统一、通用灵活系统来管理各种各样业务,是每个商业银行所要研究课题。支持决策系统,需要在数据库基本上,进行联机分析解决,每次解决数据量大,响应时间长。特别是银行每天都要解决大量开户、存取款、转账等业务,而银行人员现行应用系统填写内容较为复杂、流程过于繁琐,已经是不能满足客户对于办理业务时间上快捷性规定,做好存开户、存取款等是银行工作重要环节,然而要有效解决必要要有良好程序和数据管理系统来建立一种良好软件系统来实现迅速、有效、精确、安全解决银行事物。银行个人账户管理系统重要用于银行储蓄管理,它可以协助咱们有效、精确、并且高效实现完毕银行柜台业务。此系统操作以便效率、安全性高,只要拥有管理员账号和密码(也就是说是银行工作人员),就可觉得顾客做开户,开户之后就可以以便为顾客办理各种柜台业务。1.2国内外现状在信息化发展极为迅速当今社会,金融经济日益趋向全球化,同行业竞争变得更加激烈,国外银行业掀起了一股比上世纪更为声势浩大信息化革命浪潮。国外银行业信息化基本设施框架已具备完善、电子银行体系已走进成熟阶段,信息化建设正由业务层向管理决策层推动。国际银行业普遍存在着管理决策信息化、网点扩张虚拟化、产品服务客户化以及非核心业务外包化等趋势。在国内,随着金融市场逐渐开放,银行竞争日趋激烈。银行领域竞争将紧扣着客户,特别是优质客户这一稀缺资源进行。但是在外资银行涌入中华人民共和国进程中,咱们很容易地看到这个现象:外资银行作为中华人民共和国市场日后者,国内资源暂时是它们弱项,恰恰这一方面正是国内银行竞争优势所在。然而,客户资源经营管理的确国内银行软肋。国内多数银行客户关系管理还只是流于形式,这个问题是相称令人深思。运用客户个人账户管理体系来进行客户关系管理正是应对将来银行客户资源竞争利器。客户个人账户管理正是基于计算机技术和平台,通过对银行业务流程重组来整合客户信息资源,以更科学有效办法来管理客户信息,在银行内部实现信息和资源共享,从而减少银行营运成本,为客户提供更经济、快捷、周到产品和服务来吸引客户,最后达到银行价值最大化。1.3自动化管理银行竞争优势分析由于社会信息化不断进一步发展和经济金融体制不断进一步化,在知识经济和银行电子化建设发展中,国内经济构造也在不断地变化,社会对于金融服务需求日新月异,金融服务内涵和外延变得更加丰富。这就对于银行管理提出了新规定。银行管理日益趋向信息化、电子化、多元化。银行电子化和当代化管理水平已经成为银行竞争力重要构成要素,成为银行市场运作、金融创新、量化管理技术基本。大体上来说,银行账户管理系统化、自动化和规范化,使银行获得如下几方面优势:(1)差别化竞争优势;(2)低成本竞争优势;(3)目的集聚性优势;(4)知识型优势;(5)产业集聚型优势。2系统需求分析2.1开发设计思想本系统开发设计思想:系统应当在银行规定前提下,满足银行对于个人账户管理需求适应银行工作人员寻常工作需要,并应达到操作工程简便易行、安全可靠规定。依照系统设计目的和重要功能和对开发工具和环境选取,通过软件工程设计办法,对系统可行性进行分析,拟定方案可行性。依照系统需求得到需求分析,在需求分析基本上进行设计编码,完毕后对系统进行功能测试和应用维护。系统采用模块化程序设计办法,不但可以在系统设计时以便系统功能各种组合与修改,又可以以便开发人员日后对程序修改和和维护。系统要具备数据库维护功能,虽然以便顾客对数据增长修改等操作。2.2系统设计目的和重要功能通过银行个人账户管理系统,可以使银行对于个人账户管理实现系统化、自动化、简便化,去除繁琐信息录入,从而以便快捷使银行达到高效管理个人账户目。开发重要任务是使工作人员可以轻松以便快捷完毕对个人账户管理任务。 设计银行个人账户管理系统应当具备最基本账户管理功能,以及对客户信息变化记录功能,设计银行个人账户信息管理系统需要完毕重要功能是: 1、银行工作人员即管理员登录 2、管理员对客户开户操作(涉及顾客名、身份证、密码填写) 3、对已有客户(账号)查询操作 4、对已有客户(账号)存款操作 5、对已有客户(账号)取款操作 6、对已有客户(账号)修改密码操作 7、对已有客户(账号)之间转账操作2.2.3开发工具和环境开发工具:QT4.8.1、C++运营环境:LINUX或UNIX2.2可行性研究可行性研究能使新系统达到以最小开发成本获得最佳经济效益。可行性研究目,是依照开发管理信息系统祈求,通过初步调查和系统目的分析,对要开发银行个人帐户管理信息系统从技术上、经济上、资源上和管理上进行与否可行研究。这是一项保证资源合理使用、避免失误和挥霍重要工作。由于实现了当代化信息管理系统功能,这样就减少了人工消耗,也就是说一台机器代替了各种人工作,这样就可以减少人员消耗上开支。不但如此,实现银行系统管理可以迅速应对各种业务,在效率上也提高了速度,为创造更大价值提供了前提条件。系统对于计算机硬件、网络和系统条件规定并不高,这样就以便了,银行信息管理系统实行和普及应用。对于管理和经费问题上,都是非常透明和乐于让人接受。系统实行运营后,并不需要特定工作人员去管理,咱们只需要一种管理员来管理一台装备。因此在管理经费上是不会有多大消耗。由于是电脑管理系统,因此对于账户管理是相称高。而银行信息管理系统运营过程不但不违背银行管理规章制度,还会有效地实现信息迅速存取。由于不但节约了银行自身成本并且她管理效率也会提高了。2.3需求分析 构造设计第一种阶段就是需求分析,这个阶段重要是为了收集系统设计过程中所要用到基本数据、数据构造和数据解决流程,从而组织成尽量详细数据,以便后来设计需要。管理员管理管理员管理存款取款转账修改密码账户信息图2-1数据流图 通过对银行个人账户管理内容及数据流分析,咱们便可以列出设计数据项:开户信息表。涉及:账户名、身份证、密码、重复密码。查询信息表。涉及:账户名、身份证、密码、余额。存款信息表。涉及:账户名、身份证、密码、存款额。取款信息表。涉及:账户名、身份证、密码、取款额。转账信息表。涉及:转账人、密码、收款人、金额。修改密码信息表。涉及:账户名、身份证、密码、新密码、重复新密码。2.4系统流程图设计 这一阶段设计是基于需求分析上,通过需求分析来设计出可以满足顾客需求各种实体以及它们之间联系,以以便下一步逻辑构造设计。 依照系统设计规定系统流程图设计如下:YYes进入主窗口退出账户名身份证密码重复密码账户名身份证密码余额账户名身份证密码存款额账户名身份证密码取款额转账人转出账号密码收款人转入账号金额账户名身份证密码新密码重复新密码NO留在登陆界面开户查询存款取款转账修改取消主窗口取消取消取消取消取消管理员登录开始顾客名密码开户查询存款取款转账修改密码图2-2系统流程图2.5用例描述2.5.1管理员登录取例 管理员登录取例表如表2-1表2-1管理员登录取例表用例名称登录用例描述描述了管理员如何登录到系统中参加者管理员状态审查通过前置条件无后置条件如果用例成功,则管理员登录到系统之。否则,系统状态不变。基本操作流程当管理员想登录到银行信息系统中时,用例启动。(1)系统提示管理员输入顾客名和密码。(2)管理员输入自己顾客名和密码,提交。(3)系统验证输入名字和密码,管理员登录系统成功。可选操作流程如果输入顾客名和(或)密码无效,系统提示错误信息,顾客可以重新输入或中断该用例。2.5.2开户用例开户用例表如表2-2表2-2开户用例表用例名称开户用例描述本用例容许管理员通过客户提供信息给客户开户参加者管理员状态审查通过前置条件在本用例开始前,管理员必要登陆到系统中后置条件如果用例成功,则系统中会增长新建账户。否则,系统状态不变。基本操作流程当顾客想在银行开户时,要向管理员提供账户名、身份证、密码,用例启动。系统提示管理员输入需要要开户客户账户名、身份证、密码。管理员输入新客户账户名、身份证、密码,提交。系统保存新账户信息。2.5.3存款用例 存款用例表如表2-3表2-3存款用例表用例名称存款用例描述本用例容许管理员借助客户提供账户信息存款到帐户中参加者管理员状态审查通过前置条件在本用例开始前,管理员必要登陆到系统中后置条件如果用例成功,则客户账户中存款金额发生变化。否则,系统状态不变。基本操作流程当客户想让管理员存款到自己账户时,要向管理员提供账户名、身份证、密码和存款金额,用例启动。(1)系统提示管理员输入账户名、身份证、密码和存款额。(2)管理员输入有关信息后提交。(3)系统更新账户有关信息。可选操作流程账户不存在或者无效,显示提示信息,顾客可以重新输入或终结该用例。2.5.4取款用例取款用例表如表2-4表2-4取款用例表用例名称取款用例描述本用例容许管理员按照客户规定从客户帐户中取款参加者管理员前置条件本用例开始前,管理员必要登录到系统中后置条件如果用例成功,则客户账户中存款金额发生变化。否则,系统状态不变。基本操作流程当客户想存钱到自己账户时,要向管理员提供账户名、身份证、密码、取款额,用例启动。系统提示管理员输入账户名、身份证、密码和取款额。管理员输入有关信息后提交,账户中存款金额与否足够支付所取款项。更新账户有关信息。可选操作流程账户中存款金额局限性,显示提示信息,顾客可以重新输入金额或终结该用例。2.5.5查询用例查询用例表如表2-5表2-5查询用例表用例名称查询用例描述本用例容许管理员按照客户规定从客户帐户中查询余额参加者管理员前置条件本用例开始前,管理员必要登录到系统中后置条件系统状态不变。基本操作流程当客户想查询到自己账户余额时,要向管理员提供账户名、身份证、密码,用例启动。(1)系统提示管理员输入账户名、身份证、密码。(2)管理员输入有关信息后提交。(3)显示账户余额信息。2.5.6转账用例转账用例表如表2-6 表2-6转账用例表用例名称转账用例描述本用例容许管理员按照顾客规定将资金从一种账户转到另一种账户。参加者管理员状态审查通过前置条件本用例开始前,管理员必要登陆到系统中。后置条件如果用例成功,则客户账户中存款金额发生变化。否则,系统状态不变。基本操作流程当客户规定转帐时,用例启动系统提示管理员输入转账人、密码、收款人和所转款项金额。管理员输入有关信息后提交.系统确认账户中存款金额与否足够支付所取款项。系统更新账户有关信息。可选操作流程账户中存款金额局限性,显示提示信息,顾客可以重新输入金额或终结该用例。2.5.7修改密码用例修改密码用例表如表2-7表2-7修改密码用例表用例名称修改密码用例描述本用例容许管理员按照顾客规定将本来密码修改参加者管理员状态审查通过前置条件本用例开始前,管理员必要登陆到系统中。后置条件如果用例成功,则客户账户密码发生变化。基本操作流程当客户规定修改密码时,用例启动(1)系统提示管理员输入账户名、身份证、密码、新密码、重复新密码。(2)管理员输入有关信息后提交.(3)系统更新账户有关信息。3设计过程及编码 重要开发设计思想:一方面建立工程,运用QT将界面和类头文献、实现文献以及界面文献完毕,并编写代码通过ui界面得到输入信息,将界面信息存入数据库(或与数据库数据匹配)之后,再恰当添加代码把不同界面文献通过按钮事件链接,从而可以在不同界面之间跳转[10]。 数据库创立与使用数据库创立[8]:终端状态下,进入mysql数据库,在mysql中创立数据库表格。终端下输入命令:Mysql–uroot–p123456回车回车后便进入Mysql 建表语句如下:mysql>createdatabasetestdb;//建立数据库mysql>usetestdb;//设定当前数据库mysql>createtableadmin(adminidvarchar(30),admpasswdvarchar(30));//建立管理员信息数据库表格mysql>insertintoadminvalues('abc','123');//添加数据mysql>createtableaccount(accountnamevarchar(30),accountNovarchar(30),accountpaswdvarchar(30),accountMoneydouble);//建立账户信息数据库表格数据库使用[9]: QSql

模块提供了访问

SQL

数据库接口,这些接口独立于操作系统,独立于数据库系统。Qt

中有诸多支持这个接口类,这些类型通过

Qt

model/view

架构将数据库与顾客界面结合起来。数据库连接由

QSqlDatabase

类对象表达,Qt

通过

driver

与不同数据库通讯。 在进行

SQL

查询之前,需要与数据库建立连接。普通,在程序执行前顾客需要调用创立连接函数以建立与数据库连接数据库设计思路:数据库使用分为四步:(1)获得界面信息(2)QsqlDatabase建立数据库链接(3)QsqlQuery用于执行SQL语句(4)更新数据库数据。本设计重要应用到数据库链接、查询、插入和更新操作。数据库设计如下:1.

建立数据库连接在进行SQL查询之前,需要与数据库建立连接。普通,在程序执行前顾客需要调用创立连接函数以建立与数据库连接。例如:一方面要从界面得到输入数据voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*连接数据库得到管理员有关信息*/ AdminDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","", 3306,"root","123456");//它第一种参数指明了访问数据库driver;接下来,分别设立数据库数据库名,本地访问,端口设立,顾客名,密码;最后,打开数据库连接[3]。 if(cflag){ Admina=adao.getAdminByIdAndPasswd(adminid,adminpasswd); qDebug(a.adminId.toLatin1()); qDebug(a.adminPasswd.toLatin1());//判断管理员ID和密码与否与数据库中定义管理员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.

执行select命令查询

一旦建立连接,顾客就可以使用QSqlQuery类型执行SQL命令。本设计中执行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;}第一次调用query.next()时,查询记录指针指向第一条记录;接下来每调用一次next(),指针向后移一条记录,直到指针指向记录尾端(尾端是最后一条记录下一种位置),这时next()返回false。3.

执行insert命令先从界面得到需要插入数据,连接好数据库后,执行INSERT命令,向数据库插入新数据。voidAddAccount::createAccount(){ /*从界面得到数据*/ QStringaname=ui->accountName->text(); QStringaid=ui->accountId->text(); QStringapaswd=ui->accountPasswd->text(); Accounta(aname,aid,apaswd,0.0); /*调用访问数据库对象把对象存入数据库*/ AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456");//连接数据库/*链接到数据库后执行insert命令更新数据库[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中找到该记录位置。然后抽出记录,更新域值,再将记录写入数据库[3]:从界面得到需要改动数据信息: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链接到数据库保存相应设计对相应数据进行更新: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工程办法环节第一步:进入QTCreator选取创立项目,第二步:选取QT控件项目,QTGui应用图3-1创立QT控件项目图第三步:点击下一步给项目起名称第四步:点击下一步,创立源码文献基本类信息图3-2创立源码文献基本类信息图第六步:下一步点击完毕 这时候咱们就完毕了一种QT项目构建,之后咱们就可以在其基本上依照设计需要添加QT设计界面类[7]。3.3添加QT设计界面类设计第一步:在项目名Bank上右击选取新建文献第二步:选取新建QT设计界面类第三步:选取DialogwithoutButtons界面模版第四步:填写需要添加类名,头文献名、源文献名和界面文献名称会随类名变化而变化。添加类名是要注意类名首字母要大写。第五步:点击下一步,核对添加至项目无误状况下,点击完毕。 这样,咱们就将一种新类添加到项目中,并且将头文献、实现文献、界面文献一起创立完毕。3.4管理员登陆设计 第一步:按照3.1环节完毕项目构建后,Adminlogin界面类会完毕,系统会提供一种空界面,在空界面上咱们依照管理员登陆界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。(2)选取InputWidgets下LineEdit,给界面添加输入框。(3)选取Buttons下PushButton,给界面添加按钮。(4)添加完后如下图图3-3管理员登录设计界面图 (5)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。第二步:功能设计 adminid:管理员ID adminpasswd:密码adminid和adminpasswd从数据库中查询出来得到登陆界面输入数据并做判断,登陆成功进入主操作界面如果管理员ID和密码不对的任意一种或都不对的,则输出"selectdbfailed!!",并弹出提示对话框,但不是由于输入错误导致登录失败时,则会输出"connectdbfailed",并弹出提示对话框。相应代码如下:voidAdminLogin::adminLogin(){ QStringadminid=ui->adminid->text(); QStringadminpasswd=ui->adminpasswd->text(); /*连接数据库得到管理员有关信息*/ 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和密码与否与数据库中定义管理员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和密码输入后点击登录则进入主操控界面,点击退出则退出登陆界面,相应代码如下: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主操控界面设计 按需求分析规定主操控界面重要设计开户、查询、存款、取款、转账、修改密码和退出七个选项,界面设计过程如下:第一步:按照3.2环节新建界面模版,填写Adminall类头文献名、源文献名和界面文献名称。第二步:在建好空界面模版上,按照主操控界面用例规定,添加Button按钮,并修改Button按钮名称。完毕界面图如下:图3-4主界面设计图第三步:给各个按钮创立连接分别点击不同按钮会进入不同界面,每个cliked都会相应一种connect,通过connect进入相应界面。重要代码如下: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开户设计第一步:分析。依照个人账户管理系统需求分析可知,开户需要有账户名、身份证、密码、和重复密码四项输入。第二步:按需求进行设计。按照3.2环节新建界面模版,填写Addaccount类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照开户界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-5开户界面设计图第四步:获取界面填写数据存入数据库设计。系统从管理员输入数据得到信息,并把信息存储到数据库中,开户成功则会弹出"createaccountsuccess!!"对话框,如果开户失败则会弹出"createaccountfailed!!"对话框。如果开户成功,点击提示对话框拟定按钮(如下图),这样就得到了界面数据,并用数据来构建账户对象,调用访问数据库类,并把数据存入数据库,最后返回主操控界面。图3-6开户成功界面演示图数据库设计需求重要代码如下:voidAddAccount::createAccount(){ /*从界面得到数据*/ QStringaname=ui->accountName->text(); QStringaid=ui->accountId->text(); QStringapaswd=ui->accountPasswd->text(); Accounta(aname,aid,apaswd,0.0); /*调用访问数据库对象把对象存入数据库*/ 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链接到数据库保存相应设计 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查询设计第一步:分析。依照个人账户管理系统需求分析可知,查询界面应有账户名、身份证、密码、余额(显示)。第二步:按需求进行设计。按照3.2环节新建界面模版,填写Seachaccount类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照查询界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-7查询界面设计图第四步:当管理员在界面内输入一种账户信息时,系统会通过输入账户信息,将账户信息传递给dao对象,dao对象在已存在数据库中进行查找,并将查找成果显示在余额中。重要代码如下:voidSeachAccount::seachAccount(){/*得到顾客名、身份证号和密码*/QStringaname=ui->aname->text();QStringapasswd=ui->passwd->text();Accounta(aname,aid,apasswd,0.0);/*把这两个信息传给dao对象与数据库中信息去匹配,并将余额显示*/AccountDaoadao; boolcflag=adao.connectDb("QMYSQL","testdb","",3306,"root","123456"); if(cflag){ a=adao.getAccountByNameAndIdAndPasswd(a); } ui->money->setText(QString::number(a.getAccountMoney()));}通过accountdao.cpp链接到数据库保存相应设计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存款设计第一步:分析。依照个人账户管理系统需求分析可知,存款界面应有账户名、身份证、密码、存款。第二步:按需求进行设计。按照3.2环节新建界面模版,填写Deposite类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照存款界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-8存款界面设计图第四步:当管理员在界面内输入一种账户信息和存款额时,系统会通过输入账户信息,在数据库中查找相相应账户,并将存款额传递给ado对象保存到相应账户下,点击存款后弹出相应提示对话框。重要代码如下: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链接到数据库保存相应设计Accountdao.cpp中相应代码: 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取款设计第一步:分析。依照个人账户管理系统需求分析可知,取款界面应有账户名、身份证、密码、取款。第二步:按需求进行设计。按照3.2环节新建界面模版,填写Withdraw类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照取款界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-9取款界面设计第四步:当管理员在界面内输入一种账户信息和取款额时,系统会通过输入账户信息,在数据库中查找相相应账户,并将取款额传递给ado对象保存到相应账户下,点击存款后弹出相应提示对话框。重要代码如下: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链接到数据库保存相应设计Accountdao.cpp中相应代码设计: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转账设计第一步:分析。依照个人账户管理系统需求分析可知,转账界面应有转账人、密码、收款人、金额。第二步:按需求进行设计。按照3.2环节新建界面模版,填写Transfer类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照转账界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-10转账界面设计第四步:当管理员在界面内输入转账人、密码、收款人、金额时,系统会通过输入信息,把有关转账信息包装成对象,,并将转账金额传递给ado对象保存到相应账户下,点击转账后弹出相应提示对话框。重要代码如下: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链接到数据库保存相应设计Accountdao.cpp中相应代码: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修改密码设计第一步:分析。依照个人账户管理系统需求分析可知,修改密码界面应有账户名、身份证、密码、新密码、重复新密码。第二步:按需求进行设计。按照3.2环节新建界面模版,填写ChangePasswd类头文献名、源文献名和界面文献名称。 第三步:在提供空界面上咱们依照修改密码界面用例,来添加组件。(1)选中ui界面文献,进入ui设计界面,选取DisplayWidgets下Label,给ui界面添加文本框,双击文本框,修改文本框显示内容。 (2)选取InputWidgets下LineEdit,给界面添加输入框。 (3)选取Buttons下PushButton,给界面添加按钮。(4)添加组件完毕后,考虑到密码保护,咱们要将密码显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认Normal改换成Password。 (5)添加完后如下图图3-11修改密码设计界面第四步:当管理员在界面内输入账户名、身份证、密码、新密码、重复新密码并点击修改后,系统会通过输入信息,把有关修改信息包装成对象,,并将转账金额传递给ado对象保存到相应账户下,点击点击修改后会弹出相应提示对话框。重要代码如下: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中相应代码: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功能测试咱们以加中华人民共和国农业银行为例,进行测试4.1管理员登陆界面顾客进入系统一方面会看到如下界面图4-1管理员登陆界面4.2主操控界面对的输入管理员ID和密码后进入账户管理主界面图4-2主控制界面4.3开户界面 从账户管理主界面选取要执行任务,一方面进行开户,选取开户进入开户界面图4-3开户界面按照规定输入账户名、身份证号、密码,选取开户,开户成功则会浮现开户成功提示对话框。图4-4开户成功提示对话框4.4查询界面 选取查询选项进入查询界面图4-5查询界面4.5存款界面图4-6存款界面输入账户名、身份证、密码、存款额,点击存款,存款成功显示提示对话框图4-7存款成功提示对话框存款失败显示提示对话框图4-8存款失败提示对话框4.6取款界面图4-9取款界面输入账户名、身份证、密码和取款额点击取款成功话弹出成功提示对话框图4-10取款成功提示对话框4.7转账界面图4-11转账界面输入转账人账户名、密码和收款人账户名以及转账金额,点击转账,转账成功弹出success提示对话框图4-12转账成功提示对话框如果余额局限性在则转账失败图4-13转账失败

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论