JAVA课需要一个小项目来搞课程设计,所以设计了一个ATM柜员机模拟程序(GUI界面),个人学习记录用。请勿喷,谢谢谅解
- ATM柜员机的主要功能如下:
要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统等登录ATM柜员机系统,用户可以按照一下规则进行。
- 查询余额:初始余额为10000元
- ATM取款:每次取款金额为100的倍数,总金额不超过5000元,支取金额不允许透支。
- ATM存款:不能出现负存款。
- 修改密码:新密码长度不小于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
二维码