JAVA课需要一个小项目来搞课程设计,所以设计了一个ATM柜员机模拟程序(GUI界面),个人学习记录用。请勿喷,谢谢谅解

  • ATM柜员机的主要功能如下:

要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统等登录ATM柜员机系统,用户可以按照一下规则进行。

  1. 查询余额:初始余额为10000元
  2. ATM取款:每次取款金额为100的倍数,总金额不超过5000元,支取金额不允许透支。
  3. ATM存款:不能出现负存款。
  4. 修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

准备工作

  • 开发工具:IntelliJ IDEA 2021.2.1
  • 运行环境:Windows 10
  • 环境配置:JDK1.8.0_152
  • 项目介绍:项目名为Bank_ATM,src文件夹中存在model、myControl、ui三个包名。model包中包含Account账户实体类、IAccount账户操作的接口类以及AccountImpl账户操作的接口实现类。myControl包中包含了MyFrame、MyPanel、MyButton、MyLabel、MyTextFile和MyPwdFiled六个封装起来的自定义控件模块。ui包中包含了Copyright_UI版权页、Login_UI登录界面、Menu_UI菜单界面、SelectMoney_UI余额查询界面、TakeMoney_UI取款界面、SaveMoney_UI存款界面、UpdatePwd_UI更改密码界面以及Test测试类。

在这里插入图片描述

Account 账户实体类

package model;

/**
 * 账户实体类
 */
public class Account {
    private  String user_Id;
    private  String user_Pwd;
    private  int money;

    public Account(){
        user_Id="123456";
        user_Pwd="123456";
        money=10000;
    }

    public String getUser_Id() {
        return user_Id;
    }

    public void setUser_Id(String user_Id) {
        this.user_Id = user_Id;
    }

    public String getUser_Pwd() {
        return user_Pwd;
    }

    public void setUser_Pwd(String user_Pwd) {
        this.user_Pwd = user_Pwd;
    }

    public int getMoney() {
        return money;
    }

    public int setMoney(int money) {
        this.money = money;
        return money;
    }

}

IAccount 账户接口

package model;

/**
 * 账户操作的接口类
 */
public interface IAccount {

    /**
     * 判断用户登录
     * @param id
     * @param pwd
     */
    public boolean login(String id, String pwd);

    /**
     * 查询卡号
     * @return
     */
    public String selectId();

    /**
     * 查询密码
     * @return
     */
    public String selectPwd();

    /**
     * 查询余额
     * @return
     */
    public int selectMoney();

    /**
     * 取款
     * @param m
     * @return
     */
    public int takeMoney(int m);

    /**
     * 存款
     * @param m
     * @return
     */
    public int saveMoney(int m);

    /**
     * 验证存款的金额
     * @return
     */
    public boolean checkAddMoney(int m);

    /**
     * 验证取款的金额
     * @return
     */
    public boolean checkSubMoney(int m);

    /**
     * 更改密码
     * @param oldPwd
     * @param newPwd
     * @param rePwd
     * @return
     */
    public boolean checkPwd(String oldPwd, String newPwd, String rePwd);
}

AccountImpl 账户接口实现类

package model;

/**
 * 账户接口实现类
 */
public class AccountImpl implements IAccount {

    public static Account account = new Account();

    /**
     * 判断用户登录
     * @param id
     * @param pwd
     */
    @Override
    public boolean login(String id, String pwd){
        if(account.getUser_Id().equals(id)&&account.getUser_Pwd().equals(pwd)){
            System.out.println("登录成功!");
            return  true;
        }else{
            System.out.println("用户名或密码有误!");
            return false;
        }
    }

    /**
     * 查询卡号
     * @return
     */
    @Override
    public String selectId() {
        return account.getUser_Id();
    }

    /**
     * 查询密码
     * @return
     */
    @Override
    public String selectPwd(){
        return account.getUser_Pwd();
    }

    /**
     * 查询余额
     * @return
     */
    @Override
    public int selectMoney() {
        return account.getMoney();
    }

    /**
     * 取款
     * @param m
     * @return
     */
    @Override
    public int takeMoney(int m){
        int a = account.setMoney(account.getMoney() - m);
        System.out.println("取款成功!-" + m + "tt余额:" + account.getMoney());
        return a;

    }

    /**
     * 存款
     * @param m
     * @return
     */
    @Override
    public int saveMoney(int m){
        int a = account.setMoney(account.getMoney() + m);
        System.out.println("存款成功!+" + m + "tt余额:" + account.getMoney());
        return a;
    }

    /**
     * 验证存款取款金额
     * @return
     */
    @Override
    public boolean checkAddMoney(int m){
        if (m < 0) {
            System.out.println("存入金额不能为负数!");
            return false;
        } else{
            return true;
        }
    }

    /**
     * 验证存款取款金额
     * @return
     */
    @Override
    public boolean checkSubMoney(int m){
        if (m < 0) {
            System.out.println("取出金额不能为负数!");
           return false;
        }else {
            if (m > account.getMoney()) {
                System.out.println("余额不足,请重试!");
                return false;
            }else{
                if (m > 5000){
                    System.out.println("取款金额必须小于等于5000!");
                    return false;
                }
                else{
                    if (m % 100 != 0){
                        System.out.println("取款金额必须为100的倍数!");
                        return false;
                    }else{
                        System.out.println("取款金额验证成功!");
                        return true;
                    }
                }
            }
        }
    }

    /**
     * 更改密码
     * @param oldPwd
     * @param newPwd
     * @param rePwd
     * @return
     */
    @Override
    public boolean checkPwd(String oldPwd, String newPwd, String rePwd){
        if(account.getUser_Pwd().equals(oldPwd)){
            if(newPwd.equals("")||newPwd.equals(oldPwd)) {
                System.out.println("新密码不能和原密码相同或新密码不能为空!");
                return  false;
            } else {
                if (newPwd.length() != 6) {
                    System.out.println("新密码长度必须为6位!");
                    return  false;
                } else {
                    String[] pwdArray = newPwd.split("");
                    int count = 0;
                    for (int i = 0; i < pwdArray.length; i++) {
                        if (pwdArray[0].equals(pwdArray[i])) {
                            count++;
                        }
                    }
                    if (count == 6) {
                        System.out.println("新密码6位数必须不一样!");
                        return  false;
                    } else {
                        if(newPwd.equals(rePwd)){
                            account.setUser_Pwd(newPwd);
                            System.out.println("成功更改密码! t新密码为:" + account.getUser_Pwd());
                            return true;
                        }else {
                            System.out.println("密码与第一次输入不相同,请重新输入!");
                            return false;
                        }
                    }
                }
            }
        } else{
            System.out.println("原密码错误!");
            return false;
        }
    }
}

以下几个类是方便创建GUI组件,自定义的几个自定义控件类(MyFrame、MyPanel、MyButton、MyLabel、MyTextFile和MyPwdFiled)

package myControl;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 封装自定义窗口控件
 */
public class MyFrame extends JFrame {
    public int stepX = 50;
    public int stepY = 50;
    public MyFrame() {
    }
    public MyFrame(String title, int FrameX, int FrameY) {
        this.setTitle(title);
        this.setSize(FrameX, FrameY);
        // 窗口不可缩放
        this.setResizable(false);
        // 窗口居中
        this.setLocationRelativeTo(null);
        // 自定义关闭按钮事件
        this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE);
        // 窗口添加监听器
        this.addWindowListener(new WindowAdapter() {
            // 点击窗口关闭时发生的事件
            public void windowClosing(WindowEvent e) {
                // 提示消息
                int i = JOptionPane.showConfirmDialog(MyFrame.this, "您确定是否要退出程序?", "提示!", JOptionPane.YES_NO_OPTION);
                if (i == JOptionPane.YES_OPTION) {
                    // 关闭程序
                    System.exit(0);
                } else {
                    return;
                }
            }
        });
    }
}


package myControl;

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

/**
 * 封装自定义的容器控件
 */
public class MyPanel extends JPanel {
    public MyPanel(){
        this.setBackground(Color.gray);
        this.setLayout(null);
    }
}

package myControl;

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

/**
 * 封装自定义的按钮控件
 */
public class MyButton extends JButton {
    public MyButton(String name, int x, int y, JComponent jc) {
        this.setFont(new Font("微软雅黑", Font.PLAIN, 15));
        this.setText(name);
        this.setBackground(Color.orange);
        this.setBounds(x, y, 120, 50);
        jc.add(this);
    }
}
package myControl;

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

/**
 * 封装自定义的文本标签控件
 */
public class MyLabel extends JLabel {
    public MyLabel(String info, int x, int y, JComponent jc) {
        this.setFont(new Font("微软雅黑", Font.PLAIN, 15));
        this.setText(info);
        this.setBounds(x,y, 300, 30);
        jc.add(this);
    }
    public MyLabel(String info, int x, int y,int w,int h,JComponent jc) {
        this.setFont(new Font("微软雅黑", Font.PLAIN, 15));
        this.setText(info);
        this.setBounds(x,y,w,h);
        jc.add(this);
    }
}
package myControl;

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

/**
 * 封装自定义的文本框控件
 */
public class MyTextFile extends JTextField {
    public MyTextFile(String labelName, int x, int y, JComponent jc) {
        this.setFont(new Font("微软雅黑", Font.PLAIN, 15));
        MyLabel myLabel = new MyLabel(labelName,x,y,jc);
        this.setBounds(x + 70, y, 200, 30);
        this.setColumns(18);
        jc.add(this);
    }
}
package myControl;

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

/**
 * 封装自定义的密码框控件
 */
public class MyPwdFiled extends JPasswordField {
    public MyPwdFiled(String labelName, int x, int y, JComponent jc) {
        this.setFont(new Font("微软雅黑", Font.PLAIN, 15));
        MyLabel myLabel = new MyLabel(labelName,x,y,jc);
        this.setBounds(x + 70, y, 200, 30);
        this.setColumns(18);
        jc.add(this);
    }
}

登录界面

package ui;

import myControl.*;

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

/**
 * 登录页面
 */
public class Login_UI extends MyFrame implements ActionListener {

    private MyFrame mf_Login;
    private MyPanel mp_Containers;
    private MyLabel ml_Title;
    private MyTextFile mtf_txtUser;
    private MyPwdFiled mpf_txtPwd;
    private MyButton btnLogin,btnReset,btnExit;
    static Menu_UI menu_ui;

    public Login_UI(){
        Init();
    }

    /**
     * 初始化登录界面
     */
    public void Init(){
        mf_Login = new MyFrame("请登录!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_Title = new MyLabel("中  国  银  行  ",stepX*5,stepY*1,mp_Containers);
        mtf_txtUser = new MyTextFile("卡  号  :  ",stepX*3,stepY*2+10,mp_Containers);
        mpf_txtPwd = new MyPwdFiled("密  码  :  ",stepX*3,stepY*3+25,mp_Containers);
        btnLogin = new MyButton("登    录",stepX*3,stepY*5,mp_Containers);
        btnReset = new MyButton("清    空",stepX*6,stepY*5,mp_Containers);
        btnExit = new MyButton("退出登录",stepX*8+20,stepY*6+10,mp_Containers);
        // 按钮添加监听器
        btnLogin.addActionListener(this);
        btnReset.addActionListener(this);
        btnExit.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_Login.add(mp_Containers);
        mf_Login.setVisible(true);
    }

    /**
     * 登陆的方法验证函数
     * @param mf
     * @param mtf
     * @param mpf
     */
    public void loginOn(MyFrame mf, MyTextFile mtf, MyPwdFiled mpf){
        try {
            // 判断卡户和密码是否正确
            if(Test.ai.login(mtf.getText(),String.valueOf(mpf.getPassword()))){
                JOptionPane.showMessageDialog(mf, "登录成功!");
                menu_ui = new Menu_UI();
                mf.dispose();
            }else if(mtf.getText().equals("")||(String.valueOf(mpf.getPassword())).equals("")){
                JOptionPane.showMessageDialog(mf, "卡号或者密码不能为空!");
            }
            else{
                JOptionPane.showMessageDialog(mf, "卡号或者密码有误!");
            }
        } catch (Exception ex) {
            ex.getStackTrace();
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("登    录")){
            loginOn(mf_Login,mtf_txtUser,mpf_txtPwd);
        }
        if(e.getActionCommand().equals("清    空")){
            mtf_txtUser.setText("");
            mpf_txtPwd.setText("");
        }
        if(e.getActionCommand().equals("退出登录")){
            System.out.println("成功退出程序!");
            System.exit(0);
        }
    }
}

菜单界面

package ui;

import myControl.*;

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

/**
 * 菜单界面
 */
public class Menu_UI extends MyFrame implements ActionListener {

    private MyFrame mf_Menu;
    private MyPanel mp_Containers;
    private MyLabel ml_Title,ml_User,ml_Money;
    private MyButton btnSelectMoney,btnTakeMoney,btnSavaMoney,btnModifyPwd,btnExit;
    private SelectMoney_UI selectMoney_ui;
    private TakeMoney_UI takeMoney_ui;
    private SaveMoney_UI saveMoney_ui;
    private UpdatePwd_UI updatePwd_ui;
    private String nowId = "当前卡号:";

    public Menu_UI(){
        Init();
    }

    /**
     * 菜单界面初始化
     */
    public void Init(){
        mf_Menu = new MyFrame("欢迎使用ATM!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_Title = new MyLabel("请 选 择 要 操 作 的 项 目 !",stepX*4,stepY,mp_Containers);
        ml_User = new MyLabel(nowId+Test.ai.selectId(),stepX*4+15,stepY*2,mp_Containers);
        btnSelectMoney = new MyButton("查询余额",stepX*3-20,stepY*3+10,mp_Containers);
        btnTakeMoney = new MyButton("取    款",stepX*7-15,stepY*3+10,mp_Containers);
        btnSavaMoney = new MyButton("存    款",stepX*3-20,stepY*5,mp_Containers);
        btnModifyPwd = new MyButton("修改密码",stepX*7-15,stepY*5,mp_Containers);
        btnExit = new MyButton("退    卡",stepX*8,stepY*6+10,mp_Containers);
        // 按钮添加监听器
        btnSelectMoney.addActionListener(this);
        btnTakeMoney.addActionListener(this);
        btnSavaMoney.addActionListener(this);
        btnModifyPwd.addActionListener(this);
        btnExit.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_Menu.add(mp_Containers);
        mf_Menu.setVisible(true);
    }

    /**
     * 监听按钮事件
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("查询余额")){
            selectMoney_ui = new SelectMoney_UI();
            this.mf_Menu.dispose();
        }
        if(e.getActionCommand().equals("取    款")){
            takeMoney_ui = new TakeMoney_UI();
            this.mf_Menu.dispose();
        }
        if(e.getActionCommand().equals("存    款")){
            saveMoney_ui = new SaveMoney_UI();
            this.mf_Menu.dispose();
        }
        if(e.getActionCommand().equals("修改密码")){
            updatePwd_ui = new UpdatePwd_UI();
            this.mf_Menu.dispose();
        }
        if(e.getActionCommand().equals("退    卡")){
            System.out.println("退卡成功!");
            Login_UI login_ui = new Login_UI();
            this.mf_Menu.dispose();
        }
    }
}

余额查询界面

package ui;

import myControl.*;

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

/**
 * 余额查询界面
 */
public class SelectMoney_UI extends MyFrame implements ActionListener {

    private MyFrame mf_SelectMoney;
    private MyPanel mp_Containers;
    private MyLabel ml_Title,ml_User,ml_Money;
    private MyButton btnTakeMoney,btnSavaMoney,btnBack;
    private Menu_UI menu_ui;
    private TakeMoney_UI takeMoney_ui;
    private SaveMoney_UI saveMoney_ui;
    String nowId = "当前卡号:";
    String nowMoney = "当前余额:";
    public SelectMoney_UI(){
        Init();
    }

    /**
     * 余额查询界面初始化
     */
    public void Init(){
        mf_SelectMoney = new MyFrame("余额查询界面!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_Title = new MyLabel("用 户 信 息 如 下 :",stepX*5-20,stepY,mp_Containers);
        ml_User = new MyLabel(nowId+ Test.ai.selectId(),stepX*2+20,stepY*2+15,mp_Containers);
        ml_Money = new MyLabel(nowMoney+ Test.ai.selectMoney(),stepX*6+35,stepY*2+15,mp_Containers);
        btnSavaMoney = new MyButton("存    款",stepX*2+20,stepY*4-25,mp_Containers);
        btnTakeMoney = new MyButton("取    款",stepX*7-15,stepY*4-25,mp_Containers);
        btnBack = new MyButton("返    回",stepX*8+10,stepY*5+10,mp_Containers);
        // 按钮添加监听器
        btnTakeMoney.addActionListener(this);
        btnSavaMoney.addActionListener(this);
        btnBack.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_SelectMoney.add(mp_Containers);
        mf_SelectMoney.setVisible(true);
    }

    /**
     * 监听按钮事件
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("返    回")){
             menu_ui = new Menu_UI();
            this.mf_SelectMoney.dispose();
        }
        if(e.getActionCommand().equals("取    款")){
            takeMoney_ui = new TakeMoney_UI();
            this.mf_SelectMoney.dispose();
        }
        if(e.getActionCommand().equals("存    款")){
            saveMoney_ui = new SaveMoney_UI();
            this.mf_SelectMoney.dispose();
        }
    }
}

存款界面

package ui;

import myControl.*;

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

/**
 * 存款界面
 */
public class SaveMoney_UI extends MyFrame implements ActionListener {

    private MyFrame mf_SaveMoney;
    private MyPanel mp_Containers;
    private MyLabel ml_Title,ml_User,ml_Money;
    private MyTextFile mtf_addMoney;
    private MyButton btnOk,btnBack;
    private Menu_UI menu_ui;
    private String nowId ="当前卡号:";
    private String nowMoney = "当前余额:";

    public SaveMoney_UI(){
        Init();
    }

    /**
     * 存款界面初始化
     */
    public void Init(){
        mf_SaveMoney = new MyFrame("存款界面!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_Title = new MyLabel("用 户 信 息 如 下 :",stepX*5-20,stepY,mp_Containers);
        ml_User = new MyLabel(nowId+Test.ai.selectId(),stepX*2+20,stepY*2+15,mp_Containers);
        ml_Money = new MyLabel(nowMoney+Test.ai.selectMoney(),stepX*6+35,stepY*2+15,mp_Containers);
        mtf_addMoney = new MyTextFile("存款金额: ",stepX*3,stepY*3+25,mp_Containers);
        btnOk = new MyButton("确    定",stepX*2+20,stepY*5+10,mp_Containers);
        btnBack = new MyButton("返    回",stepX*7,stepY*5+10,mp_Containers);
        // 按钮添加监听器
        btnOk.addActionListener(this);
        btnBack.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_SaveMoney.add(mp_Containers);
        mf_SaveMoney.setVisible(true);
    }

    /**
     * 存款的方法函数
     * @param mf
     * @param mtf
     * @param ml
     */
    public void saveMoney(MyFrame mf, MyTextFile mtf, MyLabel ml){
        // 调用方法判断金额的范围
        if(Test.ai.checkAddMoney(Integer.parseInt(mtf.getText()))){
            // 执行存款操作
            Test.ai.saveMoney(Integer.parseInt(mtf.getText()));
            ml.setText(nowMoney+String.valueOf(Test.ai.selectMoney()));
            JOptionPane.showMessageDialog(mf, "存款成功!");
        }else{
            if (Integer.parseInt(mtf.getText()) < 0) {
                JOptionPane.showMessageDialog(mf, "存入金额不能为负数!");
            }
        }
    }

    /**
     * 监听按钮事件
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("返    回")){
            menu_ui = new Menu_UI();
            this.mf_SaveMoney.dispose();
        }
        if(e.getActionCommand().equals("确    定")){
            saveMoney(mf_SaveMoney,mtf_addMoney,ml_Money);
        }
    }
}

取款界面

package ui;

import myControl.*;

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

/**
 * 取款界面
 */
public class TakeMoney_UI extends MyFrame implements ActionListener {

    private MyFrame mf_TakeMoney;
    private MyPanel mp_Containers;
    private MyLabel ml_Title,ml_User,ml_Money;
    private MyTextFile mtf_subMoney;
    private MyButton btnOk,btnBack;
    private Menu_UI menu_ui;
    private String nowId = "当前卡号:";
    private String nowMoney = "当前余额:";

    public TakeMoney_UI(){
        Init();
    }

    /**
     * 取款界面初始化
     */
    public void Init(){
        mf_TakeMoney = new MyFrame("取款界面!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_Title = new MyLabel("用 户 信 息 如 下 :",stepX*5-20,stepY,mp_Containers);
        ml_User = new MyLabel(nowId+Test.ai.selectId(),stepX*2+20,stepY*2+15,mp_Containers);
        ml_Money = new MyLabel(nowMoney+Test.ai.selectMoney(),stepX*6+35,stepY*2+15,mp_Containers);
        mtf_subMoney = new MyTextFile("取款金额: ",stepX*3,stepY*3+25,mp_Containers);
        btnOk = new MyButton("确    定",stepX*2+20,stepY*5+10,mp_Containers);
        btnBack = new MyButton("返    回",stepX*7,stepY*5+10,mp_Containers);
        // 按钮添加监听器
        btnOk.addActionListener(this);
        btnBack.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_TakeMoney.add(mp_Containers);
        mf_TakeMoney.setVisible(true);
    }

    /**
     * 取款的方法函数
     * @param mf
     * @param mtf
     * @param ml
     */
    public void takeMoney(MyFrame mf, MyTextFile mtf, MyLabel ml){
        // 调用方法判断金额的范围
        if(Test.ai.checkSubMoney(Integer.parseInt(mtf.getText()))){
            // 执行取款操作
            Test.ai.takeMoney(Integer.parseInt(mtf.getText()));
            ml.setText(nowMoney+String.valueOf(Test.ai.selectMoney()));
            JOptionPane.showMessageDialog(mf, "取款成功!");
        }else{
            checkSubMoney(Integer.parseInt(mtf.getText()),mf);
        }
    }

    /**
     * 取款的金额验证
     * @param m
     * @param mf
     */
    public void checkSubMoney(int m, MyFrame mf){
        if (m < 0) {
            JOptionPane.showMessageDialog(mf, "取出金额不能为负数!");
        }else {
            if (m > Test.ai.selectMoney()) {
                JOptionPane.showMessageDialog(mf, "余额不足,请重试!");
            }else{
                if (m > 5000){
                    JOptionPane.showMessageDialog(mf, "取款金额必须小于等于5000!");
                }
                else{
                    if (m % 100 != 0){
                        JOptionPane.showMessageDialog(mf, "取款金额必须为100的倍数!");
                    }
                }
            }
        }
    }



    /**
     * 监听按钮事件
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("返    回")){
            menu_ui = new Menu_UI();
            this.mf_TakeMoney.dispose();
        }
        if(e.getActionCommand().equals("确    定")){
            takeMoney(mf_TakeMoney,mtf_subMoney,ml_Money);
        }
    }
}

修改密码界面

package ui;

import myControl.*;

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

/**
 * 更改密码界面
 */
public class UpdatePwd_UI extends MyFrame implements ActionListener {

    private MyFrame mf_UpdatePwd;
    private MyPanel mp_Containers;
    private MyLabel ml_Tip,ml_User;
    private MyPwdFiled mpf_OldPwd,mpf_NewPwd,mpf_RePwd;
    private MyButton btnOk,btnBack;
    private Menu_UI menu_ui;
    private String nowId ="当前卡号:";

    public UpdatePwd_UI(){
        Init();
    }

    /**
     * 更改密码的界面
     */
    public void Init(){
        mf_UpdatePwd = new MyFrame("更改密码界面!",600,400);
        // 初始化容器
        mp_Containers = new MyPanel();
        // 向容器中添加控件
        ml_User = new MyLabel(nowId+Test.ai.selectId(),stepX-20,stepY-25,mp_Containers);
        ml_Tip = new MyLabel("请按照要求更改密码!",stepX*5-20,stepY,mp_Containers);
        mpf_OldPwd = new MyPwdFiled("原始密码:",stepX*3,stepY*2,mp_Containers);
        mpf_NewPwd = new MyPwdFiled("新  密  码:",stepX*3,stepY*3,mp_Containers);
        mpf_RePwd = new MyPwdFiled("确认密码:",stepX*3,stepY*4,mp_Containers);
        btnOk = new MyButton("确    定",stepX*2+20,stepY*5+10,mp_Containers);
        btnBack = new MyButton("返    回",stepX*7,stepY*5+10,mp_Containers);
        // 按钮添加监听器
        btnOk.addActionListener(this);
        btnBack.addActionListener(this);
        // 向窗口添加容器并显示窗口
        mf_UpdatePwd.add(mp_Containers);
        mf_UpdatePwd.setVisible(true);
    }

    /**
     * 更改密码的方法函数
     * @param mf
     * @param o
     * @param n
     * @param r
     */
    public void modifyPwd(MyFrame mf, MyPwdFiled o, MyPwdFiled n, MyPwdFiled r){
        String oldP = String.valueOf(o.getPassword());
        String newP = String.valueOf(n.getPassword());
        String reP = String.valueOf(r.getPassword());
        if(Test.ai.checkPwd(oldP,newP,reP)){
            o.setText("");
            n.setText("");
            r.setText("");
            JOptionPane.showMessageDialog(mf, "密码修改成功!");
        }else{
            if(Test.ai.selectPwd().equals(oldP)){
                if(newP.equals("")||newP.equals(oldP)||reP.equals(oldP)) {
                    JOptionPane.showMessageDialog(mf, "新密码不能和原密码相同或新密码不能为空!");
                } else {
                    if (newP.length() != 6) {
                        JOptionPane.showMessageDialog(mf, "新密码长度必须为6位!");
                    } else {
                        String[] pwdArray = newP.split("");
                        int count = 0;
                        for (int i = 0; i < pwdArray.length; i++) {
                            if (pwdArray[0].equals(pwdArray[i])) {
                                count++;
                            }
                        }
                        if (count == 6) {
                            JOptionPane.showMessageDialog(mf, "新密码6位数必须不一样!");
                        } else {
                            if(!newP.equals(reP)){
                                JOptionPane.showMessageDialog(mf, "密码与第一次输入不相同,请重新输入!");
                            }
                        }
                    }
                }
            } else{
                JOptionPane.showMessageDialog(mf, "原密码错误!");
            }
        }
    }

    /**
     * 监听按钮事件
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("返    回")){
            menu_ui = new Menu_UI();
            this.mf_UpdatePwd.dispose();
        }
        if(e.getActionCommand().equals("确    定")){
            modifyPwd(mf_UpdatePwd,mpf_OldPwd,mpf_NewPwd,mpf_RePwd);
        }
    }
}

最后写一个测试类,进入main方法即可

package ui;

import model.*;

public class Test {
    static AccountImpl ai = new AccountImpl();
    public static void main(String[] args) throws Exception {
        Login_UI login_ui = new Login_UI();
    }
}

刚入门的小白,不足请谅解,学习用。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>