Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统


一、系统介绍

1.系统功能

1.登录系统
2.注册系统
3.取款
4.存款
5.转账
6.余额查询
7.退出系统

2.环境配置

JDK版本:1.8
Mysql:5.7

3.数据库

/*
SQLyog Enterprise v12.09 (64 bit)
MySQL - 5.7.14 : Database - swing_atm
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`swing_atm` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `swing_atm`;

/*Table structure for table `account` */

DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (
  `accountNo` int(11) NOT NULL,
  `pwd` int(1) NOT NULL,
  `aName` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `balance` double(255,2) DEFAULT NULL,
  PRIMARY KEY (`accountNo`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

/*Data for the table `account` */

insert  into `account`(`accountNo`,`pwd`,`aName`,`balance`) values (1,1,'张三',99.00),(2,2,'李四',346.00),(3,3,'xx',0.00);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;



4.工程截图

在这里插入图片描述

二、系统展示

1.登录页

在这里插入图片描述

1.1登录成功

在这里插入图片描述

2.注册系统

在这里插入图片描述

3.取款

在这里插入图片描述

3.1取款成功

在这里插入图片描述

4.存款

在这里插入图片描述

4.1 存款成功

在这里插入图片描述

5.转账

在这里插入图片描述

6.余额查询

在这里插入图片描述

7.退出系统

在这里插入图片描述

三、部分代码

DBUtil.java

package cn.com.cdp.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class DBUtil {
    private static String driverName = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/swing_atm?characterEncoding=utf8";
    private static String userName = "root";
    private static String password = "root";
    private Connection conn;
    private Statement stmt;
 
    public DBUtil() {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 连接数据库
     * 
     * @return
     * @throws SQLException
     */
    public Connection getConnection() throws SQLException {
        conn=DriverManager.getConnection(url, userName, password);
        return conn;
    }
    
 
    /**
     * @param sql 查询语句
     * @param conn 连接名
     * @param params 设置的字段
     * @return 返回结果集
     * @throws SQLException
     */ 
    public ResultSet executeQuery(String sql,Object[] params) throws SQLException {
    	 //获取预处理对象
        PreparedStatement ps = conn.prepareStatement(sql);
        //设置参数
        for (int i = 0; i < params.length; i++) {
            ps.setObject(i+1,params[i]);
        }
        return ps.executeQuery();
    	
    }
    
    /**
    *
    * @param sql cud语句
    * @param conn 连接名
    * @param params 设置的字段
    * @throws SQLException
    */
    public int executeUpdate(String sql,Object[] params) throws SQLException {
    	 //获取预处理对象
        PreparedStatement ps = conn.prepareStatement(sql);
        //设置参数
        for (int i = 0; i < params.length; i++) {
            ps.setObject(i+1,params[i]);
        }
        return ps.executeUpdate();
    }
    /**
     * 释放资源
     */
    public void closeAll() {
        try {
            if (conn != null) {
                conn.close();
            }
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
}

LoginFrame.java

package cn.com.cdp.view;


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

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;

import cn.com.cdp.model.Account;
import cn.com.cdp.dao.AccountDao;
 
//登录窗口
public class LoginFrame extends JFrame {
	// 主面板
	private JPanel p;
	// 标签
	private JLabel lblName, lblPwd;
	// 用户名,文本框
	private JTextField txtAccount;
	// 密码,密码框
	private JPasswordField txtPwd;
	// 确认、取消和注册,按钮
	private JButton btnOk, btnCancle, btnRegist;
	// 登录用户
	private static Account account;
 
	public static Account getAccount() {
		return account;
	}
 
	public static void setAccount(Account account) {
		LoginFrame.account = account;
	}
 
	// 账户DAO类
	private AccountDao accountDao;
 
	// 构造方法
	public LoginFrame() {
		super("ATM自助存取款机");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 实例化用户业务类对象
		accountDao = new AccountDao();
 
		// 实例化组件
		p = new JPanel();
		// 使用null布局
		p.setLayout(null);
		lblName = new JLabel("账户:");
		lblPwd = new JLabel("密码:");
		txtAccount = new JTextField(20);
		txtPwd = new JPasswordField(20);
		txtPwd.setEchoChar('*');
 
		btnOk = new JButton("登录");
		btnOk.addActionListener(new LoginListener());
 
		btnCancle = new JButton("重置");
		btnCancle.addActionListener(new ResetListener());
 
		btnRegist = new JButton("注册");
		btnRegist.addActionListener(new RegistListener());
 
		lblName.setBounds(30, 40, 95, 25);
		lblPwd.setBounds(30, 105, 83, 40);
		txtAccount.setBounds(140, 40, 250, 35);
		txtPwd.setBounds(140, 108, 250, 35);
		btnOk.setBounds(75, 191, 75, 35);
		btnCancle.setBounds(211, 191, 75, 35);
		btnRegist.setBounds(351, 191, 75, 35);
 
		p.add(lblName);
		p.add(txtAccount);
		p.add(lblPwd);
		p.add(txtPwd);
		p.add(btnOk);
		p.add(btnCancle);
		p.add(btnRegist);
 
		// 主面板放入窗体中
		getContentPane().add(p);
		// 设置窗体大小和位置
		this.setSize(488, 343);
		// 设置窗口在屏幕中央
		this.setLocationRelativeTo(null);
		// 设置窗体初始可见
		this.setVisible(true);
	}
 
	// 监听类,负责处理登录按钮
	public class LoginListener implements ActionListener {
		// 重写actionPerFormed()方法,事件处理逻辑
		public void actionPerformed(ActionEvent e) {
			System.out.println("==========="+txtAccount.getText());
			
			if("".equals(txtAccount.getText())) {
				JOptionPane.showMessageDialog(null, "账户不能为空", "错误提示", JOptionPane.WARNING_MESSAGE);
				return;
			}
			
			
			
			// 根据账户查询用户
			account = accountDao.findAccByNo(Integer.parseInt(txtAccount.getText().trim()));
			// 判断用户是否存在
			if ( null!= account) {
				
				
				
				// 判断输入的密码是否正确
				if (account.getPwd() == Integer.parseInt(new String(txtPwd.getPassword()))) {
					// 登录成功,隐藏登录窗口
					LoginFrame.this.setVisible(false);
					// 显示主窗口
					new MainFrame(account).setVisible(true);
				} else {
					// 输出提示信息
					// System.out.println("密码错误!请重新输入!");
					JOptionPane.showMessageDialog(null, "密码错误!请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
					// 清空密码框
					txtPwd.setText("");
				}
			} else {
				// 输出提示信息
				// System.out.println("该用户不存在,请先注册!");
				JOptionPane.showMessageDialog(null, "该用户不存在,请先注册!", "错误提示", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
 
	// 监听类,负责处理重置按钮
	public class ResetListener implements ActionListener {
		// 重写actionPerFormed()方法,事件处理方法
		@Override
		public void actionPerformed(ActionEvent e) {
			// 清空文本框
			txtAccount.setText("");
			txtPwd.setText("");
		}
	}
 
	// 监听类,负责处理注册按钮
	public class RegistListener implements ActionListener {
		// 重写actionPerFormed()方法,事件处理方法
		public void actionPerformed(ActionEvent e) {
			// 创建注册窗口
			new RegistFrame().setVisible(true);
 
		}
	}
 
	// 主程序,整个应用程序的入口
	public static void main(String[] args) {
		new LoginFrame();
	}
}




Account.java

package cn.com.cdp.model;

public class Account {
	private int accountNo;
	
	private int pwd;
	
	private String aName;
	
	private double balance;
	
	

	public Account() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Account(int accountNo, int pwd, String aName, double balance) {
		super();
		this.accountNo = accountNo;
		this.pwd = pwd;
		this.aName = aName;
		this.balance = balance;
	}

	public int getAccountNo() {
		return accountNo;
	}

	public void setAccountNo(int accountNo) {
		this.accountNo = accountNo;
	}

	public int getPwd() {
		return pwd;
	}

	public void setPwd(int pwd) {
		this.pwd = pwd;
	}

	public String getaName() {
		return aName;
	}

	public void setaName(String aName) {
		this.aName = aName;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}
	
	
	
}




四、其他

获取源码

点击以下链接获取源码,数据库文件在swing_atm.sql文件里面。

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值