1、银行柜员系统项目案例:银行柜员系统10.1 训练技能点 数据类型和变量 Java运算符 Java常用类 Java控制台输入输出 类的设计和编写 对象的创建 数组的使用10.2 需求说明10.2.1 需求概述储蓄是个人理财的重要手段,是我们生活的重要组成部分。我们需要通过和银行柜员交互来完成开户、存款、取款、转账等业务。这就需要一个精确度高、并发性强的银行柜员系统,来帮助我们完成基本的账户理财功能。该系统的角色包括:银行柜员和储户。10.2.2 系统用例图 在整个系统中,银行柜员是执行操作的人,储户将自己的信息通过银行柜员写入系统,从而进行银行的各种基础交易。图10.2.1是该系统的用例图。图1
2、0.2.1 银行柜员系统用例图10.2.3 开发环境JDK 1.5以上、MyEclipse 8.5以上10.3 设计与思路分析10.3.1 功能分析 结合上面的用例图,系统的功能可以分为以下几个模块: 储户开户 储户存款 储户取款 储户转账 储户当前明细输出 储户详细信息输出 退出其中,各个功能需要完成的任务如下所示:(1) 储户开户本模块实现的功能有:分配账号、写入储户信息、开户信息回显等操作。(2) 储户存款本模块实现的功能有:根据输入的账号查找储户信息、存款操作、存款信息回显、明细账输出询问等操作。其中,操作完毕后系统会询问是否输出账户交易的明细账,如果储户需要,系统会输出该账户自开户日
3、起的所有明细信息。(3) 储户取款本模块实现的功能有:根据输入的账号查找储户信息、取款操作、取款信息回显、明细账输出询问等操作。(4) 储户转账本模块实现的功能有:根据输入的账号查找欲转出的储户信息、查找欲转入的储户信息、询问是否确认转账、以及转账操作、转账信息回显、明细账输出询问等操作。(5) 储户当前明细账打印本模块实现的功能有:根据输入的账号,查询相应储户的当前账户明细账功能。(6) 储户详细信息打印本模块实现的功能有:根据输入的账号,查询相应储户的当前账户详细信息功能。(7) 退出本系统建议分为5个类来实现,可以划分到3个不同的包中运行。 com.test.bank.bean包中的Ac
4、count实体类和TradeInfo实体类,分别表示账户信息和交易明细信息。 com.test.bank.method包中的BankMethod业务类和BankFace界面业务类。 com.test.bank.main包中的BankMain主类。其中,系统中这五个类的类图如下图10.2.2所示。 储户类 交易信息类 交易业务类 交易界面类系统主类图10.2.2系统各个类的类图10.3.2 数据要求本系统没有任何数据文件,也没有任何数据库文件。所有的信息都存储在系统运行时自动创建的长度为100的数组中。也就是说,本项目的数据只在运行时存储在内存中,可同时存储100个以内的账户信息。一旦系统退出,
5、所有的储户信息都会丢失。虽然如此设计不符合现实生活的实际情况,但是对于现阶段银行系统主要功能的模拟已经足够。10.4 实现步骤(1) 根据交易信息类TradeInfo的类图,设计交易信息类的详细信息,以打印交易明细账。参考关键代码如下所示:/* * 此类是交易明细类,用于记录每一笔银行交易的明细信息 */package com.test.bank.bean;import java.util.*;import java.text.*;public class TradeInfo / 账户交易号 / 每个账户的交易号从1累加,等于该账户的accountId + tradeIndex; / 开户时t
6、radeIndex=1,此后每交易一笔,tradeId+。 private int tradeId; private char tradeDirection; private double tradeAmount; / 交易类型:1 开户、2 存款、3 取款、4、转账 private int tradeType; private Date tradeDate; private String tradeDescription; public TradeInfo() tradeId = -1; public TradeInfo(char tradeDirection, double tradeAm
7、ount, int tradeType, Date tradeDate, String tradeDescription) this.tradeId = -1; this.tradeDirection = tradeDirection; this.tradeAmount = tradeAmount; this.tradeType = tradeType; this.tradeDate = tradeDate; this.tradeDescription = tradeDescription; public void setTradeId(int tradeId) this.tradeId =
8、tradeId; public int getTradeId() return this.tradeId; / tradeId的自增方法 public void addTradeId() tradeId+; /其他属性的getters和setters方法,略去。 . public String toString() DecimalFormat df = new DecimalFormat(¥0.00); String str_tradeType = ; switch (this.getTradeType() case 1: str_tradeType = 开户; break; case 2:
9、str_tradeType = 存款; break; case 3: str_tradeType = 取款; break; case 4: str_tradeType = 转账; break; default: str_tradeType = 其他交易; break; SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); StringBuffer stb = new StringBuffer(); stb.append(this.getTradeId(); stb.append( ); stb.append(this
10、.getTradeDirection(); stb.append(t ); stb.append(str_tradeType); stb.append(tt); stb.append(df.format(this.getTradeAmount(); stb.append( ); stb.append(sdf.format(this.getTradeDate(); stb.append(t); stb.append(this.getTradeDescription(); stb.append(t); return new String(stb); (2) 分析系统功能,根据类图设计储户类Acco
11、unt,编写储户类的详细信息。参考关键代码如下所示:/* * 此类是银行账户类,用于记录银行的账户信息 */package com.test.bank.bean;import java.util.*;import java.text.*;public class Account private int accountId; / 储户账户号 private String realName; / 储户实名 private String password; / 储户账户密码 private double balance; / 储户账户余额 private String identityId; / 储
12、户身份证号码 private String address; / 储户联系地址 private String phone; / 储户联系电话 private Date openDate; / 储户开户日期 private int tradeCount; / 储户当前交易记录数(该数目=100) private TradeInfo tradeList; / 储户交易明细 public Account() this.tradeCount = 0; tradeList = new TradeInfo100; public Account( int accountId, String realName
13、, String password, double balance, String identityId, String address, String phone, Date openDate) this.tradeCount = 0; tradeList = new TradeInfo100; this.accountId = accountId; this.realName = realName; this.password = password; this.balance = balance; this.identityId = identityId; this.address = a
14、ddress; this.phone = phone; this.openDate = openDate; public void setAccountId( int accountId ) this.accountId = accountId; public int getAccountId() return this.accountId; / 其他属性的getters和setters方法,此处省略。 . / tradeCount的set方法不再设置 / addTradeCount()方法定义为私有的,只能为添加明细的方法调用(private修饰的方法是私有的方法,“私有”的概念将在后续学习中讲解) private void addTradeCount() this.tradeCount+; public int getTradeCount() return this.tradeCount; public void addTradeInfo(TradeInfo info) i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1