《课程设计报告-ATM柜员机模拟程序13118.pdf》由会员分享,可在线阅读,更多相关《课程设计报告-ATM柜员机模拟程序13118.pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 .-.-可修编.软 件 学 院 课程设计报告书 课程名称 面向对象程序设计 设计题目 ATM 柜员机模拟程序 专业班级 软件工程 学 号 姓 名 指导教师 X 腊梅 2015 年月 .-.-可修编.目录 1 设计时间.1 2 设计目的.1 3 设计题目.1 4 设计任务.1 5 设计内容.1 5.1 kehu 类代码.1 5.2 ATM 主界面模块设计.2 5.3 选择页面模块设计.5 5.4 存款模块设计.8 5.5 取款模块设计.11 5.6 查询余额模块设计.16 5.7 修改密码模块设计.18 6 总结与展望.23 参考文献.24 成绩评定.24 .-.-可修编.1 设计时间 201
2、5 年月 2 设计目的 掌握图形用户界面设计方法,掌握常用swing 组件的使用和事件处理程序设计.3 设计题目 ATM 柜员机模拟程序 4 设计任务 使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为 123456)时,系统能登录 ATM 柜员机系统,用户可以按照以下规则进行:(1)查询余额功能:初始余额为 10000 元(2)ATM 取款功能:每次取款金额为 100 的倍数,总额不超过 5000 元,支取金额不允许透支。(3)ATM 存款功能:不能出现负存款。(4)修改密码:新密码长度不小于 6 位,不允许出现 6 位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的
3、情况下才可以成功修改密码。5 设计内容 5.1kehu 类代码 import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;/导入包 import java.util.*;.-.-可修编.classkehu/定义客户类 String zh;/定义账号 String pswf;/定义密码 double jine;/定义金额 publickehu()/构造GUKE publickehu(String zh,String pswf,double jine)this.zh=zh;th
4、is.pswf=pswf;this.jine=jine;String getzh()/定义成员变量账号 return zh;/成员方法 double setMima(double pswf)/定义成员变量密码 return pswf;/成员方法 double getJine()/定义成员变量金额 .-.-可修编.return jine;/定义成员方法 void cunkuan(double money)/定义成员变量存款 jine=jine+money;/定义成员方法 void quqian(double money)/定义成员变量取款 jine=jine-money;/定义成员方法 Stri
5、ng xiugaim(String mi)/定义成员变量密码 pswf=mi;/定义成员方法 return pswf;5.2 ATM 主界面模块设计 classATM extends JFrame implementsActionListener/导入接口类 JPanel p1,p2,p3;/定义个面板 JLabel l1,l2,l3,l4;/定义个标签 JPasswordField pswf;/定义一个密码文本 .-.-可修编.utton 1,2;/定义个按钮 JTextField jtf1,jc1;/定义个文本框 Container content;/定义一个容器 kehu g=newke
6、hu4;/定义客户类数组 public ATM()/布局 g0=newkehu(liuyiping,123456,10000);/客户类数组里给的XX,密码,钱数 g1=newkehu(chengyang,123456,10000);g2=newkehu(zhangzhicheng,123456,10000);g3=newkehu(pengzhanyuan,123456,10000);p1=new JPanel();p2=new JPanel();/定义第二个面板 l2=new JLabel(卡号:);/定义标签l2 jc1=new JTextField(10);/定义账号文本 l3=new
7、JLabel(密 码:);/定义标签l3 pswf=new JPasswordField(12);/定义密码文本 l4=new JLabel(欢迎使用自动取款机);p1.add(l4);p2.add(l2);/把它们分别镶在面板上 p2.add(jc1);p2.add(l3);.-.-可修编.p2.add(pswf);p3=new JPanel();/定义第三个面板 1=new utton(登录);/定义按钮登录1 1.addActionListener(this);/1申请监听 2=new utton(注销);/定义按钮注销2 2.addActionListener(this);/2申请监听
8、 p3.add(1);/把它们添加到p3面板里 p3.add(2);content=this.getContentPane();/布局定义 content.setLayout(newBorderLayout();content.add(p1,BorderLayout.NORTH);content.add(p2,BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(ATM 柜员机);/定义为窗口名称 this.setBounds(300,300
9、,400,300);/定义窗口的大小 this.setResizable(false);this.show();/显示 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/关闭、退出 publicvoid actionPerformed(ActionEvent e)/监听类 .-.-可修编.String x=jc1.getText();if(e.getSource()=1)/如果点击是1按钮就进入For for(int i=0;i 4;i+)/判断名字在数组的位置 if(x.equals(gi.zh)/检查到开始判断是否匹配 if(pswf
10、.getText().equals(gi.pswf)/名字匹配成功后判断密码是否成功 new XUANZE(gi);/密码真确后进入XUANZE的界面 else JOptionPane.showMessageDialog(this,密码错误!);/密码错误弹出提示密码错误 else System.exit(0);/注销事件退出 publicstaticvoid main(String args)/定义的MAIN,才能进入。new ATM();.-.-可修编.主界面 密码输入错误提示栏 5.3 选择页面模块设计 class XUANZE extends JFrame implementsActi
11、onListener/导入接口类 JPanel p2,p3;/定义个面板 .-.-可修编.JLabel l1;/定义个标签 utton 1,2,3,4,5;/定义个按钮 Container content;/定义一个容器 kehu key;/定义客户类传从参数key public XUANZE(GUKE key)this.key=key;p2=new JPanel();/定义面板 1=new utton(ATM取款);/定义1按钮ATM取款 1.addActionListener(this);/1申请监听 2=new utton(ATM存款);/定义2按钮ATM存款 2.addActionLi
12、stener(this);/2申请监听 3=new utton(查询余额);/定义3按钮查询余额 3.addActionListener(this);/3申请监听 4=new utton(修改密码);/定义4按钮修改密码 4.addActionListener(this);/4申请监听 p2.add(1);p2.add(2);p2.add(3);p2.add(4);p3=new JPanel();/定义面板 5=new utton(退出);/定义5按钮退出 .-.-可修编.5.addActionListener(/定义一个匿名类 newActionListener()publicvoid ac
13、tionPerformed(ActionEvent event)System.exit(0);/退出登陆 );p3.add(5);content=this.getContentPane();/布局定义 content.setLayout(newBorderLayout();content.add(p2,BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(进入界面);/定义为窗口名称 this.setBounds(300,300,400,30
14、0);/定义窗口的大小 this.setResizable(false);this.show();.-.-可修编.publicvoid actionPerformed(ActionEvent event)/接口监听 if(event.getSource()=4)/判断是否是4 new Xgmm(key);/进入Xgmm setVisible(false);if(event.getSource()=1)/判断是否是1 new QUKUAN(key);/进入QUKUAN setVisible(false);if(event.getSource()=2)/判断是否是2 new CUNKUAN(key
15、);/进入CUNKUAN setVisible(false);if(event.getSource()=3)/判断是否是3 new CHAXUN(key);/进入CHAXUN setVisible(false);.-.-可修编.进入选择界面 5.4 存款模块设计 class CUNKUAN extends JFrame implementsActionListener/导入接口类 JPanel p2,p3;/定义个面板 JLabel l1;/定义个标签 utton 1,2;/定义个按钮 JTextField jtf1;/定义一个文本框 Container content;/定义一个容器 keh
16、u key;/定义客户类传从参数key public CUNKUAN(kehu key).-.-可修编.this.key=key;/把key传到顶层容器 p2=new JPanel();/定义面板 l1=new JLabel(请输入您要存入的金额:);/定义一个标签请输入您要存入的金额:jtf1=new JTextField(10);/定义一个文本框 p2.add(l1);p2.add(jtf1);p3=new JPanel();/定义第三个面板 1=new utton(确定);/定义一个按钮确定 1.addActionListener(this);/1申请一个监听 2=new utton(返
17、回);/定义一个按钮返回 2.addActionListener(/定义一个匿名类监听 newActionListener()publicvoid actionPerformed(ActionEvent event)XUANZEActionPerformed(event););p3.add(1);p3.add(2);.-.-可修编.content=this.getContentPane();/布局定义 content.setLayout(newBorderLayout();content.add(p2,BorderLayout.NORTH);/定义顶部为面板p1 content.add(p2,
18、BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(自 动 存 款);/定义为窗口名称 this.setBounds(300,300,400,300);/定义窗口的大小 this.setResizable(false);this.show();/显示 publicvoid actionPerformed(ActionEvent e)/接口监听类 if(e.getSource()=1)/判断是是否是1 double money=Double.
19、parseDouble(jtf1.getText();/把money转成Double JOptionPane.showMessageDialog(this,成功存款+jtf1.getText()+元!);/一个提示框填出你成功存了多少 key.cunkuan(money);/把存的钱传回客户类 jtf1.setText(0);.-.-可修编.publicvoid XUANZEActionPerformed(ActionEvent event)/匿名类监听过程 if(event.getSource()=2)/判断要是2 new XUANZE(key);/返回XUANZE界面 setVisible
20、(false);存款界面 .-.-可修编.存款成功 5.5 取款模块设计 class QUKUAN extends JFrame implementsActionListener/导入接口类 JPanel p2,p3;/定义个面板 JLabel l1;/定义个标签 utton 1,2;/定义个按钮 JTextField jtf1;/定义一个文本框 Container content;/定义一个容器 GUKE key;/定义客户类传从参数key public QUKUAN(GUKE key)this.key=key;/把key传到顶层容器 p2=new JPanel();/定义面板 .-.-可修
21、编.l1=new JLabel(请输入您要取的金额:);/定义一个标签请输入您要取的金额:jtf1=new JTextField(10);/定义一个文本框 p2.add(l1);p2.add(jtf1);p3=new JPanel();/定义面板 1=new utton(确定);/定义一个按钮确定 1.addActionListener(this);/1申请一个监听 2=new utton(返回);/定义一个按钮返回 2.addActionListener(this);/1申请一个监听 p3.add(1);p3.add(2);content=this.getContentPane();/布局定
22、义 content.setLayout(newBorderLayout();content.add(p2,BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(自 动 取 款);/定义为窗口名称 this.setBounds(300,300,400,300);/定义窗口的大小 this.setResizable(false);this.show();.-.-可修编.publicvoid actionPerformed(ActionEvent
23、e)/接口监听类 if(e.getSource()=1)/判断是是否是1 double money=Double.parseDouble(jtf1.getText();/把money转成Double if(money key.jine)if(money%100=0)if(money=5000)JOptionPane.showMessageDialog(this,成功取款+jtf1.getText()+元!);/一个提示框填出你成功取了多少 key.quqian(money);/把存的钱传回客户类 jtf1.setText(0);else JOptionPane.showMessageDialo
24、g(this,提取金额不许超过五千);.-.-可修编.else JOptionPane.showMessageDialog(this,取款许为一百的整数);else JOptionPane.showMessageDialog(this,金额不足不许透支);/一个提示框提示你你的卡即将要已透支 if(e.getSource()=2)/判断是是否是2 new XUANZE(key);/返回XUANZE setVisible(false);.-.-可修编.取款界面 取款成功 金额不足取款失败提示 .-.-可修编.提取金额不许超过五千 提取金额需为一百的整数 5.6 查询余额模块设计 class CH
25、AXUN extends JFrame implementsActionListener/导入接口类 JPanel p2,p3;/定义个面板 JLabel l1;/定义个标签 utton 1;/定义个按钮 Container content;/定义一个容器 .-.-可修编.kehu key;/定义客户类传从参数key public CHAXUN(kehu key)this.key=key;/把key传到顶层容器 p2=new JPanel();/定义面板 l1=new JLabel(您的剩余金额为:+key.getJine();p2.add(l1);p3=new JPanel();/定义面板
26、1=new utton(返回);1.addActionListener(this);p3.add(1);content=this.getContentPane();/布局定义 content.setLayout(newBorderLayout();content.add(p2,BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(查 询 余 额);/定义为窗口名称 this.setBounds(300,300,400,300);/定义窗口的大
27、小 this.setResizable(false);this.show();publicvoid actionPerformed(ActionEvent e)/接口监听类 if(e.getSource()=1)/判断是否是1 .-.-可修编.new XUANZE(key);/返回XUANZE setVisible(false);开户资金 10000 元 .-.-可修编.存 700 后查询余额 再取款 900 后查询余额 5.7 修改密码模块设计 class Xgmm extends JFrame implementsActionListener/导入接口类 JPanel p2,p3;/定义个
28、面板 JLabel l1,l2,l3,l4;/定义个标签 JPasswordField jtf1,jtf2,jtf3;/定义个文本框 utton 1,2;/定义个按钮 Container content;/定义一个容器 kehu key;/定义客户类传从参数key public Xgmm(kehu key).-.-可修编.this.key=key;/把key传到顶层容器 p2=new JPanel();/定义第二个面板 l2=new JLabel(请输入原始密码:);/定义标签请输入原始密码:l3=new JLabel(输入要修改的密码:);/定义标签输入要修改的密码 l4=new JLabe
29、l(确认输入的新密码:);/定义标签确认输入的新密码:jtf1=new JPasswordField(15);/定义文本框jtf1 jtf2=new JPasswordField(15);/定义文本框jtf2 jtf3=new JPasswordField(15);/定义文本框jtf3 p2.add(l2);p2.add(jtf1);p2.add(l3);p2.add(jtf2);p2.add(l4);p2.add(jtf3);p3=new JPanel();/定义面板 1=new utton(确定);/定义按钮1 确定 1.addActionListener(this);/1申请监听 2=n
30、ew utton(返回登录);/定义按钮2 放回登录 2.addActionListener(this);/2申请监听 p3.add(1);p3.add(2);content=this.getContentPane();/布局定义 .-.-可修编.content.setLayout(newBorderLayout();content.add(p2,BorderLayout.CENTER);/定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);/定义底部为面板p3 this.pack();this.setTitle(修 改 密 码);/定义为窗口名称 thi
31、s.setBounds(300,300,400,300);/定义窗口的大小 this.setResizable(false);this.show();/显示 publicvoid actionPerformed(ActionEvent e)/接口监听类 if(e.getSource()=1)/判断是否是1 if(jtf1.getText().equals(key.pswf)/判断是否是你输入的pswf正确 if(jtf2.getText().equals(jtf3.getText()/判断是否是jtf2和jtf3相等不 if(jtf2.getText().length()=6)if(jtf2.
32、getText().equals(000000)|jtf2.getText().equals(111111)|jtf2.getText().equals(222222)|jtf2.getText().equals(333333)|jtf2.getText().equals(444444)|jtf2.getText().equals(555555)|jtf2.getText().equals(666666)|jtf2.getText().equals(777777).-.-可修编.|jtf2.getText().equals(888888)|jtf2.getText().equals(99999
33、9)jtf2.setText();jtf3.setText();JOptionPane.showMessageDialog(this,密码各位不能相同请重新输入!);/定义一个提示栏不成功 else key.xiugaim(jtf2.getText();/把改的密码传回GUKE类中 JOptionPane.showMessageDialog(this,修改成功!);/定义一个提示框成功 jtf1.setText();jtf2.setText();jtf3.setText();else jtf2.setText();jtf3.setText();JOptionPane.showMessageDi
34、alog(this,密码需六位请重新输入!);/定义一个提示栏不成功 .-.-可修编.else jtf2.setText();jtf3.setText();JOptionPane.showMessageDialog(this,两次输入密码不相符,请确认后重新输入!);/定义一个提示栏不成功 else JOptionPane.showMessageDialog(this,密码输入错误,请确认后重新输入!);/定义一个提示栏原密码错误 jtf1.setText();jtf2.setText();jtf3.setText();if(e.getSource()=2)/判断是是否是2 .-.-可修编.s
35、etVisible(false);原密码输入错误提示修改失败 两次输入密码不一修改失败 .-.-可修编.密码不足六位修改失败 密码各位都相同修改失败 .-.-可修编.输入规 X 修改密码成功 6 总结与展望 通过本次的课程设计,是我更加的喜欢上了 JAVA,这正是我一直想学的计算机实用语音。通过这次设计,是我加深了对本学期对 JAVA 语言的各个知识点的掌握和巩固,特别是图形用户界面。在设计过程中先建立了一个详细的计划,划分为几个模块,然后逐个进行解决,在设计的过程中,由于有些知识点的薄弱,出现了一些错误和困难但是到后来都通过慢慢分析和查看 API 文档得到了解决。从而完整的完成了设计所要求的各项功能。这次设计使我感觉到了自己设计程序在除掉种种错误和克服种种困难而顺畅运行时的成就感,也加深了我对我专业的喜爱,希望我会在以后的学习中有更好的属于自己的作品,对于这门科学更加精通。同时我也会为了自己的这个愿望不断努力,争取早日成为这方面的精英人才。.-.-可修编.参考文献 1java 6 程序设计实践教程/X 万军等编著.:清华大学,2009.5 ISBN 978-7-302-19449-1 成绩评定 成绩 教师签字