JDBC小项目

这个博客项目详细介绍了如何运用JDBC进行数据操作。项目结构包括view视图层、domain领域模型、dao数据访问对象、service业务逻辑层以及util工具类。此外,还包含了img图片资源和test测试代码。
摘要由CSDN通过智能技术生成
  • view
package view;

import service.AtmService;
import util.BaseFrame;
import util.MySpring;

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

@SuppressWarnings("all")
public class AtmFrame extends BaseFrame {

    private AtmFrame(String aname){
        super("操作窗口");
        this.aname = aname;
        this.init();
    }
    private static AtmFrame atmFrame;
    public synchronized static AtmFrame getAtmFrame(String aname){
        if(atmFrame==null){
            atmFrame = new AtmFrame(aname);
        }
        return atmFrame;
    }

    //添加一个用来管理当前用户的用户名
    private String aname;
    //创建一个AtmService对象作为属性 支持着所有的业务 查询 存款 取款 转账
    private AtmService service = MySpring.getBean("service.AtmService");

    //添加窗体上的组件
    private JPanel mainPanel = new JPanel();
    private JLabel logoLabel = new JLabel();//logo
    private JLabel titleLabel = new JLabel("银行");
    private JLabel balanceLabelCN = new JLabel();
    private JLabel balanceLabelEN = new JLabel();
    private JLabel selectServerLabelCN = new JLabel("您好!请选择所需服务");
    private JLabel selectServerLabelEN = new JLabel("Please Select Service");
    private JButton messageButton = new JButton("销户");
    private JButton exitButton = new JButton("退出");
    private JButton depositButton = new JButton("存款");
    private JButton withdrawalButton = new JButton("取款");
    private JButton transferButton = new JButton("转账");

    protected void setFontAndSoOn() {
        mainPanel.setLayout(null);
        logoLabel.setBounds(20,20,80,80);
        logoLabel.setIcon(this.drawImage("src//img//duyi.jpg",80,80));
        titleLabel.setBounds(120,30,160,60);
        titleLabel.setFont(new Font("微软雅黑",Font.ITALIC,32));

        balanceLabelCN.setBounds(250,200,300,40);
        balanceLabelCN.setFont(new Font("微软雅黑",Font.BOLD,24));
        balanceLabelCN.setHorizontalAlignment(JTextField.CENTER);
        balanceLabelCN.setText("账户余额:¥"+service.inquire(aname));
        balanceLabelEN.setBounds(240,240,320,40);
        balanceLabelEN.setFont(new Font("微软雅黑",Font.BOLD,24));
        balanceLabelEN.setHorizontalAlignment(JTextField.CENTER);
        balanceLabelEN.setText("Account Balance:¥"+service.inquire(aname));

        selectServerLabelCN.setBounds(250,370,300,40);
        selectServerLabelCN.setFont(new Font("微软雅黑",Font.BOLD,16));
        selectServerLabelCN.setHorizontalAlignment(JTextField.CENTER);
        selectServerLabelEN.setBounds(250,400,300,40);
        selectServerLabelEN.setFont(new Font("微软雅黑",Font.BOLD,16));
        selectServerLabelEN.setHorizontalAlignment(JTextField.CENTER);

        messageButton.setBounds(10,150,120,40);
        messageButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        messageButton.setBackground(Color.lightGray);
        messageButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

        exitButton.setBounds(10,390,120,40);
        exitButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        exitButton.setBackground(Color.lightGray);
        exitButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

        depositButton.setBounds(670,150,120,40);
        depositButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        depositButton.setBackground(Color.lightGray);
        depositButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

        withdrawalButton.setBounds(670,270,120,40);
        withdrawalButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        withdrawalButton.setBackground(Color.lightGray);
        withdrawalButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

        transferButton.setBounds(670,390,120,40);
        transferButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        transferButton.setBackground(Color.lightGray);
        transferButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    }
    protected void addElements() {
        mainPanel.add(logoLabel);
        mainPanel.add(titleLabel);
        mainPanel.add(balanceLabelCN);
        mainPanel.add(balanceLabelEN);
        mainPanel.add(selectServerLabelCN);
        mainPanel.add(selectServerLabelEN);
        mainPanel.add(messageButton);
        mainPanel.add(exitButton);
        mainPanel.add(depositButton);
        mainPanel.add(withdrawalButton);
        mainPanel.add(transferButton);
        this.add(mainPanel);
    }
    protected void addListener() {
        //退出按钮
        exitButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int value = JOptionPane.showConfirmDialog(AtmFrame.this,"确认退出系统么?");
                if(value==0){//0-是 1-否 2-取消
                    System.exit(0);
                }
            }
        });

        //销户按钮
        messageButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int value = JOptionPane.showConfirmDialog(AtmFrame.this,"确认消除当前账号的所有信息么?");
                if(value==0){
                    if(service.closeAccount(aname)==1){
                        JOptionPane.showMessageDialog(AtmFrame.this,"销户成功");
                        System.exit(0);
                    }else{
                        JOptionPane.showMessageDialog(AtmFrame.this,"清除失败");
                    }
                }
            }
        });

        //存款按钮
        depositButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try{
                    String value = JOptionPane.showInputDialog(AtmFrame.this,"请输入存款金额");
                    if(value!=null && !"".equals(value)){
                        Float depositMoney = Float.parseFloat(value);
                        if(depositMoney<=0){
                            throw new NumberFormatException();
                        }
                        int count = service.deposit(aname,depositMoney);
                        if(count==1){
                            JOptionPane.showMessageDialog(AtmFrame.this,"存款成功");
                            balanceLabelCN.setText("账户余额:¥" + service.inquire(aname));
                            balanceLabelEN.setText("Account Balance:¥"+service.inquire(aname));
                        }else{
                            JOptionPane.showMessageDialog(AtmFrame.this,"存款失败");
                        }
                    }
                }catch(NumberFormatException nfe){
                    JOptionPane.showMessageDialog(AtmFrame.this,"输入金额有误");
                }
            }
        });

        //取款按钮
        withdrawalButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try{
                    String value = JOptionPane.showInputDialog(AtmFrame.this,"请输入取款金额");
                    if(value!=null && !"".equals(value)){
                        Float withdrawalMoney = Float.parseFloat(value);
                        if(withdrawalMoney<=0){
                            throw new NumberFormatException();
                        }
                        int count = service.withdrawal(aname,withdrawalMoney);
                        if(count==1){
                            JOptionPane.showMessageDialog(AtmFrame.this,"取款成功");
                            balanceLabelCN.setText("账户余额:¥" + service.inquire(aname));
                            balanceLabelEN.setText("Account Balance:¥"+service.inquire(aname));
                        }else if(count==-1){
                            JOptionPane.showMessageDialog(AtmFrame.this,"对不起,余额不足");
                        }else{
                            JOptionPane.showMessageDialog(AtmFrame.this,"存款失败");
                        }
                    }
                }catch(NumberFormatException nfe){
                    JOptionPane.showMessageDialog(AtmFrame.this,"输入金额有误");
                }
            }
        });

        //转账按钮
        transferButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try{
                    String name = JOptionPane.showInputDialog(AtmFrame.this,"请输入转账账户");
                    if(name!=null && !"".equals(name) && service.isExist(name)){
                        String value = JOptionPane.showInputDialog(AtmFrame.this,"请输入转账金额");
                        if(value!=null && !"".equals(value)){
                            Float transferMoney = Float.parseFloat(value);
                            if(transferMoney<=0){
                                throw new NumberFormatException();
                            }
                            int count = service.transfer(aname,name,transferMoney);
                            if(count==2){
                                JOptionPane.showMessageDialog(AtmFrame.this,"转账成功");
                                balanceLabelCN.setText("账户余额:¥" + service.inquire(aname));
                                balanceLabelEN.setText("Account Balance:¥"+service.inquire(aname));
                            }else if(count==-1){
                                JOptionPane.showMessageDialog(AtmFrame.this,"对不起,余额不足");
                            }else{
                                JOptionPane.showMessageDialog(AtmFrame.this,"存款失败");
                            }
                        }
                    }else{
                        JOptionPane.showMessageDialog(AtmFrame.this,"输入的账号不存在");
                    }
                }catch(NumberFormatException nfe){
                    JOptionPane.showMessageDialog(AtmFrame.this,"输入金额有误");
                }
            }
        });

    }
    protected void setFrameSelf() {
        this.setBounds(300,200,800,500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setVisible(true);
    }
}

package view;

import service.AtmService;
import util.BaseFrame;
import util.MySpring;

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

@SuppressWarnings("all")
public class LoginFrame extends BaseFrame {

    private LoginFrame(){
        super("登录窗口");
        this.init();
    }
    private static LoginFrame loginFrame;
    public synchronized static LoginFrame getLoginFrame(){
        if(loginFrame==null){
            loginFrame = new LoginFrame();
        }
        return loginFrame;
    }


    //添加一些属性---登录窗口上的各种组件
    private JPanel mainPanel = new JPanel();
    private JLabel logoLabel = new JLabel();//logo
    private JLabel titleLabel = new JLabel("请 您 登 录 系 统");//title
    private JLabel accountLabel = new JLabel("请输入账号:");
    private JTextField accountField = new JTextField();//用来输入账号的文本框
    private JLabel passwordLabel = new JLabel("请输入密码:");
    private JPasswordField passwordField = new JPasswordField();//用来输入密码的密码框
    private JButton loginButton = new JButton("登 录");
    private JButton registButton = new JButton("注 册");

    //添加一个控制注册窗口的属性
    private RegistFrame registFrame = null;

    protected void setFontAndSoOn() {
        mainPanel.setLayout(null);//设置panel布局为自定义
        logoLabel.setBounds(135,40,40,40);
        logoLabel.setIcon(this.drawImage("src//img//duyi.jpg",40,40));
        titleLabel.setBounds(185,40,200,40);
        titleLabel.setFont(new Font("微软雅黑",Font.BOLD,24));
        accountLabel.setBounds(40,100,140,40);
        accountLabel.setFont(new Font("微软雅黑",Font.BOLD,18));
        accountField.setBounds(170,105,260,32);
        accountField.setFont(new Font("微软雅黑",Font.BOLD,20));
        passwordLabel.setBounds(40,150,140,40);
        passwordLabel.setFont(new Font("微软雅黑",Font.BOLD,18));
        passwordField.setBounds(170,155,260,32);
        passwordField.setFont(new Font("微软雅黑",Font.BOLD,20));
        loginButton.setBounds(120,210,100,32);
        loginButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        loginButton.setBackground(Color.LIGHT_GRAY);
        registButton.setBounds(260,210,100,32);
        registButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        registButton.setBackground(Color.LIGHT_GRAY);
    }
    protected void addElements() {
        mainPanel.add(logoLabel);
        mainPanel.add(titleLabel);
        mainPanel.add(accountLabel);
        mainPanel.add(accountField);
        mainPanel.add(passwordLabel);
        mainPanel.add(passwordField);
        mainPanel.add(loginButton);
        mainPanel.add(registButton);
        this.add(mainPanel);
    }
    protected void addListener() {
        //登录按钮
        loginButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                //获取账号 密码
                String aname = accountField.getText();
                String apassword = new String(passwordField.getPassword());
                //调用登录的方法
                AtmService service = MySpring.getBean("service.AtmService");
                String result = service.login(aname,apassword);//登录方法
                //根据登录结果判断
                if(result.equals("登录成功")){
                    LoginFrame.this.setVisible(false);
                    AtmFrame.getAtmFrame(aname);//弹出新的操作窗口时 将aname传递过去
                }else{
                    JOptionPane.showMessageDialog(LoginFrame.this,"对不起,"+result);
                    LoginFrame.this.reset();
                }
            }
        });
        registButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LoginFrame.this.setVisible(false);
                if(registFrame==null) {
                    registFrame = RegistFrame.getRegistFrame();
                }else{
                    registFrame.setVisible(true);
                    registFrame.reset();
                }
            }
        });
    }

    //定义一个方法 设置所有的输入框清空
    void reset(){
        accountField.setText("");
        passwordField.setText("");
    }

    protected void setFrameSelf() {
        this.setBounds(400,200,500,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setVisible(true);
    }

}

package view;

import service.AtmService;
import util.BaseFrame;
import util.MySpring;

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

@SuppressWarnings("all")
public class RegistFrame extends BaseFrame {

    private RegistFrame(){
        super("注册窗口");
        this.init();
    }
    private static RegistFrame registFrame;
    public synchronized static RegistFrame getRegistFrame(){
        if(registFrame==null){
            registFrame = new RegistFrame();
        }
        return registFrame;
    }

    //添加一个控制登录页面的属性
    private LoginFrame loginFrame = LoginFrame.getLoginFrame();

    //添加一些组件的属性
    private JPanel mainPanel = new JPanel();
    private JLabel logoLabel = new JLabel();//logo
    private JLabel titleLabel = new JLabel("请 您 填 写 信 息");//title
    private JLabel accountLabel = new JLabel("请输入账号:");
    private JTextField accountField = new JTextField();//输入账号
    private JLabel passwordLabel = new JLabel("请输入密码:");
    private JTextField passwordField = new JTextField();
    private JLabel balanceLabel = new JLabel("请输入金额:");
    private JTextField balanceField = new JTextField();
    private JButton registButton = new JButton("注 册");
    private JButton resetButton = new JButton("重 置");
    private JButton backButton = new JButton("返 回");

    protected void setFontAndSoOn() {
        mainPanel.setLayout(null);
        logoLabel.setBounds(135,40,40,40);
        logoLabel.setIcon(this.drawImage("src//img//duyi.jpg",40,40));
        titleLabel.setBounds(185,40,200,40);
        titleLabel.setFont(new Font("微软雅黑", Font.BOLD,24));
        accountLabel.setBounds(40,100,140,40);
        accountLabel.setFont(new Font("微软雅黑",Font.BOLD,18));
        accountField.setBounds(170,105,260,32);
        accountField.setFont(new Font("微软雅黑",Font.BOLD,20));
        passwordLabel.setBounds(40,150,140,40);
        passwordLabel.setFont(new Font("微软雅黑",Font.BOLD,18));
        passwordField.setBounds(170,155,260,32);
        passwordField.setFont(new Font("微软雅黑",Font.BOLD,20));
        balanceLabel.setBounds(40,200,140,40);
        balanceLabel.setFont(new Font("微软雅黑",Font.BOLD,18));
        balanceField.setBounds(170,205,260,32);
        balanceField.setFont(new Font("微软雅黑",Font.BOLD,20));
        registButton.setBounds(60,260,100,32);
        registButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        registButton.setBackground(Color.LIGHT_GRAY);
        resetButton.setBounds(190,260,100,32);
        resetButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        resetButton.setBackground(Color.LIGHT_GRAY);
        backButton.setBounds(320,260,100,32);
        backButton.setFont(new Font("微软雅黑",Font.BOLD,14));
        backButton.setBackground(Color.LIGHT_GRAY);
    }
    protected void addElements() {
        mainPanel.add(logoLabel);
        mainPanel.add(titleLabel);
        mainPanel.add(accountLabel);
        mainPanel.add(accountField);
        mainPanel.add(passwordLabel);
        mainPanel.add(passwordField);
        mainPanel.add(balanceLabel);
        mainPanel.add(balanceField);
        mainPanel.add(registButton);
        mainPanel.add(resetButton);
        mainPanel.add(backButton);
        this.add(mainPanel);
    }
    protected void addListener() {
        registButton.addActionListener(new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                //获取新输入的 名字 密码 余额
                String aname = accountField.getText();
                String apassword = passwordField.getText();
                String abalance = balanceField.getText();
                //调用新增方法
                AtmService service = MySpring.getBean("service.AtmService");
                if(service.isExist(aname)){//账号存在
                    JOptionPane.showMessageDialog(RegistFrame.this,"账号已存在");
                    RegistFrame.this.reset();//所有输入框清空
                }else {
                    try{
                        //zhangsan  333  abc
                        service.regist(aname,apassword,Float.parseFloat(abalance));
                        JOptionPane.showMessageDialog(RegistFrame.this, "注册成功,请登录系统");
                        RegistFrame.this.back();
                    }catch(NumberFormatException nfe){
                        JOptionPane.showMessageDialog(RegistFrame.this, "对不起,您输入的金额有误");
                        RegistFrame.this.reset();//所有输入框清空
                    }
                }
            }
        });
        resetButton.addActionListener(new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                RegistFrame.this.reset();
            }
        });
        backButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                RegistFrame.this.setVisible(false);//当前注册窗口隐藏
                loginFrame.setVisible(true);
                loginFrame.reset();
            }
        });
    }
    //设计一个自定义方法 设置所有输入框清空
    void reset(){
        accountField.setText("");
        passwordField.setText("");
        balanceField.setText("");
    }
    //设计一个自定义方法 设置返回登录页面
    private void back(){
        this.setVisible(false);
        loginFrame.setVisible(true);

    }
    protected void setFrameSelf() {
        this.setBounds(430,200,500,360);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setResizable(false);
        this.setVisible(true);
    }
}

  • domain
package domain;

public class Atm {
    //实体对象  每一个Atm类的对象存储 Atm表格中一行记录
    //有可能当前记录中含有null值

    private String aname;
    private String apassword;
    private Float abalance;

    public Atm() {}
    public Atm(String aname, String apassword, Float abalance) {
        this.aname = aname;
        this.apassword = apassword;
        this.abalance = abalance;
    }

    public String getAname() {
        return aname;
    }
    public void setAname(String aname) {
        this.aname = aname;
    }
    public String getApassword() {
        return apassword;
    }
    public void setApassword(String apassword) {
        this.apassword = apassword;
    }
    public Float getAbalance() {
        return abalance;
    }
    public void setAbalance(Float abalance) {
        this.abalance = abalance;
    }
}

  • dao
package dao;

import domain.Atm;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

@SuppressWarnings("all")
public class AtmDao {

    //Dao--数据读写(JDBC)--持久层

    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/atm?useSSL=true";
    private String user = "root";
    private String password = "root";

    //设计一个方法 负责查询一行记录
    public Atm selectOne(String aname){
        Atm atm = null;
        String sql = "SELECT ANAME,APASSWORD,ABALANCE FROM ATM WHERE ANAME = ?";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url,user,password);
            PreparedStatement pstat = conn.prepareStatement(sql);
            pstat.setString(1,aname);
            ResultSet rs = pstat.executeQuery();
            if(rs.next()){
                atm = new Atm();
                atm.setAname(rs.getString("aname"));
                atm.setApassword(rs.getString("apassword"));
                atm.setAbalance(rs.getFloat("abalance"));
            }
            rs.close();
            pstat.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return atm;
    }

    //设计一个方法 新增一行记录
    public int insert(Atm atm){
        int count = 0;//数据库更改的行数==1
        String sql = "INSERT INTO ATM VALUES(?,?,?)";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url,user,password);
            PreparedStatement pstat = conn.prepareStatement(sql);
            pstat.setString(1,atm.getAname());
            pstat.setString(2,atm.getApassword());
            pstat.setFloat(3,atm.getAbalance());
            count = pstat.executeUpdate();
            pstat.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }

    //设计一个方法 做数据库更新
    public int update(Atm atm){
        int count = 0;//记录更改的行数
        String sql = "UPDATE ATM SET APASSWORD = ? , ABALANCE = ? WHERE ANAME = ?";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url,user,password);
            PreparedStatement pstat = conn.prepareStatement(sql);
            pstat.setString(1,atm.getApassword());
            pstat.setFloat(2,atm.getAbalance());
            pstat.setString(3,atm.getAname());
            count = pstat.executeUpdate();
            pstat.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }

    //设计一个方法 删除记录
    public int delete(String aname){
        int count = 0;//数据库更改的行数==1
        String sql = "DELETE FROM ATM WHERE ANAME = ?";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url,user,password);
            PreparedStatement pstat = conn.prepareStatement(sql);
            pstat.setString(1,aname);
            count = pstat.executeUpdate();
            pstat.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }

}

  • service
package service;

import dao.AtmDao;
import domain.Atm;
import util.MySpring;

public class AtmService {

    //业务层---->数据处理 判断 比较 计算 。。。

    private AtmDao dao = MySpring.getBean("dao.AtmDao");

    //设计一个登录方法
    public String login(String aname,String apassword){
        Atm atm = dao.selectOne(aname);
        if(atm!=null && atm.getApassword().equals(apassword)){
            return "登录成功";//登录 登陆
        }
        return "用户名或密码错误";
    }

    //设计一个查询余额方法
    public Float inquire(String aname){
        return dao.selectOne(aname).getAbalance();
    }

    //设计一个注册新用户的方法
    public int regist(String aname,String apassword,Float abalance){
        Atm atm = new Atm(aname,apassword,abalance);
        return dao.insert(atm);
    }

    //设计一个方法 判断账号名是否存在
    public boolean isExist(String aname){
        if(dao.selectOne(aname)!=null){
            return true;//当前账号存在
        }
        return false;//账号不存在
    }

    //设计一个方法 存款
    public int deposit(String aname,Float depositMoney){
        Atm atm = dao.selectOne(aname);
        atm.setAbalance(atm.getAbalance()+depositMoney);
        return dao.update(atm);
    }

    //设计一个方法 取款
    public int withdrawal(String aname,Float withdrawalMoney){
        Atm atm = dao.selectOne(aname);
        if(atm.getAbalance()>=withdrawalMoney){
            atm.setAbalance(atm.getAbalance()-withdrawalMoney);
            return dao.update(atm);//1成功  0没有成功
        }else{
            return -1;//余额不足
        }
    }

    //设计一个方法 转账
    public int transfer(String outName,String inName,Float transferMoney){
        Atm outAtm = dao.selectOne(outName);
        Atm inAtm = dao.selectOne(inName);
        if(outAtm.getAbalance()>=transferMoney){
            outAtm.setAbalance(outAtm.getAbalance() - transferMoney);
            inAtm.setAbalance(inAtm.getAbalance() + transferMoney);
            return dao.update(outAtm) + dao.update(inAtm);//2成功
        }else{
            return -1;//余额不足
        }
    }

    //设计一个方法 销户
    public int closeAccount(String aname){
        return dao.delete(aname);
    }
}

  • util
package util;

import javax.swing.*;
import java.awt.*;

public abstract class BaseFrame extends JFrame {
    //模板模式

    public BaseFrame(){}
    public BaseFrame(String title){
        super(title);
    }

    //设计一个具体方法 规定加载窗体时的执行顺序
    protected void init(){
        this.setFontAndSoOn();
        this.addElements();
        this.addListener();
        this.setFrameSelf();
    }

    //设计一个通用的画图方法 给我图片的路径及宽高
    protected ImageIcon drawImage(String path,int width,int height){
        //通过给定的路径创建一个icon对象
        ImageIcon imageIcon = new ImageIcon(path);
        //设置icon对象内的image对象信息
        imageIcon.setImage(imageIcon.getImage().getScaledInstance(width,height, Image.SCALE_DEFAULT));
        //将icon对象返回
        return imageIcon;
    }

    //1.用来设置 字体 颜色 背景 布局管理 等等
    protected abstract void setFontAndSoOn();
    //2.用来添加所有的组件
    protected abstract void addElements();
    //3.添加事件监听器
    protected abstract void addListener();
    //4.设置窗体自身的属性
    protected abstract void setFrameSelf();

}

package util;

import java.util.HashMap;

//目的是为了管理对象的产生
//对象的控制权交给当前类来负责    IOC控制反转
//生命周期托管的方式实现对对象的单例管理
public class MySpring {

    //属性 为了存储所有被管理的对象
    private static HashMap<String,Object> beanBox = new HashMap<>();

    //设计一个方法 获取任何一个类的对象(类含有无参数构造方法)
    //  参数String 类全名    返回值(某一个类的对象) 泛型
    public static <T>T getBean(String className){//传递参数一个类全名
        T obj = null;
        try {
            //1.直接从beanBox集合中获取
            obj = (T)beanBox.get(className);
            //2.如果obj是null 证明之前没有创建过对象
            if(obj == null){
                //3.通过类名字获取Class
                Class clazz = Class.forName(className);
                //4.通过反射创建一个对象
                obj = (T)clazz.newInstance();
                //5.将新的对象存入集合
                beanBox.put(className,obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}

  • img
  • test
package test;

import view.LoginFrame;

public class TestMain {

    public static void main(String[] args){
        LoginFrame.getLoginFrame();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值