ATM柜员机模拟程序 课程设计报告_第1页
ATM柜员机模拟程序 课程设计报告_第2页
ATM柜员机模拟程序 课程设计报告_第3页
ATM柜员机模拟程序 课程设计报告_第4页
ATM柜员机模拟程序 课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java程序设计课程设计报告题目 atm柜员机模拟程序 姓名 学号 性别 所在班级 指导教师 二一二年十二月二十九日目录一 前言11.1 课程设计题目11.2 课程设计完成地点11.3 系统概述11.3.1课程设计介绍11.3.2 课程设计目的11.3.3 课程设计内容21.4 相关技术2二 需求分析32.1 功能需求32.2 界面需求32.2.1窗体的设计42.2.2窗体的主要结构的设计4三 功能设计53.1 系统总体结构53.2 系统模块53.3 主要相关类6四 详细设计84.1登陆页面模块设计84.2选择服务模块设计94.3取款模块设计104.4修改密码模块设计114.5退卡模块设计12

2、4.6异常处理情况说明124.7系统实现与测试12五 总结145.1遇到的问题及解决办法145.2心得体会14六 感谢1516一 前言1.1 课程设计题目 atm柜员机模拟程序1.2 课程设计完成地点文理楼a5041.3 系统概述1.3.1课程设计介绍本次java游戏开发课程设计在文理楼机房进行,为期一周。这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用java编程的实际动手能力并增强大家对面向对象的了解。这次课程设计的主要内容是独立用java语言开发一个简单的应用程序。我所设计的是atm柜员机。随着市场经济的繁荣发展,人们物

3、质生活得到了极大的提高,手中剩余资金日益增多,受传统观念的影响,绝大多数人喜欢把暂时不用的资金存入银行,而在需要现金时去银行提现,这就导致了银行业务的急剧增加。最然银行网点越来越多,银行工作人员效率也随着信息化有明显增长,但依旧不能及时满足广大储户的需求。而一味的增加营业网点,从理论上讲虽有缓解此问题的功效,但是建立一个网点需要付出昂贵的资金,还要不断注入人力资源。这时候,就迫切需要一种自动化的,易操作的,低成本的设备来解决这一问题,于是atm柜员机就这样应运而生。我设计的atm柜员机主要是由各个windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。它的各种按

4、钮的事件和功能可以简单的模拟atm柜员机的要求。1.3.2 课程设计目的 1. 要求学生自主选择课题并自行完成操作内容,并能达到举一反三的目的,完成一个项目解决一类问题。培养独立的java语言与算法设计方法,具备初步的独立分析和设计能力;2.学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;培养学生设计分析、设计方法。设计操作和测试、设计过程的观察理解和归纳能力。3.掌握java程序设计基本的基本技能。面向对象的概念和方法,了解多线程、安全和网络等编程技术。培养学生分析问题和解决问题的能力。训练综合运用所学的理论知识和方法进行独立分析和解决问题的能力。4.要求学生能够全面、

5、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题。训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。1.3.3 课程设计内容设计一个atm柜员机模拟程序,使用图形用户界面。当输入给定的卡号和密码(初始卡号为000000密码为123456)时,系统能登录atm柜员机系统,用户需按照以下规则进行:1.查询余额:初始余额为10000元2.atm取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。3.atm存款:不能出现负存款。4.修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要

6、求,且两次输入相同的情况下才可以成功修改密码。1.4 相关技术java语言的特点:java是一种简易的、完全面向对象、安全可靠、分布式的、多线程的、高性能的、主要面向internet且具有最好的跨平台可移植性的动态程序设计开发工具。1.java语言简单易学。java语言的语法与c语言和c+语言很接近,使得多数程序员很容易学习和使用java。另一方面,java丢弃了c+中很少使用的,很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地。java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2.跨平台。是指java能运行于不同的平台。java引

7、进虚拟机 原理,并运行于虚拟机,实现不同平台的java接口之间。使用java编写的程序能在世界范围内共享。java的数据类型与 机器无关,java虚拟机(java virtual machine)是建立在硬件和操作系统之上,实现java二进制代码的解释执行功能, 提供于不同平台的接口的。3.安全性。java的编程类似c+,学习过c+的读者将很快掌握java的精髓。java舍弃了c+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。java对程序提供了安全管理器,防止程序的非法访问。 4.面向对象。java吸取了c+面向对象的概念,将数据封装于类中,

8、利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。java提供了众多的一般对象的类,通过继承即可使用父类的方法。在java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。java提供的object类及其子类的继承关系如同一棵倒立的树形,根类为object类,object类功能强大,经常会使用到它及其它派生的子类。 5.分布式。java建立在扩展tcp/ip网络平台上。库函数提供了用http和ftp协议传送和接受信息的方法。这使得程序员

9、使用网络上的文件和使用本机文件一样容易。 6.动态。java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得java可以在分部环境中动态的维护程序及分类,而不像c+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。7.多线程。java是支持多线程的语言。多线程是一种应用程序设计方法。线程是一大进程里分出来的,小的、独立的进程,使得在一个程序里可同时执行多个小任务。多线程带来的好处是具有更好的交互性能和实时控制性能。但采用传统的程序设计语言(如:c/c+)实现多线程程序并非易事。java实现了多线程技术,提

10、供了简便的实现多线程的方法,并拥有一组高复杂性的同步机制。8.可以移植的。这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的,java运行环境是用ansic实现的。二 需求分析2.1 功能需求本atm柜员机的主要功能需求如下所述:要求使用图形用户界面。当输入给定的卡号和密码(初始卡号为000000和密码为123456)时,系统能登录atm柜员机系统,用户可以按照以下规则进行:1.查询余额:初始余额为10000元2.atm取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透

11、支。3.atm存款:不能出现负存款。4.修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。2.2 界面需求以windows窗口形式显示,标题栏为atm柜员机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。2.2.1窗体的设计窗体整个框架使用frame类构造,frame有自己的外边框和自己的标题,创建frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。每个frame在其右上角都有三个控制图标,分别代表将窗口最小化、窗口最大化和关闭的操作,其中最小化和最大化操作frame可自动

12、完成,而关闭窗口操作实现需要书写有关的代码,在我的程序中我采用的是对windows_closing事件做出响应,调用dispose()方法关闭窗口。frame也可以引发windowsevent类代表的窗口事件。2.2.2窗体的主要结构的设计我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。所以整个设计就趋向简单化了。为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口actionlistener

13、的监听者,然后为监听者定义actionperformed(actionevent e)方法,在这个方法中调用e.getsource()或e.getactioncommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作(如下图所示)请输入你的卡号:请输入你的密码:123456*图:界面简易图三 功能设计3.1 系统总体结构 开 始登陆界面选择服务取 款查 询 余 额修 改 密 码退 卡结 束退出界面存款用户登录(输入账号和密码)报错界面ny 图:系统总体结构流程图3.2 系统模块我所设计的atm柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模

14、块、修改密码模块、退卡模块组成。其功能结构图如下所示:登陆界面模块选择服务模块退 卡 模 块修 改密码模块取 款 模 块存 款 模 块查 询 余 额 模 块 图: atm功能模块示意图 各部分模块功能如下:1.登陆界面模块:用户登陆时所需的界面窗口,能够输入用户账号(000000)和密码(123456)。2.选择服务模块:列出所有服务项供用户选择,分别有存款、取款、查询余额、修改密码和退卡。3.存款模块:用户可在文本框中输入想要存的金额。4.取款模块:用户在文本框中输入他想取的数额,(必须是100的倍数,而且每一次最多只能取5000块)取款时候也不能超过卡里的余额,否则将会报错。5.查询余额模

15、块:能够在用户选择此功能是显示所剩余额。6.修改密码模块:要求可满足用户修改密码这一需求,用户必须输入正确的旧密码且输入两次新密码一致,方可修改。7.退卡模块:退出界面。3.3 主要相关类1. java.awt包中的container类可以直接或间接派生出两个常用容器:框架(frame类)和面板(panel类);通过frame()创建一个标准窗口;当frame窗口被创建以后,需要调用setsize()方法来设置窗口大小,并调用setvisible()来显示窗口。2.面板不是一个单独的窗口,它只包含在窗口中的一个区域;最简单的创建面板的方式就是通过面板的构造函数panel()来进行;必须将面板添

16、加到窗口中。3.设置布局管理器,控制组件的大小和位置;调用setlayout(null);在设置空布局管理器后,必须对所有组件调用setlocation(),setsize()或setbrounds(),将他们定位容器中。4.button 类有一个addactionlistner(actionlistener)方法;addactionlistner 接口定义了一个方法actionperformed,用来接收一个actionevent。actionevent 类的getactioncommand()方法返回与动作相关联的命令名称。5.事件类型。许多事件类在java.awt.event 包中,也有

17、一些事件类在api 的其他地方。对于每类事件,都有一个接口,这个接口必须由想接收这个事件的类的对象实现。这个接口还要求定义一个或多个方法。当发生特定的事件时,就会调用这些方法。6.文本区(textarea)。addtexlistener 指定的监听者将以和文本域相同的方式接收到关于击键的通知。你可以给文本区增加一般的组件监听者,然而,由于文本是多行的,按下 enter 键将导致把另一个字符送入缓冲。7.applet 的方法。播放声音:musicclip.play();8.代码中的accout类、mainframe类、load类、take类、input类、setpew类和display类都继承了

18、java类和jframe.(详见下图所示)类名功能方法class accout创建客户初始化客户信息功能以及保护用户信息功能成员变量account、count、password和方法构造方法account()class mainframe构造主界面,提供业务选择构造方法mainframe()和初始化主界面方法initcomponents()以及成员变量checked、cunkuan、qiute、qukuan、resetclass load实现登录功能和登陆界面jpassword、accountnum、committ和构造方法load()初始化方法initconentsclass take实现取

19、款功能back、clcar、commit、quite和构造方法take()初始化的initcomponents()class input实现存款功能clear、commint、str以及构造函数inputhe()和初始化方法initcomponents()class display显示当前余额back、qiut、qukuan和构造方法display初始化方法initcomponents()class setpw修改密码功能成员变量commit、commitpw、jpwcommit、quit等和构造方法setpw()和初始化方法initcomponents()四 详细设计4.1登陆页面模块设计与

20、atm柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。我定义了文本框累的对象tf1,tf2。抓药是用于输入单行的文本;文本区调用public string gettext()方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。其方法是:引入所需要的包创建一个公共类atm3继承jframe实现actionlistener接口创建三个box类对象创建两个文本框对象创建一个按钮对象1创建一个按钮对象2创建该类的构造函数接收一个字符串调用本类的s文本框对象1

21、内容为6文本框对象2内容为6把盒子类名贴出来赋值给box对象新建一个标签组件(请输入你的卡号)添加到容器上把获得的类名添加到容器上新建一个标签(请输入你的密码添加到容器上把贴出来的类名赋值给box2把文本框添加到box2把文本框w添加到box2上在容器上添加一个横向的box组件把box1添加到basebox上把按钮对象1(确定)加入到容器上把按钮对象2(退卡)加入到容器上按钮对象2注册呢监听器添加布局管理器滚动条添加容器窗口监听创建一个关闭窗口函数调用system.exit(0);添加setbounds组件坐标是120,125,长宽是200,175设置显示图形界面可见创建事件处理函数初始化选择

22、各种服务如果发生的事件等于按钮1输入的两个卡号和密码的变量则调用文本框1和文本框2判断两次输入的卡号和密码是否正确如果输入的账号和密码正确 清除屏幕打印出选择fuwu其他输出出现报输入密码或卡号不正确4.2选择服务模块设计在选择服务模块中,有各种atm的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的actionevent类创建一个事件对象,并将它传递给方法public void actionperformed(actionevent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。其方法是:创

23、建一个公共类atm引入所需要的bao创建一个selection类继承了frame实现了actionlistener接口创建5个按钮对象创建6个panel对象添加各种服务功能按钮1设为存款)添加到panel1上按钮2设为取款)添加到panel2上按钮三定义为查询余额);添加到panel3上按钮4定义为退出添加到panel4上按钮5定义为修改密码)添加到panel5上把所有panel添加到本容器上添加关闭窗口的成员函数按钮1到按钮全部注册监听设置边界坐标为150,150,长宽为200,200显示所有组件创建一个事件处理函数如果点击按钮一调用清屏函数显示取款页面如果点击按钮三清屏显示查询余额页面如果

24、点击按钮4 则显示退出页面如果点击按钮5则显示修改密码页面4.3取款模块设计在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。其方法是:引入所需要的包创建一个类名为getbalance继承了frame实现了actionlisten接口创建三个box对象一个按钮对象一个文本框对象一个account对象创建一个构造函数创建一个面板 标签为请输入你想取钱的数目创建一个文本框把文本框和按钮添加

25、到panel上pannel添加到本容器上按钮1注册呢监听创建窗口关闭函数调用显示函数创建一个事件处理函数用if语句判断如果触发按钮一 账户钱小于0清屏发出错误其他如果取钱的数额不大于余额取钱数为100的倍数或不大于5000清屏发出消息充值余额不显示组件返回选择服务窗口清屏发出消息引入所需要的包创建一个公共类名为修改密码继承了frame实现了接口actionlistener引入所需要的包创建一个公共名为查询的类继承了frame实现了接口actionlistener4.4修改密码模块设计在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次药匹配

26、,否则也会报错,然后再重新回到修改密码的界面。其方法是:创建一个名为 account的类定义一个私有的字符串用来表示信用卡号创建一个私有的字符串用来表示客户姓名创建一个私有的字符串用来表示客户密码创建一个私有的字符串用来表示卡里金额创建一个构造函数用来接收卡号姓名密码和金额创建一个取得卡号的成员方法创建一个用来取得密码的成员函数创建一个用来取得姓名的成员函数创建一个用来取得密码的成员函数创建一个用来取得余额的成员函数创建一个得到剩余的钱的数目的成员函数创建一个用来重置密码成员函数4.5退卡模块设计退卡模块相对其他模块来说较为简单,只需在选择服务模块选择退卡就可以了。其方法是:如果是按钮4,则退

27、出。4.6异常处理情况说明1.打开、保存文件时的异常处理需要处理的异常:ioexception2.数据库访问时的异常处理需要处理的异常:sqlexception3.加载类时的异常处理需要处理的异常:classnotfindexception,当应用程序试图使用class类中的forname方法通过字符串名加载类时,但是没有找到具有指定名称的类的定义。4.加载url时的异常需要处理的异常:malformedurlexception,抛出这一异常指示出现了错误的 url。或者在规范字符串中找不到任何合法协议,或者无法分析字符串。4.7系统实现与测试1.打开dos,编译运行程序后,将会看到如下的界面

28、,如图1所示。如果输入的密码或卡号不正确的话就会报右下图的错误。图1 主界面登陆页面2.选择服务界面效果当输入的密码和卡号正确,单击确定后就会进入到选择服务的界面,如图2所示。然后就可以选择所需要的服务了。图2 选择服务界面3.取款界面,如图3所示。图3 取款界面4.当输入的钱数不是100的倍数或每一次大于5000时就会报图4的错误。图4 输入错误15.当取款时如果超过卡里的余额的话就会报图5的错误。图5 输入错误26.查询余额界面,如图6所示。图6 查询余额界面经过测试,所有的功能基本上都实现了,而且运行正常。五 总结5.1遇到的问题及解决办法在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的java实例必须有清楚的理解,还有就是多跟精通此方面的老师和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论