银行柜员系统.docx

上传人:b****4 文档编号:678327 上传时间:2022-10-12 格式:DOCX 页数:27 大小:884.54KB
下载 相关 举报
银行柜员系统.docx_第1页
第1页 / 共27页
银行柜员系统.docx_第2页
第2页 / 共27页
银行柜员系统.docx_第3页
第3页 / 共27页
银行柜员系统.docx_第4页
第4页 / 共27页
银行柜员系统.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

银行柜员系统.docx

《银行柜员系统.docx》由会员分享,可在线阅读,更多相关《银行柜员系统.docx(27页珍藏版)》请在冰豆网上搜索。

银行柜员系统.docx

银行柜员系统

项目案例:

银行柜员系统

10.1训练技能点

Ø数据类型和变量

ØJava运算符

ØJava常用类

ØJava控制台输入输出

Ø类的设计和编写

Ø对象的创建

Ø数组的使用

10.2需求说明

10.2.1需求概述

储蓄是个人理财的重要手段,是我们生活的重要组成部分。

我们需要通过和银行柜员交互来完成开户、存款、取款、转账等业务。

这就需要一个精确度高、并发性强的银行柜员系统,来帮助我们完成基本的账户理财功能。

该系统的角色包括:

银行柜员和储户。

10.2.2系统用例图

在整个系统中,银行柜员是执行操作的人,储户将自己的信息通过银行柜员写入系统,从而进行银行的各种基础交易。

图10.2.1是该系统的用例图。

图10.2.1银行柜员系统用例图

10.2.3开发环境

JDK1.5以上、MyEclipse8.5以上

10.3设计与思路分析

10.3.1功能分析

结合上面的用例图,系统的功能可以分为以下几个模块:

Ø储户开户

Ø储户存款

Ø储户取款

Ø储户转账

Ø储户当前明细输出

Ø储户详细信息输出

Ø退出

其中,各个功能需要完成的任务如下所示:

(1)储户开户

本模块实现的功能有:

分配账号、写入储户信息、开户信息回显等操作。

(2)储户存款

本模块实现的功能有:

根据输入的账号查找储户信息、存款操作、存款信息回显、明细账输出询问等操作。

其中,操作完毕后系统会询问是否输出账户交易的明细账,如果储户需要,系统会输出该账户自开户日起的所有明细信息。

(3)储户取款

本模块实现的功能有:

根据输入的账号查找储户信息、取款操作、取款信息回显、明细账输出询问等操作。

(4)储户转账

本模块实现的功能有:

根据输入的账号查找欲转出的储户信息、查找欲转入的储户信息、询问是否确认转账、以及转账操作、转账信息回显、明细账输出询问等操作。

(5)储户当前明细账打印

本模块实现的功能有:

根据输入的账号,查询相应储户的当前账户明细账功能。

(6)储户详细信息打印

本模块实现的功能有:

根据输入的账号,查询相应储户的当前账户详细信息功能。

(7)退出

本系统建议分为5个类来实现,可以划分到3个不同的包中运行。

Øcom.test.bank.bean包中的Account实体类和TradeInfo实体类,分别表示账户信息和交易明细信息。

Øcom.test.bank.method包中的BankMethod业务类和BankFace界面业务类。

Øcom.test.bank.main包中的BankMain主类。

其中,系统中这五个类的类图如下图10.2.2所示。

储户类交易信息类

交易业务类交易界面类

系统主类

图10.2.2系统各个类的类图

10.3.2数据要求

本系统没有任何数据文件,也没有任何数据库文件。

所有的信息都存储在系统运行时自动创建的长度为100的数组中。

也就是说,本项目的数据只在运行时存储在内存中,可同时存储100个以内的账户信息。

一旦系统退出,所有的储户信息都会丢失。

虽然如此设计不符合现实生活的实际情况,但是对于现阶段银行系统主要功能的模拟已经足够。

10.4实现步骤

(1)根据交易信息类TradeInfo的类图,设计交易信息类的详细信息,以打印交易明细账。

参考关键代码如下所示:

/**

*此类是交易明细类,用于记录每一笔银行交易的明细信息

*/

packagecom.test.bank.bean;

importjava.util.*;

importjava.text.*;

publicclassTradeInfo{

//账户交易号

//每个账户的交易号从1累加,等于该账户的accountId+tradeIndex;

//开户时tradeIndex=1,此后每交易一笔,tradeId++。

privateinttradeId;

privatechartradeDirection;

privatedoubletradeAmount;

//交易类型:

1开户、2存款、3取款、4、转账

privateinttradeType;

privateDatetradeDate;

privateStringtradeDescription;

publicTradeInfo(){

tradeId=-1;

}

publicTradeInfo(chartradeDirection,doubletradeAmount,inttradeType,

DatetradeDate,StringtradeDescription){

this.tradeId=-1;

this.tradeDirection=tradeDirection;

this.tradeAmount=tradeAmount;

this.tradeType=tradeType;

this.tradeDate=tradeDate;

this.tradeDescription=tradeDescription;

}

publicvoidsetTradeId(inttradeId){

this.tradeId=tradeId;

}

publicintgetTradeId(){

returnthis.tradeId;

}

//tradeId的自增方法

publicvoidaddTradeId(){

tradeId++;

}

//其他属性的getters和setters方法,略去。

......

publicStringtoString(){

DecimalFormatdf=newDecimalFormat("¥0.00");

Stringstr_tradeType="";

switch(this.getTradeType()){

case1:

str_tradeType="开户";

break;

case2:

str_tradeType="存款";

break;

case3:

str_tradeType="取款";

break;

case4:

str_tradeType="转账";

break;

default:

str_tradeType="其他交易";

break;

}

SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddhh:

mm:

ss");

StringBufferstb=newStringBuffer();

stb.append(this.getTradeId());

stb.append("");

stb.append(this.getTradeDirection());

stb.append("\t");

stb.append(str_tradeType);

stb.append("\t\t");

stb.append(df.format(this.getTradeAmount()));

stb.append("");

stb.append(sdf.format(this.getTradeDate()));

stb.append("\t");

stb.append(this.getTradeDescription());

stb.append("\t");

returnnewString(stb);

}

}

(2)分析系统功能,根据类图设计储户类Account,编写储户类的详细信息。

参考关键代码如下所示:

/**

*此类是银行账户类,用于记录银行的账户信息

*/

packagecom.test.bank.bean;

importjava.util.*;

importjava.text.*;

publicclassAccount{

privateintaccountId;//储户账户号

privateStringrealName;//储户实名

privateStringpassword;//储户账户密码

privatedoublebalance;//储户账户余额

privateStringidentityId;//储户身份证号码

privateStringaddress;//储户联系地址

privateStringphone;//储户联系电话

privateDateopenDate;//储户开户日期

privateinttradeCount;//储户当前交易记录数(该数目<=100)

privateTradeInfo[]tradeList;//储户交易明细

publicAccount(){

this.tradeCount=0;

tradeList=newTradeInfo[100];

}

publicAccount(intaccountId,StringrealName,Stringpassword,

doublebalance,StringidentityId,Stringaddress,Stringphone,

DateopenDate){

this.tradeCount=0;

tradeList=newTradeInfo[100];

this.accountId=accountId;

this.realName=realName;

this.password=password;

this.balance=balance;

this.identityId=identityId;

this.address=address;

this.phone=phone;

this.openDate=openDate;

}

publicvoidsetAccountId(intaccountId){

this.accountId=accountId;

}

publicintgetAccountId(){

returnthis.accountId;

}

//其他属性的getters和setters方法,此处省略。

......

//tradeCount的set方法不再设置

//addTradeCount()方法定义为私有的,只能为添加明细的方法调用(private修饰的方法是私有的方法,“私有”的概念将在后续学习中讲解)

privatevoidaddTradeCount(){

this.tradeCount++;

}

publicintgetTradeCount(){

returnthis.tradeCount;

}

publicvoidaddTradeInfo(TradeInfoinfo){

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1