ATM课程设计报告.docx
- 文档编号:28416922
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:28
- 大小:273.05KB
ATM课程设计报告.docx
《ATM课程设计报告.docx》由会员分享,可在线阅读,更多相关《ATM课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
ATM课程设计报告
课程设计报告
(本科)
课程:
面向对象程序设计
学号:
姓名:
班级:
教师:
时间:
2014.12
设计名称:
ATM管理系统
日期:
2014年12月20日
设计内容:
本系统采用JAVA语言并在eclipse环境下编写测试完成以下功能:
①用户登陆:
检查用户使用的合法性。
②修改密码:
只有旧密码正确,新密码符合要求,且两次输入相同的情况下
才可以成功修改密码.
③客户存款:
客户按照自己的需求存入自己想存的钱。
④客户取款:
可按100,200,500,1000元面额取款,并记录取款信息。
出
款以数字显示。
⑤查询余额:
客户可很方便的查询自己的余额,以至于取钱不用超支。
⑥退卡:
当客户把一切都做好后就可以退卡.
设计目的与要求:
1。
1基本要求
本次设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。
它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。
1。
2设计目的
《面向对象程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
设计环境或器材、原理与说明:
一、设计环境:
操作系统:
window7中文旗舰版
开发平台:
Java语言与eclipse平台
二、说明:
通过运用Java语言和eclipse平台下设计的ATM管理系统,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,采用集合(更好)存储账户数据。
主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。
它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。
设计过程(步骤)或程序代码(可以加页):
1。
需求分析
本ATM柜员机的主要功能如下所述:
要求使用图形用户界面。
当输入给定的卡号和密码(初始卡号为123456和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
●查询余额:
初始余额为10000元
●ATM取款:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支.
●ATM存款:
不能出现负存款。
●修改密码:
新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码.
2总体设计
2.1总体功能图
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。
其功能结构图如下所示:
图2—1总体功能
2。
2各功能模块设计
2。
2.1登陆模块设计
与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入卡号和密码才能继续服务。
我定义了文本框类的对象,主要是用于输入单行的文本;文本区调用pan.add(newJlabel())方法,获取用户想要的字符串。
用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框.
此模块相应的部分源代码为:
JPanelpanel=newJPanel(newGridLayout(4,1));
publicvoidfin(){}
2.2。
2主界面模块设计
在主界面模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
每一个按钮都有监听器,在选择了按钮后,java.awt。
event中的ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPerformed(ActionEvente)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。
2.2.3取款模块设计
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。
当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。
其方法为:
getMoney。
addActionListener(newActionListener(){}
2.2。
4存款模块设计
在存款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想存的数额,但是必须是100的倍数,且不能为负数.
其方法为:
putMoney。
addActionListener(newActionListener(){}
publicvoidfputMoney(){
JPanelp1=newJPanel(newGridLayout(2,1));
p1.add(newLabel(”输入存钱金额:
”,SwingConstants.CENTER));
…..}
2。
2。
5修改密码模块设计
在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。
再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。
在修改密码时用到的方法为:
changeKey。
addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jt。
setText(null);
jt1。
setText(null);
jt2.setText(null);
frame4.setVisible(true);
frame1.setVisible(false);
}
设计结果与分析(可以加页):
一:
运行效果图
图4—1主界面
图4-2登陆界面
图4—3登陆错误提示
图4—4功能选择界面
图4-5取款界面
图4-6取款提示框
图4-7余额提示框
图4-8取款金额提示框
图4—9存款界面
图4—10存款成功提示框
图4-11密码修改界面
图4—12密码修改相关提示框
设计体会与建议:
在这次的学年度课程设计中,我主要运用了Java语言的界面设计、异常处理、、Awt控件、Swing控件,输入输出流等,综合运用了Java语言。
我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
通过这两个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。
好了,下面就谈一下我在这些天的体会吧:
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
输入输出流等技术.由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流.正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础.
通过将近两周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。
在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识.
附录:
程序代码
importjava。
awt。
*;
importjavax。
swing。
*;
importjava。
awt.event。
*;
publicclassATMextendsJFrameimplementsActionListener{
privateJTextFieldcardNumber=newJTextField(10);
privateJPasswordFieldpassword=newJPasswordField(8);//密码文本框
privateJPasswordFieldjt=newJPasswordField(8);
privateJPasswordFieldjt1=newJPasswordField(8);
privateJPasswordFieldjt2=newJPasswordField(8);
privateJButtonok=newJButton(”确认");
privateJTextFieldjtGetMoney=newJTextField(8);//文本框
privateJTextFieldjtputMoney=newJTextField(8);
StringuserName="123456”;
Stringjnp="123456";
Stringsum="10000”;
JFrameframe0=newJFrame();//进入界面
JFrameframe1=newJFrame();//主界面
JFrameframe2=newJFrame();//取钱的界面
JFrameframe3=newJFrame();//存钱的界面
JFrameframe4=newJFrame();//修改密码的界面
publicATM(){
fgetMoney();
fputMoney();
fchangeKey();
JPanelpanel=newJPanel(newGridLayout(4,1));//网格布局管理器9—29-3JPanel面板容器
panel.add(newJLabel("请插入银行卡",SwingConstants。
CENTER));
ImageIconimageicon=newImageIcon(”E:
1.gif”);
JLabelpicture1=newJLabel(imageicon);
panel.add(picture1);
panel.add(newJLabel());
panel。
add(ok);
add(panel);
ok.addActionListener(this);//this表明当前的对象panal
}
publicvoidactionPerformed(ActionEvente){//实现implementsActionListener接口,然后实现它的抽象方法
setVisible(false);//默认不可见
fin();//类名
}
publicclassOK0ListenerimplementsActionListener{//判断密码和账号
publicvoidactionPerformed(ActionEvente){
try{//捕获异常
if(cardNumber.getText()。
equals(userName)&&password。
getText()。
equals(jnp)){//判断卡号密码是否正确
fmain();//equals操作表示的两个变量是否是对同一个对象的引用,密码是否正确。
frame0.setVisible(false);
}
else
JOptionPane。
showMessageDialog(null,"用户名或密码错误");
}
catch(Exceptiona){//处理异常
JOptionPane.showMessageDialog(null,”请输入数字,谢谢合作");
}
}
}
publicvoidfin(){//进入类
JButtonok0=newJButton("确认”);
JPanelpan1=newJPanel(newGridLayout(2,2,5,5));//网格布局管理器坐标长宽
pan1。
add(newJLabel("卡号:
",SwingConstants。
RIGHT));
pan1.add(cardNumber);
pan1。
add(newJLabel("密码:
",SwingConstants.RIGHT));
pan1.add(password);
ActionListenerlistener0=newOK0Listener();//新建一个listener0对象
ok0.addActionListener(listener0);//使用ok0对象
JLabeljl1=newJLabel(”中国自助银行”,SwingConstants.CENTER);
JLabeljl2=newJLabel("PleaseInputYourPINAndPress\'Enter\'"
+"请输入你的卡号和密码后按确认键”,SwingConstants.CENTER);
jl1.setForeground(Color.red);
jl2。
setForeground(Color。
DARK_GRAY);
JPanelpan3=newJPanel(newGridLayout(2,1));
pan3.add(jl1);
pan3。
add(jl2);
frame0。
add(pan3,BorderLayout.NORTH);//边界布局管理器
frame0。
add(pan1,BorderLayout。
CENTER);
frame0.add(ok0,BorderLayout。
SOUTH);
frame0.setTitle("ATM取款机进入界面”);
frame0.setSize(500,150);
frame0.setLocationRelativeTo(null);//使窗口显示在屏幕中央
frame0.setDefaultCloseOperation(JFrame。
EXIT_ON_CLOSE);//关闭本窗口
frame0。
setVisible(true);//设置可见
}
publicvoidfmain(){
JButtongetMoney=newJButton("取款”);
JButtonsearch=newJButton("查询余额");
JButtonputMoney=newJButton(”存款”);
JButtonchangeKey=newJButton("修改密码");
JButtonexit=newJButton(”退卡”);
getMoney.addActionListener(newActionListener(){//注册事件监听器
publicvoidactionPerformed(ActionEventa){//事件监听器的实现方法
jtGetMoney。
setText(null);//新建文本框
frame2。
setVisible(true);//界面切换
frame1。
setVisible(false);
}
});
search。
addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,”您的余额是"+sum);//调出一个显示信息的对话框,
}
});
putMoney。
addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jtputMoney.setText(null);
frame3.setVisible(true);
frame1。
setVisible(false);
}
});
changeKey.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jt。
setText(null);
jt1.setText(null);
jt2。
setText(null);
frame4.setVisible(true);
frame1。
setVisible(false);
}
});
exit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
cardNumber.setText(null);
password。
setText(null);
frame0.setVisible(true);
frame1.setVisible(false);
}
});
JPanelpan4=newJPanel(newGridLayout(3,1));
pan4.add(getMoney);
pan4.add(search);
pan4。
add(putMoney);
JPanelpan5=newJPanel(newBorderLayout());
pan5.add(changeKey,BorderLayout.NORTH);
pan5。
add(exit,BorderLayout。
SOUTH);
JPanelpan6=newJPanel(newBorderLayout());
pan6.add(pan4,BorderLayout。
EAST);
pan6。
add(pan5,BorderLayout.WEST);
ImageIconimageicon2=newImageIcon(”E:
ATM41.png”);
JLabelpicture2=newJLabel(imageicon2);
pan6。
add(picture2);
frame1.add(pan6);
frame1。
setTitle("ATM取款机主菜单界面”);
frame1.setSize(500,400);
frame1。
setLocationRelativeTo(null);
frame1。
setDefaultCloseOperation(JFrame。
EXIT_ON_CLOSE);
frame1。
setVisible(true);
}
publicvoidfgetMoney(){
JPanelpan7=newJPanel(newGridLayout(4,1));
String[]p={”100”,"300","500”,”1000”,"2000","2500”,”确认”};
JButton[]jb=newJButton[7];
for(inti=0;i<=2;i++){
jb[i]=newJButton(p[i]);
pan7。
add(jb[i]);
}
JButtonturn1=newJButton(”返回");
pan7。
add(turn1);
JPanelpan8=newJPanel(newGridLayout(4,1));
for(inti=3;i<=6;i++){
jb[i]=newJButton(p[i]);
pan8.add(jb[i]);
}
JPanelpan9=newJPanel(newGridLayout(4,1));
pan9。
add(newJLabel("请选择或输入取款金额:
”,SwingConstants.CENTER));
pan9.add(jtGetMoney);
ImageIconimageicon4=newImageIcon("E:
1.png");
JLabelpicture4=newJLabel(imageicon4);
ImageIconimageicon5=newImageIcon(”E:
2.png");
JLabelpicture5=newJLabel(imageicon5);
pan9。
add(picture4);
pan9。
add(picture5);
JPanelpan10=newJPanel(newBorderLayout());
pan10。
add(pan7,BorderLayout.WEST);
pan10.add(pan9);
pan10.add(pan8,BorderLayout。
EAST);
frame2。
add(pan10);
frame2。
setTitle("ATM取款机取款界面”);
frame2。
setSize(500,400);
frame2.setLocationRelativeTo(null);
frame2.setDefaultCloseOperation(JFrame。
EXIT_ON_CLOSE);
for(inti=0;i<7;i++){
jb[i].addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
inttotal=Integer。
parseInt(sum);//把sum这个变量,转化为整数类型变量,并赋值给total。
try{
if(e。
getActionCommand().equals("100")){//某个button的actioncommand是100,当点击的时候,这条语句就会起作用。
total—=100;
if(total<0){
JOptionPane。
showMessageDialog(null,”对不起你没有这么多钱,你可能已经破产了!
!
!
"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 课程设计 报告