ATM的java实训项目设计报告书

时间:2024.4.9

Java语言程序设计》课程设计报告

题    目:   ATM机              

设  计  者   何珍珍  张明月      

班    级:   10信息一班          

学    号:   210510113   210510152

指导教师:   魏艳铭               

系    部:   信息管理系           

专    业:   计算机应用技术       

20##年  6  月 25 

ATM机设计报告

目录

1 概述... 2

1.1 问题分析... 2

1.2功能... 2

2 总体设计... 3

3 详细设计... 3

1.登录界面Client()类结构介绍:... 3

2.卡号生成界面AtmDemo()类结构介绍:... 3

3.功能界面Main()类结构介绍:... 4

4.存款的界面KeepMoney()和取款的界面GetMoney()结构介绍:... 4

5.修改密码界面Change()类结构介绍:... 5

7.查询余额界面Yuxia.java()类结构介绍:... 5

4 实现... 5

1.    运行环境... 5

2.    运行情况抓图... 5

5 总结与体会... 6

6 参考文献... 7

7 附录:程序清单... 7

1 概述

1.1 问题分析

模拟ATM机基本操作功能:存款、取款、余额查询、修改密码等;初始账户10000元;修改密码时必须修改两次,确认后才可使用;取款的款项和存款的款项必须是100的整倍数;

1.2功能

1)模拟ATM机实现当用户进入登陆页面后,用户需先点击银行开户按钮进行银行开户;

2)进入银行开户页面之后,进行填写客户信息,系统会自动生成卡号,信息填写完整后系统会自动保存用户信息在生成的文件中,并返回登陆页面进行登录。

3)登陆成功之后进入ATM机操作页面进行存款、取款、余额查询、修改密码,点击一个按钮都会显示出对应的页面。

2 总体设计

1、Client()类第一个登陆页面主要包括:登陆账号按钮、银行开户按钮、重新登录按钮、退出系统按钮;

2、AtmDemo()类第二个登陆页面主要进行用户资料填写主要包括:卡号、密码、确认密码、用户名、性别、存款金额标签;生成卡号、确认开户、取消开户按钮;

3、Main()类第二个登陆页面主要设置安放按钮,主要包括:取款、存款、修改密码、查询余额、退出该界面按钮并对所有按钮进行监听;

4、GetMoney()类第三个登陆页面主要进行取款设置主要包括:提款金额数目的数字按钮,当点击相应的按钮时,提取金额框内显示相应的取款金额;当提款的金额超出卡内总金额时,取款失败;

5、KeepMoney()类第四个登陆页面主要进行存款设置主要包括:存款金额数目的数字按钮,当点击相应的按钮时,存款金额框内显示相应的存款金额;

6、Change()类第五个登陆页面主要进行密码修改的设置主要包括:设置“确认”“取消”“返回主页面”三个按钮;两次输入新的密码,当两次密码相同时点击“确认”按钮修改密码成功,第二次进行账户登录时使用修改后的密码

7、Yuxia()类第六个登陆页面主要进行余额查询的设置主要包括:当点击“查看余额”按钮时查看存款、取款后卡内的总金额,显示在文本框内;当点击“返回主页面”时返回Main页面;

8、Account()类主要保存文件的卡号,密码和账户金额,对进行数据信息在不同的类内调用传递;

3 详细设计

1.登录界面Client()类结构介绍:

主要包括:三个标签:“欢迎登录ATM机”,“卡号”,“密码”

两个文本框:JTextField和JPasswordField四个按钮:“登陆账号”,“银行开户”,“重新登录”,“退出系统”对页面使用了空布局。对文本框进行监听,设置卡号只能为数字,且只能输入8位。设置密码框不为空。给四个按钮创建监听ActionListener,四个按钮实现的功能:

登陆账号:第一次进入登录界面时,当点击“登录账户”弹出对话框:“请进行银行开户”。

重新登录: 当点击“重新登录”按钮,用setText(“”)把文本框和密码框为空。 

银行开户: 当点击“银行开户”按钮时,界面跳到银行开户的界面里。 

退出系统:当点击“退出系统”时,弹出对话框“确定要退出ATM系统?”点击是,退出系统,点击否,留在该界面。

当银行开户成功后,再次输入卡号和密码,如果其中一个或全部错误,弹出对话框:“请核对你的卡号和密码,重新登录”,并不设置文本框为空。

2.卡号生成界面AtmDemo()类结果介绍:

继承Jframe创建银行卡号开户窗体,创建监听;应用空布局设置JLabel标签,JTextField, JPasswordField,JButton,JComboBox复选按钮框在窗体中的位置当点击“生成卡号”按钮时系统会自动生成卡号( inti=(int)(Math.random()*100000000);)对生成的卡号进行数据保存(account)由Account传递到登陆页面,让生成的卡号与登陆的卡号相同在登录页面进行登录操作;

设置密码与确认密码框中的内容相等,如果不相同提示(“JOptionPane.showConfirmDialog(this,"两次填写密码不同,请重新输入正确的密码!","提示",JOptionPane.OK_CANCEL_OPTION );”),对生成的密码进行数据保存(account)让后传递到ATM—Client页面进行密码连接;

设置存款金额框存款金额为100的整倍数;当点击“取消开户”按钮时,所有文本框内容为空;当点击“确认开户”按钮时,如果资料填写不完整,系统进行提示(elseif(jtf1.getText().equals("")||jtf2.getText().equals("")||jtf3.getText().equals("")||s3.equals("")||s2.equals("")){ JOptionPane.showMessageDialog(this,"开户失败,资料没填写完整!");)反之,页面转到登陆页面;

3.功能界面Main()类结构介绍:

主要包括:一个标签:“荷塘月色ATM机正在为您服务…”五个按钮:“取款”、“存款”、“查询余额”、“修改密码”、“退出该界面”对页面使用了空布局。

对前四个按钮进行监听,当点击其中任一个按钮时,进入到该按钮实现功能的界面里,当点击“退出该界面”,弹出对话框“确定返回登录面?” 点击是,退出该界面,点击否,留在该界面。

4.存款的界面KeepMoney()和取款的界面GetMoney()结构介绍:

主要包括:十个按钮:七个固定存取款钱数的按钮和一个“自定义”(存取款的钱数)按钮,还有“确定”按钮和“返回主页面”的按钮。一个标签:“您提取(存入)的金额数:一个文本框;对页面使用了空布局。给八个存取款的按钮进行监听。实现的功能:

当点击七个固定存取款的按钮时,按钮上的钱数显示在文本框中,当点击自定义按钮时,可以在文本框中手动输入钱数。

当点击“返回主页面”按钮时,结束该界面的操作,返回Main页面里。

文本框:① 文本框设置为不可编辑。当点击存取款按钮时,钱数显示在文本框中,但不能手动修改文本框中的内容。当点击自定义按钮时,文本框可以手动输入,文本框中输入的存取款的钱数必须是100的倍数,最少为100,最多为5000元,否则弹出对话框进行提醒,存取钱不成功。

② 自定义一个监听类,对文本框进行监听,自定义输入钱数时,文本框中只能输入数字,且最多可输入四位数。当文本框为空时,点击“确定”按钮,弹出对话框:“请输入存(取)款金额”。

在存款KeepMoney.java界面时,当点击“确定”按钮,弹出对话框“您已存款**元,余额为**元”。

在取款GetMoney.java界面时,当点击“确定”按钮时,如果账户金额大于或等于提取金额时,弹出对话框“您已取款**元,余额为**元”。如果账户金额小于提取金额时,弹出对话框“余额不足,取钱失败”,并获取余额数,

停止金额的运算。以防止取款不成功,但已透支的现象。

5. 修改密码界面Change()类结构介绍:

继承JFrame创建修改密码窗体,设置窗体的空布局;对确认密码框进行监听和数据传递保存(account.setPwd(s2);)传递到Client()类内;当两次输入密码相同时点击“确认”按钮密码修改成功,下次登录使用新密码进行登录。;点击“取消”按钮文本框内容消失为空;点击“返回主页面”按钮返回至Main()(else if(e.getSource()==jb3){new Main();this.setVisible(false););

6.查询余额界面Yuxia.java()类结构介绍:

创建查询余额窗体,应用空布局设置布局;对按钮创建监听(addActionListener) 当点击“查看余额”按钮时显示卡内当前的余额(运用Account类进行数据传递实现(jtf1.setText((account.getCountmoney())+"");))

4 实现

1.运行环境

    MyEclipse6.5

2.运行情况抓图

                

1                                     2

      

              3                                          4

               

 7

5 总结与体会

此次实训基本把我们本学期所学的内容进行综合应用,让我们更加容易简单的了解体验到了未来工作的一般状况,锻炼了我们的实际操作能力,同时也在一定程度上增加了同学们对Java语言学习的信心,一些简单的小游戏,通过运用自己所学也是可以实现的,让我们不在对编程感觉那么神秘。

团队合作与交流很重要,“团结就是力量”在本次项目开发中真的体会得到,在做项目时,小组成员要知道本小组所做项目的基本构想框架,要做什么、实现什么。如果有自己的想法就要和自己的伙伴进行交流。

6 参考文献

【1】魏艳铭,Java程序设计,河南经贸职业学院:ATM机视频提示,2011.6

【2】网络资源:http://www.toedu.org/

【3】《Java程序设计精讲》,北京:清华大学出版社,2010.9

7 附录:程序清单

1.Client.java//ATM机的登录界面

package client;

import javax.swing.*;

import client.GetMoney.myKeyListener;

import java.awt.*;

import java.awt.event.*;

import java.net.URL;

publicclass Client extends JFrame implements ActionListener{

       JLabel jl1,jl2,jl3;

       JLabel jl;//添加图片的标签

       JTextField jtf;

       JPasswordField jpf;

       JButton jb1,jb2,jb3,jb4;

        static Account account;

       public Client(Account account){

              super("ATM-Client");

              this.account=account;

              setLayout(null);

             

              jl1=new JLabel("欢迎进入“荷塘月色ATM 机”");

              Font f=new Font("华文新魏",Font.BOLD,24);

              jl1.setForeground(Color.BLUE);

              jl1.setFont(f);

             

              jl2=new JLabel("卡号:");

              jl3=new JLabel("密码:");

              jtf=new JTextField(8);

              jtf.addKeyListener(new myKeyListener(jtf));

              jpf=new JPasswordField();

              jb1=new JButton("登陆账号");

              jb1.addActionListener(this);

              jb2=new JButton("银行开户");

              jb2.addActionListener(this);

              jb3=new JButton("重新登录");

              jb3.addActionListener(this);

              jb4=new JButton("退出系统");

              jb4.addActionListener(this);

             

               //添加图片

               jl= new JLabel();

            URL resource = this.getClass().getResource("/images/6.jpg");    

            ImageIcon bgImage=new ImageIcon(resource);  //创建图标

            jl.setIcon(bgImage);   

            jl.setBounds(0,0,400,400);

             

              jl1.setBounds(25, 40, 400, 40);

              jl2.setBounds(50, 85, 60, 40);

              jl3.setBounds(50, 150, 60, 40);

              jtf.setBounds(120, 90,150, 30);

              jpf.setBounds(120, 155,150,30);

              jb1.setBounds(0, 250, 90, 30);

              jb2.setBounds(100, 250, 90,30 );

              jb3.setBounds(200, 250, 90,30 );

              jb4.setBounds(300, 250, 90, 30);

             

              this.add(jl1);

              this.add(jl2);

              this.add(jtf);

              this.add(jl3);

              this.add(jpf);

              this.add(jb1);

              this.add(jb2);

              this.add(jb3);

              this.add(jb4);

              this.add(jl);

             

              this.setSize(400,400);

              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              this.setVisible(true);

       }

       publicstaticvoid main(String[] args) {

              new Client(account);

       }

       publicvoid actionPerformed(ActionEvent e) {

       if(e.getSource()==jb1){

                     String s1=jtf.getText();

                     String s2=new String(jpf.getPassword());

              if(account!=null){

                     if(s1.equals(account.ip)&&s2.equals(account.pwd)){

                            new Main(account);

                            this.setVisible(false);

                     }else{

                            JOptionPane.showMessageDialog(this,"请核对您的卡号和密码,重新登录");

                     }

              }elseif(account==null){

                     JOptionPane.showMessageDialog(this, "请进行银行开户");

              }

       }elseif(e.getSource()==jb2){

                     //连接到的AtmDemo.java

                     new AtmDemo();

                     this.setVisible(false);

              }elseif(e.getSource()==jb3){

                     jtf.setText("");

                     jpf.setText("");

              }elseif(e.getSource()==jb4){

                     //设置jb4——退出系统

                     int i=JOptionPane.showConfirmDialog(this,"您确定要退出ATM机系统?",

"提示",JOptionPane.YES_NO_OPTION);

                     if(i==1){

                            return;

                     }

                     System.exit(0);

              }    

       }

      

       //创建jtf的监听,使jtf只能输入8个数字,且只能输入数字

       class myKeyListener extends KeyAdapter{

              private JTextField jtf;

              privateint length;

             

              public myKeyListener(JTextField jtf){

                    

                     this.jtf = jtf;

                     this.length = 8;

              }

              public myKeyListener(JTextField jtf,int length){

                     this.jtf = jtf;

                     this.length = length;

              }

              publicvoid keyTyped(KeyEvent e)

              {

                     boolean b = Character.toString(e.getKeyChar()).matches("\\d");

                     if(!b || jtf.getText().length() == length){

                            e.consume();

                     }

              }

       }

}

2.AtmDemo.java//ATM卡号生成页面

 package client;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.Socket;

import java.util.Calendar;

import java.net.URL;

import javax.swing.*;

publicclass AtmDemo  extends JFrame implements ActionListener {

        JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8; 

        JTextField jtf1,jtf2,jtf3;

        JPasswordField jpf1,jpf2;

        JButton jb1,jb2,jb3;

        JComboBox jcb;

        BufferedReader br;

        JLabel msg;

        Account account;

        int totalmoney=10000;

        int money;

      

        public AtmDemo(){

               super("银行卡号开户");

               this.setLayout(null);

               jl1=new JLabel("卡号开户");

               jl2=new JLabel("卡号:");

               jl3=new JLabel("密码 :");

               jl4=new JLabel("确认密码 :");

               jl5=new JLabel("用户名:");

               jl6=new JLabel("性别:");

               jcb = new JComboBox();

               jcb.addItem("男");

               jcb.addItem("女");

               jl7=new JLabel("存款金额:");

               jb1=new JButton("生成卡号");

               jb2=new JButton("确认开户");

            jb3=new JButton("取消开户");

            jtf1=new JTextField(16);

               jtf1.setEditable(false);//设置文本框不可见

            jtf2=new JTextField(4);

            jtf3=new JTextField();

            jpf1=new JPasswordField(6);

            jpf2=new JPasswordField(6);

            msg=new JLabel("");

            msg.setForeground(Color.RED);

           

            //监听

            jb1.addActionListener(this);

            jb2.addActionListener(this);

            jb3.addActionListener(this);

            jtf3.addKeyListener(new myKeyListener(jtf3));

           

            jl1.setForeground(Color.RED);

               jl1.setFont(new Font("宋体", Font.PLAIN, 40));

               

               //添加图片

               jl8= new JLabel();

            URL resource = this.getClass().getResource("/images/8.jpg");    

            ImageIcon bgImage=new ImageIcon(resource);  //创建图标

            jl8.setIcon(bgImage);   

            jl8.setBounds(0,0,400,400);

           

            jl1.setBounds(105, 10, 225, 41);//卡号开户

            jl2.setBounds(40, 60, 81, 18);//卡号

            jb1.setBounds(297, 60, 91, 18);//生成卡号

            jl3.setBounds(40, 90, 81, 18);//密码

            jl4.setBounds(40, 120, 81, 18);//确认密码

            jl5.setBounds(40, 150, 81, 18);//用户名

            jl6.setBounds(40, 180, 81, 15);//性别

            jcb.setBounds(100, 180, 110, 18);//复选按钮

            jl7.setBounds(40, 210, 81, 15);//存款金额

            jtf1.setBounds(100, 60, 190, 18);//卡号框

            jpf1.setBounds(100, 90, 170, 18);//密码框

            jpf2.setBounds(100, 120, 150, 18);//确认密码框

            jtf2.setBounds(100, 150, 130, 18);//用户名框

            jtf3.setBounds(100, 210, 90, 18);//存款金额框

            jb2.setBounds(80, 300,100, 25);//确认开户

            jb3.setBounds(230, 300, 100, 25);//取消开户

            msg.setBounds(150,260,270,60);

           

            add(jb1);

               add(jb2);

               add(jb3);

               add(jcb);

              add(jl1);

              add(jl2);

              add(jl3);

               add(jl4);

               add(jl5);

               add(jl6);

              add(jl7);

               add(jpf1);

               add(jpf2);

               add(jtf1);

               add(jtf2);

               add(jtf3);

               add(msg);

               add(jl8);

            this.setSize(400,400);

            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            this.setVisible(true);

        }

        

        publicstaticvoid main(String args[]){

               new AtmDemo();

        }

        

       publicvoid actionPerformed(ActionEvent e) {

              String id1=jtf1.getText();//卡号

              String s1=new String(jpf2.getPassword());//确认密码

              int mone=money;//生成的金额数

              account=new Account(id1,s1,mone);//把生成的卡号、确认密码、生成金额数保存在account类内

             

              try{

                     //创建文件

                 File f=new File("message.txt");

                

               if(e.getSource()==jb1){

                            //生成卡号

                            jtf1.setEditable(true);

                         int i=(int)(Math.random()*100000000);

                         jtf1.setText(Integer.toString(i));

                         jtf1.setEditable(false);

                         msg.setText("");//消失信息提示

                         JOptionPane.showMessageDialog(this,"卡号已生成,请记住卡号,以便登陆!");

                     }

           elseif(e.getSource()==jb2){

                  //确定开户

                     String s3=new String(jpf1.getPassword());

                     String s2=new String(jpf2.getPassword());

                    

                     if(!s3.equals(s2)){

                            JOptionPane.showConfirmDialog(this,

                                          "两次填写密码不同,请重新输入正确的密码!",

                                          "提示",JOptionPane.OK_CANCEL_OPTION );

                            jpf2.setText(null);

                                return;

                     }

                     elseif(jtf1.getText().equals("")||jtf2.getText().equals("")||jtf3.getText().equals("")||s3.equals("")||s2.equals("")){

                         JOptionPane.showMessageDialog(this,"开户失败,资料没填写完整!");    

            }

                elseif(Integer.parseInt(jtf3.getText())%100!=0){

                         JOptionPane.showMessageDialog(this,"存款金额必须是100的倍数!");

                         jtf3.setText("");

                }

                elseif(!jtf1.getText().equals("")&&!jtf2.getText().equals("")&&!jtf3.getText().equals("")&&!s3.equals("")&&!s2.equals("")){

                       money=totalmoney+(Integer.parseInt(jtf3.getText()));       

                      JOptionPane.showMessageDialog(this,"您已开户成功,卡内金额为:"+money);

                      account.setCountmoney((totalmoney+(Integer.parseInt(jtf3.getText()))));

                            new Client(account);

                            this.setVisible(false);

               }

                    

                      //写入客户信息保存在message.txt中

                     try{

                   FileWriter fw = new  FileWriter(f);

                   BufferedWriter bw=new BufferedWriter(fw);

                   String s = "卡号:"+jtf1.getText()+"\t"+"用户名:"+jtf2.getText()+"\t"

                                 +"密码:"+account.getPwd();

                   bw.write(s);

                   bw.newLine();

                   bw.close();

                      fw.close();

                     }catch(IOException ex){

                      ex.printStackTrace();

                      }   

             } elseif(e.getSource()==jb3){

                  jpf1.setText(null);

                  jpf2.setText(null);

                  jtf1.setText(null);

                  jtf2.setText(null);

                  jtf3.setText(null);

                  msg.setText("您已成功取消开户!");

           }      

              }catch (Exception ex){

                    

              }

       }

}

      

//只允许输入数字的监听器

class myKeyListener extends KeyAdapter{

       private JTextField jtf;

       privateint length;

      

       public myKeyListener(JTextField jtf){

              this.jtf = jtf;

              this.length = 15;

       }

       public myKeyListener(JTextField jtf,int length){      

              this.jtf = jtf;

              this.length = length;

       }

      

       publicvoid keyTyped(KeyEvent e)

       {

              boolean b = Character.toString(e.getKeyChar()).matches("\\d");

              if(!b || jtf.getText().length() == length){

                     e.consume();

              }

       }

}

3.Main.java//主要包括:存款、取款、修改密码、查询余额等按钮

package client;

import java.awt.*;

import java.awt.event.*;

import java.net.URL;

import javax.swing.*;

publicclass Main extends JFrame implements ActionListener{

       JLabel jl1;

       JLabel jl;

       JButton jb1,jb2,jb4,jb5,jb6;

       static Account account;

       public Main(Account account){

              super("ATM机主页面");

              this.account=account;

              setLayout(null);

             

              jl1=new JLabel("荷塘月色ATM机正在为您服务...");

              jl1.setBounds(50, 0,300, 80);

              Font f=new Font("华文琥珀",Font.BOLD,20);

              jl1.setForeground(Color.BLUE);

              jl1.setFont(f);

             

              jb1=new JButton("取款");

              jb1.addActionListener(this);

             

              jb2=new JButton("查询余额");//设置初始账户金额为1000元

              jb2.addActionListener(this);

              jb4=new JButton("存款");

              jb4.addActionListener(this);

             

              jb5=new JButton("修改密码");

              jb5.addActionListener(this);

             

              jb6=new JButton("退出该界面");

              jb6.addActionListener(this);

             

               //添加图片

               jl= new JLabel();

            URL resource = this.getClass().getResource("/images/6.jpg");    

            ImageIcon bgImage=new ImageIcon(resource);  //创建图标

            jl.setIcon(bgImage);   

            jl.setBounds(0,0,400,400);

             

              jb1.setBounds(10,110 ,140 ,40 );

              jb2.setBounds(10,190 ,140 ,40 );

              jb4.setBounds(200, 110, 140, 40);

              jb5.setBounds(200, 190, 140,40 );

              jb6.setBounds(100, 270,140 ,40 );

             

              this.add(jl1);

              this.add(jb1);

              this.add(jb2);

              this.add(jb4);

              this.add(jb5);

              this.add(jb6);

              this.add(jl);

              this.setSize(400,400);

              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              this.setVisible(true);

       }

      

       publicvoid actionPerformed(ActionEvent e) {

              if(e.getSource()==jb1){

                     new GetMoney(account);

                     this.setVisible(false);

              }elseif(e.getSource()==jb2){

                     new Yuxia(account);

                     this.setVisible(false);

              }elseif(e.getSource()==jb4){

                     new KeepMoney(account);

                     this.setVisible(false);

              }elseif(e.getSource()==jb5){

                     new Change(account);

                     this.setVisible(false);

              }elseif(e.getSource()==jb6){

                     int i=JOptionPane.showConfirmDialog(this,"确定要返回登陆界面?",

                                                                                    "提示",JOptionPane.YES_NO_OPTION );

                     if(i==1){

                            return;

                     }

                     new Client(account);

                     this.setVisible(false);

              }

       }

       publicstaticvoid main(String[] args) {

               new Main(account);

       }

}

4.GetMoney.java//取款页面

package client;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.net.URL;

publicclass GetMoney extends JFrame implements ActionListener{

       JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

       JLabel jl;

       JLabel jl1;

       JTextField jtf;

       int a=0;

       static Account account;

       public GetMoney(Account account){

              super("提取现金");

              this.account=account;

              setLayout(null);

             

              jb1=new JButton("100");

              jb1.addActionListener(this);

             

              jb2=new JButton("300");

              jb2.addActionListener(this);

             

              jb3=new JButton("500");

              jb3.addActionListener(this);

             

              jb4=new JButton("1000");

              jb4.addActionListener(this);

             

              jb5=new JButton("1500");

              jb5.addActionListener(this);

             

              jb6=new JButton("3000");

              jb6.addActionListener(this);

             

              jb7=new JButton("自定义");

              jb7.addActionListener(this);

             

              jb8=new JButton("5000");

              jb8.addActionListener(this);

             

              jb9=new JButton("确定");

              jb9.addActionListener(this);

             

              jb10=new JButton("返回主页面");

              jb10.addActionListener(this);

             

              jl=new JLabel("您提取的金额数为:");

          

              jtf=new JTextField(4);

              jtf.addKeyListener(new myKeyListener(jtf));

              //设置文本框不可手动输入

              jtf.setEditable(false);

             

               //添加图片

               jl1= new JLabel();

            URL resource = this.getClass().getResource("/images/6.jpg");    

            ImageIcon bgImage=new ImageIcon(resource);  //创建图标

            jl1.setIcon(bgImage);   

            jl1.setBounds(0,0,400,400);

             

              jb1.setBounds(20, 40, 100,40 );

              jb2.setBounds(20, 90,100 ,40 );

              jb3.setBounds(20,140 ,100 ,40 );

              jb4.setBounds(280,40 ,100 ,40 );

              jb5.setBounds(280,90 ,100 ,40 );

              jb6.setBounds(280,140 ,100 ,40 );

              jb7.setBounds(20, 190, 100, 40);

              jb8.setBounds(280, 190, 100, 40);

              jb9.setBounds(50,290,100, 40);

              jb10.setBounds(250,290,100,40 );

              jl.setBounds(20, 240, 150,40 );

              jtf.setBounds(180, 250, 100,20 );

             

              this.add(jb1);

              this.add(jb2);

              this.add(jb3);

              this.add(jb4);

              this.add(jb5);

              this.add(jb6);

              this.add(jb7);

              this.add(jb8);

              this.add(jb9);

              this.add(jb10);

              this.add(jl);

              this.add(jtf);

              this.add(jl1);

             

              this.setSize(400,400);

              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              this.setVisible(true);

       }

      

       publicvoid actionPerformed(ActionEvent e) {

              if(e.getSource()==jb1){

                     jtf.setText(jb1.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb2){

                     jtf.setText(jb2.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb3){

                     jtf.setText(jb3.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb4){

                     jtf.setText(jb4.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb5){

                     jtf.setText(jb5.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb6){

                     jtf.setText(jb6.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb7){

                     jtf.setText("");

                     jtf.setEditable(true);

              }elseif(e.getSource()==jb8){

                     jtf.setText(jb8.getText());

                     jtf.setEditable(false);    

              }elseif(e.getSource()==jb10){

                     new Main(account);

                     this.setVisible(false);

              }elseif(e.getSource()==jb9){                    

if(jtf.getText().equals("")){

                                   JOptionPane.showMessageDialog(this,"请输入取钱金额!" );

                                   return;

                     }elseif(jtf.getText().charAt(0) == '0'){

                            JOptionPane.showMessageDialog(this,"请正确输入取钱金额!" );

                            jtf.setText("");

                            return;  

                           

                     }elseif(Integer.parseInt(jtf.getText())%100!=0){

                            JOptionPane.showMessageDialog(this,"请输入100的整倍钱数!" );

                            jtf.setText("");

                     }elseif((Integer.parseInt(jtf.getText()))>5000){

                            JOptionPane.showMessageDialog(this,"最多取款5000元!" );

                            jtf.setText("");

                     }elseif(jtf.getText()!=null){

                            String  s=jtf.getText();

                            int a=Integer.parseInt(s);

                            int b=account.getCountmoney();

                            if(b>a||b==a){

                                   account.setCountmoney(b-a);

                                   JOptionPane.showMessageDialog(this,"您已取款:"+s+"元。您余额为:"+account.getCountmoney()+"元");

                                   jtf.setText("");

                            }

                            elseif(b<a){

                                   JOptionPane.showMessageDialog(this, "余额不足,取钱失败");

                                   account.setCountmoney(account.getCountmoney());

                            }

                     }

                    

              }

       }

       publicstaticvoid main(String[] args) {

              new GetMoney(account);

       }

      

       //创建jtf的监听,使jtf只能输入4个数字,且只能输入数字

       class myKeyListener extends KeyAdapter{

                    

                     private JTextField jtf;

                     privateint length;

                    

                     public myKeyListener(JTextField jtf){

                           

                            this.jtf = jtf;

                            this.length = 4;

                     }

                    

                     public myKeyListener(JTextField jtf,int length){

                            this.jtf = jtf;

                            this.length = length;

                     }

                    

                     publicvoid keyTyped(KeyEvent e)

                     {

                            boolean b = Character.toString(e.getKeyChar()).matches("\\d");

                            if(!b || jtf.getText().length() == length){

                                   e.consume();

                            }

                     }

              }

}

5.KeepMoney.java//存款页面

package client;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.net.URL;

publicclass KeepMoney extends JFrame implements ActionListener{

       JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

       JLabel jl;

       JLabel jl1;

       JTextField jtf;

       static Account account;

       public KeepMoney(Account account){

              super("存款业务");

              this.account=account;

              setLayout(null);

             

              jb1=new JButton("100");

              jb1.addActionListener(this);

             

              jb2=new JButton("300");

              jb2.addActionListener(this);

             

              jb3=new JButton("500");

              jb3.addActionListener(this);

             

              jb4=new JButton("1000");

              jb4.addActionListener(this);

             

              jb5=new JButton("1500");

              jb5.addActionListener(this);

             

              jb6=new JButton("3000");

              jb6.addActionListener(this);

             

              jb7=new JButton("自定义");

              jb7.addActionListener(this);

             

              jb8=new JButton("5000");

              jb8.addActionListener(this);

             

              jb9=new JButton("确定");

              jb9.addActionListener(this);

             

              jb10=new JButton("返回主页面");

              jb10.addActionListener(this);

             

              jl=new JLabel("您存入的金额为数:");

          

              jtf=new JTextField(4);

              jtf.addKeyListener(new myKeyListener(jtf));

              jtf.setEditable(false);

             

               //添加图片

               jl1= new JLabel();

            URL resource = this.getClass().getResource("/images/6.jpg");    

            ImageIcon bgImage=new ImageIcon(resource);  //创建图标

            jl1.setIcon(bgImage);   

            jl1.setBounds(0,0,400,400);

             

              jb1.setBounds(20, 40, 100,40 );

              jb2.setBounds(20, 90,100 ,40 );

              jb3.setBounds(20,140 ,100 ,40 );

              jb4.setBounds(280,40 ,100 ,40 );

              jb5.setBounds(280,90 ,100 ,40 );

              jb6.setBounds(280,140 ,100 ,40 );

              jb7.setBounds(20, 190, 100, 40);

              jb8.setBounds(280, 190, 100, 40);

              jb9.setBounds(50,290,100, 40);

              jb10.setBounds(250,290,100,40 );

              jl.setBounds(20, 240, 150,40 );

              jtf.setBounds(180, 250, 100,20 );

             

              this.add(jb1);

              this.add(jb2);

              this.add(jb3);

              this.add(jb4);

              this.add(jb5);

              this.add(jb6);

              this.add(jb7);

              this.add(jb8);

              this.add(jb9);

              this.add(jb10);

              this.add(jl);

              this.add(jtf);

              this.add(jl1);

             

              this.setSize(400,400);

              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              this.setVisible(true);

       }

      

       publicvoid actionPerformed(ActionEvent e) {

              if(e.getSource()==jb1){

                     jtf.setText(jb1.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb2){

                     jtf.setText(jb2.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb3){

                     jtf.setText(jb3.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb4){

                     jtf.setText(jb4.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb5){

                     jtf.setText(jb5.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb6){

                     jtf.setText(jb6.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb7){

                     jtf.setText("");

                     jtf.setEditable(true);

              }elseif(e.getSource()==jb8){

                     jtf.setText(jb8.getText());

                     jtf.setEditable(false);

              }elseif(e.getSource()==jb9){

                    

                    

                     if(jtf.getText().equals("")){

                            JOptionPane.showMessageDialog(this,"请输入存钱金额!" );

                            return;

                     }elseif(jtf.getText().charAt(0) == '0'){

                            JOptionPane.showMessageDialog(this,"请正确输入取钱金额!" );

                            jtf.setText("");

                            return;  

                           

                     }elseif(Integer.parseInt(jtf.getText())%100!=0){

                            JOptionPane.showMessageDialog(this,"请输入100的整倍钱数!" );

                            jtf.setText("");

                           

                     }elseif((Integer.parseInt(jtf.getText()))>5000){

                            JOptionPane.showMessageDialog(this,"最多取款5000元!" );

                            jtf.setText("");

                     }elseif(jtf.getText()!=null){

                            String s=jtf.getText();

                            int a=Integer.parseInt(s);

                            int b=account.getCountmoney();

                            account.setCountmoney(a+b);

// 点击确定按钮,余额=总金额-取钱的金额(+存钱的金额)  算出余额,输出对话JOptionPane.showMessageDialog(this,"您已存款:"+s+"元。您余额为:"+account.getCountmoney()+"元");

                                   jtf.setText("");

                     }

              }elseif(e.getSource()==jb10){

                     new Main(account);

                     this.setVisible(false);

              }

       }

      

       publicstaticvoid main(String[] args) {

              new KeepMoney(account);

       }

       //创建jtf的监听,使jtf只能输入4个数字,且只能输入数字

class myKeyListener extends KeyAdapter{

              private JTextField jtf;

              privateint length;

              public myKeyListener(JTextField jtf){

                     this.jtf = jtf;

                     this.length = 4;

              }

             

              public myKeyListener(JTextField jtf,int length){

                    

                     this.jtf = jtf;

                     this.length = length;

              }

             

              publicvoid keyTyped(KeyEvent e)

              {

                     boolean b = Character.toString(e.getKeyChar()).matches("\\d");

                     if(!b || jtf.getText().length() == length){

                            e.consume();

                     }

              }

       }

}

6.Change.java//修改密码页面

package client;

import java.awt.*;

import java.net.URL;

import java.awt.event.*;

import javax.swing.*;

publicclass Change extends JFrame implements ActionListener {

     JButton jb1,jb2,jb3;

        JLabel jl1,jl2,jl3,jl4;

     JPasswordField jpf1,jpf2;

    static Account account;

   

public Change(Account account){

       super("修改密码");

       this.account=account;

       jb1=new JButton("确定");

       jb2=new JButton("取消");

       jb3=new JButton("返回主页面");

       jl1=new JLabel("请输入新的密码:");

       jl2=new JLabel("请再次输入新的密码:");

       jl3=new JLabel("修改密码");

       jl1.setForeground(Color.BLUE);

       jl1.setFont(new Font("黑体", Font.BOLD, 15));

       jl2.setForeground(Color.BLUE);

       jl2.setFont(new Font("黑体", Font.BOLD, 15));

       jl3.setForeground(Color.RED);

       jl3.setFont(new Font("宋体",Font.PLAIN, 40));

       jpf1=new JPasswordField(6);

       jpf2=new JPasswordField(6);

      

       this.setLayout(null);

       jl1.setBounds(10,105 ,140 ,40 );

       jl2.setBounds(10,190 ,160 ,40 );

       jl3.setBounds(105, 10, 225, 41);

       jb1.setBounds(20, 270,100 ,40 );

       jb2.setBounds(140, 270,100 ,40 );

       jb3.setBounds(260, 270,100 ,40 );

       jpf1.setBounds(190, 110, 170, 30);

       jpf2.setBounds(190, 195, 170,30 );

      

       //监听

       jb1.addActionListener(this);

       jb2.addActionListener(this);

       jb3.addActionListener(this);

       jpf1.addActionListener(this);

    jpf2.addActionListener(this);

      

    //添加图片

    jl4 = new JLabel();

       URL resource = this.getClass().getResource("/images/6.jpg");      

       ImageIcon bgImage=new ImageIcon(resource);  //创建图标

       jl4.setIcon(bgImage);   

       jl4.setBounds(0,0,400,400);

      

       add(jb1);

       add(jb2);

       add(jb3);

       add(jl1);

       add(jl2);

       add(jl3);

       add(jpf1);

       add(jpf2);

       add(jl4);

       this.setSize(400,400);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setVisible(true);

}

       publicstaticvoid main(String[] args) {

          new Change(account);

       }

       publicvoid actionPerformed(ActionEvent e) {

              try{

                     if(e.getSource()==jb1){

                     String s1=new String(jpf1.getPassword());

                     String s2=new String(jpf2.getPassword());

                    

                     if(!s1.equals(s2)){

                            JOptionPane.showConfirmDialog(this,

                                          "两次填写密码不同,请重新输入正确的密码!",

                                          "提示",JOptionPane.OK_CANCEL_OPTION );

                            jpf2.setText(null);

                                return;

                     }

                     elseif(s1.equals("")||s2.equals("")) {

                            JOptionPane.showMessageDialog(this,"密码不能为空!");

                     }

                     elseif(s1.equals(s2)&&!s1.equals("")&&!s2.equals("")) {

                            //把新密码保存在Account类里,重新登录时,即可用该密码

                            account.setPwd(s2);

                            JOptionPane.showMessageDialog(this,"密码修改成功!");

                     }

                     }

                     elseif(e.getSource()==jb2){//取消登陆

                            jpf1.setText(null);

                            jpf2.setText(null);

                     }

                     elseif(e.getSource()==jb3){//返回主页面

                            new Main(account);

                            this.setVisible(false);

                     }

              }catch(Exception ex){

              }

       }

}

7. 1.Yuxia.java//保存文件的卡号,密码,和账户金额

package client;

import javax.swing.*;

import java.net.URL;

import java.awt.*;

import java.awt.event.*;

publicclass Yuxia extends JFrame implements ActionListener{

       JLabel jl1,jl2,jl3,jl4;

       JTextField jtf1,jtf2;

       JButton jb,jb1;

       static Account account;

      

       public Yuxia(Account account){

              super("查询余额");

              this.account=account;

              setLayout(null);

             

              jl1=new JLabel("查询余额");

              Font f=new Font("宋体",Font.PLAIN,40);

              jl1.setForeground(Color.red);

              jl1.setFont(f);

             

              jl2=new JLabel("账户余额:");

              jl2.setFont(new Font("黑体", Font.BOLD, 16));

              jl2.setForeground(Color.BLUE);

             

              jl3=new JLabel("可用余额:");

              jl3.setFont(new Font("黑体", Font.BOLD, 16));

              jl3.setForeground(Color.BLUE);

             

              jtf1=new JTextField();

              jtf1.setEditable(false);

              jtf2=new JTextField();

              jtf2.setEditable(false);

             

              jb1=new JButton("查看余额");//点击”查看余额“按钮

              jb1.addActionListener(this);

             

              jb=new JButton("返回主页面");

              jb.addActionListener(this);

              //添加图片

        jl4= new JLabel();

           URL resource = this.getClass().getResource("/images/6.jpg");     

           ImageIcon bgImage=new ImageIcon(resource);  //创建图标

           jl4.setIcon(bgImage);   

           jl4.setBounds(0,0,400,400);

             

              jl1.setBounds(105, 15, 225, 41);

              jl2.setBounds(35,110 ,140 ,40 );

              jl3.setBounds(35,190 ,160 ,40 );

             

              jtf1.setBounds(160, 115, 170, 30);

              jtf2.setBounds(160, 195, 170,30 );

             

              jb1.setBounds(30,270 ,120  ,40);

              jb.setBounds(240, 270,120 ,40 );

             

              this.add(jl1);

              this.add(jl2);

              this.add(jl3);

              this.add(jtf1);

              this.add(jtf2);

              this.add(jb1);

              this.add(jb);

              this.add(jl4);

             

              this.setSize(400,400);

           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

           this.setVisible(true);

       }

       publicvoid actionPerformed(ActionEvent e) {

              if(e.getSource()==jb1){

                     jtf1.setText((account.getCountmoney())+"");

                     jtf2.setText((account.getCountmoney())+"");

              }

              if(e.getSource()==jb){

                     new Main(account);

                     this.setVisible(false);

              }

       }

       publicstaticvoid main(String[] args) {

              new Yuxia(account);

       }

}

8. Account.java//保存文件的卡号,密码,和账户金额

package client;

publicclass Account {

       String ip,pwd;

       int countmoney;

       public Account(String ip, String pwd, int countmoney) {

              super();

              this.ip = ip;

              this.pwd = pwd;

              this.countmoney = countmoney;

       }

       public String getIp() {

              return ip;

       }

       publicvoid setIp(String ip) {

              this.ip = ip;

       }

       public String getPwd() {

              return pwd;

       }

       publicvoid setPwd(String pwd) {

              this.pwd = pwd;

       }

       publicint getCountmoney() {

              return countmoney;

       }

       publicvoid setCountmoney(int countmoney) {

              this.countmoney = countmoney;}}

更多相关推荐:
Java项目开发实训项目报告

徐州工业职业技术学院Java项目开发实训项目报告完成人所在班级指导教师完成时间20xx年6月14日所在系部信息管理技术学院一设计项目名称网上书店二小组成员及分工尚a界面设计b查询图书信息c浏览图书信息并实现分页...

Java项目实训报告模板

实训报告书课程:Java项目实训专业班级:学生姓名:学号:指导教师:完成日期:重庆电子工程职业学院软件学院目录目录................................................…

Java项目实训

技能实训课程设计总结报告实训项目Java项目实训系部软件工程系指导老师学号学生日期20xx629实训报告撰写注意事项一报告内容至少应包括以下项目1具体实训内容2本次实训主要目的3具体日程实训地点同组同学指导老师...

Java实训报告

Java程序设计实训报告实训名称图书管理系统实训专业计算机应用技术班级学号090443220姓名高宇国指导教师侯丽敏20xx年12月26日实训成绩一实训目的1熟练掌握Java面向对象程序设计的基础知识2熟练掌握...

java实训报告模板

辽宁建筑职业学院Java高级应用实训报告课题名称婚庆公司网站专业软件技术班级xxxxxxxxxx学号姓名xxxx指导教师xxx二O一三年十二月三十日成绩评定标准1目录一课程设计目的32二课程设计题目描述和要求3...

java实习报告

石家庄学院习报告王荣传20xx0502027数学与信息科学系信息与计算科学专业本科一班崔永刚讲师姓名:学号:院系:专业:班级:指导教师:教师职称:实习基本情况河北中信联信息技术有实习单位:限公司实习时间:201…

Java实训报告

PINGDINGSHANUNIVERSITYJava专业实训项目报告题目超市管理系统院系软件学院专业年级10级软件工程java工程师2班姓名学号1015302指导教师黄淼20xx年5月26日1目录一项目简介31...

java实训报告

Java实训设计报告专业班级学号姓名项目名称软件技术0923090123027史晓燕石家庄科技信息职业学院信息工程系20xx年10月15日Java实训设计报告项目简介Java实训设计报告项目名称一项目需求格式说...

Java程序设计实验报告

Java程序设计基础实验报告班级11060342X学号45姓名杨健实验题目猜拳小游戏实验要求用java编写一个人机对战的猜拳小游戏人选择性出拳电脑随机出拳判断输赢记录输赢情况有基本的UI界面实验内容1问题分析过...

java实验报告模板

河南工业大学实验报告课程Java程序设计实验名称一Java程序流程控制院系专业班级姓名学号指导老师日期一实验目的熟悉Java语言中的数据类型变量声明流程控制语句二实验要求每个人独立完成程序的调试运行将运行结果的...

java实验报告模板

光信学院Java程序设计实验报告班级姓名实验时间20xx年月日指导教师陈顺凡一实验目的1掌握JavaApplet的程序结构和开发过程2学会编写Applet对应的HTML文件掌握从HTML文件向Applet传递参...

Java程序设计课程上机实验报告模板二

昆明理工大学信息工程与自动化学院学生实验报告20xx20xx学年第2学期课程名称Java程序设计开课实验室44420xx年4月24日一上机目的及内容1实验目的1掌握Java语言的基本语法成分包括标识符与关键字数...

java项目实训报告(24篇)