ATM java课程设计.docx
- 文档编号:4352138
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:10
- 大小:64.50KB
ATM java课程设计.docx
《ATM java课程设计.docx》由会员分享,可在线阅读,更多相关《ATM java课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
ATMjava课程设计
JAVA期中课程设计报告
报告题目:
ATM模拟程序
姓名:
学号:
专业:
计算机科学与技术
班级:
2班
一、课程设计目的和内容:
目的:
结合面向对象程序设计课程,培养面向对象软件开发思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强对面向对象编程的兴趣。
内容:
设计ATM取款机主要包括登陆页面,选择服务,存款,取款,查询余额,修改密码和退出等功能。
二.系统需求分析:
1、模拟ATM柜员机程序;
2、修改密码。
当用户需要修改密码时,可以用这个功能,新密码的长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
3、取款。
用户根据自己的需要取多少钱,输入要取的钱,每次输入的取款金额为100的倍数,总额不超过5000,支取金额不允许透支。
4、查询余额。
用户需要知道自己的账户还剩多少钱时,可以查询余额,初始余额为50000元。
5、存款。
用户可以存款,金额为100的倍数,不能出现负数存款。
6、锁机。
用户3次输入密码错误时,停止操作。
三、系统设计:
1.我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、存款模块、查询余额模块、修改密码模块、退卡模块组成。
2.ATM柜员机界面设计
一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。
我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。
(1)窗体的设计
窗体整个框架使用Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。
相应源代码为:
WindowBox(Strings,Accountact){super(“ATM柜员机”);}、Selection(Strings,Accountact){
super(s);
}
向Frame窗口中添加组件使用add()。
每个Frame在其右上角都有三个控制图标,分别代表将窗口最小化、窗口最大化和关闭的操作,其中最小化和最大化操作Frame可自动完成,而关闭窗口操作实现需要书写有关的代码,在我的程序中我采用的是对WINDOWS_CLOSING事件做出响应,调用dispose()方法关闭窗口。
Frame也可以引发WindowsEvent类代表的窗口事件。
相应源代码为:
addWindowListener(newWindowAdapter()//窗口侦听器,以从此窗口接收窗口事件
{publicvoidwindowClosing(WindowEvente)//处理窗口关闭事件
{System.exit(0);}
});
}
(2)窗体的主要结构的设计
我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。
比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。
所以整个设计就趋向简单化了。
为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvente)方法,在这个方法中调用e.getSource()或e.getActionCommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。
3.模块设计
(1).与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入密码和卡号才能继续服务。
我定义了文本框累的对象tf1,tf2。
抓药是用于输入单行的文本;文本区调用publicStringgetText()方法,获取用户想要的字符串。
用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。
此模块相应的部分源代码为:
publicvoidactionPerformed(ActionEvente){
Accountact;
Stringcard;
Stringpwd;
act=newAccount("000000","Devil","123456",50000);//初始化
/*选择各种服务*/
if(e.getSource()==button1){
Stringnumber1,number2;
number1=tf1.getText();
number2=tf2.getText();
/*判断密码和卡号是否正确*/if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){
dispose();
/*卡号和密码都正确则进入功能选择窗口*/
Selections=newSelection("选择服务",act);
}else{
dispose();
ErrorWarnew=newErrorWarn("消息!
",act);
}
}
/*退卡*/
if(e.getSource()==button2){
System.exit(0);
dispose();
}
}
(2).选择服务模块设计
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPerformed(ActionEvente)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。
其中的部分源代码为:
p.add(newLabel("请选择你要的服务"));
this.add(p);
button1=newButton("存款");
p1.add(button1);
this.add(p1);
button2=newButton("取款");
p2.add(button2);
this.add(p2);
button3=newButton("查询余额");
p3.add(button3);
this.add(p3);
button4=newButton("退出");
p4.add(button4);
this.add(p4);
button5=newButton("修改密码");
p5.add(button5);
this.add(p5);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
//setLayout(newGridLayout());
setBounds(150,150,200,200);
setVisible(true);
validate();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==button2){//取款
dispose();
GetBalancegb=newGetBalance("取款",act);
}
if(e.getSource()==button3){//查询余额
Queryq=newQuery("查询余额",act);
dispose();
}
elseif(e.getSource()==button4){//退出
System.exit(0);
dispose();
}
elseif(e.getSource()==button5){//修改密码
ChangePasswordcp=newChangePassword("修改密码",act);
dispose();
}
}
}
(3).取款模块设计
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。
当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。
其方法为:
if(e.getSource()==button){
/*判断余额是否为负*/
if(act.get_Money()<0){
dispose();
ErrorWarn4ew4=newErrorWarn4("消息!
",act);
}
/*判断取款数额是否小于卡里余额*/
elseif(money<=act.get_Money()){
/*取款的数额必须是100的倍数且每次最多只能取5000块*/
if((money%100!
=0)||(money>=5000)){
dispose();
ErrorWarn6ew6=newErrorWarn6("消息!
",act);
}
act.set_Balance(money);//重新设置卡里的余额
this.setVisible(false);
/*取款后就再次进入选择界面*/
Selections=newSelection("选择服务",act);
//dispose();
}elseif(money>act.get_Money()){
dispose();
ErrorWarn5ew5=newErrorWarn5("消息!
",act);
}
}
(4)修改密码模块设计
在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。
再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。
在修改密码时用到的方法为:
/*判断旧密码是是否正确*/
if(pwd2.equals(act.get_Password())){
/*判断两次输入的密码是否匹配*/
if(pwd3.equals(pwd4)){
/*如果都正确的话就设置新密码*/
act.setPassword(pwd3);
dispose();
Selections=newSelection("选择",act);
}else{
dispose();
ErrorWarn2ew2=newErrorWarn2("消息",act);
}
}else{
this.setVisible(false);
ErrorWarn3ew1=newErrorWarn3("消息",act);
dispose();
}
(5)退卡模块设计
在退卡模块设计中,这个方法就更加的简单了,它只是用了if(e.getSource()==button4){//退出
System.exit(0);
dispose();
4.下面是系统实现与测试
(1)编译运行程序后,将会看到如下的界面,如图2所示。
如果输入的密码或卡号不正确的话就会报右下图的错误。
图2主界面—登陆页面
(2)选择服务界面效果
当输入的密码和卡号正确,单击确定后就会进入到选择服务的界面,如图3所示。
然后就可以选择所需要的服务了。
图3选择服务界面
(3)取款界面,如图4所示。
图4取款界面
当输入的钱数不是100的倍数或每一次大于5000时就会报图5的错误。
图5输入错误1
当取款时如果超过卡里的余额的话就会报图6的错误。
图6输入错误2
(4)查询余额界面,如图7所示。
图7查询余额界面
经过测试,所有的功能基本上都实现了,而且运行正常。
四.总结:
在此次课程设计中,我遇到了一些问题,如:
对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。
在这次的期中课程设计中,我主要运用了Java语言的图形界面设计、Awt控件、Swing控件等,综合运用了Java语言。
我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
五.参考文献:
1.DeitelJAVAHOWTOPROGRAM;
2.黄聪明精通JAVA程序设计;
3.杨旺功跟我学JAVA;
六.程序可执行代码:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM java课程设计 java 课程设计