Eclipse+Java+Swing+Mysql实现自助存取款机ATM系统
- 一、系统介绍
- 1.系统功能
- 2.环境配置
- 3.数据库
- 4.工程截图
- 二、系统展示
- 1.登录页
- 1.1登录成功
- 2.注册系统
- 3.取款
- 3.1取款成功
- 4.存款
- 4.1 存款成功
- 5.转账
- 6.余额查询
- 7.退出系统
- 三、部分代码
- DBUtil.java
- LoginFrame.java
- Account.java
- 四、其他
- 获取源码
一、系统介绍
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实现图书管理系统源码