《毕业设计论文基于JAVA的建设银行账目管理系统的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于JAVA的建设银行账目管理系统的设计.doc(21页珍藏版)》请在三一办公上搜索。
1、建设银行账目管理系统的设计摘 要随着我国信息产业发展迅速以及中国加入世界贸易组织,国内银行之间以及与外国银行之间的竞争也越来越激烈,怎样发展业务以吸引更多顾客是各银行面队的当务之急。而帐目管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着相当重要的作用。现在银行的业务越来越多,吸引的客户也越来越多,银行帐目的管理就越显重要。银行帐目管理系统是针对银行帐目的日常管理而设计。银行帐目管理系统不仅要求操作方便而且要求界面简洁,它还需要实现帐目管理,用户查询和查询统计功能。针对上述情况和要求,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码
2、、测试等过程开发了一个银行账目管理系统。采用JAVA作为编程语言,使用工具eclipse3.1设计实现了银行帐目管理系统,完成系统管理、帐目管理、查询统计、用户查询等功能。关键词:用户查询;帐目管理;查询统计;JAVA;eclipse3.1 591论文网 www.591LW.comBank Account Management SystemAbstractAlong with our country of information industry is developing quickly and China has acceded to WTO, many banks have to com
3、pete against each other for attracting customers. How to develop the business to attract more customers is the urgent matter that each bank confronts.Bank account management is a very most important part of the process of the bank business. It plays a key role in the process of bank business. The bu
4、siness of the bank is more and more at present so that the customers of the bank are more and more too. The management of the bank account is very important for customers.The bank account management system is a usual management to aim at the bank account to design. This operate system not only opera
5、tes conveniently but also the interface is succinct, and the system needs to achieve some functions such as account management, search statistics, customer search etc. functionAiming at the above circumstance, presents a practical method to implement a bank account management system based on softwar
6、e engineering ,according to the software process such as analyze the need, essentials design, detailed design, program, test, etc. Adopt JAVA programming language and use the tool of eclipse3.1 to design the bank account management system. It can complete system management, account management, searc
7、h statistics, customer search etc. function.Key words: Customer search; Account management; Search statistics; JAVA; Eclipse3.1 591论文网 www.591LW.com目 录论文总页数:23页1引言11.1开发背景11.2开发意义12系统需求分析22.1银行帐目管理系统的需求22.2用户对系统的期望22.3编程语言和运行环境介绍23功能模块设计33.1银行帐目管理系统功能模块33.2功能模块介绍44系统的实现54.1登录界面的设计54.2操作主界面的设计64.3功能界
8、面的设计94.3.1显示全部的功能实现94.3.2开户窗口的设计与实现104.3.3销户窗口的设计与实现114.3.4存款和取款窗口的设计与实现134.3.5修改信息窗口的设计与实现164.3.6查询功能的实现174.3.7查询统计的实现185数据保存机制-采用链表和输入输出流186测试196.1测试环境196.2测试结果19结 论20参考文献211 引言随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。同时,随着我国加入世贸组织,我国的银行业面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信
9、息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。1.1 开发背景随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由大规模科学计算的海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,在银行帐目管理之中的应用日益增加。近年来我国信息产业发展迅速,手工管理方式在银行帐目管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。目前,对外开放必然趋势使银行业直面外国银行巨头的直接挑战,因此,银行必须提高其工作效率,改善其工作环境。
10、这样,帐户管理的信息化势在必行。在传统的银行帐户管理中,其过程往往是很复杂的,繁琐的,帐户管理以入帐和出帐两项内容为核心,在此过程中又需要经过若干道手续,因为整个过程都需要手工操作,效率十分低下,且由于他们之间关联复杂,统计和查询的方式各不相同;且会出现信息的重复传递问题,因此该过程需要进行信息化,以利用计算机进行帐目管理。系统开发的整体任务是实现银行帐户管理的系统化、规范化、自动化和智能化,从而达到提高企业管理效率的目的。1.2 开发意义随着社会的进步和计算机技术的发展,尤其是网络技术的飞速进步,信息观念已经深入人心。信息科学作为当代社会中的重要一环在国民经济中起着举足轻重的作用。在中国经济
11、蓬勃发展的今天,越来越庞大的储蓄用户数目和资金流通量对银行帐目管理的可靠性每天都在进行苛刻的考验。建立和发展功能较完善的银行帐目管理系统,不仅可以服务客户、联系客户、吸引客户、稳定客户,巩固银行业务经营基础,而且通过服务社会,可以塑造银行自身的市场形象,体现银行的综合实力还能够提高银行的存款总量;通过提供高效,优质的业务,吸引更多的客户来银行办理业务,从而扩大了银行的客户群,加强了银行和客户的业务联系,也会带动其他业务的发展。总之,现代商业银行的竞争和发展,已突破传统业务的框架,为了提高银行的业务竞争能力,扩大客户群,培育新的利润增长点,务必大力改良其帐目管理系统,因此建立一个功能齐全可靠的帐
12、目管理系统成为银行当前业务发展的迫切之需。2 系统需求分析2.1 银行帐目管理系统的需求通过与银行工作人员交流了解:随着银行业务的推陈出新以及这些业务为客户带来的便利,使银行吸引了越来越多的客户,一切都使银行帐目的管理越来越重要。银行帐目管理系统是针对银行帐目的日常管理而设计。银行操作系统不仅要求操作方便而且要求界面简洁,它需要实现帐目管理,用户查询和查询统计等几个功能。其中帐目管理又包含了开户、销户、存款、取款和修改信息的功能。用户可以通过不同的方式来查询需要的信息。通过该系统的设计实现,使银行部门更好地进行业务管理,为客户提供更佳优质的服务。2.2 用户对系统的期望银行对帐目管理系统的要求
13、主要有以下几个方面:1. 系统能够完成银行帐目管理系统的主要功能;2. 系统界面简洁,容易操作;3. 具有一定的稳定性,安全性;4. 访问速度快。2.3 编程语言和运行环境介绍银行帐目管理系统采用Java语言进行编程。Java语言是一种很优秀的语言,是目前软件设计中极为壮健的编程语言,只要提供了Java解释器,Java编写的软件在执行码上兼容。Java作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制,具有很高的性能。其次,它最大限度地利用了网络,Java的小应用程序(applet)可在网络上运行而不受CPU和环境的限制。另外,Java还提供
14、了丰富的类库,使程序设计者可以很方便地建立自己的系统。通过分析Java的特点,进一步指出它所具有的优点。Java语言有下面一些特点:简单、面向对象、与平台无关、解释执行、多线程、安全、动态性。1) 简单:Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾回收,大大简化了程序设计者的内存管理工作。2) 面向对象:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化
15、和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。3) 与平台无关:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。4) 解释型:Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。5) 多线程:Java还有一特点就是内置对多线程的支持。多线程支持完成多个任务。6) 安全:用于网络、分布环境下的Java必须要防止病
16、毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。7) 动态:Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。Eclipse是一个开放源码的、可扩展的应用开发平台,该平台为编程人员提供了一流的Java集成开发环境。作为一套开源工具,可用于构建Web Services J2EE等各种类型的应用,其所提供的功能不亚于、甚至超过由专
17、业的集成环境供应商所提供的商业化产品,如JBuilder。在JAVA的程序开发环境jdk1.5.0_04下Eclipse不需要安装,下载后解压即可使用。3 功能模块设计3.1 银行帐目管理系统功能模块银行帐目管理系统包括五个模块,分别为系统选项、帐目管理、查询统计、用户查询和帮助。其中帐目管理还包含了开户、销户、存款、取款和修改信息功能。用户查询包含了姓名查询、地址查询、帐号查询和电话查询。功能模块图如图1所示。银行帐目管理系统查询统计用户查询帐目管理系统管理帮助电话查询地址查询帐号查询姓名查询取款修改信息销户存款开户图1银行帐目管理系统模块图3.2 功能模块介绍银行帐目管理系统包括五个模块,
18、分别为系统管理、帐目管理、查询统计、用户查询和帮助。其具体的功能如下:帐目管理模块:主要处理用户的日常操作。(1)开户:新建一个帐户,为其指定一个唯一的帐号来标志该用户(2)销户:将指定用户的帐号删除。用户输入密码经过验证成功后,把帐户的余额全部取出,最后删除该帐户。(3)存款:向指定的帐户中存入一笔钱,经用户输入密码确认后,方可存入。(4)取款:从指定的帐户中取出一笔钱。取款前用户需要输入密码确认,取款后帐户余额不得少于帐户的最低存款额,否则不予处理。(5)修改信息:选择一个存在的帐户,然后输入密码经确认后进入用户信息窗口,可对里面的密码、联系电话和家庭住址进行修改,而帐号和帐户上的金额不能
19、被用户修改。查询模块:按照指定方式进行查找帐户信息,包括按姓名、帐号和联系电话进行查找,也可以按照地址进行模糊查找。统计模块:对银行的数据进行统计,如对帐户数量的统计。4 系统的实现4.1 登录界面的设计在登录界面输入管理员姓名和密码,点击“确定”按钮,通过if(username.equals(getUsername()&password.equals(getPassword()语句进行比较; 判断是否通过验证,如果通过则释放,显示主窗体,进入操作主界面,如图2所示。图2 登录界面示意图当管理员打开登录界面后,如果不想登录,点击“退出”按钮退出系统,其代码如下:private void doE
20、xit() System.exit(0);在登录时如果管理员输入错误的帐号或密码,通过JOptionPane.showMessageDialog(this,错误的用户名或密码!);提示管理员操作。为防止暴力破解,设计三次输入错误密码,则自动退出系统的机制.其代码如下: else if(count = 3) JOptionPane.showMessageDialog(this,连续三次输入错误,退出系统!); doExit();为了防止下个用户看到上个用户的信息,利用setUsername();和setPassword();来清空用户名和密码输入框中的内容。在设计登录界面的框架时,通过publi
21、c class LoginWindow extends JFrame implements ActionListener定义一个登录窗口类,它继承于JFrame。在设计好登录界面的框架后,要初始化所有控件,实现的部分代码如下:public void initComponent() Container contentPane = this.getContentPane();contentPane.setLayout(null);labelUsername= new JLabel(管理员帐号:);labelPassword= new JLabel(管理员密码:);txtUsername= new
22、JTextField();txtPassword= new JPasswordField();btnConfirm= new JButton(确定);btnCancel= new JButton(退出); 4.2 操作主界面的设计在操作主界面,可以进行各种操作,包括存款、取款、开户、销户、修改信息、显示全部和查找,而且界面简洁易于操作,如图3所示。图3 操作主界面示意图在设计银行帐目管理系统的操作主界面时,先利用public class MainWindow extends JFrame implements ActionListener 来定义一个主窗口类MainWindow,然后在里面定义
23、所需要的全部变量,变量定义为private型。在MainWindow类中,功能刻画的代码如下:public MainWindow(String title) setTitle(title);setSize(WIDTH,HEIGHT);setResizable(false);setDefaultCloseOperation(EXIT_ON_CLOSE);initMenu();initComponent();center();loadAccountData();loadBillData();操作主界面的设计主要包括几部分:一是菜单栏的设计,二是中间部分表格的设计,三是下面部分按钮的设计。主要设计过
24、程如下:菜单栏的设计是先创建好菜单项,然后把菜单项添加到对应的菜单中,再将菜单添加至菜单栏中,最后把菜单添加到主窗体中。设计好操作主界面后,点击“查询统计”按钮,出现如图4所示的下拉菜单。图4 菜单栏示意图实现的主要代码如下:public void initMenu() menuBar = new JMenuBar();/创建菜单queryCountMenu = new JMenu(查询统计); /创建菜单项 queryCountMI = new JMenuItem(查询统计);/给菜单项添加监听器,监听菜单项的单击事件queryCountMI.addActionListener(this);
25、/菜单项添加到菜单里面queryCountMenu.add(queryCountMI);setJMenuBar(menuBar);操作主界面的表格如图5所示。表格主要包含了姓名、帐号、卡上余额、家庭住址和电话,主要是方便查看信息。图5 表格示意图表格部分的设计主要代码如下:/设置表格的列标题final String strColName = 姓名, 帐号, 卡上余额, 家庭住址, 电话;/获得表格的所显示数据的TableModeldm = (DefaultTableModel) table.getModel();/把列标题添加到表格中for ( int i = 0;i strCOLName.l
26、ength; i+ )dm.addColumn(strCOLNamei);窗体下面部分的控件的设计主要就先将控件创建出来,再将不同功能的控件分组放置,便于操作。面板被只能创建一次,如果已经创建了该这块面板,直接返回创建好了的面板,提高效率。其实现代码如下:if(bottomPanel != null)return bottomPanel;该面板的控件分三部分创建,分别放置在三个面板中,将实现不同功能的控件放在不同的面板中,达到界面美观,操作方便的目的。如图6所示。图6操作主界面的面板示意图三个面板通过程序中的三个方法 getBottomLeftPanel(), getBottomMiddleP
27、anel()以及getBottomRightPanel()。这样的划分增强了程序的可以读性,不同的方法实现不同的功能,一目了然。实现的主要代码如下:private JPanel getBottomPanel() if(bottomPanel != null) return bottomPanel;bottomPanel = new JPanel();bottomPanel.setLayout(new GridLayout(1,3);bottomPanel.add(getBottomLeftPanel();bottomPanel.add(getBottomMiddlePanel();bottom
28、Panel.add(getBottomRightPanel();return bottomPanel;4.3 功能界面的设计4.3.1 显示全部的功能实现在实现存款、取款、销户和修改信息的时候都需要显示出表格中的信息,然后选择一个帐户后进行操作。点击如图3操作主界面的“显示全部”按钮,在表格中出现已经存在的信息,当存款、取款、销户和修改信息等操作的时候,显示的信息会发生变化,这主要是随着操作的进行,系统会清除以前的数据。实现的代码如下:private void doShowAll() Account account = new Accountdata.getCount();data.getAc
29、countList().toArray(account);/清除表格中以前的数据while(table.getRowCount() != 0) dm.removeRow(0);/显示出所有帐户数据for(int i=0; idata.getCount(); i+) String strRow = accounti.getName(), accounti.getId(),accounti.getMoney()+,accounti.getAddress(), accounti.getPhone();dm.addRow(strRow);4.3.2 开户窗口的设计与实现4.3.3 销户窗口的设计与实现
30、4.3.4 存款和取款窗口的设计与实现存款和取款的操作方法都是一样的,都是首先在如图3所示的操作主界面里选中一个需要存款(取款)的帐户,如图9所示,然后点击按钮(存款或取款按钮),弹出输入密码的信息框,帐户输入密码经验证后。图9帐户被选中示意图(蓝色标志)在没有选中帐户的时候点击存款按钮,系统会提示帐户,实现的代码为:if(row = -1) /如果没有选中记录,提示先选中记录才能存款JOptionPane.showMessageDialog(this,请先选择要存款的帐户!); 选中要存款的帐户后,点击存款按钮,弹出输入密码框,帐户要输入密码验证后才能存款操作,当没有输入的密码或者输错3次,
31、会自动退出系统,实现的代码如下:else/根据选择的行获得标识该帐户的唯一IDString delId = (String)dm.getValueAt(table.getSelectedRow(), 1);/根据ID在帐户链表中找到该帐户并返回该帐户的引用while(iterator.hasNext()account = (Account)iterator.next();if(account.getId().equals(delId) break;/找到要存款的帐户后,要用户输入密码确认进行存款操作int number = 0;while(true) String strPassword =
32、JOptionPane.showInputDialog(this,请输入密码:); if(strPassword = null) return; else if (account.getPassword().equals(strPassword) break; else if(+number) 3) JOptionPane.showMessageDialog(this,密码错误!请重新输入!); continue; JOptionPane.showMessageDialog(this,密码输错三次,帐号被锁定!);return;验证密码通过后,在输入框中输入存款金额,金额必须为数字,如果输入其
33、他信息,系统会报错,如图10所示。图10操作错误提示框实现的代码如下:/存款数目只能是数字String strNumber = null;while (true) strNumber = JOptionPane.showInputDialog(this, 请输入存款金额:);if(strNumber = null) return; else if (strNumber.matches(1-90-9*) break; JOptionPane.showMessageDialog(this, 输入错误!请输入数字!);通过account.setMoney(account.getMoney() + I
34、nteger.parseInt(strNumber);来实现存款操作。存款完后显示一张存取信息表,如图11所示。产生的存取清单会存储到存取清单链表中去,点击“显示全部”按钮,显示新的信息,此时的卡上余额信息已经发生变化,通过图11和图12可以发现金额的变化。图11存款后的信息表图12 卡上余额变化实现的代码如下:bill = new Bill();/生成新的存取清单bill.setAccountId(account.getId();bill.setMoney(Integer.parseInt(strNumber);bill.setBalance(account.getMoney();bill.
35、setName(account.getName();bill.setType(存款);/保存帐户信息到文件FileOutputStream fos = new FileOutputStream(file);ObjectOutputStream oos = new ObjectOutputStream (fos);oos.writeObject(listAccount);oos.close();4.3.5 修改信息窗口的设计与实现修改信息的窗口和开户窗口是一样的,他们继承于同一个类,但是他们完成的功能不一样。点击如图3所示操作主界面的“修改密码”按钮,弹出输入密码提示框,验证后可以修改用户名、密
36、码、联系电话和家庭住址,点击“确定”按钮后显示修改信息成功。但是帐户没有权力利修改帐号和存款金额。修改窗口如图12所示: 图12 修改信息窗口主要功能实现代码与开户的功能代码相似,不同的地方是最后只对帐户信息进行更新,而不是新添加帐户,如下:/保存此帐户信息的更新account.setName(getAccountName();/更改帐户的姓名account.setPassword(getPassword();/更改帐户的密码account.setPhone(getPhone();/更改帐户的电话号码account.setAddress(getAddress();/更改帐户的住址/在链表中更新
37、该帐户的信息data.getAccountList().set(pos,account);/保存帐户信息到文件4.3.6 查询功能的实现在图3所示的操作主界面,点击“用户查询”或“查找”都能进行查找操作,查找的时候必须选中一个查询方式,并且必须输入查找的关键字,否则会产生如图13的提示框。图13提示信息框代码如下:if(getInput().trim().length() = 0) JOptionPane.showMessageDialog(this,请输入查询关键字!);return;帐户可以通过四种方式来查询,分别是查询姓名,查询帐号,查询电话号码和查询家庭住址。当查询结束为,为保证信息的
38、安全,会清除表格中以前的数据,代码如下:while(table.getRowCount() != 0) dm.removeRow(0);根据查询方式进行查询,并在表格中显示出来,当查找方式为姓名时的代码如下:/根据用户选择的单选按钮 进行查询,在表格中显示符合条件的记录if(rab1.isSelected() for(int i=0; idata.getCount(); i+) if(accounti.getName().equals(getInput() String strRow = accounti.getName(), accounti.getId(), accounti.getMon
39、ey()+,accounti.getAddress(), accounti.getPhone(); dm.addRow(strRow);4.3.7 查询统计的实现在如图3所示的操作主界面单击菜单上的“查询统计”,可以完成对帐户数的统计,代码如下:private void doCount() JOptionPane.showMessageDialog(this,共有+AccountData.getInstance().getCount()+个帐户!);5 数据保存机制-采用链表和输入输出流银行帐目管理系统采用输入输出流对数据进行存取。I/O流提供一条通道程序,可以使用这条通道把与源中的字符序列送
40、到目的地。把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。而输出流的指向是字节要去的目的地,程序通过向输出流中写入数据把信息传递到目的地。程序中用到的是I/O流中的对象流,即对象输入流(ObjectInputStream)和对象输出流(ObjectOutputStream)。当使用对象流写入和读出数据时,要保证对象是序列化的,一个类如果实现了Serializable接口,则这个类创建的对象就是序列化的对象。对象输出流使用writeObject(Object obj)方法将一个对象obj写入到一个文件,对象输入流使用readObject(Object obj)方法读取一个对象到程序中
41、。 在程序中对数据的操作是使用链表来实现的,所有对数据的操作都能在链表中表现出来,如数据的增加、删除、修改等。程序中有两张链表存储帐户数据的链表(listAccount)和存储所有存取清单的帐单链表(BillList),链表是通过Java.util包中的LinkedList类来创建。用户的所有操作都被记录在这两张链表中,当链表中的内容发生改变时,程序会调用对象输出流的writeObject(Object obj)方法将文件中的内容更新,从而实现数据的一致性。在存款,取款,修改信息还有销户的时候首先要在存取帐户信息的链表中找到这个相对应的帐号,然后在进行操作。借助Iterator类实现遍历链表,
42、一个链表对象可以使用iterator()方法获取一个Iterator对象,使用next()方法遍历链表。帐户数据的链表listAccount建立的代码如下:/存储帐户数据的链表,且只能存储Account类private LinkedList listAccount = new LinkedList();在链表中查询帐户的代码为:以销户为例Iterator iterator = data.getAccountList().iterator();/根据选择的行获得标志该帐户的唯一IDString delId = (String)dm.getValueAt(table.getSelectedRow(
43、),1);/根据ID在帐户链表中找到该帐户并返回该帐户的引用while (iterator.hasNext()account = (Account) iterator. next(); if(account.getId().equals(delId)建立新的帐户并把它保存在链表,实现的代码如下:public void addAccount(Account account) listAccount.add(account)读取帐户信息并保存到链表,实现的代码如下:FileInputStream fis = new FileInputStream(file);ObjectInputStream o
44、is = new ObjectInputStream (fis);listAccount = (LinkedList)ois.readObject();ois.close();6 测试6.1 测试环境银行帐目管理系统测试的环境是:内存512M,硬盘80G,JDK1.5.0_04以及eclipse汉化版,操作系统为Microsoft Windows XP professional上正常运行。6.2 测试结果银行帐目管理系统能够按照用户的需求实现各种功能,在登录以前运行整个系统,运行通过后弹出管理员登录框,输入姓名和密码,然后点击“确定”按钮,当验证通过后,进入操作主界面。可进行存款、取款、开户、销户、修改信息、查询和统计功能。在进行存款、取款、销户和修改信息时首先都必须选中一个帐户,然后再进行操作,通过点击“修改信息”按钮来查看具体的变化。在存款时当用户没有设置密码时,默认密码是000000,用户可以通过点击“修改信息”按钮来修改自己的密码。在输入密码时设置了输入次数,当超过输入次数后,帐户被锁定。进