JAVA小项目-银行管理系统(图形化界面)7-改密与转账

老规矩上图
这里写图片描述

其实到这只剩2个功能了
改密和转账
改密操作 和前面的存钱取钱啊, 都一样啊 只是更改的内容变了。
这个就不多说了 ,直接上代码
重要的是, 转账操作

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个类
一个是Transfer 负责界面的书写 包括输入对方账户, 和转账金额 (当然在此有验证对方账户是否存在的功能)

另外一个是TransferToOthers 是我们确认对方信息 ,我们从文件读出 对方信息(核心用*注释), 然后确定才进行转账操作

其实Transfer类TransferToOthers类和在编写时 最初的思路 是想 当我们在TransferToOthers上确认或取消信息时 我们 返回给Transfer 一个true或false 然后在Transfer上 显示余额 , 但在用事件监听按钮是发现 getActionCommand()这个方法 只返回字符串 , 也就意味着 点不点按钮和 是否往后进行是不矛盾的
所以想法就终止了 因此我将Transfer显示结果的框却去掉了,并在TransferToOthers类中加入弹框提示余额, 也希望有其他思路的同学提出,在此感谢

先给出 Transfer, 判断用户是否存在和金额是否合法

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();
        }

    }


}

这里写图片描述

这里写图片描述

下面是TransferToOthers 确认对方信息 并在此之上加入了 弹框提示余额的功能
在确认对方信息时 包含以下方面
1. 对方姓名
2. 身份证号
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();
        }

    }




}

这里写图片描述

这里写图片描述

项目所有代码 到这就完成了 , 有些功能写的不好,还希望提出你们建议
如果有想看 其他篇目 或者完整代码的 下面是链接

JAVA小项目-银行管理系统(图形化界面)1-菜单
http://blog.csdn.net/changjiale110/article/details/78880024
JAVA小项目-银行管理系统(图形化界面)2-开户与挂失
http://blog.csdn.net/changjiale110/article/details/78896168
JAVA小项目-银行管理系统(图形化界面)3-登录与查询
http://blog.csdn.net/changjiale110/article/details/78916391
JAVA小项目-银行管理系统(图形化界面)4-验证
http://blog.csdn.net/changjiale110/article/details/78916497
JAVA小项目-银行管理系统(图形化界面)5-用户信息读写
http://blog.csdn.net/changjiale110/article/details/78926473
JAVA小项目-银行管理系统(图形化界面)6-存款与取款
http://blog.csdn.net/changjiale110/article/details/78926600
JAVA小项目-银行管理系统(图形化界面)7-改密与转账
http://blog.csdn.net/changjiale110/article/details/78955018
整体项目演示+源码包
http://blog.csdn.net/changjiale110/article/details/78955353

这是用Java编写的一个简单的银行转账系统,包括取款,存款,转账等功能,其中用到了数据库的连接,采用Eclipse编写,包含数据库的设计文件。非常适合有一定基础的Java初学者使用。 package com.gujunjia.bank; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.sql.*; /** * * @author gujunjia */ public class DataBase { static Connection conn; static PreparedStatement st; static ResultSet rs; /** * 加载驱动 */ public static void loadDriver() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("加载驱动失败"); } } /** * 创建数据库的连接 * * @param database * 需要访问的数据库的名字 */ public static void connectionDatabase(String database) { try { String url = "jdbc:mysql://localhost:3306/" + database; String username = "root"; String password = "gujunjia"; conn = DriverManager.getConnection(url, username, password); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * 关闭数据库连接 */ public static void closeConnection() { if (rs != null) { // 关闭记录集 try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (st != null) { // 关闭声明 try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { // 关闭连接对象 try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } package com.gujunjia.bank; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * 本类主要实现整个系统的界面 * * @author gujunjia */ public class MainFrame extends JFrame implements ActionListener, FocusListener { /** * */ private static final long serialVersionUID = 1L; public static String userId; JTextField userIdText; JPasswordField passwordText; JButton registerButton; JButton logInButton; public MainFrame() { super("个人银行系统"); this.setSize(400, 500); this.setLocation(getMidDimension(new Dimension(400, 500))); getAppearance(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * 获取屏幕的中间尺寸 * * @param d * Dimension类型 * @return 一个Point类型的参数 */ public static Point getMidDimension(Dimension d) { Point p = new Point(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); p.setLocation((dim.width - d.width) / 2, (dim.height - d.height) / 2); return p; } /** * 布局 * * @return Container */ public Container getAppearance() { Container container = this.getContentPane(); container.setLayout(new GridLayout(4, 0)); JLabel label1 = new JLabel("个人银行系统"); label1.setFont(new Font("楷体", Font.BOLD, 40)); JLabel label2 = new JLabel("账号:"); label2.setFont(new Font("楷体", Font.PLAIN, 15)); JLabel label3 = new JLabel("密码:"); label3.setFont(new Font("楷体", Font.PLAIN, 15)); userIdText = new JTextField(20); userIdText.addFocusListener(this); passwordText = new JPasswordField(20); passwordText.addFocusListener(this); JPanel jp1 = new JPanel(); JPanel jp2 = new JPanel(); JPanel jp3 = new JPanel(); JPanel jp4 = new JPanel(); jp1.add(label1); jp2.add(label2); jp2.add(userIdText); jp3.add(label3); jp3.add(passwordText); registerButton = new JButton("注册"); registerButton.addActionListener(this); registerButton.setFont(new Font("楷体", Font.BOLD, 15)); logInButton = new JButton("登录"); logInButton.addActionListener(this); logInButton.setFont(new Font("楷体", Font.BOLD, 15)); jp4.add(registerButton); jp4.add(logInButton); container.add(jp1); container.add(jp2); container.add(jp3); container.add(jp4); return container; } public void actionPerformed(ActionEvent e) { Object btn = e.getSource(); if (btn == registerButton) { new Register(); } else if (btn == logInButton) { String id = userIdText.getText().trim(); String password = new String(passwordText.getPassword()); Bank bank = new Bank(); if (id.equals("") || password.equals("")) { JOptionPane.showMessageDialog(null, "请输入账号密码"); } else { String dPassword = bank.getPassword(id); if (password.equals(dPassword)) { userId = id; this.dispose(); new UserGUI(); } else { JOptionPane.showMessageDialog(this, "密码或用户名错误", "错误", JOptionPane.ERROR_MESSAGE); } } } } @Override public void focusGained(FocusEvent e) { Object text = e.getSource(); if (text == userIdText) { userIdText.setText(""); userIdText.setFont(new Font("宋体", Font.BOLD, 15)); } else if (text == passwordText) { passwordText.setText(""); } } @Override public void focusLost(FocusEvent e) { Object text = e.getSource(); if (text == userIdText) { if (userIdText.getText().equals("")) { userIdText.setText("请输入账号"); userIdText.setFont(new Font("楷体", Font.ITALIC, 15)); } } } }
java语言写的android系统,用于个人账目管理,课程设计上写的欢迎下载 package moneymanager.moneymanager; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /* * * 데이터베이스를 관리하는 클래스입니다. * */ public class DBAdapter { private static final String TAG = "NotesDbAdapter"; private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; // 데이터베이스이름과 테블이름들을 정의 private static final String DATABASE_NAME = "MoneyManagerDB"; private static final int DATABASE_VERSION = 2; private static final String DATABASE_SETTING_TABLE = "SettingTbl"; private static final String DATABASE_BADGET_TABLE = "BadgetTbl"; private static final String DATABASE_PAYMENT_TABLE = "PaymentTbl"; // 테블안의 항목들을 정의 public static final String KEY_SETTINGTBL_ID = "ID"; public static final String KEY_SETTINGTBL_NAME = "Name"; public static final String KEY_SETTINGTBL_VALUE = "Value"; public static final String KEY_BADGETTBL_ID = "ID"; public static final String KEY_BADGETTBL_ITEM = "Item"; public static final String KEY_BADGETTBL_MONEY = "Money"; public static final String KEY_PAYMENTTBL_ID = "ID"; public static final String KEY_PAYMENTTBL_BADGETID = "BadgetID"; public static final String KEY_PAYMENTTBL_OUTDATE = "OutDate"; public static final String KEY_PAYMENTTBL_MONEY = "Money"; public static final String KEY_PAYMENTTBL_NOTE = "Note"; private final Context mCtx; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String strCreateTbl; // SettingTbl생성 strCreateTbl = "CREATE TABLE " + DATABASE_SETTING_TABLE + " (" + KEY_SETTINGTBL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_SETTINGTBL_NAME + " TEXT NOT NULL, " + KEY_SETTINGTBL_VALUE + " TEXT NOT NULL);"; db.execSQL(strCreateTbl); // BadgetTbl생성 strCreateTbl = "CREATE TABLE " + DATABASE_BADGET_TABLE + " (" + KEY_BADGETTBL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_BADGETTBL_ITEM + " TEXT NOT NULL, " + KEY_BADGETTBL_MONEY + " INTEGER NOT NULL);"; db.execSQL(strCreateTbl); // PaymentTbl생성 strCreateTbl = "CREATE TABLE " + DATABASE_PAYMENT_TABLE + " (" + KEY_PAYMENTTBL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_PAYMENTTBL_BADGETID + " INTEGER NOT NULL, " + KEY_PAYMENTTBL_OUTDATE + " TEXT NOT NULL, " + KEY_PAYMENTTBL_MONEY + " INTEGER NOT NULL, " + KEY_PAYMENTTBL_NOTE + " TEXT);"; db.execSQL(strCreateTbl); } ......
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值