- 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 + "\t\t余額:" + account.getMoney());
return a;
}
/**
* 存款
* @param m
* @return
*/
@Override
public int saveMoney(int m){
int a = account.setMoney(account.getMoney() + m);
System.out.println("存款成功!+" + m + "\t\t余額:" + 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();
}
}
剛入門的小白,不足請諒解,學習用,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389121.html
標籤:其他
上一篇:計算機畢業設計Java固定資產管理系統ssm框架課程設計【代碼講解+安裝除錯+檔案指導】
下一篇:Selenium(思維導圖)
