ATM课程设计报告_第1页
ATM课程设计报告_第2页
ATM课程设计报告_第3页
ATM课程设计报告_第4页
ATM课程设计报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告(本科)课程:面向对象程序设计学号:姓名:班级:教师:时间:2014.12 设计名称:ATM管理系统日期:2014 年1 2月 20日 设计内容:本系统采用JAVA语言并在eclipse环境下编写测试完成以下功能:用户登陆:检查用户使用的合法性。修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。客户存款:客户按照自己的需求存入自己想存的钱。客户取款:可按100,200,500,1000元面额取款,并记录取款信息。出款以数字显示。查询余额:客户可很方便的查询自己的余额,以至于取钱不用超支。退卡:当客户把一切都做好后就可以退卡。设计目的与要求:1.1基本要求本次设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。1.2 设计目的面向对象程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。设计环境或器材、原理与说明:一、设计环境:操作系统:window 7 中文旗舰版开发平台:Java语言与eclipse平台二、说明: 通过运用Java语言和eclipse平台下设计的ATM管理系统,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,采用集合(更好)存储账户数据。主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。设计过程(步骤)或程序代码(可以加页):1.需求分析本ATM柜员机的主要功能如下所述:要求使用图形用户界面。当输入给定的卡号和密码(初始卡号为和密码为)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:l 查询余额:初始余额为10000元l ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。l ATM存款:不能出现负存款。l 修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 2 总体设计2.1 总体功能图我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。其功能结构图如下所示:登陆界面功能选择退卡修改密码取款存款查询余额图2-1 总体功能2.2各功能模块设计2.2.1登陆模块设计与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入卡号和密码才能继续服务。我定义了文本框类的对象,主要是用于输入单行的文本;文本区调用pan.add(new Jlabel())方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框。此模块相应的部分源代码为:JPanel panel=new JPanel(new GridLayout(4,1); public void fin() 2.2.2主界面模块设计在主界面模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法public void actionPerformed(ActionEvent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。2.2.3取款模块设计在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。其方法为:getMoney.addActionListener(new ActionListener() 2.2.4存款模块设计在存款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想存的数额,但是必须是100的倍数,且不能为负数。其方法为:putMoney.addActionListener(new ActionListener()public void fputMoney() JPanel p1=new JPanel(new GridLayout(2,1); p1.add(new Label(输入存钱金额:,SwingConstants.CENTER); . 2.2.5修改密码模块设计在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。在修改密码时用到的方法为:changeKey.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) jt.setText(null); jt1.setText(null); jt2.setText(null); frame4.setVisible(true); frame1.setVisible(false); 26设计结果与分析(可以加页):一:运行效果图图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文档,为以后更好的学习面向对象语言奠定了基础。通过将近两周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。附录:程序代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class ATM extends JFrame implements ActionListenerprivate JTextField cardNumber=new JTextField(10);private JPasswordField password=new JPasswordField(8);/密码文本框private JPasswordField jt=new JPasswordField(8);private JPasswordField jt1=new JPasswordField(8);private JPasswordField jt2=new JPasswordField(8);private JButton ok=new JButton(确认);private JTextField jtGetMoney=new JTextField(8);/文本框private JTextField jtputMoney=new JTextField(8);String userName=;String jnp=;String sum=10000;JFrame frame0=new JFrame();/进入界面JFrame frame1=new JFrame();/主界面JFrame frame2=new JFrame();/取钱的界面JFrame frame3=new JFrame();/存钱的界面JFrame frame4=new JFrame();/修改密码的界面public ATM()fgetMoney();fputMoney();fchangeKey();JPanel panel=new JPanel(new GridLayout(4,1); /网格布局管理器 9-2 9-3JPanel面板容器panel.add(new JLabel(请插入银行卡,SwingConstants.CENTER);ImageIcon imageicon=new ImageIcon(E:1.gif); JLabel picture1=new JLabel(imageicon);panel.add(picture1);panel.add(new JLabel();panel.add(ok);add(panel);ok.addActionListener(this); /this表明当前的对象panal public void actionPerformed(ActionEvent e) /实现 implements ActionListener接口,然后实现它的抽象方法 setVisible(false); /默认不可见 fin(); /类名 public class OK0Listener implements ActionListener /判断密码和账号 public void actionPerformed(ActionEvent e) try /捕获异常 if(cardNumber.getText().equals (userName)&password.getText().equals(jnp)/判断卡号 密码是否正确 fmain();/equals操作表示的两个变量是否是对同一个对象的引用,密码是否正确。 frame0.setVisible(false); else JOptionPane.showMessageDialog(null,用户名或密码错误); catch(Exception a) /处理异常 JOptionPane.showMessageDialog(null,请输入数字,谢谢合作); public void fin() /进入类 JButton ok0=new JButton(确认); JPanel pan1=new JPanel(new GridLayout(2,2,5,5); /网格布局管理器 坐标 长宽 pan1.add(new JLabel(卡号:,SwingConstants.RIGHT); pan1.add(cardNumber); pan1.add(new JLabel(密码:,SwingConstants.RIGHT); pan1.add(password); ActionListener listener0=new OK0Listener(); /新建一个listener0对象 ok0.addActionListener(listener0); /使用ok0对象 JLabel jl1=new JLabel(中国自助银行,SwingConstants.CENTER); JLabel jl2=new JLabel(Please Input Your PIN And Press Enter +请输入你的卡号和密码后按确认键,SwingConstants.CENTER); jl1.setForeground(Color.red); jl2.setForeground(Color.DARK_GRAY); JPanel pan3=new JPanel(new GridLayout(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);/设置可见 public void fmain() JButton getMoney=new JButton(取款); JButton search=new JButton(查询余额); JButton putMoney=new JButton(存款); JButton changeKey=new JButton(修改密码); JButton exit=new JButton(退卡); getMoney.addActionListener(new ActionListener() /注册事件监听器 public void actionPerformed(ActionEvent a) /事件监听器的实现方法 jtGetMoney.setText(null); /新建文本框 frame2.setVisible(true); /界面切换 frame1.setVisible(false); ); search.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null,您的余额是+sum);/调出一个显示信息的对话框, ); putMoney.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) jtputMoney.setText(null); frame3.setVisible(true); frame1.setVisible(false); ); changeKey.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) jt.setText(null); jt1.setText(null); jt2.setText(null); frame4.setVisible(true); frame1.setVisible(false); ); exit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) cardNumber.setText(null); password.setText(null); frame0.setVisible(true); frame1.setVisible(false); ); JPanel pan4=new JPanel(new GridLayout(3,1); pan4.add(getMoney); pan4.add(search); pan4.add(putMoney); JPanel pan5=new JPanel(new BorderLayout(); pan5.add(changeKey,BorderLayout.NORTH); pan5.add(exit,BorderLayout.SOUTH); JPanel pan6=new JPanel(new BorderLayout(); pan6.add (pan4,BorderLayout.EAST); pan6.add (pan5,BorderLayout.WEST); ImageIcon imageicon2=new ImageIcon(E:ATM41.png); JLabel picture2=new JLabel(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); public void fgetMoney() JPanel pan7=new JPanel(new GridLayout(4,1); Stringp=100,300,500,1000,2000,2500,确认; JButton jb=new JButton7; for(int i=0;i=2;i+) jbi=new JButton(pi); pan7.add(jbi); JButton turn1=new JButton(返回); pan7.add(turn1); JPanel pan8=new JPanel(new GridLayout(4,1); for(int i=3;i=6;i+) jbi=new JButton(pi); pan8.add(jbi); JPanel pan9=new JPanel(new GridLayout(4,1); pan9.add(new JLabel(请选择或输入取款金额:,SwingConstants.CENTER); pan9.add(jtGetMoney); ImageIcon imageicon4=new ImageIcon(E:1.png); JLabel picture4=new JLabel(imageicon4); ImageIcon imageicon5=new ImageIcon(E:2.png); JLabel picture5=new JLabel(imageicon5); pan9.add(picture4); pan9.add(picture5); JPanel pan10=new JPanel(new BorderLayout(); 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(int i=0;i7;i+) jbi.addActionListener(new ActionListener() public voidactionPerformed(ActionEvent e) int total=Integer.parseInt(sum); /把sum这个变量,转化为整数类型变量,并赋值给total。 try if(e.getActionCommand().equals(100) /某个button的action command是100,当点击的时候,这条语句就会起作用。 total-=100; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你可能已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 100 元); else if(e.getActionCommand().equals(300) total-=300; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你可能已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 300 元); else if(e.getActionCommand().equals(500) total-=500; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 500 元); else if(e.getActionCommand().equals(1000) total-=1000; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你可能已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 1000 元); else if(e.getActionCommand().equals(2000)total-=2000; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你可能已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 2000 元); else if(e.getActionCommand().equals(2500) total-=2500; if(total0) JOptionPane.showMessageDialog(null,对不起你没有这么多钱,你可能已经破产了! +还剩余+sum+元); else sum=+total; JOptionPane.showMessageDialog(null,您已成功取出金额 2500 元); catch(Exception ex) JOptionPane.showMessageDialog(null,支取金额不允许透支,请确认后重新输入); if(e.getActionCommand().equals(确认) try int b=Integer.parseInt(jtGetMoney.getText(); if(b5000) JOptionPane.showMessageDialog(null,支取金额不允许超出 5000 元,请确认后重新输入); else if(btotal) JOptionPane.showMessageDialog(null,支取金额不允许透支,请确认后重新输入); else total=total-b; if(total0&b%100!=0) JOptionPane.showMessageDialog(null,存入金额须为 100 的倍数,请确认后重新输入); else if(b=0) JOptionPane.showMessageDialog(null,存入金额不允许为负或零,请确认后重新输入); else total+=b; sum=+total; JOptionPane.showMessageDialog(null,存款成功); catch(NumberFormatException e) JOptionPane.showMessageDialog(null,输入违规); frame1.setVisible(true); frame3.setVisible(false); ); turn2.addActionListener(new ActionListener() /返回事件监听器 public voidactionPerformed(ActionEvent a) frame1.setVisible(true); frame3.setVisible(false); ); public void fchangeKey() JPanel p4=new JPanel(); p4.add(new Label(旧密码:); p4.add(jt); JPanel p5=new JPanel(); p5.add(new Label(新密码:); p5.add(jt1); JPanel p6=new JPanel(); p6.add(new Label(请再一次输入新密码:); p6.add(jt2); JPanel p7=new JPanel(); JButton ok2=new JButton(确认); JButton turn=new JButton(返回); p7.add(turn); p7.add(ok2); JPanel p8=new JPanel(new GridLayout(4,1); p8.add(p4); p8.add(p5); p8.add(p6); p8.add(p7); ok2.addActionListener(new ActionListener() p

温馨提示

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

评论

0/150

提交评论