java大作业 ATM存款机
英语能力不强 变量 包名 类名 方法名 起名并不规范 请谅解
使用时注意打包
导入sql.jar文件
创建数据库表
程序启动入口
package ruansan.word.app;
import ruansan.word.jiemian.DengLuGui;
public class App {
// 启动程序
public static void main(String[] args) {
// TODO Auto-generated method stub
new DengLuGui();
}
}
登陆界面 输入用户名密码进入主界面
package ruansan.word.jiemian;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
import ruansan.word.shuju.Array;
import ruansan.word.yonghu.Preson;
//创建登陆界面
public class DengLuGui {
public static Preson ps = null;
private JFrame j;
private Button b1, b2;
private Label l1, l2;
private TextField tf;
private JPasswordField pas;
// 调用方法 初始化界面
public DengLuGui() {
inti();
}
// 初始化界面
public void inti() {
// 创建窗体
j = new JFrame("用户登陆");
// 创建窗体 初始大小
j.setBounds(500, 300, 350, 250);
// 可见
j.setVisible(true);
// 不使用布局管理器
j.setLayout(null);
// 关闭按钮
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
l1 = new Label("用户名:");
l1.setBounds(70, 40, 50, 25);
j.add(l1);
tf = new TextField();
tf.setBounds(130, 40, 100, 25);
j.add(tf);
l2 = new Label("密码:");
l2.setBounds(70, 75, 50, 25);
j.add(l2);
pas = new JPasswordField();
pas.setBounds(130, 75, 100, 25);
j.add(pas);
b1 = new Button("登陆");
b1.setBounds(70, 110, 50, 25);
j.add(b1);
b2 = new Button("退出");
b2.setBounds(140, 110, 50, 25);
j.add(b2);
mEvent();
}
// 注册监听器
private void mEvent() {
// 退卡直接终止虚拟机
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
// 登陆按钮
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 创建用户类 吧输入的账号密码存进去
Preson a = new Preson(tf.getText(), pas.getText(), 100);
// 取出数据中的值存入集合中
ArrayList<Preson> l = Array.way();
// 判断输入的账号密码是否正确 正确取出对象的姓名密码和钱
for (int i = 0; i < l.size(); i++) {
Preson aa = l.get(i);
if (a.getName().equals(aa.getName()) && a.getPass().equals(aa.getPass())) {
ps = aa;
new ZuoYeMain();
}
}
}
});
}
}
主界面
package ruansan.word.jiemian;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import ruansan.word.zsgcGui.AddBut;
import ruansan.word.zsgcGui.DeleteBut;
import ruansan.word.zsgcGui.SelectBut;
//创建主界面
public class ZuoYeMain {
private JFrame j;
private Button b1, b2, b3, b4;
// 调用方法 初始化界面
public ZuoYeMain() {
inti();
}
// 初始化界面
public void inti() {
// 创建窗体
j = new JFrame("操作界面");
// 创建窗体 初始大小
j.setBounds(500, 300, 300, 200);
// 可见
j.setVisible(true);
// 不使用布局管理器
j.setLayout(null);
// 关闭按钮
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1 = new Button("查询");
b1.setBounds(80, 40, 40, 30);
j.add(b1);
b2 = new Button("存款");
b2.setBounds(130, 40, 40, 30);
j.add(b2);
b3 = new Button("取款");
b3.setBounds(80, 80, 40, 30);
j.add(b3);
b4 = new Button("退卡");
b4.setBounds(130, 80, 40, 30);
j.add(b4);
Event();
}
// 注册监听器
public void Event() {
// 退卡直接终止虚拟机
b4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
// 查询余额事件 创建查询界面
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 创建查询界面
new SelectBut();
}
});
// 存钱事件 创建存钱界面
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 创建存钱界面
new AddBut();
}
});
// 取钱事件 创建取钱界面
b3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 创建取钱界面
new DeleteBut();
}
});
}
}
数据库连接 和对数据库数据的处理 数据库名为Test 密码1234 表名为pre
package ruansan.word.shuju;
import java.sql.*;
//连接数据据
public class JDBC {
// 开启连接
public static Connection getConnection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Test", "root", "1234");
return conn;
}
// 关闭连接
public static void release(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
// 关闭连接
public static void release(Statement stmt, ResultSet rs, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
}
对数据库数据处理
package ruansan.word.shuju;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import ruansan.word.jiemian.DengLuGui;
import ruansan.word.yonghu.Preson;
//数据处理类
public class Array {
// 建立数据库连接 吧值封装对象并存入集合
public static ArrayList<Preson> way() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
// 创建集合
ArrayList<Preson> arr = new ArrayList<Preson>();
try {
// 建立连接 执行sql查询语句
conn = JDBC.getConnection();
stmt = conn.createStatement();
String sql = "select * from pre";
rs = stmt.executeQuery(sql);
// 查询是否由内容
while (rs.next()) {
// 把sql的值整合成对象属性
Preson pp = new Preson();
pp.setName(rs.getString("name"));
pp.setPass(rs.getString("pass"));
pp.setMonkey(rs.getDouble("monkey"));
// 添加到arr集合中
arr.add(pp);
}
// 返回arr集合
return arr;
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBC.release(stmt, rs, conn);
}
return null;
}
// 刷新登陆对象钱的值每次进行存取查都刷新一次
public static double way2() {
// 调用way方法 取出返回的集合 并赋值给 集合l
ArrayList<Preson> l = way();
// 取出登陆界面的用户
Preson a = DengLuGui.ps;
for (int i = 0; i < l.size(); i++) {
Preson aa = l.get(i);
// 找到登陆时的用户 把用户的钱刷新 并且返回
if (a.getName().equals(aa.getName()) && a.getPass().equals(aa.getPass())) {
return aa.getMonkey();
}
}
return 0.0;
}
}
用户类
package ruansan.word.yonghu;
//建立用户类
public class Preson {
// 成员变量
private String name;
private String pass;
private double monkey = 0;
public Preson() {
}
// 构造方法
public Preson(String name, String pass, double monkey) {
this.monkey = monkey;
this.name = name;
this.pass = pass;
}
// 共有方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMonkey() {
return monkey;
}
public void setMonkey(double monkey) {
this.monkey = monkey;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
创建 存钱 取钱 查询方法
package ruansan.word.zsgc;
import java.sql.*;
import java.util.*;
import ruansan.word.jiemian.DengLuGui;
import ruansan.word.shuju.Array;
import ruansan.word.shuju.JDBC;
import ruansan.word.yonghu.Preson;
//取钱 存钱 查余额具体类
public class Zsgca {
// 获取登陆的对象
private Preson a = DengLuGui.ps;
public Zsgca() {
}
// 存钱方法 创建对象锁
public synchronized String addAdd(double monkey) {
// 刷新用户的余额 并把要存入的钱存入数据库
double d = Array.way2() + monkey;
// 获取sql主键
String s = a.getName();
Connection conn = null;
PreparedStatement pe = null;
try {
// 建立连接
conn = JDBC.getConnection();
// sql修改语句
String sql = "update pre set monkey='" + d + "'where name='" + s + "';";
pe = conn.prepareStatement(sql);
pe.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBC.release(pe, conn);
}
return "存钱成功存入的金额为" + monkey;
}
// 取钱方法 创建对象锁
public synchronized String addDelete(double monkey) {
// 刷新用户的余额
double d = Array.way2();
// 判断余额
if (d < monkey) {
return "对不起您的余额不足";
} else {
double dd = d - monkey;
// 获取sql主键
String s = a.getName();
Connection conn = null;
PreparedStatement pe = null;
try {
// 建立连接
conn = JDBC.getConnection();
// sql修改语句
String sql = "update pre set monkey='" + dd + "'where name='" + s + "';";
pe = conn.prepareStatement(sql);
pe.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBC.release(pe, conn);
}
return "取钱成功取钱金额为" + monkey;
}
}
// 查询方法 创建对象锁
public synchronized String addSelet() {
// 刷新用户的余额
double d = Array.way2();
return "您的余额为" + d;
}
}
存钱界面
package ruansan.word.zsgcGui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import ruansan.word.zsgc.Zsgca;
//存钱窗体
public class AddBut extends JFrame {
Zsgca z = new Zsgca();
//创建Gui界面所需的窗体 按钮 文本框 标题框
private JFrame j3;
private Button ba1, ba2;
private Label l;
private TextField tf;
public AddBut() {
//创建窗体
this.j3 = new JFrame("存钱");
//初始位置 和窗体大小
this.setBounds(500, 300, 300, 180);
//可见
this.setVisible(true);
//不使用布局
this.setLayout(null);
//关闭按钮
this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
ba1 = new Button("确定");
ba1.setBounds(50, 70, 40, 25);
this.add(ba1);
ba2 = new Button("返回");
ba2.setBounds(110, 70, 50, 25);
this.add(ba2);
l = new Label("输入存入的金额:");
l.setBounds(50, 30, 100, 25);
this.add(l);
tf = new TextField();
tf.setBounds(160, 30, 70, 25);
this.add(tf);
aEvent();
}
// 注册监听器
private void aEvent() {
// 返回按钮
ba2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//返回不可见
j3.setVisible(false);
}
});
// 确定按钮 调用存钱方法
ba1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//获取文本框的内容
String s = tf.getText();
//转换成数值型
double monkey = Double.parseDouble(s);
//调用存钱方法
String d = z.addAdd(monkey);
//输出存钱结果
JOptionPane.showMessageDialog(j3, d);
}
});
}
}
取钱界面
package ruansan.word.zsgcGui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import ruansan.word.zsgc.Zsgca;
//取钱窗体
public class DeleteBut extends JFrame {
// 创建Gui界面所需的窗体 按钮 文本框 标题框
Zsgca z = new Zsgca();
private JFrame j4;
private Button bd1, bd2;
private Label l;
private TextField tf2;
public DeleteBut() {
inti();
}
private void inti() {
// 创建窗体
j4 = new JFrame("取钱");
// 初始位置 和窗体大小
j4.setBounds(900, 300, 300, 180);
// 可见
j4.setVisible(true);
// 不使用布局
j4.setLayout(null);
// 关闭按钮
j4.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
bd1 = new Button("确定");
bd1.setBounds(50, 70, 40, 25);
j4.add(bd1);
bd2 = new Button("返回");
bd2.setBounds(110, 70, 50, 25);
j4.add(bd2);
l = new Label("输入取出的金额:");
l.setBounds(50, 30, 100, 25);
j4.add(l);
tf2 = new TextField();
tf2.setBounds(160, 30, 70, 25);
j4.add(tf2);
dEvent();
}
// 注册监听器
private void dEvent() {
bd2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 返回不可见
j4.setVisible(false);
}
});
// 确定按钮 调用取钱方法
bd1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取文本框的内容
String s = tf2.getText();
// 转换成数值型
double monkey = Double.parseDouble(s);
// 调用取钱方法
String d = z.addDelete(monkey);
// 输出结果
JOptionPane.showMessageDialog(j4, d);
}
});
}
}
查询界面
package ruansan.word.zsgcGui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import ruansan.word.zsgc.Zsgca;
//查询窗体
public class SelectBut {
// 创建Gui界面所需的窗体 按钮 文本框 标题框
Zsgca z = new Zsgca();
private JFrame j5;
private Button bs1, bs2;
private TextField tf3;
public SelectBut() {
inti();
}
private void inti() {
// 创建窗体
j5 = new JFrame("查询");
// 初始位置 和窗体大小
j5.setBounds(1300, 300, 300, 180);
// 可见
j5.setVisible(true);
// 不使用布局
j5.setLayout(null);
// 关闭按钮
j5.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
bs1 = new Button("查询");
bs1.setBounds(50, 70, 40, 25);
j5.add(bs1);
bs2 = new Button("返回");
bs2.setBounds(110, 70, 50, 25);
j5.add(bs2);
tf3 = new TextField();
tf3.setBounds(50, 30, 150, 30);
j5.add(tf3);
sEvent();
}
// 注册监听器
private void sEvent() {
// 返回按钮
bs2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 返回不可见
j5.setVisible(false);
}
});
// 确定按钮
bs1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 调用查询方法
String s = z.addSelet();
// 吧查询的值放入文本框中
tf3.setText(s);
}
});
}
}