一款简易ATM机系统(涉及数据库)

前言

  开头先骗赞,因为太长了,我觉得你不一会翻到结尾。所以开头就先骗赞再说。
  给个赞吧!
  !
  这周学习了Java与数据库的相关知识,因此本周作业是一款涉及数据库的简易ATM机系统。很是尴尬,上周作业没有完成,导致上一篇博客无限期延后,是我的锅!还是要好好学习!
  这个系统有两种版本,一个是基于office家的Access,另一个是基于开源的MySQL。因为书本上是MySQL的配套教程、但我们老师也说了Access。所以我优先做MySQL版本的,有时间再改成access版本。(其实大同小异)

		也是源码放到了文章里,导致本文太长,不想太麻烦的同学可以在这里下载
		当然是免费的,请随意下载,能再给一些建议最好不过了。
		哈!csdn居然改我的积分,我明明设置成的0积分,给我改成了4积分,佩服佩服!
		这样的话,我放到我的蓝奏云,小文件亲测好用,大家随意下载,给予点建议最好了
		转载请标明作者&出处
		https://pan.lanzou.com/b01bg0hsj
		密码:hhhh

正文

基于MySQL

  1.需求分析:
在这里插入图片描述
  2.设计思路:
    这个系统我将会分成5个部分,分别对应5个类(5个界面)。
        HomeFrame——主界面
        SigninFrame——注册界面
        RegisterFrame——登陆后的用户界面
        ManagerFrame——管理员界面
        UserFrame—— 用户界面

    1> HomeFramel类(主类、主界面)

public static void main(String[] args) 主方法
public void set()	设置显示在主界面的交互信息
public HomeFrame()	构造函数进行初始化
public void init()	初始化方法具体实现

public void actionPerformed(ActionEvent e)
为 注册 & 登录 两个按钮做事件响应。

void register()	void signin()
事件相应的具体方法,分别调用 注册 & 用户 界面 

												(以上是含有的方法)

第一部分源码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HomeFrame extends JFrame implements ActionListener {
    private JFrame frame;
    private JButton JB_register,JB_signin;  //注册、登录按钮
    private JTextArea JT_txt;
    private String txt;
    private Font font;
    private ActionListener listener1,listener2;
    
    void set(){
        txt="***********************************"+"\n\n"+"     欢迎使用建设银行自动取款机\n"+
        "       请您先进行登录或注册"+"\n\n"+"***********************************";
        font=new Font("楷体",Font.PLAIN,20);
    }
    //构造函数
    public HomeFrame(){
        set();
        init();//初始化
    }

    //初始化方法
    void init(){
        frame=new JFrame("ATM机系统");
        frame.setBounds(700,300,500,500);
        frame.setLayout(null);

        JB_signin=new JButton("注册");
        frame.add(JB_signin);
        JB_signin.setBounds(120,300,80,30);
        JB_signin.addActionListener(this);//注册
        JB_register=new JButton("登录");
        frame.add(JB_register);
        JB_register.setBounds(300,300,80,30);
        JB_register.addActionListener(this);//登录

        JT_txt=new JTextArea(txt);
        frame.add(JT_txt);
        JT_txt.setBounds(75,50,350,140);
        JT_txt.setFont(font);
        JT_txt.setBackground(Color.orange);
        JT_txt.isDisplayable();

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args){
        HomeFrame frame=new HomeFrame();
    }

    public void actionPerformed(ActionEvent e){
        if(e.getSource()==JB_register){
            register();
        }else if(e.getSource()==JB_signin){
            signin();
        }
    }

    //登录
    void register(){
        RegisterFrame f1=new RegisterFrame();
    }
    void signin(){
        SigninFrame f2=new SigninFrame();
    }
}

    2> SigninFrame类(注册界面)

public void set()	设置显示在主界面的交互信息
public SigninFrame()	构造函数进行初始化
public void init()	初始化方法具体实现

public void actionPerformed(ActionEvent e)
对 确认按钮 进行事件响应,规范了注册信息
	实现了
	1.有未填的空项目,不予注册
	2.账户重复的,不予注册
	3.账户格式不规范的,不予注册
	4.密码与确认密码不符的,不予注册
	5.注册成功进行提示
	
public void signin(SigninFrame x)
实现注册的数据库操作
public boolean myequals(SigninFrame x)
判断账户是否重复

												(以上是含有的方法)

第二部分源码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;


public class SigninFrame extends JFrame implements ActionListener {
    private JFrame frame1;
    private JLabel info,JL_1,JL_2,JL_3,JL_4;
    private JTextField JT_1,JT_2,JT_3,JT_4;
    private JButton JB_ok;
    ActionListener listener;

    public void set(){
        info=new JLabel();
        info.setText("    注意!!账号开头不可为1,且项目不可为空");
    }
    public SigninFrame(){
        set();
        init();
    }
    public void init(){
        frame1=new JFrame("账户注册");
        frame1.setBounds(700,300,500,500);
        frame1.setLayout(new GridLayout(10,1));


        info.setFont(new Font("楷体",Font.BOLD,20));
        frame1.add(info);
        frame1.add(JL_1=new JLabel("账号"));
        JL_1.setFont(new Font("宋体",Font.PLAIN,15));
        frame1.add(JT_1=new JTextField());
        frame1.add(JL_2=new JLabel("姓名"));
        JL_2.setFont(new Font("宋体",Font.PLAIN,15));
        frame1.add(JT_2=new JTextField());
        frame1.add(JL_3=new JLabel("密码"));
        JL_3.setFont(new Font("宋体",Font.PLAIN,15));
        frame1.add(JT_3=new JTextField());
        frame1.add(JL_4=new JLabel("再次确认密码"));
        JL_4.setFont(new Font("宋体",Font.PLAIN,15));
        frame1.add(JT_4=new JTextField());
        frame1.add(JB_ok=new JButton("OK"));
        JB_ok.addActionListener(this);
        frame1.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        frame1.setVisible(true);
    }

    //事件响应,规范输入的信息
    public void actionPerformed(ActionEvent e){
        if(JT_1.getText().equals("")&&JT_2.getText().equals("")&&JT_3.getText().equals("")&&JT_4.getText().equals("")) {
            JOptionPane.showMessageDialog(this,
                    "您有未输入的项目,请将信息填完整。", "警告!!", JOptionPane.WARNING_MESSAGE);
        }
        else if(myequals(this)){
            JOptionPane.showMessageDialog(this,
                    "您输入的账号已被人占用,请更换","警告!!",JOptionPane.WARNING_MESSAGE);

        }
        else if((JT_1.getText().charAt(0)=='1')){
            JOptionPane.showMessageDialog(this,
                    "您输入的账号与格式不匹配,请阅读提示重新输入。","警告!!",JOptionPane.WARNING_MESSAGE);
        }
        else if(!(JT_3.getText().equals(JT_4.getText()))) {
            JOptionPane.showMessageDialog(this,
                    "您两次输入的密码不匹配,请重新输入。","警告!!",JOptionPane.WARNING_MESSAGE);
        }
        else{
            signin(this);
            qing();
            JOptionPane.showMessageDialog(this,
                    "您的账号注册成功","提示",JOptionPane.INFORMATION_MESSAGE);


        }
    }
    //注册操作(单独分离出一个函数来写入数据库)高内聚,低耦合。
    public void signin(SigninFrame x){

        Connection conn;
        String s="('"+x.JT_1.getText()+"','"+JT_2.getText()+"','"+JT_3.getText()+"','0')";

        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            int i=stat.executeUpdate("insert into 用户 values"+s);

        }catch(Exception e){
            System.out.println("##异常1");
        }
    }

    //判断账号是否重复
    public boolean myequals(SigninFrame x){
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号 FROM 用户");
            while(re.next()){
                if(x.JT_1.getText().equals(re.getString(1))){
                    return true;
                }
            }
        }catch(Exception e){
            System.out.println("##异常2");
            return true;
        }

        return false;
    }

    public void qing(){
        JT_1.setText("");
        JT_2.setText("");
        JT_3.setText("");
        JT_4.setText("");
    }
}

    3> RegisterFrame(登陆界面)

public void init()	初始化方法具体实现
public void actionPerformed(ActionEvent e)
事件响应
public boolean bi(RegisterFrame x)
登陆账号判定

第三部分源码

import com.sun.crypto.provider.PBEWithMD5AndDESCipher;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class RegisterFrame extends JFrame implements ActionListener{
    JFrame frame2;
    JButton JB_ok;
    JLabel JL_1,JL_2;
    JTextField JT_1,JT_2;
    JTextArea JT_3;
    ActionListener listener;

    void set(){
        String x="          注意!\n   账号是1开头的为管理\n员账户,其余为普通用户账户\n   仅有一个管理员账户:\n 账户:101    密码:13";
        JT_3.setFont(new Font("楷体",Font.PLAIN,15));
        JT_3.setText(x);
    }

    //初始化
    void init(){
        frame2=new JFrame("登录");
        frame2.setBounds(700,300,350, 350);
        frame2.setLayout(null);

        JT_1=new JTextField();
        JT_2=new JTextField();
        JT_3=new JTextArea();
        JL_1=new JLabel("账号");
        JL_2=new JLabel("密码");
        JB_ok=new JButton("OK");
        frame2.add(JL_1);
        JL_1.setBounds(50,20,30,30);
        frame2.add(JT_1);
        JT_1.setBounds(100,20,150,25);
        frame2.add(JL_2);
        JL_2.setBounds(50,60,30,30);
        frame2.add(JT_2);
        JT_2.setBounds(100,60,150,25);
        frame2.add(JB_ok);
        JB_ok.setBounds(90,110,100,30);
        frame2.add(JT_3);
        JT_3.setBackground(Color.orange);
        JT_3.setBounds(50,150,200,100);
        JB_ok.addActionListener(this);

        frame2.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        frame2.setVisible(true);
    }
    public RegisterFrame(){
        init();
        set();
    }
    public void actionPerformed(ActionEvent e){
        if(bi(this)){
            if(JT_1.getText().charAt(0)=='1'){
                frame2.dispose();
                JOptionPane.showMessageDialog(this,
                        "您的账号登录成功,已经进入管理员界面","提示",JOptionPane.INFORMATION_MESSAGE);
                ManagerFrame a=new ManagerFrame();
            }else{
                frame2.dispose();
                JOptionPane.showMessageDialog(this,
                        "您的账号登录成功,已经进入用户界面","提示",JOptionPane.INFORMATION_MESSAGE);
                UserFrame b=new UserFrame(JT_1.getText());
            }
        }else{
            JOptionPane.showMessageDialog(this,
                    "您输入的账户不存在或密码出错。", "警告!!", JOptionPane.WARNING_MESSAGE);
        }
    }
    //账号登陆判定
    public boolean bi(RegisterFrame x){
        int ee=0;
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号,密码 FROM 用户");
            while(re.next()){
                if(x.JT_1.getText().equals(re.getString(1))&&x.JT_2.getText().equals(re.getString(2))){
                    return true;
                }
            }

        }catch(Exception e){
            System.out.println("##异常3");
        }
        return false;
    }
}

    4>ManagerFrame(登陆界面)

public ManagerFrame() 构造方法
public void init(d)	初始化方法具体实现
public void actionPerformed(ActionEvent e)
事件响应
public String  cha(ManagerFrame x) 
查询功能

第四部分源码

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ManagerFrame extends JFrame implements ActionListener {
    JFrame frame4;
    JButton JB_cha;
    JTextArea JT;
    ActionListener listener;

    public ManagerFrame(){
        init();
    }

    void init(){
        frame4=new JFrame("管理员:101");
        frame4.setBounds(700,300,500,500);
        frame4.setLayout(null);

        JB_cha=new JButton("查询");
        frame4.add(JB_cha);
        JB_cha.setBounds(10,10,70,30);
        JB_cha.addActionListener(this);
        JT=new JTextArea();
        frame4.add(JT);
        JT.setBounds(10,50,400,350);


        frame4.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        frame4.setVisible(true);
    }

    public void actionPerformed(ActionEvent e){
        JT.setText(cha(this));
    }

    public String  cha(ManagerFrame x) {
        String s = "账号\t姓名\t密码\t余额\n";
        Connection conn;
        try {
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri = "jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user = "root"; //用户名
            String password = "145467";//密码
            conn = DriverManager.getConnection(uri, user, password);            //2.连接数据库

            Statement stat = conn.createStatement();
            ResultSet re = stat.executeQuery("SELECT 账号,姓名,密码,余额 FROM 用户");
            while (re.next()) {
                if(re.getString(2).equals("管理员")){

                }else{
                    s += re.getString(1) + "\t";
                    s += re.getString(2) + "\t";
                    s += re.getString(3) + "\t";
                    s += re.getString(4) + "\t";
                    s += "\n";
                }
            }
            return s;

        } catch (Exception e) {
            return "查询异常";
        }
    }
}

    5>UserFrame(登陆界面)

public void init()	初始化方法具体实现
public void actionPerformed(ActionEvent e)
事件响应
public void cun(UserFrame x)
public  void qu(UserFrame x)
public void cha(UserFrame x)
	存、取、查

第五部分源码

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class UserFrame extends JFrame implements ActionListener{
    String zhanghu;
    JFrame frame3;
    JButton JB_1,JB_2,JB_3,JB_4;
    JTextField JT_1,JT_2,JT_41,JT_42,JT_3;
    JLabel JL_1,JL_2;
    ActionListener listener1,listener2,listener,listener4;

    public UserFrame(String name){
        zhanghu=name;
        init(name);
    }
    public void init(String name){
        frame3=new JFrame("用户:"+name);
        frame3.setBounds(700,300,350, 350);
        frame3.setLayout(null);

        JB_1=new JButton("存钱");
        frame3.add(JB_1);
        JB_1.setBounds(20,20,80,20);
        JB_1.addActionListener(this);
        JT_1=new JTextField();
        frame3.add(JT_1);
        JT_1.setBounds(120,20,160,20);

        JB_2=new JButton("取钱");
        frame3.add(JB_2);
        JB_2.setBounds(20,60,80,20);
        JB_2.addActionListener(this);
        JT_2=new JTextField();
        frame3.add(JT_2);
        JT_2.setBounds(120,60,160,20);

        JB_3=new JButton("查询");
        frame3.add(JB_3);
        JB_3.setBounds(20,100,80,20);
        JB_3.addActionListener(this);
        JT_3=new JTextField();
        frame3.add(JT_3);
        JT_3.setBounds(120,100,160,20);

        JB_4=new JButton("转账");
        frame3.add(JB_4);
        JB_4.setBounds(20,140,80,20);
        JB_4.addActionListener(this);
        JL_1=new JLabel("输入转给的账户:");
        frame3.add(JL_1);
        JL_1.setBounds(20,180,110,20);
        JT_41=new JTextField();
        frame3.add(JT_41);
        JT_41.setBounds(120,180,120,20);
        JL_1=new JLabel("输入转账金额:");
        frame3.add(JL_1);
        JL_1.setBounds(20,220,110,20);
        JT_42=new JTextField();
        frame3.add(JT_42);
        JT_42.setBounds(120,220,120,20);

        frame3.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        frame3.setVisible(true);
    }

    public void actionPerformed(ActionEvent e){
        if(e.getSource()==JB_1){
            if(JT_1.getText()==""){
                JOptionPane.showMessageDialog(this,
                        "未输入存钱数目!","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }else if(JT_1.getText().equals("")){
                JOptionPane.showMessageDialog(this,
                        "存储金额未填","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }
            else if(JT_1.getText().charAt(0)=='-'){
                JOptionPane.showMessageDialog(this,
                        "存储金额须为正整数","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }
            else{
                cun(this);//1代表存钱
                JT_1.setText("");
            }
        }
        else if(e.getSource()==JB_2){
            if(JT_1.getText()==""){
                JOptionPane.showMessageDialog(this,
                        "未输入取钱数目!","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }
            else if(JT_1.getText().equals("")){
                JOptionPane.showMessageDialog(this,
                        "取款金额未填","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }
            else if(JT_1.getText().charAt(0)=='-'){
                System.out.println("2");
                JOptionPane.showMessageDialog(this,
                        "取款金额须为正整数","警告!!",JOptionPane.INFORMATION_MESSAGE);
            }
            else{
                qu(this);//0代表取钱
                JT_2.setText("");
            }
        }
        else if(e.getSource()==JB_3){
            cha(this);
        }
        else if(e.getSource()==JB_4){
            if(JT_41.getText().equals("")||JT_42.getText().equals("")){
                JOptionPane.showMessageDialog(this,
                        "请输入转给的账号和金额", "提示", JOptionPane.WARNING_MESSAGE);
            }
            else if(JT_41.getText().equals(zhanghu)){
                JOptionPane.showMessageDialog(this,
                        "不可以给自己转账,我怀疑你想空手套白狼", "警告!", JOptionPane.WARNING_MESSAGE);
            }/*else if(JT_42.getText().equals("^[0-9]+$")){
                JOptionPane.showMessageDialog(this,
                        "转账金额请输入正整数", "警告!", JOptionPane.WARNING_MESSAGE);*/
            else{
                zhuan(this);
            }
        }
    }

    //      存 钱
    public void cun(UserFrame x){
        String xin,jiu="";
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            Statement sta=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号,余额 FROM 用户");
            while(re.next()){
                if(re.getString(1).equals(x.zhanghu)){
                    jiu=re.getString(2);
                }
            }
            xin=Integer.toString((Integer.parseInt(x.JT_1.getText())+Integer.parseInt(jiu)));
            sta.executeUpdate("update 用户 set 余额=" + xin + " where 账号=" + "'" + x.zhanghu + "'");
            JOptionPane.showMessageDialog(this,
                    "存款成功,余额为:"+xin+"元", "提示", JOptionPane.WARNING_MESSAGE);
        }catch(Exception e){
            JOptionPane.showMessageDialog(this,
                    "存储金额要为正整数","警告!!" , JOptionPane.WARNING_MESSAGE);
        }
    }
    public  void qu(UserFrame x){
        String xin="",jiu="";
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号,余额 FROM 用户");
            while(re.next()){
                if(re.getString(1).equals(x.zhanghu)){
                    jiu=re.getString(2);
                }
            }
            int i=Integer.parseInt(jiu)-Integer.parseInt(x.JT_2.getText());

            if(i<0){
                JOptionPane.showMessageDialog(this,
                        "余额不足!", "警告!!", JOptionPane.WARNING_MESSAGE);
            }else if(i>=0){
                xin = Integer.toString(i);
                stat.execute("update 用户 set 余额=" + xin + " where 账号=" + "'" + x.zhanghu + "'");
                JOptionPane.showMessageDialog(this,
                        "取款成功,余额为"+xin+"元", "提示", JOptionPane.WARNING_MESSAGE);
            }
        }catch(Exception e){
            JOptionPane.showMessageDialog(this,
                    "取款金额要为正整数","警告!!" , JOptionPane.WARNING_MESSAGE);
        }
    }
    public void cha(UserFrame x){
        String jiu="";
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            Statement sta=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号,余额 FROM 用户");
            while(re.next()){
                if(re.getString(1).equals(x.zhanghu)){
                    jiu=re.getString(2);
                }
            }
            x.JT_3.setText(jiu+"元");
        }catch (Exception e){
            System.out.println("异常");
        }

    }
    public void zhuan(UserFrame x){
        String jiu="",xin="",xin1="",jiu1="";
        Connection conn;
        try{
            Class.forName("com.mysql.jdbc.Driver"); //1.加载MySql驱动
            String uri="jdbc:mysql://localhost:3306/bank?useSSL=false&serverTimezone=UTC"; //连接到数据库,包括主机名,数据库名

            String user="root"; //用户名
            String password="145467";//密码
            conn = DriverManager.getConnection(uri,user,password);			//2.连接数据库

            Statement stat=conn.createStatement();
            ResultSet re=stat.executeQuery("SELECT 账号,余额 FROM 用户");
            while(re.next()){
                if(re.getString(1).equals(x.zhanghu)){
                    jiu=re.getString(2);
                }
                if(re.getString(1).equals(x.JT_41.getText())){
                    jiu1=re.getString(2);
                }
            }
            if(jiu1.equals("")){
                JOptionPane.showMessageDialog(this,
                        "请输入正确的账号", "警告!!", JOptionPane.WARNING_MESSAGE);
            }else{
                int yu=Integer.parseInt(jiu)-Integer.parseInt(x.JT_42.getText());
                int yu1=Integer.parseInt(jiu1)+Integer.parseInt(x.JT_42.getText());
                if(yu<0){
                    JOptionPane.showMessageDialog(this,
                            "余额不足!","警告!!" , JOptionPane.WARNING_MESSAGE);
                }else{
                    xin = Integer.toString(yu);
                    xin1= Integer.toString(yu1);
                    stat.execute("update 用户 set 余额=" + xin + " where 账号=" + "'" + x.zhanghu + "'");
                    stat.execute("update 用户 set 余额=" + xin1 + " where 账号=" + "'" + x.JT_41.getText()+ "'");
                    JOptionPane.showMessageDialog(this,
                            "转账成功,余额为:"+xin+"元","提示" , JOptionPane.WARNING_MESSAGE);
                }
            }

        }catch (Exception e){
            JOptionPane.showMessageDialog(this,
                    "转账金额要为正整数","警告!!" , JOptionPane.WARNING_MESSAGE);
        }
    }
}


  这样一个ATM机系统就可。

后记

  写完了之后,才觉得代码部分有很多可以优化的,很多能复用的代码,写了很多遍。但是我当时是完全想不到的,还是宏观意识不够,逻辑不是特别清楚,继续加油吧!
  这个系统的配套源码和数据库表or文件,后续我会上传在CSDN上。有兴趣的同学可以看看,也希望大佬指正不足。

   点个赞再走呗。

猜你喜欢

转载自blog.csdn.net/weixin_45794390/article/details/106199179