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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDSClaw,2核4GB
简介: Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统

BalanceDAO.java

package dao;
import java.sql.ResultSet;
import db.DBUtil;
import entity.Account;
public class BalanceDAO {
  public void balanceDao(int accountNo) throws Exception {
    DBUtil db = new DBUtil();
    // 连接数据库
    db.getConnection();
    // 查询语句:根据账户查询余额
    String sql = "SELECT balance FROM account WHERE accountNo=" + accountNo;
    // 执行查询语句并且保存结果集
    ResultSet rs = db.executeQuery(sql, null);
    // 遍历输出查询结果
    while (rs.next()) {
      System.out.println("您好!您的账户目前余额为:" + rs.getDouble(1) + "元!");
    }
    // 关闭数据库连接,释放资源
    db.closeAll();
  }
  // 查询余额返回daoUI界面,返回String类型的值
  public String balanceDaoForUI(Account account) throws Exception {
    DBUtil db = new DBUtil();
    // 连接数据库
    db.getConnection();
    // 查询语句:根据账户查询余额
    String sql = "SELECT balance FROM account WHERE accountNo=" + account.getAccountNo();
    // 执行查询语句并且保存结果集
    ResultSet rs = db.executeQuery(sql, null);
    String balance = null;
    // // 遍历输出查询结果
    while (rs.next()) {
      // System.out.println("您好!您的账户目前余额为:" + rs.getDouble(1) + "元!");
      balance = rs.getDouble(1) + "";
    }
    // 关闭数据库连接,释放资源
    db.closeAll();
    return balance;
  }
}

LoginFrame.java

package view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
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 dao.AccountDAO;
import entity.Account;
//import com.qst.dms.entity.User;
//import com.qst.dms.service.UserService;
//登录窗口
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) {
      // 根据账户查询用户
      account = accountDao.findAccByNo(Integer.parseInt(txtAccount.getText().trim()));
      // 判断用户是否存在
      if (account != null) {
        // 判断输入的密码是否正确
        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();
  }
}

RegistFrame.java

package view;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
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 javax.swing.border.EmptyBorder;
import javax.swing.plaf.synth.SynthSeparatorUI;
import dao.AccountDAO;
import dao.RegisterDAO;
import entity.Account;
public class RegistFrame extends JFrame {
  private JPanel contentPane;
  private JTextField textAccount;
  private JPasswordField textPwd;
  private JPasswordField textPwd1;
  private JTextField textName;
  /**
   * Launch the application.
   */
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          RegistFrame frame = new RegistFrame();
          frame.setVisible(true);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }
  /**
   * Create the frame.
   */
  public RegistFrame() {
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setFont(new Font("宋体", Font.PLAIN, 12));
    setTitle("注册");
    // setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 561, 414);
    setLocationRelativeTo(null);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
    JPanel panel = new JPanel();
    contentPane.add(panel, BorderLayout.CENTER);
    panel.setLayout(null);
    JLabel label = new JLabel("账 户:");
    label.setFont(new Font("宋体", Font.PLAIN, 18));
    label.setBounds(50, 35, 81, 21);
    panel.add(label);
    textAccount = new JTextField();
    textAccount.setBounds(146, 30, 243, 32);
    panel.add(textAccount);
    textAccount.setColumns(10);
    JLabel label_1 = new JLabel("密 码:");
    label_1.setFont(new Font("宋体", Font.PLAIN, 18));
    label_1.setBounds(50, 147, 81, 21);
    panel.add(label_1);
    JLabel label_2 = new JLabel("确认密码:");
    label_2.setFont(new Font("宋体", Font.PLAIN, 18));
    label_2.setBounds(50, 206, 101, 32);
    panel.add(label_2);
    JButton btnNewButton = new JButton("注册");
    btnNewButton.setFont(new Font("宋体", Font.PLAIN, 18));
    btnNewButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String accountNo = textAccount.getText();
        String name = textName.getText();
        String pwd = new String(textPwd.getPassword());
        String pwd1 = new String(textPwd1.getPassword());
        if (null == accountNo || "".equals(accountNo)) {
          JOptionPane.showMessageDialog(null, "账户不能为空!", "输入错误", JOptionPane.ERROR_MESSAGE);
          return;
        }
        if (null == name || "".equals(name)) {
          JOptionPane.showMessageDialog(null, "账户姓名不能为空!", "输入错误", JOptionPane.ERROR_MESSAGE);
          return;
        }
        if (null == pwd || "".equals(pwd) || null == pwd1 || "".equals(pwd1)) {
          JOptionPane.showMessageDialog(null, "密码不能为空!", "输入错误", JOptionPane.ERROR_MESSAGE);
          return;
        } else if (!(pwd.equals(pwd1))) {
          JOptionPane.showMessageDialog(null, "两次输入密码不一样!", "输入错误", JOptionPane.ERROR_MESSAGE);
          return;
        }
        // 进行数据库注册
        Account account1 = new Account(Integer.parseInt(accountNo), Integer.parseInt(pwd), name, 0);
        // 创建注册账户DAO对象
        RegisterDAO rs = new RegisterDAO();
        // 调用注册方法registerDao(),进行数据库中的新增账户操作
        try {
          // DAO方法返回true才提示注册成功
          boolean temp = rs.registerDao(account1);
          if (temp) {
            JOptionPane.showMessageDialog(null, "注册成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
            // 注册成功,关闭注册窗口
            dispose();
          } else {
            JOptionPane.showMessageDialog(null, "账户已经存在!注册失败!", "错误提示", JOptionPane.ERROR_MESSAGE);
          }
        } catch (Exception e1) {
          e1.printStackTrace();
        }
      }
    });
    btnNewButton.setBounds(60, 280, 123, 29);
    panel.add(btnNewButton);
    JButton button = new JButton("重置");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        textAccount.setText(null);
        textPwd.setText(null);
        textPwd1.setText(null);
      }
    });
    button.setFont(new Font("宋体", Font.PLAIN, 18));
    button.setBounds(300, 280, 123, 29);
    panel.add(button);
    textPwd = new JPasswordField();
    textPwd.setBounds(148, 144, 243, 32);
    panel.add(textPwd);
    textPwd1 = new JPasswordField();
    textPwd1.setBounds(148, 209, 243, 32);
    panel.add(textPwd1);
    JLabel label_3 = new JLabel("\u59D3 \u540D\uFF1A");
    label_3.setFont(new Font("宋体", Font.PLAIN, 18));
    label_3.setBounds(50, 90, 81, 21);
    panel.add(label_3);
    textName = new JTextField();
    textName.setColumns(10);
    textName.setBounds(146, 87, 243, 32);
    panel.add(textName);
  }
}


四、其他


1.其他系统实现


1.JavaWeb系统系列实现


Java+JSP实现学生图书管理系统


Java+JSP实现学生信息管理系统


Java+JSP实现用户信息管理系统


Java+Servlet+JSP实现航空订票系统


Java+Servlet+JSP实现学生选课管理系统


Java+Servlet+JSP实现学生成绩管理系统-1


Java+Servlet+JSP实现学生成绩管理系统-2


Java+Servlet+JSP实现宠物诊所管理系统


Java+SSM+Easyui实现网上考试系统


Java+SSH+Bootstrap实现在线考试系统(含论文)


Java+Springboot+Mybatis+Bootstrap+Maven实现网上商城系统


2.JavaSwing系统系列实现


Java+Swing实现斗地主游戏


Java+Swing实现图书管理系统


Java+Swing实现医院管理系统


Java+Swing实现仓库管理系统-1


Java+Swing实现仓库管理系统-2


Java+Swing实现考试管理系统


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


Java+Swing实现停车场管理系统


Java+Swing实现学生信息管理系统


Java+Swing实现学生宿舍管理系统


Java+Swing实现学生选课管理系统


Java+Swing实现学生成绩管理系统


Java+Swing实现学校教材管理系统


Java+Swing实现学校教务管理系统


Java+Swing实现企业人事管理系统


Java+Swing实现电子相册管理系统


Java+Swing实现超市管理系统-TXT存储数据


Java+Swing实现自助取款机系统-TXT存储数据


Java+Swing实现宠物商店管理系统-TXT存储数据


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
462 24
|
6月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
520 8
|
6月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
274 11
|
Java Android开发
在Eclipse环境下调试Java程序
在Eclipse环境下调试Java程序
384 1
|
监控 Java Android开发
Eclipse调试Java的10个技巧
原文地址: http://www.oschina.net/question/82993_69439 在看这篇文章前,我推荐你看一下Eclipse 快捷键手册,我的eclipse版本是4.2 Juno。
895 0
|
Java Android开发 测试技术
|
Java Maven Android开发
在Eclipse里配置Maven插件
Maven是一款比较常用的Java开发拓展包,它相当于一个全自动jar包管理器,会导入用户开发时需要使用的相应jar包。使用Maven开发Java程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在Eclipse里安装和配置Maven插件。
618 0
|
XML Java Maven
eclipse 、idea 安装activiti插件
eclipse 、idea 安装activiti插件
1018 0

推荐镜像

更多
下一篇
开通oss服务