java课程设计ATM柜员机模拟程序

java课程设计ATM柜员机模拟程序
java课程设计ATM柜员机模拟程序

课程设计(大作业)报告

课程名称:面向对象程序设计课程设计

设计题目:ATM柜员机模拟程序

院系:信息技术学院

班级:

设计者:

学号:

指导教师:

设计时间:2016-1-4-2016-1-8

信息技术学院

昆明学院课程设计(大作业)任务书

课程设计题目:

设计一个ATM柜员机模拟程序,实现系统登录、余额查询、ATM取款、ATM存款、修改密码等一些ATM柜员机的基本功能,模拟ATM的工作原理和人机交互。

课程设计题目:

设计一个ATM柜员机模拟程序,实现系统登录、余额查询、ATM取款、ATM存款、修改密码等一些ATM柜员机的基本功能,模拟ATM的工作原理和人机交互。

成绩:

课程设计(大作业)报告

一、题目分析

1.系统需求分析

(1)设计目标:随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。这就导致银行业务的急剧增加。虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。于是ATM机系统应运而生了。

自动柜员机,即ATM,是指银行在不同地点设置一种小型机器,利用一张信用卡大小的胶卡上的磁带记录客户的基本户口资料(通常就是银行卡),让客户可以透过机器进行提款、存款、转账等银行柜台服务,大多数客户都把这种自助机器称为自动提款机。

本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。

(2)题目设计要求:本ATM柜员机的主要功能如下所述:

要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:

查询余额:初始余额为10000元。

ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。

ATM存款:不能出现负存款。

修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

模拟系统总体设计结构

(1)设计思想:通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、存款、修改密码。初次之外,作为ATM 系统,还需要最基本的两大功能,即登陆和退出。

根据上述的功能分析,我们可以把整个ATM系统分为登陆模块、查询模块、取款模块、存款模块、修改密码模块。除此之外,还有在登陆系统后的功能选择模块,退出功能则镶嵌在各个需要的模块中。由于各个模块的功能实现是通过界面显示出来的,则程序设计又可以理解为几大界面的设计:登陆界面、主界面、查询余额界面、取款界面、存款界面、修改密码界面。除了几大界面之外,还有系统的初始化,主要是初始卡号、密码的设定等。

在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。

a.登陆界面

用户输入正确的账号和密码就可以登录到该系统的主界面中去,进行相应的操作:取款、存款、查询、修改密码。

b.主界面

主界面包括查询、存款、取款、修改密码、退出的功能按钮,按下相应的按钮,可以进行相应的操作。

c.查询界面

在主界面中按下查询按钮可以进行查询操作。通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回和退出的操作。返回的操作会使用户回到主界面,退出的操作会使用户直接回到登陆界面。

d.取款界面

取款界面既可以通过主界面进入,也可以通过查询、存款等操作过程中的界面进入。取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,取款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。

e.存款界面

在主界面按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输入的数字也要是100的整数倍,而且不可以是负数。存款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。

f.修改密码

选择修改密码按钮可以进行修改密码房,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。修改完成后,会返回主界面。

(2)ATM柜员机总体流程图,如图图1

图1

(3)ATM柜员机模拟模拟系统UML图,如图图2

图 2

3.系统开发及运行环境

软件平台:Eclipse,jdk全套软件,editpuls编辑器

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse是着名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为

框架开发自己的IDE。

图 3

二、各模块分析与实现

1.系统各模块介绍

代码中出现的Account类、MainFrame类、Load类、Take类、Input类、Setpew 类和Display类都继承了Java类JFrame。

(1)账户创建模块

Class Accout创建客户,初始化客户信息功能以及保存客户信息,例如:卡号、密码、原有余额、取款后卡里的余额以及存款后卡里的余额。此类包含的成员有:成员变量account、count、password和方法构造方法Account()。实现了账户信息的初始化工作,设置默认账户信息,账号:123456,密码:123456。以便后续测试登陆时作为进入ATM模拟系统的信息凭证。

创建账户关键代码:

class Account {

private int count=10000; 件监听组件介绍

(1) MainFrame类的监听模块

在该类中设置了五个监听器,监听鼠标单击按钮,分别监听退出(new ActionListener()、修改密码(new ActionListener()、查询(new ActionListener()、取款(new ActionListener()、存款(new ActionListener()等按钮的事件。

(2) Load类的监模块

在该类中只有一个监听器,监听鼠标单击“确定”按钮时的事件。

(3) Take类的监听模块

在该类中设置了四个监听器,同样是监听鼠标单击按钮事件,分别监听“清除”(new ActionListener()、“退出” (new ActionListener()、“返回” (new ActionListener()、“确定” (new ActionListener()按钮的事件。

(4 )input类的监模块

在这个类中共设置了两个监听器,它们也是监听鼠标单击按钮事件。它们监听“清除” (new ActionListener()、“确定” (new ActionListener()按钮事件。

(5 )display类的监听模块

在display中设置了三个监听器,都属于监听鼠标单击按钮事件,分别监听“退出” (new ActionListener()、“返回” (new ActionListener()、“取款”按钮事件。

(6 )Setpw类的监听模块

在这个类中设置了两个监听器,它们是监听鼠标单击按钮事件,分别监听“确定” (new ActionListener()、“退出” (new ActionListener()按钮事件。

三、系统调试分析

1.登陆界面

打开MyEcplise,编译运行程序后,将会看到如图3所示的欢迎界面。点击确定之后,会进入如图4所示的登陆界面。

图3 欢迎登陆页面

图4 登陆界面

进入到登陆界面后,需要输入账号和密码,当账号和密码正确时,才会进入到主界面。账号和密码不符合时,会进入如图4所示的错误提示界面。初始账号和密码为“123456”。

图5 登陆出错提示界面

2.账号密码登陆

当输入的密码和卡号正确,单击确定后就会进入到主界面,选择服务,如图6所示,点击相应的按钮就可以选择所需要的服务了,点击“退出”会回到登陆界面。

图6 主界面

3.存款

点击存款,进入存款界面,如图7所示。

图7 存款界面

当输入的钱数不是100的倍数时,就会弹出如图7所示的错误提示界面。输入正确时,进入如图9所示的界面。选“是”的话,会进入查询余额界面,查看存款

操作是否成功;选“否”的话,会回到主界面。

图8 存款出错提示界面

图9 操作完成后的选择界面

4.取款

点击取款按钮,进入取款界面,如图10所示。当输入的钱数是负数,或者是0,或者不是100的倍数,又或者大于5000时,会弹出如图11所示的出错提示界面。当输入的钱数符合要求时,会弹出如同存款操作一样的选择界面,如图9所示。

图10 取款界面

图11 取款错误提示界面

5.查询

点击主界面中的查询按钮,或者是在存款和取款操作完成后的选择界面中选“是”的话,就会进入到如图12所示的查询界面。点击取款按钮,会进入到取款界面。初始金额为50000,图12中的余额是经过存款、取款操作以后的金额。

图12 查询界面

6.修改密码

点击主界面中的修改密码按钮,进入到如图13所示的修改密码界面。新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要

求,且两次输入相同的情况下才可以成功修改密码,弹出如图14所示的提示界面,点击确定后会回到主界面。否则,密码修改不成功,点击确定按钮,界面没有反应。

图13 修改密码界面

图14 修改密码成功提示界面

经过上面的操作,既测试了程序的实现效果,又对系统的使用进行了详细的说明。从上面的运行结果可以看出,程序基本上实现了所有的设计要求,而且运行正常。

四、总结

通过为时一周的课程设计,我受益匪浅,把平时所学的知识通通运用了进来,虽然平时积淀的知识点比较少、比较单一,但是在这次实验中把零零碎碎的知识都连贯起来了,也达到了课程设计的目的,最主要的是通过一周的努力我终于用面向对象程序设计的知识做出了这个“ATM柜员机模拟系统”。由于知识的积淀比较少,且有些知识掌握不太牢靠,记忆模模糊糊的,最后决定恶补一下落下的知识点再进行程序的设计。第一天,去图书馆借了相关图书,把知识点打牢,然后参考了相似的的几个实例,并进行了一些分析和总结。基础功课做好以后第二天正式开工,选定好了题目,进行方法选择、框架设计、画出流程图、UML图,进行了初步的程序设计构想。第三天,编写程序代码,这个过程我觉得是最艰难的,因为代码太多,还有API接口不是很熟悉,所以要经常翻阅手册,花费了很多时间。程序一不小心就会出错不能运行,还需要认真检查,细心细心加细心才能做好。反复的进行分析调试,最后一天把程序调试通过后,进行课程设计报告的撰写。虽然很幸苦但是,最终的成果还是令人满意的,最后感谢指导老师对我们帮助和支持。

在这次的课程设计中,我主要运用了Java图形界面编程方面的知识,加深了对Java语言中各个基础知识点的了解和应用,将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。通过这次设计,我深刻感受到了面向对象语言中类库的强大功

能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。

在这次课程设计中,我查了很多资料,很好的锻炼了自己的查阅资料的能力和快速吸收新知识的能力。同时,也加深了与同学的交流,在设计过程中,我们互相帮助,共度难关,培养了很好的默契。总之,在这次课程设计中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。

五、参考文献

[1] 叶核亚. Java程序设计实用教程(第3版.电子工业出版社,2010

[2] 耿祥义. JAVA课程设计.清华大学出版,2009

[3] 王文涛,袁海燕 JAVA实用程序设计100例[M]北京:人民邮电出版社,

[4] 雍俊海 JAVA程序设计[M]北京:清华大学出版社,

[5] 刘宝林 JAVA程序设计与案例[M]北京:高等教育出版社,

[7] 语言程序设计[M].北京.机械工业出版社.2008.

六、附录源代码

程序源代码:

/*********API接口************/ import .*;import .*;

/***********主类*****************/

public class ATMmodel {

Account myaccount=new Account();etLayout(layout);ddG roup()

.addContainerG ap()

.addGroup( )

.addCo mponent(cunkuan)

.addCo mponent(reset))

.addCo mponent(qukuan)

.addCo mponent(quit))

.addCompon ent(checked)) .addContainerG ap())

);

( ddGroup()

.addGap(46, 46, 46)

.addCompon ent(cunkuan)

.addCompon ent(reset))

.addGap(51, 51, 51)

.addCompon ent(quit)

.addCompon ent(qukuan))

.addGap(57, 57, 57)

.addComponent( checked)

.addGap(39, 39, 39))

);

pack();etLayout(layout);ddGrou

p()

.addGroup(

)

.addCo ntainerGap(50,

.a ddComponent(jL1)ddComponent(jL 2))

.addGa

p(31, 31, 31)

.a ddComponent(Jpassword) .addGroup(

)

.addGa

p(122, 122, 122)

.addCo mponent(commit)))

.addContainerG ap(72, )

);

(

.addGroup()

.addGap(85, 85, 85)

.addCompon ent(jL1))

.addGap(41, 41, 41)

.addCompon

ent(jL2)

.addComponent( commit)

.addGap(64, 64, 64))

);

pack();

}

private void commitActionPerformed(ActionEv ent evt) {

if().equals()) &&

().equals()))etLayout(layout);

(

.addGroup()

.addGap(41, 41, 41) .addGroup( )

.addCo mponent(jL1)

.addGa p(33, 33, 33)

.addGroup( )

.addCo mponent(clear)

.addCo mponent(quit))

.addGroup( )

.addCo mponent(commit)

.addCo mponent(back)))

相关文档
最新文档