JAVA小项目(五)—— 银行管理系统【轻松入门,附源码】

目录

1. 菜单

(1)实现登录界面

(2)实现注册界面

(3)最底层的菜单类Menu

 2. 开户与挂失

 (1)开户类Register

(2)挂失框

3. 登录与查询

4. 验证

(1)登录时, 验证账号密码是否正确

(2)注册时 ,验证账号是否存在

(3)挂失时, 找回密码需要验证

(4)输入金额页面,判断金额是否合法

(5)登录时,验证用户名和密码是否为中文

(6)注册时,验证姓名是否为中文

5.用户信息读写

(1)将注册的信息格式化写入文本

(2)读取信息,将用户名信息返回

(3)取款和转账操作时,更新金额

(4)修改密码时,更新密码

6.存款与取款

(1)存款

(2)取款

7. 改密与转账

(1) 转账操作

(2) 判断用户是否存在和金额是否合法

(3)确认是否同意转账, 否则退出

8. 最终效果图+流程图

(1)流程图​

(2)效果图


💴哈喽,大家好丫,你们的小郭子又来啦 ~

🌞今天我们用java来写一个简单的小项目——【银行管理系统】,嘿嘿,是不是DNA动了呀🌞🌞

🌞话不多说,直接上干货,

  

1. 菜单

(1)实现登录界面

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Login extends JFrame implements ActionListener{

    JButton jb1, jb2, jb3;  //按钮
    JPanel jp1,jp2,jp3, jp4;        //面板
    JTextField jtf;   //文本框
    JLabel jlb1, jlb2, jlb3; //标签
    JPasswordField jpf; //密码框

    String name = "123";   //账号密码
    String pwd = "123"; 

    public Login() {
        // TODO Auto-generated constructor stub
        jb1 = new JButton("登录");
        jb2 = new JButton("重置");
        jb3 = new JButton("注册");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);

        jp1 = new JPanel();  //创建面板
        jp2 = new JPanel();
        jp3 = new JPanel();

        jlb1 = new JLabel("用户名");  //添加标签
        jlb2 = new JLabel("  密  码");

        jtf = new JTextField(10);   //创建文本框和密码框
        jpf = new JPasswordField(10);

        //加入面板中
        jp1.add(jlb1);
        jp1.add(jtf);

        jp2.add(jlb2);
        jp2.add(jpf);

        jp3.add(jb1);
        jp3.add(jb2);
        jp3.add(jb3);

        //将JPane加入JFrame中  
        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3);  

       //设置布局
        this.setTitle("银行管理管理系统");
        this.setLayout(new GridLayout(3,1));
        this.setSize(300, 200);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);  //设置可关闭

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="登录")
        {
            login();
        }
        else if(e.getActionCommand()=="重置")  
        {  
             clear();  
        }
        else if(e.getActionCommand()=="注册")
        {
            new Register();  //跳转注册界面
        }
    }
    //清空账号和密码框
    private void clear() {
        // TODO Auto-generated method stub
        jtf.setText("");    //设置为空
        jpf.setText("");  

    }

    //验证登录信息,并做处理
    public void login()
    {
        if (name.equals(jtf.getText())&&pwd.equals(jpf.getText()))
        {
            JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
            dispose();  //使文原窗体消失
            new OptionsMenu(); //跳转到登录个人信息选项界面

        }
        else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "账号密码为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if (jtf.getText().isEmpty()) 
        {
            JOptionPane.showMessageDialog(null, "账号为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if (jpf.getText().isEmpty()) 
        {
            JOptionPane.showMessageDialog(null, "密码为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);

        }
        else
        {
            JOptionPane.showMessageDialog(null, "账号密码错误请重新输入!","消息提示",JOptionPane.ERROR_MESSAGE);
            clear();  //调用清除函数
        }
    }



}

(2)实现注册界面

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Register extends JFrame implements ActionListener{

    JButton jb1, jb2;  //按钮
    JLabel jlb1, jlb2, jlb3,jlb4,jlb5;  //标签
    JTextField jtf1,jtf2,jtf3,jtf4;   //文本框
    JPasswordField jpf; //密码框
    JPanel jp1,jp2,jp3, jp4,jp5,jp6;        //面板

    public Register() {
        // TODO Auto-generated constructor stub
        //按钮
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);
        //标签信息

        jlb1 = new JLabel("        账号");
        jlb2 = new JLabel("        姓名");
        jlb3 = new JLabel("        密码");
        jlb4 = new JLabel("重复密码");
        jlb5 = new JLabel("注册信息");
        jlb5.setFont(new   java.awt.Font("Dialog",   1,   20));   //设置字体类型,加粗,大小为20
        //文本信息
        jtf1 = new JTextField(10);
        jtf2 = new JTextField(10);
        jtf3 = new JTextField(10);
        jtf4 = new JTextField(10);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();
        jp5 = new JPanel();
        jp6 = new JPanel();
        //将对应信息加入面板中
        jp1.add(jlb1);
        jp1.add(jtf1);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jlb3);
        jp3.add(jtf3);

        jp4.add(jlb4);
        jp4.add(jtf4);

        jp5.add(jb1);
        jp5.add(jb2);

        jp6.add(jlb5);

        //将JPane加入JFrame中  
        this.add(jp6);  //先加入提示语

        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3); 
        this.add(jp4);
        this.add(jp5);

        //设置布局
        this.setTitle("注册信息");
        this.setLayout(new GridLayout(6, 1));
        this.setSize(300, 300);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {
            register();
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();
        }

    }
    //验证注册信息,并做处理
    public void register()
    {
        if (!jtf1.getText().isEmpty()&&!jtf2.getText().isEmpty()&&
                !jtf3.getText().isEmpty()&&!jtf4.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null,"注册成功!","提示消息",JOptionPane.WARNING_MESSAGE);

        }
        else 
        {
            JOptionPane.showMessageDialog(null, "信息有空缺,请补全!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
    }

    //清空账号和密码框
    private void clear() {
        // TODO Auto-generated method stub
        jtf1.setText("");    //设置为空
        jtf2.setText("");  
        jtf3.setText("");  
        jtf4.setText("");  

    }

}

(3)最底层的菜单类Menu

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
/**
 * 
 * @author contentcl
 * Menu是一个 菜单类,也是最为底层的一个类
 * 提供各个功能的按钮
 * 
 * 此类未使用布局, 所以使用坐标固定了各个标签和按钮的位置
 *
 */

public class Menu extends JFrame implements ActionListener{

    JButton jb1, jb2, jb3,jb4,jb5,jb6,jb7, jb8;  //创建按钮
    JLabel jlb1, jlb2, jlb3;   //标签
    public Menu() 
    {
        jb1 = new JButton("查询");
        jb2 = new JButton("存款");
        jb3 = new JButton("取款");
        jb4 = new JButton("转账");
        jb5 = new JButton("改密");
        jb6 = new JButton("开户");
        jb7 = new JButton("退卡");
        jb8 = new JButton("挂失");


        jlb1 = new JLabel("知足常乐银行");
        jlb1.setFont(new   java.awt.Font("Dialog",   1,   23)); //设置字体类型, 是否加粗,字号
        jlb2 = new JLabel("欢迎您");
        jlb2.setFont(new   java.awt.Font("Dialog",   1,   20));
        jlb3 = new JLabel("请您选择服务");
        jlb3.setFont(new   java.awt.Font("Dialog",   1,   22));

        jb1.addActionListener(this);   //事件监听
        jb2.addActionListener(this);
        jb3.addActionListener(this);
        jb4.addActionListener(this);
        jb5.addActionListener(this);
        jb6.addActionListener(this);
        jb7.addActionListener(this);
        jb8.addActionListener(this);

        this.setTitle("银行管理管理系统");  //设置窗体标题
        this.setSize(450, 500);         //设置窗体大小
        this.setLocation(400, 200);     //设置位置
        this.setLayout(null);           //设置布局,不采用布局

        //设置按钮的位置和大小
        jb1.setBounds( 0,50,90,60);   
        jb2.setBounds( 0,150,90,60);
        jb3.setBounds( 0,250,90,60);
        jb8.setBounds(0,350,90,60);
        jb4.setBounds( 354,50,90,60);
        jb5.setBounds( 354,150,90,60);
        jb6.setBounds( 354,250,90,60);
        jb7.setBounds(354,350,90,60);

        //设置标签的位置和大小
        jlb1.setBounds(150,120,150,50);
        jlb2.setBounds(190,160,150,50);
        jlb3.setBounds(150,250,150,50);

        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(jlb1);
        this.add(jlb2);
        this.add(jlb3);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);  //设置可关闭

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="查询")
        {
            //String order = e.getActionCommand();
            new Login(e.getActionCommand());
        }
        else if (e.getActionCommand()=="存款")
        {
            new Login(e.getActionCommand());
        }
        else if (e.getActionCommand()=="取款")
        {
            new Login(e.getActionCommand());
        }
        else if (e.getActionCommand()=="转账")
        {
            new Login(e.getActionCommand());
        }
        else if (e.getActionCommand()=="改密")
        {
            new Login(e.getActionCommand());
        }
        else if (e.getActionCommand()=="开户")
        {
            new Register();  //跳转开户界面
        }
        else if (e.getActionCommand()=="挂失")
        {
            new ReportLose();  
        }
        else if (e.getActionCommand()=="退卡")
        {
            System.exit(0);;
        }


    }

}

 2. 开户与挂失

 (1)开户类Register

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;

/**
 * 此类完成对开户页面的编写, 用户需填写 姓名,身份证号, 账户,密码,开户金额信息
 * 
 * 并且会进行验证操作, 如姓名是否合法(中文), 身份证号是否合法等等
 * @author contentcl
 * @Date 2017年12月27日 下午8:32:19
 *
 */
public class Register extends JFrame implements ActionListener{

    JButton jb1, jb2;  //按钮
    JLabel jlb1, jlb2, jlb3,jlb4,jlb5, jlb6;  //标签
    JTextField jtf1,jtf2,jtf3,jtf4, jtf5;   //文本框
    JPasswordField jpf; //密码框
    JPanel jp1,jp2,jp3, jp4,jp5,jp6,jp7;        //面板

    public Register() {
        // TODO Auto-generated constructor stub
        //按钮
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);
        //标签信息

        jlb1 = new JLabel("        姓名");
        jlb2 = new JLabel("身份证号");
        jlb3 = new JLabel("        账号");
        jlb4 = new JLabel("        密码");
        jlb6 = new JLabel("注册信息");
        jlb5 = new JLabel("开户金额");

        jlb6.setFont(new   java.awt.Font("Dialog",   1,   20));   //设置字体类型,加粗,大小为20
        //文本信息
        jtf1 = new JTextField(13);
        jtf2 = new JTextField(13);
        jtf3 = new JTextField(13);
        jtf4 = new JTextField(13);
        jtf5 = new JTextField(13);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();
        jp5 = new JPanel();
        jp6 = new JPanel();
        jp7 = new JPanel();
        //将对应信息加入面板中
        jp1.add(jlb1);
        jp1.add(jtf1);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jlb3);
        jp3.add(jtf3);

        jp4.add(jlb4);
        jp4.add(jtf4);

        jp5.add(jlb5);
        jp5.add(jtf5);

        jp6.add(jb1);
        jp6.add(jb2);

        jp7.add(jlb6);

        //将JPane加入JFrame中  
        this.add(jp7);  //先加入提示语

        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3); 
        this.add(jp4);
        this.add(jp5);
        this.add(jp6);

        //设置布局
        this.setTitle("注册信息");
        this.setLayout(new GridLayout(7, 1));
        this.setSize(350, 350);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {
            try {
                register();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();
        }

    }
    //验证注册信息,并做处理
    public void register() throws IOException
    {
        //判断信息是否补全
        if (jtf1.getText().isEmpty()||jtf2.getText().isEmpty()||
                jtf3.getText().isEmpty()||jtf4.getText().isEmpty()||jtf5.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "信息有空缺,请补全!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //判断身份证号是否为18位
        else if (jtf2.getText().length()!=18)
        {
            JOptionPane.showMessageDialog(null, "非法身份证号,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //判断金额是否合法
        else if (!new Check().checkmoney(jtf5.getText()))
        {  
            JOptionPane.showMessageDialog(null, "存入金额不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //判断姓名是否为全中文
        else if (!new Check().checkname(jtf1.getText()))
        {
            JOptionPane.showMessageDialog(null, "姓名不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //判断账户名和密码是否包含中文
        else if (new Check().checkcountname(jtf3.getText())||new Check().checkcountname(jtf4.getText()))
        {
            JOptionPane.showMessageDialog(null, "用户名或密码存在中文,不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //满足要求
        else if (!jtf1.getText().isEmpty()&&!jtf2.getText().isEmpty()&&
                !jtf3.getText().isEmpty()&&!jtf4.getText().isEmpty()&&!jtf5.getText().isEmpty())
        {
            //注册成功, 打包为信息数组传递给UserMessage进行更新操作
            String []message = new String[5]; 
            message[0] = jtf1.getText();   //获取输入的文本信息
            message[1] = jtf2.getText();
            message[2] = jtf3.getText();
            message[3] = jtf4.getText();
            message[4] = jtf5.getText();
            if (!new Check().check2(message[2]))   //调用Check的check方法检测用户是否存在, 如果不存在执行
            {
                new UserMessage().write(message);   //调用UserMseeage的write方法进行写操作, 将信息格式化存入
                JOptionPane.showMessageDialog(null,"注册成功!","提示消息",JOptionPane.WARNING_MESSAGE);
                dispose();  //使窗口消失
            }
            else 
            {
                JOptionPane.showMessageDialog(null,"账号已存在,请重新输入!","提示消息",JOptionPane.WARNING_MESSAGE);
                //dispose();
            }
        }
    }

    //清空账号和密码框
    private void clear() {
        // TODO Auto-generated method stub
        jtf1.setText("");    //设置为空
        jtf2.setText("");  
        jtf3.setText("");  
        jtf4.setText("");  
        jtf5.setText("");  

    }


}

(2)挂失框

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * 
 * @author contentcl
 * @Date 2017年12月24日 下午6:52:47
 *
 *此类是对挂失模块的编写,用户利用身份证号和姓名, 进行对户名下的账号进行找回密码操作
 */
public class ReportLose extends JFrame implements ActionListener{
    JButton jb1, jb2, jb3;  //按钮
    JPanel jp1,jp2,jp3, jp4;        //面板
    JTextField jtf1,jtf2,jtf3,jtf4;   //文本框
    JLabel jlb1, jlb2, jlb3; //标签
    JTextArea jta;
    public ReportLose() 
    {
        // TODO Auto-generated constructor stub
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);

        jp1 = new JPanel();  //创建面板
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();

        jlb1 = new JLabel("        姓名");  //添加标签
        jlb2 = new JLabel("身份证号");
        jlb3 = new JLabel("        账号");

        jtf1 = new JTextField(13);  //创建文本框
        jtf2 = new JTextField(13);
        jtf3 = new JTextField(13);

        //创建文本框
         jta = new JTextArea();

        //加入面板中
        jp1.add(jlb1);
        jp1.add(jtf1);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jlb3);
        jp3.add(jtf3);

        jp4.add(jb1);
        jp4.add(jb2);

       //设置布局
        this.setTitle("找回密码");
        this.setLayout(new GridLayout(6,1));  //采用网格布局 6,1
        this.setSize(400, 350); 
        //this.setLocation(400, 200);

        //将JPane加入JFrame中  
        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3);  
        this.add(jp4);
        this.add(jta);

        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {
            try {
                ok();
            } catch (HeadlessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        else if(e.getActionCommand()=="重置")  
        {  
             clear();  
        }
    }
    //
    private void ok() throws HeadlessException, IOException {
        // TODO Auto-generated method stub
        //信息有空缺
        if (jtf1.getText().isEmpty()||jtf2.getText().isEmpty()||
                jtf3.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "信息有空缺,请补全!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        //判断身份证号是否为18位
        else if (jtf2.getText().length()!=18)
        {
            JOptionPane.showMessageDialog(null, "非法身份证号,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else
        {
            String []message = new String[3]; 
            message[0] = jtf1.getText();
            message[1] = jtf2.getText();
            message[2] = jtf3.getText();
            if (new Check().check2(message[2]))   //调用Check的check方法检测用户是否存在, 如果存在
            {
                String nowpwd = new Check().check3(message[0],message[1],message[2]);//判断姓名,身份证号, 用户名,是否匹配
                if (nowpwd!=null)
                {
                    JOptionPane.showMessageDialog(null,"请点击确定查看!","提示消息",JOptionPane.WARNING_MESSAGE);
                    jta.setText("您的密码为:"+nowpwd+"  ,请妥善保存!");
                }
                else
                {
                    JOptionPane.showMessageDialog(null,"用户信息和该账号不匹配,请核对!","提示消息",JOptionPane.WARNING_MESSAGE);
                }
            }
            else 
            {
                JOptionPane.showMessageDialog(null,"账号不存在,请核对账户信息!","提示消息",JOptionPane.WARNING_MESSAGE);
                //dispose();
            }
        }
    }

    //清空账号和密码框
    private void clear() {
            // TODO Auto-generated method stub
            jtf1.setText("");    //设置为空
            jtf2.setText("");
            jtf3.setText("");  

    }

}

3. 登录与查询

package contentcl;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;
/**
 * 此类时对用户信息查询的编写,  我们将查询出用户的姓名身份证号和余额
 * @author contentcl
 * @Date 2017年12月27日 下午8:54:17
 *
 */
public class Inquiry extends JFrame implements ActionListener{

    JLabel jlb1, jlb2, jlb3;  //标签
    JTextField jtf1,jtf2,jtf3;   //文本框
    JPasswordField jpf; //密码框
    JPanel jp1,jp2,jp3;     //面板

    public Inquiry(String countname) throws IOException {
        // TODO Auto-generated constructor stub
        //标签信息

        jlb1 = new JLabel("        姓名");
        jlb2 = new JLabel("身份证号");
        jlb3 = new JLabel("        余额");

        jtf1 = new JTextField(13);
        jtf2 = new JTextField(13);
        jtf3 = new JTextField(13);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();

        jp1.add(jlb1);
        jp1.add(jtf1);
        jp2.add(jlb2);
        jp2.add(jtf2);
        jp3.add(jlb3);
        jp3.add(jtf3);

        //设置布局
        this.setTitle("查询");
        this.setLayout(null);   //采用空布局

        jp1.setBounds(-10, 40, 300 ,50);   //-别问我为什么-10 因为 界面好看一点啊
        jp2.setBounds(-10, 110, 300 ,50);
        jp3.setBounds(-10, 180, 300 ,50);

        //将JPane加入JFrame中  
        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3); 

        this.setSize(300, 300);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

        String []message = new UserMessage().read(countname);

        //将姓名的第一个字变为*
        message[0] ="*"+message[0].substring(1,message[0].length());
        //将身份证号第6到12位变成*
        message[1] =message[1].substring(0,6)+"*******"+message[1].substring(13,message[1].length());


        jtf1.setText(message[0]);   //将信息显示在文本框中
        jtf2.setText(message[1]);
        jtf3.setText(message[4]);




    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }

}

4. 验证

(1)登录时, 验证账号密码是否正确

/**
     * 在登录时, 验证账号密码是否正确
     */
    public boolean  check1(String countname,String pwd) throws IOException{

        File file=new File("Message.txt");   //创建文件类
        if(!file.exists()||file.isDirectory()) //判断文件是否存在
            //throw new FileNotFoundException();
            file.createNewFile();
        BufferedReader br=new BufferedReader(new FileReader(file)); //创建读入缓冲流,按行读入
        String temp=null;   
       // StringBuffer sb=new StringBuffer();   
        temp=br.readLine();   //先读取一行
        while(temp!=null){
            String sbstring = temp.toString();   //转化为string
            int n = sbstring.length();            //测字符串长度
            String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
            int k=0;

            for (int i=0; i<5; i++)
                message[i]="";
            //我们在写入账户时用~分割, 所以我们利用~在分割开来
            for (int i=0; i<n; i++)
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);//读取第String的第i个字符
                }
            }
            if (countname.equals(message[2])&&pwd.equals(message[3]))//比较账户密码是否相等
                return true;
            temp=br.readLine();  //读取下一行
        }
        return false;


    }

(2)注册时 ,验证账号是否存在

//在注册时 验证账号是否存在
    public boolean  check2(String countname) throws IOException{

        File file=new File("Message.txt");   //创建文件类
        if(!file.exists()||file.isDirectory()) //判断文件是否存在
            file.createNewFile();
        BufferedReader br=new BufferedReader(new FileReader(file)); //创建读入缓冲流,按行读入
        String temp=null;   
       // StringBuffer sb=new StringBuffer();   
        temp=br.readLine();   //先读取一行
        while(temp!=null){
            String sbstring = temp.toString();   //转化为string
            int n = sbstring.length();            //测字符串长度
            String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
            int k=0;

            for (int i=0; i<5; i++)
                message[i]="";
            for (int i=0; i<n; i++)
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);
                }
            }
            if (countname.equals(message[2]))
                return true;
            temp=br.readLine();
        }
        return false;
    }

(3)挂失时, 找回密码需要验证

//在挂失是 找回密码需要验证, 姓名,身份证号,和账户是否与注册时保持一致
    public String  check3(String name, String userid,String countname) throws IOException{

        File file=new File("Message.txt");   //创建文件类
        if(!file.exists()||file.isDirectory()) //判断文件是否存在
            file.createNewFile();
        BufferedReader br=new BufferedReader(new FileReader(file)); //创建读入缓冲流,按行读入
        String temp=null;   
       // StringBuffer sb=new StringBuffer();   
        temp=br.readLine();   //先读取一行
        while(temp!=null){
            String sbstring = temp.toString();   //转化为string
            int n = sbstring.length();            //测字符串长度
            String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
            int k=0;

            for (int i=0; i<5; i++)
                message[i]="";
            for (int i=0; i<n; i++)
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);
                }
            }
            if (name.equals(message[0])&&userid.equals(message[1])&&countname.equals(message[2]))
                return message[3];
            temp=br.readLine();
        }
        return null;
    }

(4)输入金额页面,判断金额是否合法

//判断金额是否合法
    public boolean checkmoney(String money)
        {
            for(int i=0; i<money.length(); i++)
            {
                if (money.charAt(i)<'0'||money.charAt(i)>'9')
                    return false;
            }  
            return true;
        }

(5)登录时,验证用户名和密码是否为中文

//验证用户名和密码是否为中文
public boolean checkcountname(String countname)
{
Pattern p = Pattern.compile(“[\u4e00-\u9fa5]”);
Matcher m = p.matcher(countname);
if (m.find()) {
return true;
}
return false;
}

(6)注册时,验证姓名是否为中文

//验证姓名是否为中文
    public boolean checkname(String name)
    {
        int n = 0;
        for(int i = 0; i < name.length(); i++) {
            n = (int)name.charAt(i);
            if(!(19968 <= n && n <40869)) {
                return false;
            }
        }
        return true;
    }

5.用户信息读写

(1)将注册的信息格式化写入文本

public void write(String[] message)throws IOException
    {
        File file=new File("Message.txt");  //创建文件对象
        String messagesum="";
        for (int i=0; i<5; i++)  //将信息格式化存储
            messagesum+=message[i]+"~";
        if(!file.exists())
            file.createNewFile();
        FileOutputStream out=new FileOutputStream(file,true); //建立输出对象,true表示追加       
        StringBuffer sb=new StringBuffer();      //创建字符串流
        sb.append(messagesum+"\n");             //向字符串流中添加信息
         out.write(sb.toString().getBytes("gb2312"));         //将字符串流中的信息写入文本
        out.close();            //关闭
    }

(2)读取信息,将用户名信息返回

/*
     *   读取信息,将用户名信息返回(如果不存在返回null),和Check类配合使用  
     */
    public String[] read(String countname) throws IOException
    {
        File file=new File("Message.txt");
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException();
        BufferedReader br=new BufferedReader(new FileReader(file));
        String temp=null;
        StringBuffer sb=new StringBuffer();
        temp=br.readLine();

        String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
        while(temp!=null){
            String sbstring = temp.toString();
            int n = sbstring.length();            //测字符串长度
            for (int i=0; i<5; i++)
                message[i] = "";

            int k=0;
            for (int i=0; i<n; i++)
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);
                }
            }
            if (message[2].equals(countname))  //返回找到用户的信息
            {
                return message;
            }
            temp=br.readLine();
        }
        return null;
    }

(3)取款和转账操作时,更新金额

/*在存款取款操作 时 更新金额
     * 
     */
    public String updatemoney(String countname,int wangsave) throws IOException
    {
        File file=new File("Message.txt");
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException(); 
        //读文件  
        BufferedReader br=new BufferedReader(new FileReader(file));
        String temp=null;
        StringBuffer sb=new StringBuffer();  //建立字符串流
        StringBuffer sb1=new StringBuffer();

        String moneystring="";

        temp=br.readLine();
        String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
        while(temp!=null){
            String sbstring = temp.toString();
            int n = sbstring.length();            //测字符串长度
            for (int i=0; i<5; i++)
                message[i] = "";

            int k=0;
            for (int i=0; i<n; i++)      //拆乘5个String
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);
                }
            }

            if (message[2].equals(countname))   //找到该账户名
            {
                String newmessage="";
                int moneyint;
                moneyint=Integer.parseInt(message[4])+wangsave;  //金额转为int操作
                                        //原金额                                   //存入金额

                if (moneyint<0)
                {
                    return "负数";
                }
                moneystring  = String.valueOf(moneyint);    //将String转int
                for (int i=0; i<4; i++)             //转化为规定格式文件 
                    newmessage += message[i]+"~";
                newmessage += moneystring+"~";
                sb1.append(newmessage+"\n");
            }
            else
            {
                sb1.append(temp+"\n");
            }
            temp=br.readLine();
        }
        /*
         * 说明:
         * 本来的想法是在原文件对象中覆盖内容,但是发现覆盖后文本为空, 无法解决
         * 但重新创建文件对象,则可以完成操作
         */
        File file1=new File("Message.txt");   //重新建立文件对象, 覆盖写入文本
        if(!file1.exists())
           file1.createNewFile();
        FileOutputStream out=new FileOutputStream(file1,false);  //false为重写操作
        out.write(sb1.toString().getBytes("gb2312"));
        out.close();

        return moneystring;
    }

(4)修改密码时,更新密码

//更新密码
    public String updatepwd(String countname,String pwd) throws IOException
    {
        File file=new File("Message.txt");
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException(); 
        //读文件  
        BufferedReader br=new BufferedReader(new FileReader(file));
        String temp=null;
        StringBuffer sb=new StringBuffer();
        //写文件
        //FileOutputStream out=new FileOutputStream(file,false);        
        StringBuffer sb1=new StringBuffer();

        String moneystring="";

        temp=br.readLine();
        String []message = new String[5];     //按~拆分 成5个字符串数组,按账号和密码进行信息验证
        while(temp!=null){
            String sbstring = temp.toString();
            int n = sbstring.length();            //测字符串长度
            for (int i=0; i<5; i++)
                message[i] = "";

            int k=0;
            for (int i=0; i<n; i++)      //拆乘5个String
            {
                if(sbstring.charAt(i)=='~')
                {
                    //System.out.println("@"+message[k]);
                    k++;
                }
                else 
                {
                    message[k] += sbstring.charAt(i);
                }
            }

            if (message[2].equals(countname))   //找到该账户名
            {
                //修改密码
                for (int i=0; i<3; i++)
                    sb1.append(message[i]+"~");
                sb1.append(pwd+"~");
                sb1.append(message[4]+"~\n");
            }
            else
            {
                sb1.append(temp+"\n");
            }
            temp=br.readLine();
        }
        /*
         * 说明:
         * 本来的想法是在原文件对象中覆盖内容,但是发现覆盖后文本为空, 无法解决
         * 但重新创建文件对象,则可以完成操作
         */
        File file1=new File("Message.txt");
        if(!file1.exists())
           file1.createNewFile();
        FileOutputStream out=new FileOutputStream(file1,false);
        out.write(sb1.toString().getBytes("gb2312"));
        out.close();

        return moneystring;
    }

6.存款与取款

(1)存款

package contentcl;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * 本类实现对存钱的操作  注意金额的处理
 * @author contentcl
 * @Date 2017年12月25日 下午7:59:38
 *
 */
public class SaveMoney extends JFrame implements ActionListener{
    String countname;
    JButton jb1, jb2, jb3;  //按钮
    JLabel jlb1, jlb2, jlb3; //标签
    JTextArea jta1,jta2;

    public SaveMoney(String countname) {
        this.countname = countname;

        // TODO Auto-generated constructor stub
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);


        jlb1 = new JLabel("请输入存入金额:");  //添加标签

        //创建文本框
         jta1 = new JTextArea();
         jta2 = new JTextArea();


       //设置布局
        this.setTitle("存钱");
        this.setLayout(null);
        this.setSize(300, 300); 

        //存入标签和文本框
        jlb1.setBounds(5, 20, 200, 20);
        jta1.setBounds(20, 50, 250, 50);
        jta1.setFont(new   java.awt.Font("Dialog",   0,   15)); //设置字体为字形, 不加粗,15号字体

        //确定和重置按钮
        jb1.setBounds(60, 120, 62, 28);
        jb2.setBounds(160, 120, 62, 28);

        //显示结果文本框
        //jlb1.setBounds(5, 20, 200, 20);
        jta2.setBounds(20, 160, 300, 50);
        jta2.setFont(new   java.awt.Font("Dialog",   1,   15));
        //jta2.setText("您的余额为:\n ");

       this.add(jlb1);
       this.add(jta1);
       this.add(jb1);
       this.add(jb2);
       this.add(jta2);

       this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

       this.setVisible(true);  //设置可见
       this.setResizable(false);    //设置不可拉伸大小

    }

    //清空账号和密码框
        private void clear() 
        {
            // TODO Auto-generated method stub
            jta1.setText("");    //设置为空
            jta2.setText("");  

        }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {

            try {
                savemoney();   //将存入金额传入判断是否合法
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();
        }

    }

    private void savemoney() throws IOException {
        // TODO Auto-generated method stub
        if (jta1.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "金额为空,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if(new Check().checkmoney(jta1.getText()))  //验证金额是否合法
        {
            //将账户和金额传入, 进行存储
            String nowmoney = new UserMessage().updatemoney(countname,Integer.parseInt(jta1.getText()));
            if (!nowmoney.equals("负数"))
            {
                jta2.setText("您的余额为:\n "+nowmoney);
                jta1.setText("");
            }
        }
        else 
        {
            JOptionPane.showMessageDialog(null, "存入金额不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
        }

    }



}

(2)取款

package contentcl;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

/**
 * 本类实现 对取钱操作的实现, 主要思路 实现对用户金额的修改
 * 但在输入金额是 要判断 金额的大小 是否能够取出  且不能出现负数
 * 
 * @author contentcl
 * @Date 2017年12月25日 下午7:58:09
 *
 */
public class DrawMoney extends JFrame implements ActionListener{
    String countname;
    JButton jb1, jb2, jb3;  //按钮
    JLabel jlb1, jlb2, jlb3; //标签
    JTextArea jta1,jta2;

    public DrawMoney(String countname) {
        this.countname = countname;

        // TODO Auto-generated constructor stub
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);


        jlb1 = new JLabel("请输入取出金额:");  //添加标签

        //创建文本框
         jta1 = new JTextArea();
         jta2 = new JTextArea();


       //设置布局
        this.setTitle("取钱");
        this.setLayout(null);
        this.setSize(300, 300); 

        //存入标签和文本框
        jlb1.setBounds(5, 20, 200, 20);
        jta1.setBounds(20, 50, 250, 50);
        jta1.setFont(new   java.awt.Font("Dialog",   0,   15));

        //确定和重置按钮
        jb1.setBounds(60, 120, 62, 28);
        jb2.setBounds(160, 120, 62, 28);

        //显示结果文本框
        //jlb1.setBounds(5, 20, 200, 20);
        jta2.setBounds(20, 160, 300, 50);
        jta2.setFont(new   java.awt.Font("Dialog",   1,   15));
        //jta2.setText("您的余额为:\n ");

       this.add(jlb1);
       this.add(jta1);
       this.add(jb1);
       this.add(jb2);
       this.add(jta2);

       this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

       this.setVisible(true);  //设置可见
       this.setResizable(false);    //设置不可拉伸大小

    }

    //清空账号和密码框
        private void clear() 
        {
            // TODO Auto-generated method stub
            jta1.setText("");    //设置为空
            jta2.setText("");  

        }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {

            try {
                drawmoney();   //将存入金额传入判断是否合法
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();
        }

    }

    private void drawmoney() throws IOException {
        // TODO Auto-generated method stub
        if (jta1.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "金额为空,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if(new Check().checkmoney(jta1.getText()))
        {
            String nowmoney = new UserMessage().updatemoney(countname,-Integer.parseInt(jta1.getText()));
            if (!nowmoney.equals("负数"))
            {
                jta2.setText("您的余额为:\n "+nowmoney);
                jta1.setText("");
            }
            else 
            {
                JOptionPane.showMessageDialog(null, "余额不足请重新输入:","消息提示",JOptionPane.WARNING_MESSAGE);
                clear();
            }
        }
        else 
        {
            JOptionPane.showMessageDialog(null, "存入金额不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
        }

    }


}

7. 改密与转账

(1) 转账操作

package contentcl;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 * 实现改密操作
 * @author contentcl
 * @Date 2017年12月27日 上午9:53:18
 *
 */
public class Modify extends JFrame implements ActionListener{
    JButton jb1, jb2, jb3;  //按钮
    JPanel jp1,jp2,jp3, jp4;        //面板
    JPasswordField jtf1,jtf2;   //文本框
    JLabel jlb1, jlb2, jlb3; //标签

    String name = "123";   //账号密码
    String pwd = "123"; 
    String countname;

    public Modify(String countname) {
        this.countname = countname;
        // TODO Auto-generated constructor stub
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);

        jp1 = new JPanel();  //创建面板
        jp2 = new JPanel();
        jp3 = new JPanel();

        jlb1 = new JLabel("    新密码");  //添加标签
        jlb2 = new JLabel("重复密码");

        jtf1 = new JPasswordField(10);  //创建文本框
        jtf2 = new JPasswordField(10);

        //加入面板中
        jp1.add(jlb1);
        jp1.add(jtf1);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jb1);
        jp3.add(jb2);

        //将JPane加入JFrame中  
        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3);  

       //设置布局
        this.setTitle("用户登录");
        this.setLayout(new GridLayout(3,1));  //利用网格布局
        this.setSize(300, 200);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {

            try {
                modify();  //进行信息核对
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }  
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();   //清楚信息
        }

    }

    private void modify() throws IOException {
        // TODO Auto-generated method stub
        if (jtf1.getText().isEmpty()||jtf2.getText().isEmpty())  //判断信息是否为空
        {
            JOptionPane.showMessageDialog(null, "信息未填写完成!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if (jtf1.getText().equals(jtf2.getText()))
        {
            new UserMessage().updatepwd(countname, jtf1.getText());   //调用UserMessage的updatepwd函数更新密码
            JOptionPane.showMessageDialog(null, "修改成功!","消息提示",JOptionPane.WARNING_MESSAGE);
            dispose();
        }
        else 
        {
            JOptionPane.showMessageDialog(null, "2次密码不一致,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
            clear();
        }

    }
    //清空密码框
    private void clear() 
    {
        // TODO Auto-generated method stub
        jtf1.setText("");    //设置为空
        jtf2.setText("");  
    }


}

(2) 判断用户是否存在和金额是否合法

package contentcl;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * 本类实现对转账的操作, 注意金额的处理
 * @author contentcl
 * @Date 2017年12月25日 下午8:00:05
 *
 */
public class Transfer extends JFrame implements ActionListener{
    String countname;
    JButton jb1, jb2, jb3;  //按钮
    JLabel jlb1, jlb2, jlb3; //标签
    JTextArea jta1,jta2;    //文本框
    JTextField jtf1;
    JPanel jp1;

    public static boolean flag=true;

    public Transfer(String countname) {
        this.countname = countname;

        // TODO Auto-generated constructor stub
        jb1 = new JButton("确定");
        jb2 = new JButton("重置");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);


        jlb1 = new JLabel("请输入存入金额:");  //添加标签
        jlb2 = new JLabel("对方账号");

        //创建文本框
         jta1 = new JTextArea();   //转出金额
         jtf1 = new JTextField(13);

        //对方账户加入面板
         jp1 = new JPanel();
         jp1.add(jlb2);
         jp1.add(jtf1);

       //设置布局
        this.setTitle("转账");
        this.setLayout(null);
        this.setSize(300, 300); 

        //创建对方账户的标签
        jp1.setBounds(20, 20, 210, 60);

        //存入标签和文本框
        jlb1.setBounds(20, 80, 200, 20);
        jta1.setBounds(20, 110, 250, 50);
        jta1.setFont(new   java.awt.Font("Dialog",   0,   15));

        //确定和重置按钮
        jb1.setBounds(60, 180, 62, 28);
        jb2.setBounds(160, 180, 62, 28);


        this.add(jp1);
       this.add(jlb1);
       this.add(jta1);
       this.add(jb1);
       this.add(jb2);

       this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

       this.setVisible(true);  //设置可见
       this.setResizable(false);    //设置不可拉伸大小

    }

    //清空账号和密码框
    private void clear() 
    {
        // TODO Auto-generated method stub
        jtf1.setText("");
        jta1.setText("");    //设置为空
        jta2.setText("");  

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {

            try {
                transfer();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        else if (e.getActionCommand()=="重置")
        {
            clear();
        }

    }

    private void transfer() throws IOException {
        // TODO Auto-generated method stub
        if (jta1.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "金额为空,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if (jtf1.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "转入账号,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
        }
        else if(new Check().checkmoney(jta1.getText()))  //验证金额是否合法
        {
            if(new Check().check2(jtf1.getText()))   //验证账户是否存在
            {
                new TransferToOthers(countname,jtf1.getText(),jta1.getText());  //将本人账户名 对方账户名和金额传递过去
                clear();
            }
            else 
            {
                JOptionPane.showMessageDialog(null, "账户不存在","消息提示",JOptionPane.WARNING_MESSAGE);
                clear();
            }

        }
        else 
        {
            JOptionPane.showMessageDialog(null, "金额不合法","消息提示",JOptionPane.WARNING_MESSAGE);
            clear();
        }

    }


}

(3)确认是否同意转账, 否则退出

package contentcl;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class TransferToOthers extends JFrame implements ActionListener{
    JButton jb1, jb2, jb3;  //按钮
    JLabel jlb1, jlb2, jlb3,jlb4;  //标签
    JTextField jtf1,jtf2,jtf3;   //文本框
    JPasswordField jpf; //密码框
    JPanel jp1,jp2,jp3,jp4;     //面板
    String wantsave,countname,mycountname;
    //private boolean flag;

    public TransferToOthers(String mycountname, String countname, String wantsave) throws IOException {
        // TODO Auto-generated constructor stub
        this.wantsave = wantsave;
        this.countname = countname;
        this.mycountname = mycountname;

        jb1 = new JButton("确定");
        jb2 = new JButton("取消");
        //设置按钮监听
        jb1.addActionListener(this);
        jb2.addActionListener(this);

        //标签信息

        jlb1 = new JLabel("对方姓名");
        jlb2 = new JLabel("身份证号");
        jlb3 = new JLabel("        账号");
        jlb4 = new JLabel("请确认对方账户信息");
        jlb4.setFont(new   java.awt.Font("Dialog",   1,   15));

        jtf1 = new JTextField(13);
        jtf2 = new JTextField(13);
        jtf3 = new JTextField(13);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();

        jp1.add(jlb1);
        jp1.add(jtf1);
        jp2.add(jlb2);
        jp2.add(jtf2);
        jp3.add(jlb3);
        jp3.add(jtf3);
        jp4.add(jb1);
        jp4.add(jb2);

        //设置布局
        this.setTitle("确认信息");
        this.setLayout(null);

        jlb4.setBounds(65, 20, 300 ,50);
        jp1.setBounds(-10, 80, 300 ,50);
        jp2.setBounds(-10, 150, 300 ,50);
        jp3.setBounds(-10, 220, 300 ,50);
        jp4.setBounds(-10, 290, 300 ,50);

        //将JPane加入JFrame中  
        this.add(jp1);  
        this.add(jp2);  
        this.add(jp3);
        this.add(jp4);
        this.add(jlb4);

        this.setSize(300, 400);   //设置窗体大小
        this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)  
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);  //设置仅关闭当前窗口

        this.setVisible(true);  //设置可见
        this.setResizable(false);   //设置不可拉伸大小
        String []message = new UserMessage().read(countname);
        //将姓名的第一个字变为*
        message[0] ="*"+message[0].substring(1,message[0].length());
        //将身份证号第6到12位变成*
        message[1] =message[1].substring(0,6)+"*******"+message[1].substring(13,message[1].length());

        jtf1.setText(message[0]);
        jtf2.setText(message[1]);
        jtf3.setText(countname);




    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand()=="确定")
        {
            String nowmoney="";
            try {
                nowmoney = new UserMessage().updatemoney(mycountname,-Integer.parseInt(wantsave));
            } catch (NumberFormatException e2) {
                e2.printStackTrace();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
            if (!nowmoney.equals("负数"))
            {
                //jta2.setText("您的余额为:\n "+nowmoney);
                //jta1.setText("");
                //对方账户存钱
                try {
                    nowmoney = new UserMessage().updatemoney(countname,Integer.parseInt(wantsave));
                } catch (NumberFormatException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                if (!nowmoney.equals("负数"))
                {

                    JOptionPane.showMessageDialog(null, "存入成功,您的余额为:"+nowmoney,"消息提示",JOptionPane.PLAIN_MESSAGE);
                    dispose();
                }
            }
            else 
            {
                JOptionPane.showMessageDialog(null, "余额不足请重新输入:","消息提示",JOptionPane.WARNING_MESSAGE);
                dispose();
            }
        }
        else if (e.getActionCommand()=="取消")
        {
            dispose();
        }

    }




}

8. 最终效果图+流程图

(1)流程图

 

(2)效果图

 

 

 

 

好啦,今天的分享到这里就结束啦 ~🌞🌞

 觉得我分享的文章不错的话,可以关注一下哦,嘻嘻嘻🌞🌞

  

  • 17
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值