教你用Java Swing實(shí)現(xiàn)自助取款機(jī)系統(tǒng)
系統(tǒng)功能
1.登錄系統(tǒng) 2.查詢(xún)余額 3.取款 4.存款 5.轉(zhuǎn)賬 6.修改密碼 7.退出系統(tǒng)JDK版本:1.8存儲(chǔ)數(shù)據(jù)形式:TXT存儲(chǔ)數(shù)據(jù)
二、系統(tǒng)展示1.登錄頁(yè)
2.主頁(yè)
3.取款
4.存款
5.轉(zhuǎn)賬
6.修改密碼
LoginJFrame.java
package atmJFrame.myJFrame;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//登錄界面繼承MyJFramepublic class LoginJFrame extends MyJFrame {public LoginJFrame() {super('歡迎使用ATM機(jī)');// 設(shè)置窗體可關(guān)閉setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 設(shè)置組件init();// 界面可視化setVisible(true);}// 初始化界面private void init() {// 創(chuàng)建面板對(duì)象,并定義為空布局JPanel jp = new JPanel(null);// 添加標(biāo)簽JLabel jl1 = new JLabel('賬號(hào):');JLabel jl2 = new JLabel('密碼:');// 設(shè)置標(biāo)簽字體jl1.setFont(FONT_SIZE_20);jl2.setFont(FONT_SIZE_20);// 設(shè)置標(biāo)簽在面板中的位置jl1.setBounds(100, 100, 70, 70);jl2.setBounds(100, 250, 70, 70);// 添加文本框JTextField jtf = new JTextField(20);// 添加密碼文本框JPasswordField jpf = new JPasswordField(20);// 設(shè)置文本框位置jtf.setBounds(200, 115, 200, 40);jpf.setBounds(200, 265, 200, 40);// 添加按鈕JButton jb = new JButton('登錄');// 設(shè)置按鈕文字大小jb.setFont(FONT_SIZE_20);// 設(shè)置按鈕位置及大小jb.setBounds(250, 400, 100, 50);// 設(shè)置面板背景顏色jp.setBackground(Color.YELLOW);// 內(nèi)部類(lèi)進(jìn)行事件處理jb.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 獲取輸入的賬號(hào)和密碼String userName = jtf.getText();String userPassword = new String(jpf.getPassword());// 驗(yàn)證是否正確boolean aBoolean = atm.login(userName, userPassword);if (aBoolean) {// 登錄成功dispose();// 關(guān)閉登錄界面// 打開(kāi)功能界面new WorkingJFrame();} elseshowMessageDialog('賬號(hào)或密碼錯(cuò)誤');// 調(diào)用父類(lèi)彈窗方法}});// 添加組件jp.add(jl1);jp.add(jtf);jp.add(jl2);jp.add(jpf);jp.add(jb);// 窗體添加面板add(jp);}public static void main(String[] args) {new LoginJFrame();// 先創(chuàng)建登錄界面}}
CentreJFrame.java
package atmJFrame.myJFrame;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.regex.Matcher;import java.util.regex.Pattern;//中間窗口,存錢(qián)、取錢(qián)、轉(zhuǎn)賬、修改密碼界面的父類(lèi)public class CentreJFrame extends MyJFrame {// 空布局面板,自己設(shè)置組件位置及大小protected JPanel jp = new JPanel(null);// 輸入金額標(biāo)簽protected JLabel jl = new JLabel('請(qǐng)輸入金額:');// 輸入金額文件框protected JTextField jtf = new JTextField(20);// 確認(rèn)、取消按鈕protected JButton jb1 = new JButton('確認(rèn)');protected JButton jb2 = new JButton('取消');// 轉(zhuǎn)賬時(shí)轉(zhuǎn)賬賬號(hào)標(biāo)簽protected JLabel jLabel = new JLabel('請(qǐng)輸入轉(zhuǎn)賬賬號(hào):');// 轉(zhuǎn)賬時(shí)轉(zhuǎn)賬賬號(hào)文本框protected JTextField jTextField = new JTextField(20);// 修改密碼時(shí)新密碼標(biāo)簽protected JLabel jLabelCP = new JLabel('請(qǐng)輸入新密碼(只能為數(shù)字):');// 修改密碼時(shí)新密碼文本框protected JTextField jTextFieldCP = new JTextField(20);// 提醒用戶(hù)輸入金額為100的倍數(shù)private JLabel jle = new JLabel('( 提示:只能輸入100的倍數(shù) )');public CentreJFrame(String str) {super(str);// 判斷要進(jìn)行的操作if (str.equals('轉(zhuǎn)賬'))init1();else if (str.equals('修改密碼'))init2();elseinit();one();// 最后調(diào)用共有}// 取錢(qián)和取錢(qián)特有組件private void init() {// 輸入金額標(biāo)簽,設(shè)置字體,位置及大小jl.setFont(FONT_SIZE_25);jl.setBounds(100, 100, 200, 100);// 輸入金額文本框jtf.setBounds(300, 250, 200, 50);// 添加輸入金額標(biāo)簽和輸入金額文本框jp.add(jl);jp.add(jtf);setJLE();}// 轉(zhuǎn)賬特有組件private void init1() {init();// 輸入賬戶(hù)標(biāo)簽jLabel.setFont(FONT_SIZE_25);jLabel.setBounds(100, 10, 200, 40);// 輸入賬戶(hù)文本jTextField.setBounds(300, 80, 200, 50);// 添加輸入賬戶(hù)標(biāo)簽和輸入賬戶(hù)文本jp.add(jLabel);jp.add(jTextField);}// 修改密碼特有組件private void init2() {// 輸入新密碼標(biāo)簽jLabelCP.setFont(FONT_SIZE_25);jLabelCP.setBounds(50, 100, 400, 70);// 輸入新密碼文本框jTextFieldCP.setBounds(300, 215, 200, 40);// 添加輸入新密碼標(biāo)簽和輸入新密碼文本框jp.add(jLabelCP);jp.add(jTextFieldCP);}// 共有組件及操作private void one() {// 按鈕設(shè)置jb1.setFont(FONT_SIZE_20);jb2.setFont(FONT_SIZE_20);jb1.setBounds(300, 350, 100, 50);jb2.setBounds(450, 350, 100, 50);jp.add(jb1);jp.add(jb2);jp.setBackground(Color.GREEN);jb1.addActionListener(listener);jb2.addActionListener(listener);// 添加到窗體add(jp);setVisible(true);}// 設(shè)置提示private void setJLE() {jle.setFont(FONT_SIZE_10);jle.setBounds(100, 180, 300, 50);jp.add(jle);}// 創(chuàng)建監(jiān)聽(tīng)器private ActionListener listener = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 按鈕被點(diǎn)擊后String actionCommand = e.getActionCommand();// 獲取按鈕上的字switch (actionCommand) {case '確認(rèn)':change();break;case '取消':new WorkingJFrame();// 創(chuàng)建功能界面dispose();// 關(guān)閉此界面break;}}};// 點(diǎn)擊確認(rèn)按鈕執(zhí)行的操作,子類(lèi)重寫(xiě)覆蓋實(shí)現(xiàn)各自功能protected void change() {}// 正則表達(dá)式判斷輸入是否為數(shù)字protected boolean isNumber(String str) {Pattern pattern = Pattern.compile('[0-9]*');Matcher isNum = pattern.matcher(str);if (!isNum.matches())return false;return true;}}
CunMoneyJFrame.java
package atmJFrame.myJFrame;//存錢(qián)界面public class CunMoneyJFrame extends CentreJFrame {public CunMoneyJFrame() {super('存錢(qián)');}protected void change() {String s = jtf.getText();if (isNumber(s)) {Double money = Double.parseDouble(s);boolean b = atm.saveMoney(money);if (b)showMessageDialog('您的錢(qián)錢(qián)已存入n您的賬戶(hù)余額為:' + atm.getMoney1());elseshowMessageDialog('您輸入有誤');} elseshowMessageDialog('您輸入有誤');jtf.setText('');}}
GiveMoneyJFrame.java
package atmJFrame.myJFrame;//轉(zhuǎn)賬界面public class GiveMoneyJFrame extends CentreJFrame {public GiveMoneyJFrame() {super('轉(zhuǎn)賬');}protected void change() {String s = jTextField.getText();boolean b = atm.anotherUser(s);if (b) {// 獲取輸入金額String s1 = jtf.getText();if (isNumber(s1)) {// 如果輸入是數(shù)字Double money = Double.parseDouble(s1);atm.giveMoney(money);showMessageDialog('錢(qián)已轉(zhuǎn)入n您的賬戶(hù)余額為:' + atm.getMoney1());} elseshowMessageDialog('您輸入有誤');} elseshowMessageDialog('您輸入有誤');new WorkingJFrame();// 創(chuàng)建功能界面dispose();// 關(guān)閉此界面}}
QuMoneyJFrame.java
package atmJFrame.myJFrame;//取錢(qián)界面public class QuMoneyJFrame extends CentreJFrame {public QuMoneyJFrame() {super('取錢(qián)');}protected void change() {String s = jtf.getText();if (isNumber(s)) {Double money = Double.parseDouble(s);boolean b = atm.quMoney(money);if (b) {showMessageDialog('請(qǐng)收好您的錢(qián)n您的賬戶(hù)余額為:' + atm.getMoney1());} elseshowMessageDialog('您輸入有誤');} elseshowMessageDialog('您輸入有誤');jtf.setText('');}}
到此這篇關(guān)于教你用Java Swing實(shí)現(xiàn)自助取款機(jī)系統(tǒng)的文章就介紹到這了,更多相關(guān)Java Swing自助取款機(jī)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ajax請(qǐng)求添加自定義header參數(shù)代碼2. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟3. 基于javascript處理二進(jìn)制圖片流過(guò)程詳解4. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式5. 教你如何寫(xiě)出可維護(hù)的JS代碼6. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……7. 使用Python和百度語(yǔ)音識(shí)別生成視頻字幕的實(shí)現(xiàn)8. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)9. Django-migrate報(bào)錯(cuò)問(wèn)題解決方案10. Java Lock接口實(shí)現(xiàn)原理及實(shí)例解析
