银行个人账户信息管理系统

发布时间:2018-11-22 07:37:28   来源:文档文库   
字号:

题目 银行个人账户信息管理系统



银行个人账户管理系统

摘  要

账户管理是现在每个银行的业务流程中的最重要的一项,在银行的各项业务流程中起着承上启下的作用,可谓是银行业务的重中之重。

本文针对上述问题,采用软件工程的开发原理,依据软件工程的流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行个人账户信息管理系统。采用Linux平台作为开发环境,QTC++作为开发工具,面向对象化设计,主要设计了管理员的登录、新用户的开户、存取款、转账、查询业务,解决了银行目前操作的繁琐流程,方便快捷的实现了银行账户管理的基本任务。

本设计设计的银行个人账户信息管理系统,能使银行工作人员轻松快捷的完成对账户管理的任务,使银行的账目管理工作系统化、快捷化、规范化、自动化、高效化。

关键词:个人信息管理;QTC++;面向对象;

Personal bank account management system

ABSTRACT

Account management is one of the most important for each bank's business processes, which plays a connecting role in the bank's various business processes. It can be described as 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, 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 administrator's 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 complete the account management tasks quickly and easily, so the management of the bank accounts can become systematic, efficient, standardized, automated and efficient.

Key wordsPersonal Information Management (PIM); QT; C++;Object-oriented

  

1 本课题的研究意义和目的 1

1.1 开发背景 1

1.2 国内外现状 1

1.3 自动化管理银行竞争优势的分析 2

2 系统需求分析 3

2.1 开发设计思想 3

2.2 可行性研究 3

2.3 需求分析 4

2.4 系统流程图的设计 5

2.5 用例描述 6

3 设计过程及编码 10

3.1 数据库的创建与使用 10

3.2 建立Bank工程方法步骤 14

3.3 添加QT设计界面类的设计 15

3.4 管理员登陆的设计 15

3.5 主操控界面设计 17

3.6 开户的设计 18

3.7 查询的设计 20

3.8 存款的设计 21

3.9 取款的设计 23

3.10 转账的设计 26

3.11 修改密码的设计 28

4 功能测试 30

4.1 管理员登陆界面 30

4.2 主操控界面 30

4.3 开户界面 30

4.4 查询界面 31

4.5 存款界面 32

4.6 取款界面 33

4.7 转账界面 34

4.8 修改密码界面 35

4.9 判断与评估 36

5 应用与维护 37

6 总结 38

参考文献 39

致谢 40

附录 41



1  本课题的研究意义和目的

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++

运行环境:LINUXUNIX

2.2 可行性研究

可行性研究能使新系统达到以最小的开发成本取得最佳的经济效益。可行性研究的目的,是根据开发管理信息系统的请求,通过初步调查和系统目标分析,对要开发的银行个人帐户管理信息系统从技术上、经济上、资源上和管理上进行是否可行的研究。这是一项保证资源合理使用、避免失误和浪费的重要工作。

由于实现了现代化的信息管理系统功能,这样就减少了人工的消耗,也就是说一台机器代替了多个人的工作,这样就可以减少人员消耗上的开支。不仅如此,实现银行系统的管理可以快速的应对各种业务,在效率上也提高了速度,为创造更大的价值提供了前提条件。

系统对于计算机的硬件、网络和系统条件的要求并不高,这样就方便了,银行信息管理系统的实施和普及应用。

对于管理和经费问题上,都是非常透明和乐于让人接受的。系统实施运行后,并不需要特定的工作人员去管理,我们只需要一个管理员来管理一台装备。所以在管理经费上是不会有多大消耗的。

由于是电脑管理系统,所以对于账户的管理是相当高的。而银行信息管理系统的运行过程不仅不违反银行的管理规章制度,还会有效地实现信息的快速存取。由于不仅节约了银行自身的成本而且他的管理效率也会提高了。

2.3  需求分析

结构设计的第一个阶段就是需求分析,这个阶段主要是为了收集系统设计过程中所要用到的基本数据、数据结构和数据处理的流程,从而组织成尽可能详细的数据,方便以后设计的需要。

2-1 数据流图

通过对银行个人账户管理的内容及数据流的分析,我们便可以列出设计的数据项:

1、 开户信息表。包括:账户名、身份证、密码、重复密码。

2、 查询信息表。包括:账户名、身份证、密码、余额。

3、 存款信息表。包括:账户名、身份证、密码、存款额。

4、 取款信息表。包括:账户名、身份证、密码、取款额。

5、 转账信息表。包括:转账人、密码、收款人、金额。

6、 修改密码信息表。包括:账户名、身份证、密码、新密码、重复新密码。

2.4  系统流程图的设计

这一阶段的设计是基于需求分析上的,通过需求分析来设计出能够满足用户需求的各种实体以及它们之间的联系,以方便下一步的逻辑结构设计。

根据系统设计要求系统流程图设计如下:

2-2系统流程图

2.5 用例描述

2.5.1 管理员登录用例

管理员登录用例表如表2-1

2-1管理员登录用例表

用例名称

登录

用例描述

描述了管理员如何登录到系统中

参与者

管理员

状态

审查通过

前置条件

后置条件

如果用例成功,则管理员登录到系统之。否则,系统状态不变。

基本操作流程

当管理员想登录到银行信息系统中时,用例启动。

(1)系统提示管理员输入用户名和密码。

(2)管理员输入自己的用户名和密码,提交。

(3)系统验证输入的名字和密码,管理员登录系统成功。

可选操作流程

如果输入用户名和(或)密码无效,系统提示错误信息,用户可以重新输入或中止该用例。

2.5.2 开户用例

开户用例表如表2-2

2-2开户用例表

用例名称

开户

用例描述

本用例允许管理员通过客户提供的信息给客户开户

参与者

管理员

状态

审查通过

前置条件

在本用例开始前,管理员必须登陆到系统中

后置条件

如果用例成功,则系统中会增加新建的账户。否则,系统状态不变。

基本操作流程

当用户想在银行开户时,要向管理员提供账户名、身份证、密码,用例启动。

(1) 系统提示管理员输入需要要开户的客户的账户名、身份证、密码。

(2) 管理员输入新客户的账户名、身份证、密码,提交。

(3) 系统保存新账户信息。

2.5.3 存款用例

存款用例表如表2-3

2-3存款用例表

用例名称

存款

用例描述

本用例允许管理员借助客户提供的账户信息存款到帐户中

参与者

管理员

状态

审查通过

前置条件

在本用例开始前,管理员必须登陆到系统中

后置条件

如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。

基本操作流程

当客户想让管理员存款到自己的账户时,要向管理员提供账户名、身份证、密码和存款金额,用例启动。

1)系统提示管理员输入账户名、身份证、密码和存款额。

2)管理员输入相关信息后提交。

3系统更新账户的相关信息。

可选操作流程

账户不存在或者无效,显示提示信息,用户可以重新输入或终止该用例。

2.5.4 取款用例

取款用例表如表2-4

2-4取款用例表

用例名称

取款

用例描述

本用例允许管理员按照客户的要求从客户的帐户中取款

参与者

管理员

前置条件

本用例开始前,管理员必须登录到系统中

后置条件

如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。

基本操作流程

当客户想存钱到自己的账户时,要向管理员提供账户名、身份证、密码、取款额,用例启动。

(1) 系统提示管理员输入账户名、身份证、密码和取款额。

(2) 管理员输入相关信息后提交,账户中的存款金额是否足够支付所取款项。

(3) 更新账户的相关信息。

可选操作流程

账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。

2.5.5 查询用例

查询用例表如表2-5

2-5查询用例表

用例名称

查询

用例描述

本用例允许管理员按照客户的要求从客户的帐户中查询余额

参与者

管理员

前置条件

本用例开始前,管理员必须登录到系统中

后置条件

系统状态不变。

基本操作流程

当客户想查询到自己的账户余额时,要向管理员提供账户名、身份证、密码,用例启动。

1)系统提示管理员输入账户名、身份证、密码。

2)管理员输入相关信息后提交。

3)显示账户余额信息。

2.5.6转账用例

转账用例表如表2-6

2-6转账用例表

用例名称

转账

用例描述

本用例允许管理员按照用户的要求将资金从一个账户转到另一个账户。

参与者

管理员

状态

审查通过

前置条件

本用例开始前,管理员必须登陆到系统中。

后置条件

如果用例成功,则客户账户中存款的金额发生变化。否则,系统状态不变。

基本操作流程

当客户要求转帐时,用例启动

(1) 系统提示管理员输入转账人、密码、收款人和所转款项的金额。

(2) 管理员输入相关信息后提交.

(3) 系统确认账户中的存款金额是否足够支付所取款项。

(4) 系统更新账户的相关信息。

可选操作流程

账户中的存款金额不足,显示提示信息,用户可以重新输入金额或终止该用例。

2.5.7 修改密码用例

修改密码用例表如表2-7

2-7修改密码用例表

用例名称

修改密码

用例描述

本用例允许管理员按照用户的要求将原来密码修改

参与者

管理员

状态

审查通过

前置条件

本用例开始前,管理员必须登陆到系统中。

后置条件

如果用例成功,则客户账户密码发生变化。

基本操作流程

当客户要求修改密码时,用例启动

1)系统提示管理员输入账户名、身份证、密码、新密码、重复新密码。

2)管理员输入相关信息后提交.

3)系统更新账户的相关信息。

3  设计过程及编码

主要开发设计思想:首先建立工程,利用QT将界面和类的头文件、实现文件以及界面文件完成,并编写代码通过ui界面得到输入信息,将界面信息存入数据库(或与数据库数据匹配)之后,再适当的添加代码把不同的界面文件通过按钮事件链接,从而可以在不同界面之间跳转[10]

3.1 数据库的创建与使用

数据库的创建[8]

终端状态下,进入mysql数据库,在mysql中创建数据库表格。

终端下输入命令:

Mysql –uroot –p123456 回车

回车后便进入Mysql

建表语句如下:

mysql>create database testdb;//建立数据库

mysql>use testdb;//设定当前数据库

mysql>create table admin(adminid varchar(30),admpasswd varchar(30));

//建立管理员信息数据库表格

mysql>insert into admin values('abc','123');//添加数据

mysql>create table account (accountname varchar(30),

accountNo varchar(30), accountpaswd varchar(30),

accountMoney double);//建立账户信息数据库表格

数据库的使用[9]

QSql 模块提供了访问 SQL 数据库的接口,这些接口独立于操作系统,独立于数据库系统。Qt 中有很多支持这个接口的类,这些类型通过 Qt  model/view 架构将数据库与用户界面结合起来。数据库连接由 QSqlDatabase 类对象表示,Qt 通过 driver 与不同的数据库通讯。

在进行 SQL 查询之前,需要与数据库建立连接。通常,在程序执行前用户需要调用创建连接的函数以建立与数据库的连接

数据库设计思路:

数据库的使用分为四步:(1)获得界面信息(2QsqlDatabase建立数据库的链接(3QsqlQuery用于执行SQL语句(4)更新数据库的数据。

本设计主要应用到数据库的链接、查询、插入和更新操作。数据库的设计如下:

1. 建立数据库连接

在进行SQL查询之前,需要与数据库建立连接。通常,在程序执行前用户需要调用创建连接的函数以建立与数据库的连接。例如:

首先要从界面得到输入的数据

void AdminLogin::adminLogin(){

QString adminid=ui->adminid->text();

QString adminpasswd=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());

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 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=? 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(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->text();

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){

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. SQL update

为了更新一条记录,首先从QSqlTableModel中找到该记录的位置。然后抽出记录,更新域值,再将记录写入数据库[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;

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(reciver);

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.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());

bool ff=qu.exec();

if(f&&ff){

qDebug("success!");

myconn.commit();

}else{

qDebug("failed!");

myconn.rollback();

}

3.2 建立Bank工程方法步骤

第一步:进入QT Creator 选择创建项目,

第二步:选择QT控件项目,QT Gui 应用

3-1 创建QT控件项目图

第三步:点击下一步给项目起名称

第四步:点击下一步,创建源码文件的基本类信息

3-2 创建源码文件的基本类信息图

第六步:下一步点击完成

这时候我们就完成了一个QT项目的构建,之后我们就可以在其基础上根据设计需要添加QT的设计界面类[7]

3.3 添加QT设计界面类的设计

第一步:在项目名Bank上右击选择新建文件

第二步:选择新建QT设计界面类

第三步:选择Dialog without Buttons 界面模版

第四步:填写需要添加的类名,头文件名、源文件名和界面文件名称会随类名变化而变化。添加类名是要注意类名的首字母要大写。

第五步:点击下一步,核对添加至项目无误情况下,点击完成。

这样,我们就将一个新的类添加到项目中,并且将头文件、实现文件、界面文件一起创建完成。

3.4 管理员登陆的设计

第一步:按照3.1步骤完成项目构建后,Adminlogin的界面类会完成,系统会提供一个空界面,在空界面上我们根据管理员登陆界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

(4)添加完后如下图

3-3 管理员登录设计界面图

(5)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

第二步:功能设计

adminid:管理员ID

adminpasswd:密码

adminid adminpasswd 从数据库中查询出来得到登陆界面的输入数据并做判断,登陆成功进入主操作界面

如果管理员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("QMYSQL","testdb","127.0.0.1",

3306,"root","123456");

if(cflag){

Admin a=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!=""){

AdminAll aa;

this->close();

aa.exec();

}else{

qDebug("select db failed");

QMessageBox msg(this);

msg.setText("select db failed!!");

msg.exec();

}

}else{

qDebug("connect db failed");

QMessageBox msg(this);

msg.setText("connect db failed!!");

msg.exec();

}

}

第三步:管理员ID和密码输入后点击登录则进入主操控界面,点击退出则退出登陆界面,相应代码如下:

AddAccount::AddAccount(QWidget *parent) :

QDialog(parent),

ui(new Ui::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设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-5 开户界面设计图

第四步:获取界面填写的数据存入数据库的设计。

系统从管理员输入的数据得到信息,并把信息存储到数据库中,开户成功则会弹出"create account success!!"对话框,如果开户失败则会弹出"create account failed!!"对话框

如果开户成功,点击提示对话框的确定按钮(如下图),这样就得到了界面数据,并用数据来构建账户对象,调用访问数据库的类,并把数据存入数据库,最后返回主操控界面。

3-6 开户成功界面演示图

数据库设计需求的主要代码如下:

void AddAccount::createAccount(){

/*从界面得到数据*/

QString aname=ui->accountName->text();

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");

if(cflag){

bool f=adao.addAccount(a);

if(f){

QMessageBox msg(this);

msg.setText("create account success!!");

msg.exec();

}else{

QMessageBox msg(this);

msg.setText("create account failed!!");

msg.exec();

}

}

this->close();

}

通过accountdao.cpp链接到数据库保存相应设计

bool AccountDao::addAccount(Account account){

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());

return qu.exec();

3.7 查询的设计

第一步:分析。根据个人账户管理系统的需求分析可知,查询界面应有账户名、身份证、密码、余额(显示)。

第二步:按需求进行设计。按照3.2的步骤新建界面模版,填写Seachaccount类头文件名、源文件名和界面文件名称。

第三步:在提供的空界面上我们根据查询界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-7 查询界面设计图

第四步:当管理员在界面内输入一个账户信息时,系统会通过输入的账户信息,将账户信息传递给dao对象,dao对象在已存在的数据库中进行查找,并将查找结果显示在余额中。

主要代码如下:

void SeachAccount::seachAccount(){

/*得到用户名、身份证号 和密码*/

QString aname=ui->aname->text();

QString apasswd=ui->passwd->text();

Account a(aname,aid,apasswd,0.0);

/*把这两个信息 传给dao对象与数据库中的信息去匹配,并将余额显示*/

AccountDao adao;

bool cflag=adao.connectDb("QMYSQL","testdb","127.0.0.1",

3306,"root","123456");

if(cflag){

a=adao.getAccountByNameAndIdAndPasswd(a);

}

ui->money->setText(QString::number(a.getAccountMoney()));

}

通过accountdao.cpp链接到数据库保存相应设计

Account AccountDao::getAccountByNameAndIdAndPasswd(Account account){

QSqlQuery qu(myconn);

qu.prepare("select * from account where accountname=? and accountNo=? 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(2).toString());

a.setAccountMoney(qu.value(3).toDouble());

}

return a;

}

3.8 存款的设计

第一步:分析。根据个人账户管理系统的需求分析可知,存款界面应有账户名、身份证、密码、存款。

第二步:按需求进行设计。按照3.2的步骤新建界面模版,填写Deposite类头文件名、源文件名和界面文件名称。

第三步:在提供的空界面上我们根据存款界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-8 存款界面设计图

第四步:当管理员在界面内输入一个账户信息和存款额时,系统会通过输入的账户信息,在数据库中查找相对应的账户,并将存款额传递给ado对象保存到相应账户下,点击存款后弹出相应的提示对话框。

主要代码如下:

void Deposite::changeAccount(){

Account a(ui->dname->text(),ui->did->text(),ui->dpasswd->text(),ui->dmoney->text().toDouble());

if(a.getAccountMoney()<=0){

QMessageBox msg;

msg.setText("deposite money is invalid!");

msg.exec();

}

AccountDao adao;

bool cflag=adao.connectDb("QMYSQL","testdb","127.0.0.1",

3306,"root","123456");

if(cflag){

adao.depositeAccount(a);

QMessageBox msg;

msg.setText("deposite success!");

msg.exec();

this->close();

}

}

通过accountdao.cpp链接到数据库保存相应设计

Accountdao.cpp中相应代码:

void AccountDao::depositeAccount(Account account){

QSqlQuery qu(myconn);

Account temp=getAccountByNameAndIdAndPasswd(account);

if(temp.getAccountName()==""&& temp.getAccountNo()=="" && temp.getAccountPasswd()==""){

QMessageBox msg;

msg.setText("deposite account not exist!");

msg.exec();

return;

}

qu.prepare("update account set accountMoney=accountMoney+? where accountname=? and accountNo=? and accountpaswd=?");

qu.bindValue(0,account.getAccountMoney());

qu.bindValue(1,account.getAccountName());

qu.bindValue(2,account.getAccountNo());

qu.bindValue(3,account.getAccountPasswd());

bool f=qu.exec();

if(f){

QMessageBox msg;

msg.setText("deposite success!");

msg.exec();

}

}

3.9 取款的设计

第一步:分析。根据个人账户管理系统的需求分析可知,取款界面应有账户名、身份证、密码、取款。

第二步:按需求进行设计。按照3.2的步骤新建界面模版,填写Withdraw类头文件名、源文件名和界面文件名称。

第三步:在提供的空界面上我们根据取款界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-9 取款界面设计

第四步:当管理员在界面内输入一个账户信息和取款额时,系统会通过输入的账户信息,在数据库中查找相对应的账户,并将取款额传递给ado对象保存到相应账户下,点击存款后弹出相应的提示对话框。

主要代码如下:

void WithDraw::changeAccount(){

Account a(ui->wname->text(),ui->wid->text(),ui->wpasswd->text(),ui->wmoney->text().toDouble());

if(a.getAccountMoney()<=0){

QMessageBox msg;

msg.setText("withdraw money is invalid!");

msg.exec();

return;

}

AccountDao adao;

bool cflag=adao.connectDb("QMYSQL","testdb","127.0.0.1",

3306,"root","123456");

Account temp=adao.getAccountByNameAndIdAndPasswd(a);

if(a.getAccountMoney()>temp.getAccountMoney()){

QMessageBox msg;

msg.setText("you have not enough money!");

msg.exec();

return;

}

if(cflag){

adao.withdrawAccount(a);

this->close();

}

}

通过accountdao.cpp链接到数据库保存相应设计

Accountdao.cpp中相应的代码设计:

void AccountDao::withdrawAccount(Account account){

QSqlQuery qu(myconn);

Account temp=getAccountByNameAndIdAndPasswd(account);

if(temp.getAccountName()=="" && temp.getAccountNo()=="" && temp.getAccountPasswd()==""){

QMessageBox msg;

msg.setText("withdraw account not exist!");

msg.exec();

return;

}

if(account.getAccountMoney()<=0){

QMessageBox msg;

msg.setText("withdraw money is invalid!");

msg.exec();

return;

}

qu.prepare("update account set accountMoney=accountMoney-? where accountname=? and accountNo=? and accountpaswd=?");

qu.bindValue(0,account.getAccountMoney());

qu.bindValue(1,account.getAccountName());

qu.bindValue(2,account.getAccountNo());

qu.bindValue(3,account.getAccountPasswd());

bool f=qu.exec();

if(f){

QMessageBox msg;

msg.setText("withdraw success!");

msg.exec();

}

}

3.10 转账的设计

第一步:分析。根据个人账户管理系统的需求分析可知,转账界面应有转账人、密码、收款人、金额。

第二步:按需求进行设计。按照3.2的步骤新建界面模版,填写Transfer类头文件名、源文件名和界面文件名称。

第三步:在提供的空界面上我们根据转账界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-10 转账界面设计

第四步:当管理员在界面内输入转账人、密码、收款人、金额时,系统会通过输入的信息,把相关的转账信息包装成对象,,并将转账金额传递给ado对象保存到相应账户下,点击转账后弹出相应的提示对话框。

主要代码如下:

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;

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(reciver);

qDebug(r.getAccountName().toLatin1());

qDebug(s.getAccountName().toLatin1());

adao.transferByAccount(s,r,ui->money->text().toDouble());

}

}

通过accountdao.cpp链接到数据库保存相应设计

Accountdao.cpp中相应的代码:

void AccountDao::transferByAccount(Account sender,Account recever,double money){

myconn.transaction();

QSqlQuery qu(myconn);

qu.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());

bool ff=qu.exec();

if(f&&ff){

qDebug("success!");

myconn.commit();

}else{

qDebug("failed!");

myconn.rollback();

}

3.11 修改密码的设计

第一步:分析。根据个人账户管理系统的需求分析可知,修改密码界面应有账户名、身份证、密码、新密码、重复新密码。

第二步:按需求进行设计。按照3.2的步骤新建界面模版,填写ChangePasswd类头文件名、源文件名和界面文件名称。

第三步:在提供的空界面上我们根据修改密码界面用例,来添加组件。

(1)选中ui界面文件,进入ui设计界面,选择Display Widgets下的Label,给ui界面添加文本框,双击文本框,修改文本框显示的内容。

(2)选择Input Widgets下的Line Edit,给界面添加输入框。

(3)选择Buttons下的Push Button,给界面添加按钮。

4)添加组件完成后,考虑到密码的保护,我们要将密码的显示修改为非明码显示,点击选中密码输入文本框,在属性栏中找到echoMode将其默认的Normal改换成Password

(5) 添加完后如下图

3-11 修改密码设计界面

第四步:当管理员在界面内输入账户名、身份证、密码、新密码、重复新密码并点击修改后,系统会通过输入的信息,把相关的修改信息包装成对象,,并将转账金额传递给ado对象保存到相应账户下,点击点击修改后会弹出相应的提示对话框。

主要代码如下:

void ChangePasswd::changePasswd(){

Account a(ui->cname->text(),ui->cid->text(),ui->passwd->text(),0.0);

if(ui->rnpasswd->text()!=ui->npasswd->text()){

QMessageBox msg;

msg.setText("repeat new passwd error!");

msg.exec();

return;

}

AccountDao adao;

bool cflag=adao.connectDb("QMYSQL","testdb","127.0.0.1",

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中相应代码:

void AccountDao::changePasswdAccount(Account account,QString npasswd){

QSqlQuery qu(myconn);

qu.prepare("update account set accountpaswd=? where accountname=? and accountNo=? and accountpaswd=?");

qu.bindValue(0,npasswd);

qu.bindValue(1,account.getAccountName());

qu.bindValue(2,account.getAccountNo());

qu.bindValue(3,account.getAccountPasswd());

bool f=qu.exec();

if(f){

QMessageBox msg;

msg.setText("change passwd success!");

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 转账失败提示对话框

4.8 修改密码界面

4-14 修改密码界面

输入账户名、身份证、密码、新密码、重复输入新密码,点击修改,修改成功则弹出change passwd successe! 提示对话框

4-15 修改密码成功界面

4.9 判断与评估

通过以上实验的测试,本银行个人账户信息管理系统实现了设计要求的功能,根据设计过程的演示和反复试验,可以看到数据的输入、保存、采集等操作过程中的数值是可靠、稳定、准确的。银行个人账户信息管理系统实现了开户、存款、取款、查询、转账、修改密码的操作,这就满足了银行个人账户信息管理的基本要求。界面的设计,实现了简单化、实用化、操作方便快捷化的设计要求。方便了银行操作人员快捷、准确、可靠的操作规范。

总体来说,本银行个人账户信息管理系统的设计达到了预期设计的要求和目的。能够实现预期的操作,数据的可靠和稳定性能够得到保障。

5  应用与维护

在系统的功能看来相对于现今银行大型数据库存储系统来说可谓是精简版的银行个人账户信息管理系统,这对于银行只有存储关系的客户来说是一个可以应用的软件,对于与银行有着复杂交易网的客户来说,本系统还是缺乏更为详尽的设计。

由于系统是在Linux下的QT软件中编程,所以它的后期维护也是有一定局限性,要求维护人员具备Liunx下的QTC++编程能力,对于维护人员有一定的要求。

6  总结

目前,该银行个人账户管理系统的设计与实现已经基本上完成,总的来说完成了一下工作:

1、查阅了大量的有关银行账户管理系统的文献资料,了解掌握了银行账户管理系统的原理及研究目的。

2、对银行管理系统的总体方案进行了设计,从实际出发,详细分析了银行个人账户管理系统应该具备的主要功能,形成了系统的功能和数据结构的设计。

3、 对系统实现中的一些关键技术进行了深入的研究,并在不断的学习和探讨中改善和完善。

4、 对于银行个人账户管理系统的实际应用做了实验性的研究,发现其界面良好,简便易行,具有一定的实际应用的价值。达到了预期的效果。

当然由于个人水平的限制,程序的简化导致了很多功能的不足,有些地方还没有更进一步的研究,部分功能没有进一步的完善趋于完美,主要是:银行系统要求有相当高的保密性和稳定性,系统的设计远没有达到实际应用要求的目的,需要不断地学习,了解相关的保密和非法入侵的知识,来不断改进已达到应用于实际的目的。对于银行系统的高度复杂性,还需要以后不断的进行完善和补充。

参考文献

[1]  郑莉,董渊,张瑞丰.C++语言程序设计(3) [M].北京:清华大学出版社,2003 245-360

[2]  谭浩强.C++程序设计[M].北京:清华大学出版社,2004年,136-188

[3]  杨学明,刘加海,余建军.面向对象的程序设计C++实训教程[M].北京:科学出版社,2003 128-257

[4]  徐孝凯.C++语言及其程序设计教程[M].北京:清华大学出版社,2002 182-204

[5]  []Paul S. R. Chishohm .C语言编程常见问题解答[M].清华大学出版社,1996-12

[6]  []. StanleyB.Lippman,JoseeLajoie,BarbaraE.Moo[M] C++ Primer (4th Edition) 人民邮电出版社,2011

[7]  争锋.Linux_Qt4编程指导文档,http://www.docin.com/p-273250343.html2011-10-14

[8]  蔡志明卢传富李立夏.精通QT4编程.北京:电子工业出版社,2008-1-16

[9]  吴迪,零基础学Qt 4编程.北京,北京航空航天大学出版社2010-7

[10]  (加)布兰切特(BlanchetteJ),(英)萨默菲尔德(SummerfieldM 闫锋欣等译. C++GUI Qt4编程.北京:电子工业出版社,2008-08-01



  

附  录

addaccount.h:

#ifndef ADDACCOUNT_H

#define ADDACCOUNT_H

#include

namespace Ui {

class AddAccount;

}

class AddAccount : public QDialog

{

Q_OBJECT

public:

explicit AddAccount(QWidget *parent = 0);

~AddAccount();

private:

Ui::AddAccount *ui;

/*得到界面数据 用数据构建账户对象

调用访问数据库的类 把数据存入数据库

*/

public slots:

void createAccount();

public:

void paintEvent(QPaintEvent *e);

};

#endif // ADDACCOUNT_H

addaccount.cpp

#include "addaccount.h"

#include "ui_addaccount.h"

#include "account.h"

#include "accountdao.h"

#include

#include

#include

AddAccount::AddAccount(QWidget *parent) :

QDialog(parent),

ui(new Ui::AddAccount)

{

ui->setupUi(this);

connect(ui->createAccount,SIGNAL(clicked()),

this,SLOT(createAccount()));

connect(ui->cancel,SIGNAL(clicked()),

this,SLOT(close()));

}

AddAccount::~AddAccount()

{ delete ui;

}

void AddAccount::createAccount(){

/*得到数据*/

QString aname=ui->accountName->text();

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","");

if(cflag){

bool f=adao.addAccount(a);

if(f){

QMessageBox msg(this);

msg.setText("create account success!!");

msg.exec();

}else{

QMessageBox msg(this);

msg.setText("create account failed!!");

msg.exec();

}

}

this->close();

}

void AddAccount::paintEvent(QPaintEvent *e){

QPainter qp(this);

QImage img;

img.load(":/bank.bmp");

qp.drawImage(90,5,img);

}

seachaccount.h:

#ifndef SEACHACCOUNT_H

#define SEACHACCOUNT_H

#include

namespace Ui {

class SeachAccount;

}

class SeachAccount : public QDialog

{

Q_OBJECT

public:

explicit SeachAccount(QWidget *parent = 0);

~SeachAccount();

private:

Ui::SeachAccount *ui;

/*根据用户输入的信息 得到一个账户 把账户信息赋值给界面*/

public slots:

void seachAccount();

public:

void paintEvent(QPaintEvent *e);

};

#endif // SEACHACCOUNT_H

seachaccount.cpp:

#include "seachaccount.h"

#include "ui_seachaccount.h"

#include "accountdao.h"

#include

#include

SeachAccount::SeachAccount(QWidget *parent) :

QDialog(parent),

ui(new Ui::SeachAccount)

{

ui->setupUi(this);

connect(ui->seach,SIGNAL(clicked()),

this,SLOT(seachAccount()));

connect(ui->cancel,SIGNAL(clicked()),

this,SLOT(close()));

}

SeachAccount::~SeachAccount()

{

delete ui;

}

void SeachAccount::seachAccount(){

/*得到用户名 用户身份证号 和密码*/

QString aname=ui->aname->text();

QString aid=ui->aid->text();

QString apasswd=ui->passwd->text();

Account a(aname,aid,apasswd,0.0);

/*把这三个信息 传给dao对象 */

AccountDao adao;

bool cflag=adao.connectDb("QMYSQL","testdb","127.0.0.1",

3306,"root","");

if(cflag){

a=adao.getAccountByNameAndIdAndPasswd(a);

}

ui->money->setText(QString::number(a.getAccountMoney()));

}

void SeachAccount::paintEvent(QPaintEvent *e){

QPainter qp(this);

QImage img;

img.load(":/bank.bmp");

qp.drawImage(90,3,img);

}

本文来源:https://www.2haoxitong.net/k/doc/60a1ce0b10661ed9ad51f3c8.html

《银行个人账户信息管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式