银行储蓄系统方案与开发.docx
《银行储蓄系统方案与开发.docx》由会员分享,可在线阅读,更多相关《银行储蓄系统方案与开发.docx(31页珍藏版)》请在冰豆网上搜索。
银行储蓄系统方案与开发
银行储蓄管理系统的设计与开发
TheDesignAndDevelopmentofBankSavingsManagementSystem
学院:
信息科学与工程学院
专业班级:
计算机科学与技术0801班
学号:
*********
学生姓名:
林宁宁
指导教师:
靳鹏<讲师)
2018年06月
摘要
随着计算机应用范围的不断扩大,其优越的性能已逐渐被人们所接受,在社会不断进步的大环境下,计算机技术进行的各种管理也给人们带来了很大的方便。
在现代化的银行中,银行储蓄管理系统有着十分重要的作用。
为了提高银行的存取款工作效率,降低工作的人力、物力开支,提高工作的准确性、正确性,并且便于用户信息存取,需要建立一个高效的、方便的计算机银行储蓄管理系统。
该系统利于银行管理人员对储户进行相应的管理,方便储户对现金形成更好的管理和使用。
使银行能够为储户提高更好更及时的服务,提高银行工作效率,满足用户的需求,为更快、更好的适应现今日益发展的社会,建立高效的服务平台。
银行储蓄管理系统是针对银行储蓄的日常管理而设计。
银行储蓄管理系统不仅要求操作方便而且要求界面简洁,它还需要实现储蓄管理,客户查询和数据统计等功能。
针对上述情况和要求,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、总体设计、详细设计、程序编码、测试等过程开发了一个银行储蓄管理系统。
该系统在WindowsXP平台下开发,采用Java作为编程语言,使用工具Eclipse设计实现。
关键词:
银行储蓄;查询统计;服务平台;信息存取
Abstract
Withtheexpandingrangeofcomputerapplications,itssuperiorperformancehasgraduallybeenaccepted,bysocialprogress,intheenvironmentofsocialprogressingthemanagementofavarietyofcomputertechnologybringsalotofconvenience.Inmodernbanking,bankdepositmanagementsystemhasaveryimportantrole.
Inordertoimprovetheefficiencyofthebankdeposit,toreducetheworkofhumanandmaterialexpenses,toimprovetheaccuracyofwork,anduser-friendlyaccesstoinformation,itisneededtoestablishanefficient,convenientcomputerbanksavingsmanagementsystem.Thesystemisconducivetothebankmanagerstomanagethecustomersappropriately,withbettermanagementanduseofconvenientdepositorofcash.Itenablesbankstoimprovebetterandfasterservicetothedepositors,improvetheefficiencyofbanktomeettheneedsofusersforfaster,betteradapttothesocialdevelopmentoftoday'sincreasinglyefficientserviceplatform.
Banksavingsmanagementsystemisdesignedforday-to-daymanagementofthebanksavings.Banksavingsmanagementsystemisnotonlyeasytooperateandsimpleinterface,italsoneedstorealizethesavingsmanagement,customerinquiriesandstatisticsfunctions.
Inresponsetothesecircumstancesandrequirements,thedevelopmentofsoftwareengineeringprinciples,inaccordancewiththeprocessspecificationofthesoftwareprocess,inaccordancewiththerequirementsanalysis,preliminarydesign,detaileddesign,programcoding,testing,processdevelopmentmanagementsystemforabanksavings.ThesystemisdevelopedunderwindowsXPplatform,usingJavaasaprogramminglanguagedesignandimplementationoftheuseoftoolseclipsetobuild.
Keywords:
BankSavings。
QueryStatistics。
ServicePlatform。
InformationAccess
第1章引言
1.1系统开发背景及意义
随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由大规模科学计算的海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,在银行储蓄管理之中的应用日益增加。
近年来我国信息产业发展迅速,手工管理方式在银行储蓄管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。
目前,对外开放必然趋势使银行业直面外国银行巨头的直接挑战,因此,银行必须提高其工作效率,改善其工作环境。
这样,储蓄管理的信息化势在必行。
现代商业银行的竞争和发展,已突破传统业务的框架,为了提高银行的业务竞争能力,扩大客户群,培育新的利润增长点,务必大力改良其帐目管理系统,因此建立一个功能齐全可靠的储蓄管理系统成为银行当前业务发展的迫切之需。
在传统的银行储蓄管理中,其过程往往是很复杂的,繁琐的,储蓄管理以入帐和出帐两项内容为核心,在此过程中又需要经过若干道手续,因为整个过程都需要手工操作,效率十分低下,且由于他们之间关联复杂,统计和查询的方式各不相同;且会出现信息的重复传递问题,因此该过程需要进行信息化,以利用计算机进行储蓄管理。
系统开发的整体任务是实现银行储蓄管理的系统化、规范化、自动化和智能化,从而达到提高企业管理效率的目的。
1.2Java语言介绍
银行储蓄管理系统采用Java语言进行编程。
Java是一种简单的,跨平台的,的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java语言是一种很优秀的语言,是目前软件设计中极为壮健的编程语言,只要提供了Java解释器,Java编写的软件在执行码上兼容。
Java作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制,具有很高的性能。
其次,它最大限度地利用了网络,Java的小应用程序(applet>可在网络上运行而不受CPU和环境的限制。
另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统[1-4]。
Java语言有如下特点:
<1)平台无关性
平台无关性是指Java能运行于不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java<2)安全性
Java的编程类似C++,学习过C++的人将很快掌握Java的精髓。
Java舍弃了C++的对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
<3)面向对象
Java吸取了C++面向对象的概念,将于类中,利用类的优点,实现了程序的简洁性和便于维护性。
类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和应用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,类功能强大,经常会使用到它及其它派生的子类。
<4)分布式
Java建立在扩展网络平台上。
提供了用和协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
<5)健壮性
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
自己操纵内存减少了内存出错的可能性。
Java还实现了真,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。
并且Java还提供了Null指针检测、数组边界检测、异常出口、Bytecode校验等功能。
<6)解释型
C,C++等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。
Java不像C或C++,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。
字节码是很接近机器码的文件,可以在提供了java虚拟机<7)动态
Java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C++那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。
1.3系统开发工具
1.3.1Eclipse工具简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
该平台为编程人员提供了一流的Java集成开发环境。
作为一套开源工具,可用于构建WebServicesJ2EE等各种类型的应用,其所提供的功能不亚于、甚至超过由专业的集成环境供应商所提供的商业化产品,如JBuilder。
在JAVA的程序开发环境jdk1.7.0_04下Eclipse不需要安装,下载后解压即可使用。
就其本身而言,它只是一个框架和一组服务,用于通过组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具Eclipse还包括插件开发环境由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统[5-8]。
第2章系统总体设计
2.1系统分析
本节针对银行储蓄管理系统的设计任务进行论述,对整个银行储蓄管理系统进行问题分析,阐述一个比较好的银行储蓄管理系统主要具体的特征,需求分析,预期目标及功能等[9-11]。
2.1.1需求分析
通过与银行工作人员交流了解:
随着银行业务的推陈出新以及这些业务为客户带来的便利,使银行吸引了越来越多的客户,一切都使银行储蓄的管理越来越重要。
银行储蓄管理系统是针对银行储蓄业务的日常管理而设计。
银行操作系统不仅要求操作方便而且要求界面简洁,它需要实现储蓄管理,客户查询和数据统计等几个功能。
其中储蓄管理又包含了开户、销户、存款、取款和修改信息的功能;客户查询,可以通过姓名、账号、电话、家庭地址等不同的方式来查询需要的客户信息。
通过该系统的设计实现,使银行部门更好地进行业务管理,为客户提供更佳优质的服务。
软件具有友好的界面,操作简捷方便,便于与用户交互。
2.1.2预期实现目标及功能
对于银行储蓄管理系统的要求主要有以下几个方面:
<1)系统能够完成银行储蓄管理系统的主要功能;
<2)系统界面简洁,容易操作;
<3)具有一定的稳定性,安全性;
<4)访问速度快。
银行储蓄管理系统包括五个模块,分别为系统选项、储蓄管理、数据统计、用户查询和帮助模块。
其中储蓄管理还包含了开户、销户、存款、取款和修改信息功能。
用户查询包含了姓名查询、地址查询、账号查询和电话查询。
系统功能的模块图,如图2-1所示:
图2-1系统功能模块图
银行储蓄管理系统包括五个模块,分别为系统选项、储蓄管理、客户查询、数据统计和帮助。
其具体的功能如下:
储蓄管理模块:
主要处理用户的日常储蓄操作。
<1)开户:
新建一个账户,为其指定一个唯一的账号来标志该用户。
<2)销户:
将指定用户的账号删除。
用户输入密码经过验证成功后,把账户的余额全部取出,最后删除该账户。
<3)存款:
向指定的账户中存入一笔钱,经用户输入密码确认后,方可存入。
<4)取款:
从指定的账户中取出一笔钱。
取款前用户需要输入密码确认,取款后账户余额不得少于账户的最低存款额,否则不予处理。
<5)修改信息:
选择一个存在的账户,然后输入密码经确认后进入用户信息窗口,可对里面的密码、联系电话和家庭住址进行修改,而账号和账户上的金额不能被用户修改。
客户查询模块:
按照指定方式进行查找账户信息,包括按姓名、账号和联系电话进行查找,也可以按照地址进行模糊查找。
数据统计模块:
对银行的数据进行统计,如对账户数量的统计。
帮助模块:
可查看系统帮助及软件版本说明。
2.2数据库设计
在信息世界中,从周围获得信息,然后将获得的信息转化为数据,再将数据返回到现实世界中。
而软件系统的开发工作需要考虑系统开发所需要的数据,以及如何对这些数据进行操作。
这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心[12-13]。
2.2.1概念结构设计
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。
在系统中采用的是自底向上的概念结构设计方法,通过“实体联系模型”E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-R图来表示数据模型。
2.2.2逻辑结构设计
<1)数据库设计
1)管理员信息表user:
包括用户名<主要用于登录),密码;如表2-1所示。
2)账户信息表account:
此表用来保存客户的姓名,账号,密码,账户余额,家庭住址以及电话;如表2-2所示。
3)账单信息表bill:
此表用于保存客户进行储蓄操作的姓名,账号,类型,金额,账户余额,流水号以及日期;如表2-3所示。
表2-1管理员信息表
列名
数据类型
长度
允许空
Username
String
20
Password
String
20
表2-2账户信息表
列名
数据类型
长度
允许空
name
String
50
id
String
20
password
String
20
√
money
Double
50
address
String
50
phone
String
20
表2-3账单信息表
列名
数据类型
长度
允许空
name
String
50
accountId
String
20
type
String
50
money
Double
50
balance
Double
50
billNumber
Int
16
date
Date
50
<2)根据需求分析得到银行储蓄管理系统的E-R图,如图2-2所示:
图2-2银行储蓄管理系统的E-R图
第3章系统详细设计
3.1系统详细设计概述
本章主要包括数据库的设计,系统详细设计两大部分。
数据库的设计主要概括阐述系统数据库的设计,以及在开发的过程中使用数据库的方法。
系统详细设计主要包括各个模块的设计方法,以及每个模块包含的主要代码。
3.2数据库设计
3.2.1数据库链接与使用
银行储蓄管理系统采用输入输出流对数据进行存取。
I/O流提供一条通道程序,可以使用这条通道把与源中的字符序列送到目的地。
把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。
而输出流的指向是字节要去的目的地,程序通过向输出流中写入数据把信息传递到目的地。
程序中用到的是I/O流中的对象流,即对象输入流(ObjectInputStream>和对象输出流(ObjectOutputStream>。
当使用对象流写入和读出数据时,要保证对象是序列化的,一个类如果实现了Serializable接口,则这个类创建的对象就是序列化的对象。
对象输出流使用writeObject(Objectobj>方法将一个对象obj写入到一个文件,对象输入流使用readObject(Objectobj>方法读取一个对象到程序中。
在程序中对数据的操作是使用链表来实现的,所有对数据的操作都能在链表中表现出来,如数据的增加、删除、修改等。
程序中有两张链表存储账户数据的链表(listAccount>和存储所有存取清单的账单链表(BillList>,链表是通过Java.util包中的LinkedList类来创建。
用户的所有操作都被记录在这两张链表中,当链表中的内容发生改变时,程序会调用对象输出流的writeObject(Objectobj>方法将文件中的内容更新,从而实现数据的一致性。
在存款,取款,修改信息还有销户的时候首先要在存取帐户信息的链表中找到这个相对应的账号,然后在进行操作。
借助Iterator类实现遍历链表,一个链表对象可以使用iterator<)方法获取一个Iterator对象,使用next(>方法遍历链表。
账户数据的链表listAccount建立的代码如下:
//存储账户数据的链表,且只能存储Account类
privateLinkedListlistAccount=newLinkedList(>。
在链表中查询帐户的代码为:
以销户为例
Iteratoriterator=data.getAccountList(>.iterator(>。
//根据选择的行获得标志该账户的唯一ID
StringdelId=(String>dm.getValueAt(table.getSelectedRow(>,1>。
//根据ID在账户链表中找到该账户并返回该账户的引用
while(iterator.hasNext(>>{
account=(Account>iterator.next(>。
if(account.getId(>.equals(delId>>{
……
}
……
}
建立新的账户并把它保存在链表,实现的代码如下:
publicvoidaddAccount(Accountaccount>{
listAccount.add(account>
}
读取帐户信息并保存到链表,实现的代码如下:
FileInputStreamfis=newFileInputStream(file>。
ObjectInputStreamois=newObjectInputStream(fis>。
listAccount=(LinkedList>ois.readObject(>。
ois.close(>。
3.3系统详细设计
3.3.1登录界面
在登录界面输入管理员姓名和密码,点击“确定”按钮,通过if(username.equals(getUsername(>>&&password.equals(getPassword(>>>语句进行比较。
判断是否通过验证,如果通过则释放,显示主窗体,进入操作主界面,如图3-1所示[14-26]。
图3-1登录界面示意图
当管理员打开登录界面后,如果不想登录,点击“退出”按钮退出系统,其代码如下:
System.exit(0>。
在登录时如果管理员输入错误的帐号或密码,通过JOptionPane.showMessageDialog(this,"错误的用户名或密码!
">。
提示管理员操作。
为防止暴力破解,设计三次输入错误密码,则自动退出系统的机制.其代码如下:
count++。
if(……>{
……
}
elseif(count==3>{
JOptionPane.showMessageDialog(this,"连续三次输入错误,退出系统!
">。
doExit(>。
}
为了防止下个用户看到上个用户的信息,利用setUsername("">。
和setPassword("">。
来清空用户名和密码输入框中的内容。
在设计登录界面的框架时,通过publicclassLoginWindowextendsJFrameimplementsActionListener{}定义一个登录窗口类,它继承于JFrame。
在设计好登录界面的框架后,要初始化所有控件,实现的部分代码如下:
publicvoidinitComponent(>{
ContainercontentPane=this.getContentPane(>。
contentPane.setLayout(null>。
labelUsername=newJLabel("管理员帐号:
">。
labelPassword=newJLabel("管理员密码:
">。
txtUsername=newJTextField(>。
txtPassword=newJPasswordField(>。
btnConfirm=newJButton("确定">。
btnCancel=newJButton("退出">。
……
}
3.3.2系统主界面
在操