版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上ATM柜员机模拟程序一、实训设备与工具个人计算机(奔腾486档以上),windowsXP,JCreator或Editplus编译开发环境二、 实验目的与要求目的:掌握图形用户界面设计方法,掌握常用swing组件的使用和事件处理程序设计;掌握文件的I/O操作或程序对数据库的访问要求:当输入给定的卡号和密码(初始卡号和密码为)时,系统能登录ATM柜员机系统,用户可以进行:1 、查询余额:初始余额为1000元2 、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支3 、ATM存款:不能出现负存款4 、修改密码:新密码长度不小于6为,不允许出现6
2、位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。三、实验实现的步骤1、 分析题目2、 根据自己的想法搭建程序主界面3、 为各菜单项添加事件处理程序四、ATM柜员机界面设计图 图1 ATM功能结构示意图1、 Guest 类代码如下:class Guest / 定义客户类String zh; /定义账号String pswf; /定义密码double jine; /定义金额 public Guest() /构造Guestpublic Guest(String zh,String pswf,double jine)this.zh=zh; /带入顶层容器,账
3、号,密码,金额this.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; /定义成员方法 St
4、ring xiugaim(String mi)/定义成员变量密码 pswf = mi; /定义成员方法 return pswf; 2、ATM柜员机主界面模块设计 主界面的设计,主要有按钮、文本框,组合框,标签,在组合中选择账号,在密码的文本框中输入各个账号所对应的密码,单击登录按钮可以进入选择界面,如果密码错误,就会弹出如图3的对话框,提示“密码错误 ,拒绝登录” import javax.swing.*;import javax.swing.event.*; import java.awt.*;import java.awt.event.*; / 导入包class DENGRU extend
5、s JFrame implements ActionListener /导入接口类 JPanel p1,p2,p3; /定义3个面板JLabel l1,l2,l3,l4; /定义4个标签JPasswordField pswf; /定义一个密码文本JButton jb1,jb2,jb3; /定义3个按钮JTextField jtf1; /定义一个文本框JComboBox jc1; /定义一个组合框ImageIcon myimage; /定义导入图片Container content; /定义一个容器Guest g=new Guest4; /定义客户类数组 public DENGRU() /布局
6、g0=new Guest("chengchao","",5000);/客户类数组里给的帐号,密码,钱数 g1=new Guest("baijing","",5000); g2=new Guest("gaolingling","",5000); g3=new Guest("zhaofengying","",5000);p1 = new JPanel(); /定义第一个面板myimage = new ImageIcon("yl1.
7、jpg"); /定义填入的图片l1 = new JLabel(myimage); /定义把图片放在标签的上面p1.add(l1); p2 = new JPanel(); /定义第二个面板l2 = new JLabel("卡号:"); /定义标签l2 jc1 = new JComboBox(); /定义组合框 jc1.addItem( "chengchao" ); /组合框里赋值jc1.addItem("baijing");jc1.addItem("zhaofengying");jc1.addItem(&q
8、uot;gaolingling"); jc1.setSelectedIndex( 0 ); /组合框里的下标从0开始 jc1.setEditable(true); /里面还可以输入 l3=new JLabel("密 码:"); /定义标签l3 pswf=new JPasswordField(12); /定义密码文本l4 = new JLabel("如果没有账号请注册"); /定义标签l4jb3 = new JButton("注册"); /添加注册按钮 p2.add(l2); /把它们分别镶在面板上 p2.add(jc1);p
9、2.add(l3);p2.add(pswf);p2.add(l4);p2.add(jb3);p3 = new JPanel(); /定义第三个面板 jb1 = new JButton("登录"); /定义按钮登录jb1jb1.addActionListener(this); /jb1申请监听jb2 = new JButton("注销"); /定义按钮注销jb2jb2.addActionListener(this); /jb2申请监听p3.add(jb1); /把它们添加到p3面板里p3.add(jb2); content = this.getConten
10、tPane(); /布局定义 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定义顶部为面板p1 content.add(p2,BorderLayout.CENTER); /定义中部为面板p2 content.add(p3,BorderLayout.SOUTH); /定义底部为面板p3 this.pack(); this.setTitle("ATM 柜员机"); /定义为窗口名称 this.setSize(600,300); / 定义窗口的大小 this.setResiza
11、ble(false); this.show(); /显示 this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );/ 关闭、退出 public void actionPerformed(ActionEvent e ) /监听类String x= jc1.getSelectedItem().toString(); /把jc1的值强制转换成字符if(e.getSource()=jb1) /如果点击是jb1按钮就进入Forfor(int i=0;i<4;i+) /判断名字在数组的位置if(x.equals(gi.zh) /检查到开始判断是否匹
12、配 if(pswf.getText().equals(gi.pswf) /名字匹配成功后判断密码是否成功 new KQ(gi); /密码真确后进入KQ的界面 setVisible( false); else JOptionPane.showMessageDialog( this,"密码错误,拒绝登陆"); /密码错误弹出提示密码错误 elseSystem.exit(0); /注销事件退出 public static void main(String args) /定义的MAIN,才能进入。 new DENGRU(); 图1 主界面 图2 密码输出错误提示栏3、选择界面模块设
13、计在选择模块服务中,有各种ATM的服务功能,只要在用户该界面中选择按钮,它会弹出各个相应的界面,其中的代码为:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class KQ extends JFrame implements ActionListener /导入接口类 JPanel p1,p2,p3; /定义3个面板JLabel l1; /定义1个标签JButton jb1,jb2,jb3,jb4,jb5; /定义5个按钮ImageIcon myi
14、mage; /定义导入图片Container content; /定义一个容器 Guest key; /定义客户类传从参数keypublic KQ(Guest key) this.key =key; /把key传到顶层容器p1 = new JPanel(); /定义第一个面板myimage = new ImageIcon("yl1.jpg"); /定义填入的图片l1 = new JLabel(myimage); /定义把图片放在标签的上面p1.add(l1); p2 = new JPanel(); /定义第二个面板 jb1 = new JButton("ATM取款
15、"); /定义jb1按钮ATM取款 jb1.addActionListener(this); /jb1申请监听jb2 = new JButton("ATM存款"); /定义jb2按钮ATM存款 jb2.addActionListener(this); /jb2申请监听jb3 = new JButton("查询余额 "); /定义jb3按钮查询余额 jb3.addActionListener(this); /jb3申请监听jb4 = new JButton("修改密码"); /定义jb4按钮修改密码 jb4.addAction
16、Listener(this); /jb4申请监听p2.add(jb1);p2.add(jb2);p2.add(jb3);p2.add(jb4);p3 = new JPanel(); /定义第三个面板 jb5 = new JButton("退出"); /定义jb5按钮退出 jb5.addActionListener( /定义一个匿名类 new ActionListener() public void actionPerformed( ActionEvent event ) System.exit(0); /退出登陆 );p3.add(jb5); content = this.
17、getContentPane(); /布局定义 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定义顶部为面板p1 content.add(p2,BorderLayout.CENTER); /定义中部为面板p2 content.add(p3,BorderLayout.SOUTH); /定义底部为面板p3 this.pack();this.setTitle("进入界面"); /定义为窗口名称this.setSize(400,300); / 定义窗口的大小 this.setRe
18、sizable(false);this.show(); public void actionPerformed ( ActionEvent event ) /接口监听 if (event.getSource()=jb4 ) /判断是否是jb4 new Xgmm(key); /进入Xgmm setVisible( false); if (event.getSource()=jb1 ) /判断是否是jb1 new Zdqk(key); /进入Zdqk setVisible( false); if (event.getSource()=jb2 ) /判断是否是jb2 new Zdck(key); /
19、进入Zdck setVisible( false); if (event.getSource()=jb3 ) /判断是否是jb3 new Cxye(key); /进入Cxye setVisible( false); 图3. 进入选择KQ界面4、自动存款模块设计 在取款模块中,和其它界面也是同样的结构,有文本框和按钮还有标签,用户在文本框中输入它想存入的数额,单击确定,就可以存入,如果输错了或者是不想存了,可以单击取消,退出的选择界面。import java.awt.*;import java.awt.event.*;import javax.swing.*;class Zdck extends
20、 JFrame implements ActionListener /导入接口类 JPanel p1,p2,p3; /定义3个面板JLabel l1; /定义1个标签JButton jb1,jb2; /定义2个按钮JTextField jtf1; /定义一个文本框ImageIcon myimage; /定义导入图片Container content; /定义一个容器Guest key; /定义客户类传从参数keypublic Zdck(Guest key) this.key=key; /把key传到顶层容器 p1=new JPanel(); /定义第一个面板 myimage = new Ima
21、geIcon("yl1.jpg"); /定义填入的图片 l1 = new JLabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new JPanel(); /定义第二个面板 l1=new JLabel("请输入您要存入的金额:"); /定义一个标签请输入您要存入的金额: jtf1 = new JTextField(10); /定义一个文本框 p2.add(l1); p2.add(jtf1); p3=new JPanel(); /定义第三个面板 jb1=new JButton("确定"); /定义一
22、个按钮确定 jb1.addActionListener(this); /jb1申请一个监听 jb2=new JButton("返回"); /定义一个按钮返回 jb2.addActionListener( /定义一个匿名类监听 new ActionListener() public void actionPerformed(ActionEvent event) KQActionPerformed(event); ); p3.add(jb1); p3.add(jb2);content=this.getContentPane(); /布局定义content.setLayout(n
23、eBorderLayout();content.add(p1,BorderLayout.NORTH); /定义顶部为面板p1 content.add(p2,BorderLayout.CENTER); /定义中部为面板p2 content.add(p3,BorderLayout.SOUTH); /定义底部为面板p3 this.pack(); this.setTitle("自 动 存 款"); /定义为窗口名称 this.setSize(320,300); / 定义窗口的大小 this.setResizable(false); this.show(); /显示 public v
24、oid actionPerformed (ActionEvent e) /接口监听类 if(e.getSource()=jb1) /判断是是否是jb1 double money = Double.parseDouble(jtf1.getText();/ 把money转成Double JOptionPane.showMessageDialog(this,"成功取款"+jtf1.getText()+"元!");/一个提示框填出你成功存了多少 key.cunkuan(money); /把存的钱传回客户类 jtf1.setText("0");
25、 return; public void KQActionPerformed ( ActionEvent event ) /匿名类监听过程 if (event.getSource()=jb2 ) /判断要是jb2 new KQ(key); /返回KQ界面 setVisible( false); 图4. 自动存款存款成功看图5: 图 5. 存款成功5、自动取款模块设 在取款模块中,和其它界面也是同样的结构,有文本框和按钮还有标签,用户在文本框中输入它想取的数额,但必须是100的倍数,而且每一次最多只能去5000快,当然取款时不能超过卡里的余额没卡里的余额不可以为负数,否则会弹出报错的窗口,其代码
26、为:import java.awt.*;import java.awt.event.*;import javax.swing.*;class Zdqk extends JFrame implements ActionListener /导入接口类JPanel p1,p2,p3; /定义3个面板JLabel l1; /定义1个标签JButton jb1,jb2; /定义2个按钮JTextField jtf1; /定义一个文本框ImageIcon myimage; /定义导入图片Container content; /定义一个容器 Guest key; /定义客户类传从参数key public Z
27、dqk(Guest key) this.key=key; /把key传到顶层容器 p1=new JPanel(); /定义第一个面板 myimage = new ImageIcon("yl1.jpg"); /定义填入的图片 l1 = new JLabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new JPanel(); /定义第二个面板 l1=new JLabel("请输入您要取的金额:"); /定义一个标签请输入您要取的金额: jtf1 = new JTextField(10); /定义一个文本框 p2.add(
28、l1); p2.add(jtf1); p3=new JPanel(); /定义第三个面板 jb1=new JButton("确定"); /定义一个按钮确定 jb1.addActionListener(this); /jb1申请一个监听 jb2=new JButton("返回"); /定义一个按钮返回 jb2.addActionListener(this); /jb1申请一个监听 p3.add(jb1); p3.add(jb2); content=this.getContentPane(); /布局定义 content.setLayout(new Bord
29、erLayout(); content.add(p1,BorderLayout.NORTH); /定义顶部为面板p1 content.add(p2,BorderLayout.CENTER); /定义中部为面板p2 content.add(p3,BorderLayout.SOUTH); /定义底部为面板p3 this.pack(); this.setTitle("自 动 取 款"); /定义为窗口名称 this.setSize(320,300); / 定义窗口的大小 this.setResizable(false); this.show(); public void acti
30、onPerformed (ActionEvent e) /接口监听类 if(e.getSource()=jb1) /判断是是否是jb1 double money = Double.parseDouble(jtf1.getText();/ 把money转成Double if(money<key.jine) JOptionPane.showMessageDialog(this,"成功取款"+jtf1.getText()+"元!");/一个提示框填出你成功取了多少 key.quqian(money); /把存的钱传回客户类 jtf1.setText(&q
31、uot;0"); return; else JOptionPane.showMessageDialog(this,"你的卡即将要已透支");/一个提示框提示你你的卡即将要已透支 if (e.getSource()=jb2 )/判断是是否是jb2 new KQ(key); /放回KQ setVisible( false); 图6. 自动取款当取款成功时就会提示如图7的消息。 图7. 成功取款提示当取款时如果超过卡里的余额的话就会报图8和 9的错误。 图8.自动取款 图9. 以超出你的剩余金额 6、查询余额模块设计查询余额的界面主要有文本框,标签,按钮,主要功能是在上
32、一级选择菜单中选择查询余额,就会弹出查询余额的这个对话框。 import java.awt.*;import java.awt.event.*;import javax.swing.*;class Cxye extends JFrame implements ActionListener /导入接口类JPanel p1,p2,p3; /定义3个面板JLabel l1; /定义1个标签JButton jb1; /定义3个按钮 ImageIcon myimage; /定义导入图片Container content; /定义一个容器Guest key; /定义客户类传从参数key public Cx
33、ye(Guest key) this.key=key; /把key传到顶层容器 p1=new JPanel(); /定义第一个面板 myimage = new ImageIcon("yl1.jpg"); /定义填入的图片 l1 = new JLabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new JPanel(); /定义第二个面板 l1=new JLabel("您的剩余金额为:"+ key.getJine();? p2.add(l1); p3=new JPanel(); /定义第三个面板 jb1=new JBu
34、tton("返回"); jb1.addActionListener(this); p3.add(jb1); content=this.getContentPane(); /布局定义 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定义顶部为面板p1 content.add(p2,BorderLayout.CENTER); /定义中部为面板p2 content.add(p3,BorderLayout.SOUTH); /定义底部为面板p3 this.pack(); this.s
35、etTitle("查 询 余 额"); /定义为窗口名称 this.setSize(320,300); / 定义窗口的大小 this.setResizable(false); this.show(); public void actionPerformed ( ActionEvent e ) /接口监听类 if (e.getSource()=jb1 ) /判断是否是jb1 new KQ(key); /放回KQ setVisible( false); 图10. 查询余额 取款500后看查询11图: 图11.存款600后看查询12图 图12. 7、修改密码模块设计修改密码的界面
36、主要有文本框,标签,按钮,主要功能是先在输入原始密码 的文本框中输入原来的密码,然后在输入要修改的密码的文本框中输入新密码,在确认新密码后,才能真正的将密码修改成功。 import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;class Xgmm extends JFrame implements ActionListener /导入接口类JPanel p1,p2,p3; /定义3个面板JLabel l1, l2, l3, l4; /定义4个标签JTextField jtf1,jtf2,j
37、tf3; /定义3个文本框JButton jb1,jb2; /定义2个按钮ImageIcon myimage; /定义导入图片Container content; /定义一个容器Guest key; /定义客户类传从参数keypublic Xgmm(Guest key)this.key=key; /把key传到顶层容器p1 = new JPanel(); /定义第一个面板myimage = new ImageIcon("yl1.jpg"); /定义填入的图片l1 = new JLabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new JPanel(); /定义第二个面板l2=new JLabel("请输入原始密码:"); /定义标签请输入原始密码:l3=new JLabel(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论