《银行个人账户信息管理系统范本.docx》由会员分享,可在线阅读,更多相关《银行个人账户信息管理系统范本.docx(49页珍藏版)》请在三一办公上搜索。
1、 题目: 银行个人账户信息管理系统 银行个人账户管理系统摘要账户管理是现在每个银行的业务流程中的最重要的一项,在银行的各项业务流程中起着承上启下的作用,可谓是银行业务的重中之重。本文针对上述问题,采用软件工程的开发原理,依据软件工程的流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行个人账户信息管理系统。采用Linux平台作为开发环境,QT、C+作为开发工具,面向对象化设计,主要设计了管理员的登录、新用户的开户、存取款、转账、查询业务,解决了银行目前操作的繁琐流程,方便快捷的实现了银行账户管理的基本任务。本设计设计的银行个人账户信息管理系统,
2、能使银行工作人员轻松快捷的完成对账户管理的任务,使银行的账目管理工作系统化、快捷化、规范化、自动化、高效化。关键词:个人信息管理;QT;C+;面向对象; Personal bank account management systemABSTRACTAccount management is one of the most important for each banks business processes, which plays a connecting role in the banks various business processes. It can be described as
3、 the top most important transaction in banking. For the above problems, in this paper, adopted the development of software engineering principles, based on the software engineering process specification process, in accordance with the needs analysis, outline design, detailed design, program coding,
4、testing, software applications, and software maintenance process, we developed a personal bank account information management systems. Used the Linux platform as a development environment, and used QT, C + + as a development tool, object-oriented design, this paper major designed of the administrato
5、rs login, new user accounts, withdrawals, transfers, business inquiries, it solved the cumbersome operating process of banks , and achieve a basic bank account management tasks convenient.This design designed a personal bank account information management system, which enables the bank staff to comp
6、lete the account management tasks quickly and easily, so the management of the bank accounts can become systematic, efficient, standardized, automated and efficient.Key words:Personal Information Management (PIM); QT; C+;Object-oriented目录1本课题的研究意义和目的11.1开发背景11.2国内外现状11.3自动化管理银行竞争优势的分析22系统需求分析32.1开发设
7、计思想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参考文
8、献39致谢40附录411本课题的研究意义和目的1.1开发背景随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。随着我国经济的日益发展,我国的银行业将面临更加激烈的同行业竞争,如何提供更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行个人帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的迫切需要解决的问题。随着银行业务不断发展,业务的种类也是日益繁多,而各项业务的处理互有差异,这就对银行进入电子化水平和相应的管理水平提出了要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银
9、行所要研究的课题。支持决策的系统,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。尤其是银行每天都要处理大量的开户、存取款、转账等业务,而银行人员现行应用的系统填写内容较为复杂、流程过于繁琐,已经是不能满足客户对于办理业务时间上的快捷性的要求,做好存开户、存取款等是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。银行个人账户管理系统主要用于银行的储蓄管理,它可以帮助我们有效、准确、并且高效实现的完成银行柜台业务。此系统操作方便效率、安全性高,只要拥有管理员的账号和密码(也就是说是银行的
10、工作人员),就可以为用户做开户,开户之后就可以方便的为用户办理各种柜台业务。1.2 国内外现状在信息化发展极为迅速的当今社会,金融经济日益趋向全球化,同行业竞争变得更加激烈,国外银行业掀起了一股比上世纪更为声势浩大的信息化革命浪潮。国外银行业信息化基础设施框架已具备完善、电子银行体系已走进成熟阶段,信息化建设正由业务层向管理决策层推进。国际银行业普遍存在着管理决策信息化、网点扩张虚拟化、产品服务客户化以及非核心业务外包化等趋势。在国内,随着金融市场的逐渐开放,银行竞争日趋激烈。银行领域的竞争将紧紧围绕着客户,尤其是优质客户这一稀缺资源进行。但是在外资银行涌入中国的进程中,我们很容易地看到这个现
11、象:外资银行作为中国市场的后来者,国内资源暂时是它们的弱项,恰恰这一方面正是我国银行竞争的优势所在。然而,客户资源的经营管理确实我国银行的软肋。国内多数银行的客户关系管理还只是流于形式,这个问题是相当令人深思的。运用客户个人账户管理体系来进行客户关系管理正是应对未来银行客户资源竞争的利器。客户个人账户管理正是基于计算机技术和平台,通过对银行业务流程的重组来整合客户信息资源,以更科学有效的方法来管理客户信息,在银行内部实现信息和资源的共享,从而降低银行营运成本,为客户提供更经济、快捷、周到的产品和服务来吸引客户,最终达到银行价值最大化。1.3自动化管理银行竞争优势的分析由于社会信息化的不断深入发
12、展和经济金融体制的不断深入化,在知识经济和银行电子化建设的发展中,我国经济结构也在不断地变化,社会对于金融服务的需求日新月异,金融服务的内涵和外延变得更加丰富。这就对于银行的管理提出了新的要求。银行的管理日益趋向信息化、电子化、多元化。银行的电子化和现代化管理水平已经成为银行竞争力的重要构成要素,成为银行市场运作、金融创新、量化管理的技术基础。大致上来说,银行账户管理的系统化、自动化和规范化,使银行获得以下几方面的优势:(1)差别化竞争优势;(2)低成本竞争优势;(3)目标集聚性优势;(4)知识型优势;(5)产业集聚型优势。2系统需求分析2.1开发设计思想本系统的开发设计思想:系统应当在银行的
13、规定的前提下,满足银行对于个人账户管理的需求适应银行工作人员日常工作的需要,并应达到操作工程简便易行、安全可靠的要求。根据系统设计的目标和主要功能和对开发工具和环境的选择,通过软件工程的设计方法,对系统的可行性进行分析,确定方案的可行性。根据系统的需求得到需求分析,在需求分析的基础上进行设计编码,完成后对系统进行功能测试和应用维护。系统采用模块化程序设计方法,不仅可以在系统设计时方便系统功能的各种组合与修改,又可以方便开发人员日后对程序修改和和维护。系统要具备数据库维护的功能,即使方便用户对数据的增加修改等操作。2.2系统设计目标和主要功能通过银行个人账户管理系统,可以使银行对于个人账户的管理
14、实现系统化、自动化、简便化,去除繁琐的信息录入,从而方便快捷的使银行达到高效管理个人账户的目的。开发的主要任务是使工作人员能够轻松方便快捷的完成对个人账户的管理的任务。设计的银行个人账户管理系统应该具备最基本的账户管理功能,以及对客户信息变化的记录功能,设计的银行个人账户信息管理系统需要完成的主要功能是:1、银行工作人员即管理员的登录2、管理员对客户的开户操作(包括用户名、身份证、密码的填写)3、对已有客户(账号)的查询操作4、对已有客户(账号)的存款操作5、对已有客户(账号)的取款操作6、对已有客户(账号)的修改密码的操作7、对已有客户(账号)之间的转账的操作2.2.3开发工具和环境开发工具
15、:QT4.8.1 、C+运行环境:LINUX或UNIX2.2可行性研究可行性研究能使新系统达到以最小的开发成本取得最佳的经济效益。可行性研究的目的,是根据开发管理信息系统的请求,通过初步调查和系统目标分析,对要开发的银行个人帐户管理信息系统从技术上、经济上、资源上和管理上进行是否可行的研究。这是一项保证资源合理使用、避免失误和浪费的重要工作。由于实现了现代化的信息管理系统功能,这样就减少了人工的消耗,也就是说一台机器代替了多个人的工作,这样就可以减少人员消耗上的开支。不仅如此,实现银行系统的管理可以快速的应对各种业务,在效率上也提高了速度,为创造更大的价值提供了前提条件。系统对于计算机的硬件、
16、网络和系统条件的要求并不高,这样就方便了,银行信息管理系统的实施和普及应用。对于管理和经费问题上,都是非常透明和乐于让人接受的。系统实施运行后,并不需要特定的工作人员去管理,我们只需要一个管理员来管理一台装备。所以在管理经费上是不会有多大消耗的。由于是电脑管理系统,所以对于账户的管理是相当高的。而银行信息管理系统的运行过程不仅不违反银行的管理规章制度,还会有效地实现信息的快速存取。由于不仅节约了银行自身的成本而且他的管理效率也会提高了。 2.3 需求分析结构设计的第一个阶段就是需求分析,这个阶段主要是为了收集系统设计过程中所要用到的基本数据、数据结构和数据处理的流程,从而组织成尽可能详细的数据
17、,方便以后设计的需要。管理员管理存款取款转账修改密码账户信息图2-1 数据流图通过对银行个人账户管理的内容及数据流的分析,我们便可以列出设计的数据项:1、 开户信息表。包括:账户名、身份证、密码、重复密码。2、 查询信息表。包括:账户名、身份证、密码、余额。3、 存款信息表。包括:账户名、身份证、密码、存款额。4、 取款信息表。包括:账户名、身份证、密码、取款额。5、 转账信息表。包括:转账人、密码、收款人、金额。6、 修改密码信息表。包括:账户名、身份证、密码、新密码、重复新密码。2.4 系统流程图的设计这一阶段的设计是基于需求分析上的,通过需求分析来设计出能够满足用户需求的各种实体以及它们
18、之间的联系,以方便下一步的逻辑结构设计。根据系统设计要求系统流程图设计如下:Yes进入主窗口退出账户名身份证密码重复密码账户名身份证密码余额账户名身份证密码存款额账户名身份证密码取款额转账人转出账号密码收款人转入账号金额账户名身份证密码新密码重复新密码NO留在登陆界面开户查询存款取款转账修改取消主窗口取消取消取消取消取消管理员登录开始用户名密码开户查询存款取款转账修改密码图2-2系统流程图2.5用例描述2.5.1管理员登录用例管理员登录用例表如表2-1表2-1管理员登录用例表用例名称登录用例描述描述了管理员如何登录到系统中参与者管理员状态审查通过前置条件无后置条件如果用例成功,则管理员登录到系
19、统之。否则,系统状态不变。基本操作流程当管理员想登录到银行信息系统中时,用例启动。(1)系统提示管理员输入用户名和密码。(2)管理员输入自己的用户名和密码,提交。(3)系统验证输入的名字和密码,管理员登录系统成功。可选操作流程如果输入用户名和(或)密码无效,系统提示错误信息,用户可以重新输入或中止该用例。2.5.2开户用例开户用例表如表2-2表2-2开户用例表用例名称开户用例描述本用例允许管理员通过客户提供的信息给客户开户参与者管理员状态审查通过前置条件在本用例开始前,管理员必须登陆到系统中后置条件如果用例成功,则系统中会增加新建的账户。否则,系统状态不变。基本操作流程当用户想在银行开户时,要
20、向管理员提供账户名、身份证、密码,用例启动。(1) 系统提示管理员输入需要要开户的客户的账户名、身份证、密码。(2) 管理员输入新客户的账户名、身份证、密码,提交。(3) 系统保存新账户信息。2.5.3存款用例存款用例表如表2-3表2-3存款用例表用例名称存款用例描述本用例允许管理员借助客户提供的账户信息存款到帐户中参与者管理员状态审查通过前置条件在本用例开始前,管理员必须登陆到系统中后置条件如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。基本操作流程当客户想让管理员存款到自己的账户时,要向管理员提供账户名、身份证、密码和存款金额,用例启动。(1)系统提示管理员输入账户名、身
21、份证、密码和存款额。(2)管理员输入相关信息后提交。(3)系统更新账户的相关信息。可选操作流程账户不存在或者无效,显示提示信息,用户可以重新输入或终止该用例。2.5.4取款用例取款用例表如表2-4表2-4取款用例表用例名称取款用例描述本用例允许管理员按照客户的要求从客户的帐户中取款参与者管理员 前置条件本用例开始前,管理员必须登录到系统中后置条件如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。基本操作流程当客户想存钱到自己的账户时,要向管理员提供账户名、身份证、密码、取款额,用例启动。(1) 系统提示管理员输入账户名、身份证、密码和取款额。(2) 管理员输入相关信息后提交,账
22、户中的存款金额是否足够支付所取款项。(3) 更新账户的相关信息。可选操作流程账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。2.5.5查询用例查询用例表如表2-5表2-5查询用例表用例名称查询用例描述本用例允许管理员按照客户的要求从客户的帐户中查询余额参与者管理员 前置条件本用例开始前,管理员必须登录到系统中后置条件系统状态不变。基本操作流程当客户想查询到自己的账户余额时,要向管理员提供账户名、身份证、密码,用例启动。(1)系统提示管理员输入账户名、身份证、密码。(2)管理员输入相关信息后提交。(3)显示账户余额信息。2.5.6转账用例转账用例表如表2-6表2-6转账用例
23、表用例名称转账用例描述本用例允许管理员按照用户的要求将资金从一个账户转到另一个账户。参与者管理员状态审查通过前置条件本用例开始前,管理员必须登陆到系统中。后置条件如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。基本操作流程当客户要求转帐时,用例启动(1) 系统提示管理员输入转账人、密码、收款人和所转款项的金额。(2) 管理员输入相关信息后提交.(3) 系统确认账户中的存款金额是否足够支付所取款项。(4) 系统更新账户的相关信息。可选操作流程账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。2.5.7修改密码用例修改密码用例表如表2-7 表2-7修改密码用例
24、表用例名称修改密码用例描述本用例允许管理员按照用户的要求将原来密码修改参与者管理员状态审查通过前置条件本用例开始前,管理员必须登陆到系统中。后置条件如果用例成功,则客户账户密码发生变化。基本操作流程当客户要求修改密码时,用例启动(1)系统提示管理员输入账户名、身份证、密码、新密码、重复新密码。(2)管理员输入相关信息后提交.(3)系统更新账户的相关信息。3设计过程及编码主要开发设计思想:首先建立工程,利用QT将界面和类的头文件、实现文件以及界面文件完成,并编写代码通过ui界面得到输入信息,将界面信息存入数据库(或与数据库数据匹配)之后,再适当的添加代码把不同的界面文件通过按钮事件链接,从而可以
25、在不同界面之间跳转10。3.1 数据库的创建与使用数据库的创建8:终端状态下,进入mysql数据库,在mysql中创建数据库表格。终端下输入命令:Mysql uroot p123456 回车回车后便进入Mysql建表语句如下:mysqlcreate database testdb;/建立数据库mysqluse testdb;/设定当前数据库mysqlcreate table admin(adminid varchar(30),admpasswd varchar(30);/建立管理员信息数据库表格mysqlinsert into admin values(abc,123);/添加数据mysqlc
26、reate table account (accountname varchar(30),accountNo varchar(30), accountpaswd varchar(30),accountMoney double);/建立账户信息数据库表格数据库的使用9:QSql模块提供了访问SQL数据库的接口,这些接口独立于操作系统,独立于数据库系统。Qt中有很多支持这个接口的类,这些类型通过Qt的model/view架构将数据库与用户界面结合起来。数据库连接由QSqlDatabase类对象表示,Qt通过driver与不同的数据库通讯。在进行SQL查询之前,需要与数据库建立连接。通常,在程序执行
27、前用户需要调用创建连接的函数以建立与数据库的连接数据库设计思路:数据库的使用分为四步:(1)获得界面信息(2)QsqlDatabase建立数据库的链接(3)QsqlQuery用于执行SQL语句(4)更新数据库的数据。本设计主要应用到数据库的链接、查询、插入和更新操作。数据库的设计如下:1.建立数据库连接在进行SQL查询之前,需要与数据库建立连接。通常,在程序执行前用户需要调用创建连接的函数以建立与数据库的连接。例如:首先要从界面得到输入的数据void AdminLogin:adminLogin() QString adminid=ui-adminid-text(); QString admin
28、passwd=ui-adminpasswd-text(); /*连接数据库 得到管理员的相关信息*/ AdminDao adao; bool cflag=adao.connectDb(QMYSQL,testdb,127.0.0.1, 3306,root,123456);/它的第一个参数指明了访问数据库的driver;接下来,分别设置数据库的数据库名,本地访问,端口设置,用户名,密码;最后,打开数据库连接3。 if(cflag)Admin a=adao.getAdminByIdAndPasswd(adminid,adminpasswd); qDebug(a.adminId.toLatin1();
29、 qDebug(a.adminPasswd.toLatin1();/判断管理员ID和密码是否与数据库中定义的管理员ID密码相符 if(a.adminId=adminId & a.adminPasswd=adminpasswd &a.adminId!= &a.adminPasswd!=) AdminAll aa; this-close(); aa.exec(); else qDebug(select db failed); QMessageBox msg(this); msg.setText(select db failed!); msg.exec(); else qDebug(connect
30、db failed); QMessageBox msg(this); msg.setText(connect db failed!); msg.exec(); 2.执行select命令查询一旦建立连接,用户就可以使用QSqlQuery类型执行SQL命令。本设计中执行SELECT命令如下1:Account AccountDao:getAccountByNameAndIdAndPasswd(Account account) QSqlQuery qu(myconn); qu.prepare(select * from account where accountname=? and accountNo
31、=? and accountpaswd=?); qu.bindValue(0,account.getAccountName(); qu.bindValue(1,account.getAccountNo(); qu.bindValue(2,account.getAccountPasswd(); Account a;qu.exec();然后可以处理查询结果: if(qu.next() a.setAccountName(qu.value(0).toString(); a.setAccountNo(qu.value(1).toString(); a.setAccountPasswd(qu.value(
32、2).toString(); a.setAccountMoney(qu.value(3).toDouble(); return a; 第一次调用query.next()时,查询记录指针指向第一条记录;接下来每调用一次next(),指针向后移一条记录,直到指针指向记录的尾端(尾端是最后一条记录的下一个位置),这时next()返回false。3.执行insert命令先从界面得到需要插入的数据,连接好数据库后,执行INSERT命令,向数据库插入新的数据。void AddAccount:createAccount() /*从界面得到数据*/ QString aname=ui-accountName-t
33、ext(); QString aid=ui-accountId-text(); QString apaswd=ui-accountPasswd-text(); Account a(aname,aid,apaswd,0.0); /*调用访问数据库的对象 把对象存入数据库*/ AccountDao adao; bool cflag=adao.connectDb(QMYSQL,testdb,127.0.0.1, 3306,root,123456);/连接数据库/*链接到数据库后执行insert命令更新数据库5*/bool AccountDao:addAccount(Account account)
34、QSqlQuery qu(myconn); qu.prepare(insert into account values(?,?,?,?); qu.bindValue(0,account.getAccountName(); qu.bindValue(1,account.getAccountNo(); qu.bindValue(2,account.getAccountPasswd(); qu.bindValue(3,account.getAccountMoney();4.SQLupdate 为了更新一条记录,首先从QSqlTableModel中找到该记录的位置。然后抽出记录,更新域值,再将记录写入
35、数据库3:从界面得到需要改动的数据信息:void Transfer:transferAccount() Account sender; sender.setAccountName(ui-sname-text(); sender.setAccountNo(ui-sno-text(); sender.setAccountPasswd(ui-spasswd-text(); Account reciver; reciver.setAccountName(ui-rname-text(); reciver.setAccountNo(ui-rno-text();连接到数据库: AccountDao adao
36、; bool cflag=adao.connectDb(QMYSQL,testdb,127.0.0.1, 3306,root,123456); if(cflag) Account s=adao.getAccountByNameAndIdAndPasswd(sender) ; if(s.getAccountMoney()money-text().toDouble() QMessageBox msg; msg.setText(have not enough money); msg.exec(); return; Account r=adao.getAccountByNameAndId(recive
37、r); qDebug(r.getAccountName().toLatin1(); qDebug(s.getAccountName().toLatin1(); adao.transferByAccount(s,r,ui-money-text().toDouble(); 通过accountdao.cpp链接到数据库保存相应设计对相应的数据进行更新:void AccountDao:transferByAccount(Account sender,Account recever,double money) myconn.transaction(); QSqlQuery qu(myconn); qu.
38、prepare(update account set accountMoney=accountMoney-? where accountname=?); qu.bindValue(0,money); qu.bindValue(1,sender.getAccountName(); bool f=qu.exec(); qu.prepare(update account set accountMoney=accountMoney+? where accountname=?); qu.bindValue(0,money); qu.bindValue(1,recever.getAccountName()
39、; bool ff=qu.exec(); if(f&ff) qDebug(success!); mit(); else qDebug(failed!); myconn.rollback(); 3.2建立Bank工程方法步骤第一步:进入QT Creator 选择创建项目,第二步:选择QT控件项目,QT Gui 应用图3-1创建QT控件项目图第三步:点击下一步给项目起名称第四步:点击下一步,创建源码文件的基本类信息图3-2创建源码文件的基本类信息图第六步:下一步点击完成这时候我们就完成了一个QT项目的构建,之后我们就可以在其基础上根据设计需要添加QT的设计界面类7。3.3添加QT设计界面类的设计第
40、一步:在项目名Bank上右击选择新建文件第二步:选择新建QT设计界面类第三步:选择Dialog without Buttons 界面模版第四步:填写需要添加的类名,头文件名、源文件名和界面文件名称会随类名变化而变化。添加类名是要注意类名的首字母要大写。第五步:点击下一步,核对添加至项目无误情况下,点击完成。这样,我们就将一个新的类添加到项目中,并且将头文件、实现文件、界面文件一起创建完成。3.4管理员登陆的设计第一步:按照3.1步骤完成项目构建后,Adminlogin的界面类会完成,系统会提供一个空界面,在空界面上我们根据管理员登陆界面用例,来添加组件。(1)选中ui界面文件,进入ui设计界面
41、,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。(2)选择Input Widgets下的Line Edit,给界面添加输入框。(3)选择Buttons下的Push Button,给界面添加按钮。(4)添加完后如下图图3-3 管理员登录设计界面图(5)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password。第二步:功能设计adminid:管理员IDadminpasswd:密码adminid 和adminpasswd 从数据库
42、中查询出来得到登陆界面的输入数据并做判断,登陆成功进入主操作界面如果管理员ID和密码不正确任意一个或都不正确,则输出select db failed!,并弹出提示对话框,但不是由于输入错误导致登录失败时,则会输出connect db failed,并弹出提示对话框。相应代码如下:void AdminLogin:adminLogin() QString adminid=ui-adminid-text(); QString adminpasswd=ui-adminpasswd-text(); /*连接数据库 得到管理员的相关信息*/ AdminDao adao; bool cflag=adao.connectDb(