ATM柜员机模拟程序课程设计报告.docx

上传人:b****7 文档编号:9864106 上传时间:2023-02-07 格式:DOCX 页数:20 大小:100.67KB
下载 相关 举报
ATM柜员机模拟程序课程设计报告.docx_第1页
第1页 / 共20页
ATM柜员机模拟程序课程设计报告.docx_第2页
第2页 / 共20页
ATM柜员机模拟程序课程设计报告.docx_第3页
第3页 / 共20页
ATM柜员机模拟程序课程设计报告.docx_第4页
第4页 / 共20页
ATM柜员机模拟程序课程设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

ATM柜员机模拟程序课程设计报告.docx

《ATM柜员机模拟程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《ATM柜员机模拟程序课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

ATM柜员机模拟程序课程设计报告.docx

ATM柜员机模拟程序课程设计报告

《Java程序设计》

课程设计报告

题目ATM柜员机模拟程序

姓名

学号

性别

所在班级

指导教师

二◦一二年十二月二十九日

1前言1

1.1课程设计题目1

1.2课程设计完成地点1

1.3系统概述1

1.3.1课程设计介绍1

1.3.2课程设计目的1

1.3.3课程设计内容2

1.4相关技术2

2需求分析3

2.1功能需求3

2.2界面需求3

2.2.1窗体的设计4

2.2.2窗体的主要结构的设计4

3功能设计5

3.1系统总体结构5

3.2系统模块5

3.3主要相关类6

4详细设计8

4.1登陆页面模块设计8

4.2选择服务模块设计9

4.3取款模块设计10

4.4修改密码模块设计11

4.5退卡模块设计12

4.6异常处理情况说明12

4.7系统实现与测试12

5总结14

5.1遇到的问题及解决办法14

5.2心得体会14

6感谢15

.、八、-

一刖言

1.1课程设计题目

ATM柜员机模拟程序

1.2课程设计完成地点

文理楼A504

1.3系统概述

1.3.1课程设计介绍

本次JAVA游戏开发课程设计在文理楼机房进行,为期一周。

这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。

这次课程设计的主要内容是独立用JAVA语言开发一个简单的

应用程序。

我所设计的是ATM柜员机。

随着市场经济的繁荣发展,人们物质生活得到了极大的提高,手中剩余资金日益增多,受传统观念的影响,绝大多数人喜欢把暂时不用的资金存入银行,而

在需要现金时去银行提现,这就导致了银行业务的急剧增加。

最然银行网点越来越多,银行工作人员效率也随着信息化有明显增长,但依旧不能及时满足广大储户的需求。

而一味的增加营业网点,从理论上讲虽有缓解此问题的功效,但是建立一个网点需要付出昂贵的资金,还要不断注入人力资源。

这时候,就迫切需要一种自动化的,易操作的,低成本的设备来解决这一问题,于是ATM柜员机就这样应运而生。

我设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。

它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。

1.3.2课程设计目的

1.要求学生自主选择课题并自行完成操作内容,并能达到举一反三的目的,完成一个项目解决一类问题。

培养独立的Java语言与算法设计方法,具备初步的独立分析和设计能力;

2.学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;培养学生设计分析、设计方法。

设计操作和测试、设计过程的观察理解和归纳能力。

3.掌握JAVA程序设计基本的基本技能。

面向对象的概念和方法,了解多线程、安全和网络等编程技术。

培养学生分析问题和解决问题的能力。

训练综合运

用所学的理论知识和方法进行独立分析和解决问题的能力。

4.要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题。

训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

1.3.3课程设计内容

设计一个ATM柜员机模拟程序,使用图形用户界面。

当输入给定的卡号和密码(初始卡号为000000密码为123456)时,系统能登录ATM柜员机系统,用户需按照以下规则进行:

1.查询余额:

初始余额为10000元

2.ATM取款:

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

3.ATM存款:

不能出现负存款。

4.修改密码:

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

1.4相关技术

JAVA语言的特点:

JAVA是一种简易的、完全面向对象、安全可靠、分布式的、多线程的、高性能的、主要面向Internet且具有最好的跨平台可移植性的动态程序设计开发工具。

1.java语言简单易学。

java语言的语法与C语言和C+■语言很接近,使得多数程序员很容易学习和使用java。

另一方面,java丢弃了C++中很少使用的,很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。

特别地。

java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

2.跨平台。

是指Java能运行于不同的平台。

Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。

使用Java编写的程序能在世界范围内共享。

Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。

3.安全性。

Java的编程类似C++,学习过C+啲读者将很快掌握Java的精髓。

Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。

Java对程序提供了安全管理器,防止程序的非法访问。

4.面向对象。

Java吸取了C++S向对象的概念,将数据封装于类中,禾U用类的优点,实现了程序的简洁性和便于维护性。

类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。

程序员只需把主要精力用在类和接口的设计和应用上。

Java提供了众多的一般对象的类,通过继承即可使用父类的方法。

在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。

Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。

5.分布式。

Java建立在扩展TCP/IP网络平台上。

库函数提供了用HTTP和FTP协议传送和接受信息的方法。

这使得程序员使用网络上的文件和使用本机文件一样容易。

6.动态。

java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C++那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。

7.多线程。

Java是支持多线程的语言。

多线程是一种应用程序设计方法。

线程是一大进程里分出来的,小的、独立的进程,使得在一个程序里可同时执行多个小任务。

多线程带来的好处是具有更好的交互性能和实时控制性能。

但采用传统的程序设计语言(如:

C/C++)实现多线程程序并非易事。

Java实现了多线程技术,提供了简便的实现多线程的方法,并拥有一组高复杂性的同步机制。

8.可以移植的。

这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。

java系统本身也具有很强的可移植性,java编译器是用java实现的,java运行环境是用ANSIC实现的。

二需求分析

2.1功能需求

本ATM柜员机的主要功能需求如下所述:

要求使用图形用户界面。

当输入给定的卡号和密码(初始卡号为000000和

密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:

1.查询余额:

初始余额为10000元

2.ATM取款:

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

3.ATM存款:

不能出现负存款。

4.修改密码:

只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

2.2界面需求

以Windows窗口形式显示,标题栏为ATM柜员机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。

2.2.1窗体的设计

窗体整个框架使用Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。

每个Frame在其右上角都有三个控制图标,分别代表将窗口最小化、窗口最大化和关闭的操作,其中最小化和最大化操作Frame可自动完成,而关闭窗口操作实现需要书写有关的代码,在我的程序中我采用的是对WINDOWS_CLOS事件做出响应,调用dispose。

方法关闭窗口。

Frame也可以引发WindowsEvent类代表的窗口事件。

2.2.2窗体的主要结构的设计

我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。

比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。

所以整个设计就趋向简单化了。

为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义

actionPerformed(ActionEvente)方法,在这个方法中调用e.getSource()或

e.getActionCommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作(如下图所示)

三□区I

请输入你的卡号:

请输入你的密码:

 

图:

界面简易图

二功能设计

3.1系统总体结构

图:

系统总体结构流程图

3.2系统模块

其中

/、

我所设计的ATM巨员机主要是由登录页面模块还由选择服务模块组成,选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成功能结构图如下所示:

图:

ATM功能模块示意图

各部分模块功能如下:

1.登陆界面模块:

用户登陆时所需的界面窗口,能够输入用户账号(000000)和密码(123456)。

2.选择服务模块:

列出所有服务项供用户选择,分别有存款、取款、查询余额、修改密码和退卡。

3.存款模块:

用户可在文本框中输入想要存的金额。

4.取款模块:

用户在文本框中输入他想取的数额,(必须是100的倍数,而且每一次最多只能取5000块)取款时候也不能超过卡里的余额,否则将会报错。

5.查询余额模块:

能够在用户选择此功能是显示所剩余额。

6.修改密码模块:

要求可满足用户修改密码这一需求,用户必须输入正确的旧密码且输入两次新密码一致,方可修改。

7.退卡模块:

退出界面。

3.3主要相关类

1.Java.awt包中的Container类可以直接或间接派生出两个常用容器:

架(Frame类)和面板(Panel类);通过Frame()创建一个标准窗口;当Frame窗口被创建以后,需要调用setSize()方法来设置窗口大小,并调用setVisible()来显示窗口。

2.面板不是一个单独的窗口,它只包含在窗口中的一个区域;最简单的创建

面板的方式就是通过面板的构造函数Panel()来进行;必须将面板添加到窗口

中。

3.设置布局管理器,控制组件的大小和位置;调用setLayout(null);在设

置空布局管理器后,必须对所有组件调用setLocation(),setSize()或

setBrounds(),将他们定位容器中。

4.Button类有一个addActionListner(ActionListener)方法;

AddActionListner接口定义了一个方法actionPeformed,用来接收一个

ActionEvent。

ActionEvent类的getActionCommand()方法返回与动作相关联的命令名称。

5.事件类型。

许多事件类在java.awt.event包中,也有一些事件类在API

的其他地方。

对于每类事件,都有一个接口,这个接口必须由想接收这个事件的类的对象实现。

这个接口还要求定义一个或多个方法。

当发生特定的事件时,就

会调用这些方法。

6.文本区(TextArea)。

addTexListener指定的监听者将以和文本域相同的

方式接收到关于击键的通知。

你可以给文本区增加一般的组件监听者,然而,由

于文本是多行的,按下Enter键将导致把另一个字符送入缓冲。

7.Applet的方法。

播放声音:

musicClip.play();

8.代码中的Accout类、MainFrame类、Load类、Take类、Input类、Setpew类和Display类都继承了JAVA类和JFrame.(详见下图所示)

类名

功能

方法

ClassAccout

创建客户初始化客户信息功能以及保护用户信息功能

成员变量account、count、password和方法构造方法Account()

ClassMainFrame

构造主界面,提供业务选择

构造方法MainFrame()和初始化主界面方法initComponents()以及成员变量checked>cunkuan、qiute、qukuan、reset

ClassLoad

实现登录功能和登陆界面

Jpassword、accountnum、committ和构造方法load()初始化方法initConents

ClassTake

实现取款功能

Back、clcar、commit、quite和构造方法Take()初始化的initComponents()

Classinput

实现存款功能

Clear、commint、str以及构造函数Inputhe()和初始化方法initComponents()

ClassDisplay

显示当前余额

Back、qiut、qukuan禾口构

造方法Display初始化方法

initComponents()

ClassSetpw

修改密码功能

成员变量commit、commitpw、jpwcommit、quit等和构造方法Setpw()和初始化方法initComponents()

四详细设计

4.1登陆页面模块设计

与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:

密码。

以第一个界面就是要输入密码和卡号才能继续服务。

我定义了文本框累的对象tf1,tf2。

抓药是用于输入单行的文本;文本区调用publicStringgetText()方法,获取用户想要的字符串。

用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose。

关掉窗口。

其方法是:

引入所需要的包

创建一个公共类ATM3继承JFrame实现ActionListener接口

创建三个box类对象创建两个文本框对象

创建一个按钮对象1

创建一个按钮对象2

创建该类的构造函数接收一个字符串

调用本类的s

文本框对象1内容为6

文本框对象2内容为6

把盒子类名贴出来赋值给box对象

新建一个标签组件("请输入你的卡号")添加到容器上

把获得的类名添加到容器上

新建一个标签("请输入你的密码"添加到容器上

把贴出来的类名赋值给box2

把文本框添加到box2

把文本框w添加到box2上

在容器上添加一个横向的box组件把box1添加到basebox上把按钮对象1("确定")加入到容器上把按钮对象2("退卡")加入到容器上按钮对象2注册呢监听器添加布局管理器滚动条添加容器窗口监听创建一个关闭窗口函数调用System.exit(0);

添加setBounds组件坐标是120,125,长宽是200,175设置显示图形界面可见创建事件处理函数

初始化选择各种服务如果发生的事件等于按钮1输入的两个卡号和密码的变量则调用文本框1和文本框2判断两次输入的卡号和密码是否正确如果输入的账号和密码正确清除屏幕打印出选择fuwu其他输出出现报输入密码或卡号不正确

4.2选择服务模块设计

在选择服务模块中,有各种ATM勺服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。

每一个按钮都有监听器,在选择了按钮后,java.awt.event中勺ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPeformed(ActionEvente)中的参数e,监视器就会知道所

发生勺事件,对此事件进行处理。

其方法是:

创建一个公共类ATM

引入所需要的bao创建一个Selection类继承了Frame实现了Actionlistener接口

创建5个按钮对象创建6个panel对象添加各种服务功能

按钮1设为"存款")添加到panel1上按钮2设为"取款")添加到panel2上按钮三定义为"查询余额");

添加到panel3上按钮4定义为退出

添加到panel4上

按钮5定义为"修改密码")添加到panel5上把所有panel添加到本容器上添加关闭窗口的成员函数按钮1到按钮全部注册监听设置边界坐标为150,150,长宽为200,200显示所有组件

创建一个事件处理函数如果点击按钮一调用清屏函数显示取款页面

如果点击按钮三清屏显示查询余额页面如果点击按钮4则显示退出页面如果点击按钮5则显示修改密码页面

4.3取款模块设计

在取款模块中,和其他的界面也是同样的结构。

也是有一个文本框和一个按钮还有标签组成的。

用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。

当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。

其方法是:

引入所需要的包

创建一个类名为GetBalanee继承了Frame实现了Actionlisten接口

创建三个box对象一个按钮对象一个文本框对象一个Account对象创建一个构造函数创建一个面板标签为请输入你想取钱的数目创建一个文本框

把文本框和按钮添加到panel上pannel添加到本容器上按钮1注册呢监听创建窗口关闭函数调用显示函数创建一个事件处理函数

用if语句判断如果触发按钮一账户钱小于0清屏发出错误其他如果

取钱的数额不大于余额取钱数为100的倍数或不大于5000清屏发出消息充值余额

不显示组件返回选择服务窗口清屏发出消息引入所需要的包创建一个公共类名为修改密码继承了Frame实现了接口

ActionListener

引入所需要的包创建一个公共名为查询的类继承了frame实现了接口

Actionlistener

4.4修改密码模块设计

在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。

再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。

其方法是:

创建一个名为Account的类定义一个私有的字符串用来表示信用卡号创建一个私有的字符串用来表示客户姓名创建一个私有的字符串用来表示客户密码创建一个私有的字符串用来表示卡里金额创建一个构造函数用来接收卡号姓名密码和金额创建一个取得卡号的成员方法创建一个用来取得密码的成员函数创建一个用来取得姓名的成员函数

创建一个用来取得密码的成员函数创建一个用来取得余额的成员函数创建一个得到剩余的钱的数目的成员函数创建一个用来重置密码成员函数

4.5退卡模块设计

退卡模块相对其他模块来说较为简单,只需在选择服务模块选择退卡就可以了。

其方法是:

如果是按钮4,则退出。

4.6异常处理情况说明

1.打开、保存文件时的异常处理

需要处理的异常:

lOException

2.数据库访问时的异常处理

需要处理的异常:

SQLException

3.加载类时的异常处理

需要处理的异常:

ClassNotFindException,当应用程序试图使用Class类中的forName方法通过字符串名加载类时,但是没有找到具有指定名称的类的定义。

4.加载URL时的异常

需要处理的异常:

MalformedURLException,抛出这一异常指示出现了错误的URL0或者在规范字符串中找不到任何合法协议,或者无法分析字符串。

4.7系统实现与测试

1.打开DOS编译运行程序后,将会看到如下的界面,如图1所示。

如果输入的密码或卡号不正确的话就会报右下图的错误。

谙输入你的卡号OOODOO

谙输入你的密码123456~

确定|退卡|

你输入的卡号或密码错俣■请核实后再确定!

确定

 

图1主界面一登陆页面

2.选择服务界面效果

当输入的密码和卡号正确,单击确定后就会进入到选择服务的界面,如图2

所示。

然后就可以选择所需要的服务了。

谓选择你要的服务

存款I

軀款I

査询食義I

退出|

修改密码|

图2选择服务界面

3.取款界面,如图3所示。

息!

|■叵X

谙输入你想取我的数目

谙输入你想取賤的数目

123

6000

确定

确定|

图3取款界面

4.当输入的钱数不是100的倍数或每一次大于5000时就会报图4的错误

图4输入错误1

5.当取款时如果超过卡里的余额的话就会报图5的错误

图5输入错误2

6.查询余额界面,如图6所示。

图6查询余额界面

经过测试,所有的功能基本上都实现了,而且运行正常。

五总结

5.1遇到的问题及解决办法

在此次课程设计中,我遇到了一些问题,女口:

对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些

最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。

对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。

对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。

5.2心得体会

在这次的学年度课程设计中,我主要运用了Java语言的界面设计、异常处理、Awt控件、Swing控件,输入输出流等,综合运用了Java语言。

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

通过一周的课程设计我真的学到了很多的东西,当然这也和老

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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