日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java GUI實現ATM機系統(3.0版)

瀏覽:158日期:2022-08-15 11:19:20

寫個小項目了解一下GUI。用java GUI實現銀行ATM自動取款機,實現登錄界面、登錄成功界面、各個操作功能實現界面。

用java GUI實現一個ATM機系統(3.0版)

設計思路

設計兩個包(bank包,atmJFrame包)

1、bank包:

(1)、ATM類:實現用戶各種操作;(2)、Data類:從user文件中獲取所有用戶信息,并返回要找的用戶,再將修改完之后的用戶信息寫入user文件中;(3)、user文件儲存所有用戶信息。

2、atmJFrame包:

(1)、MyJFrame類:自己創建的界面父類;(2)、LoginJFrame:登錄界面;(3)、WorkingJFrame:登錄成功后顯示的功能界面;(4)、CentreJFrame:中間窗口,存錢、取錢、轉賬、修改密碼界面的父類;(5)、QuMoneyJFrame:取錢界面;(6)、CunMoneyJFrame:存錢界面;(7)、GiveMoneyJFrame:轉賬界面;(8)、ChangePasswordJFrame:修改密碼界面。

源碼

bank包

package bank;//ATM類public class ATM { //有一個類操作數據的類 private Data data = new Data(); //ATM機里的數據 private String userName;//用戶賬號且唯一 private String userPassword;//用戶密碼 private double userMoney;//用戶賬戶里的錢 private String user;//使用該臺ATM機的用戶全部信息 private String antherUser;//被轉賬用戶 //登錄方法 public boolean login(String userNameString,String userPassword1){ boolean b= false; String x = data.backUser(userNameString); //判斷賬戶是否存在 if(!x.equals('null')){ user = x;//獲取用戶所有信息 String[] str = user.split('*');//將用戶信息分割 userName = str[0];//用戶名 userPassword = str[1];//用戶密碼 userMoney = Double.parseDouble(str[2]);//用戶余額 //密碼正確 if(userPassword.equals(userPassword1)) b = true; } return b; } //獲取賬戶余額 public Double getMoney1(){ return userMoney; } //存錢 public boolean saveMoney(Double money1){ boolean b = false; if(money1%100 == 0) { //如果存的錢正確 userMoney = userMoney + money1;//存上 b = true; } return b; } //取錢 public boolean quMoney(Double money1){ boolean b = false; if(money1%100 == 0 && money1 <= userMoney){ userMoney = userMoney - money1; b = true; } return b; } //只判斷用戶賬戶是否存在 public boolean anotherUser(String userName1){ boolean b = false; String inUserName = userName1; String str = data.backUser(inUserName); //如果該賬戶存在 if(!str.equals('null')) { antherUser = str;//獲取被轉賬賬戶所有信息 b = true; } return b; } //進行轉賬 public void giveMoney(Double money1){ String[] str1 = antherUser.split('*');//分割 Double x = Double.parseDouble(str1[2]);//獲取被轉賬賬戶余額 x = x + money1; userMoney = userMoney - money1; antherUser = changeUser(str1[0], str1[1], x);//改變被轉賬賬戶信息 data.saveData(antherUser,false);//將用戶信息傳給Data類保存被轉賬賬戶信息 } //修改密碼實現 public void changePassword(String newPassword){ userPassword = newPassword; } //辦完業務后修改用戶信息 private String changeUser(String n,String w,Double d){ String str = n + '*' + w + '*' + d; return str; } //辦完所有業務 public void over(){ user = changeUser(userName,userPassword,userMoney); data.saveData(user,true); }}

package bank;import java.io.*;import java.util.HashMap;import java.util.Map;import java.util.Set;//數據類是文件和ATM機之間操作用戶信息的橋梁public class Data { //Map儲存數據庫里所有用戶的全部信息 Map<String,String> userData = new HashMap(); //返回用戶的信息 private String user; //創建數據類加載所有用戶信息 public Data(){ getUsers(); } private void getUsers(){ String str; String[] string; File file = new File('srcbankuser'); FileReader fileReader = null; BufferedReader bufferedReader = null; try{ fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader); while((str = bufferedReader.readLine())!=null){ string = str.split('*',2); userData.put(string[0],string[1]); } }catch(Exception e){ e.printStackTrace(); if((fileReader!=null)&&(bufferedReader!=null)){ try { bufferedReader.close(); fileReader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } //告訴用戶名,如果找到返回該用戶所有信息,沒找到返回null public String backUser(String userName){ String str = 'null'; if(userData.containsKey(userName)) str = userName + '*' + userData.get(userName); user = str; return user; } //修改用戶數據并儲存在userData圖里 public void saveData(String user,boolean aBoolean){ String[] string = user.split('*',2); userData.remove(string[0]); userData.put(string[0],string[1]); if(aBoolean)//判斷用戶是否操作結束 changeUser(); } //用戶操作完,將userData里所有的用戶再寫入文件里 private void changeUser(){ String str,string=''; Set<String> keys = userData.keySet(); for(String key : keys){ str = key + '*' + userData.get(key); string = string + str + 'n'; } File file = new File('srcbankuser'); FileWriter out = null; try { out = new FileWriter(file); out.write(string); out.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } }}

//user文件//需要注意文件位置'srcbankuser'李四*234*7500.0張三*123*13100.0王五*123*1100.0

atmJFrame包

package atmJFrame.myJFrame;import bank.ATM;import javax.swing.*;import java.awt.*;//自己創造的界面的父類public class MyJFrame extends JFrame { //設置字體供子類使用 public static final Font FONT_SIZE_10 = new Font('宋體',Font.PLAIN,18); public static final Font FONT_SIZE_20 = new Font('宋體',Font.PLAIN,20); public static final Font FONT_SIZE_25 = new Font('宋體',Font.PLAIN,25); //給一個靜態公共不可改變的ATM對象作為屬性,供子類使用 public static final ATM atm = new ATM(); //創建窗體 public MyJFrame(String title){ super(title); //設置窗體不可改變 setResizable(false); //設置窗體大小 setSize(600,600); //設置窗體居中 setLocationRelativeTo(null); } //無參構造,創建無標題窗體 public MyJFrame(){ this(''); } //設置彈窗方法供子類使用(傳入字符串并顯示出) protected void showMessageDialog(String str){ JOptionPane.showMessageDialog(this,str); }}

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機'); //設置窗體可關閉 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設置組件 init(); //界面可視化 setVisible(true); } //初始化界面 private void init(){ //創建面板對象,并定義為空布局 JPanel jp = new JPanel(null); //添加標簽 JLabel jl1 = new JLabel('賬號:'); JLabel jl2 = new JLabel('密碼:'); //設置標簽字體 jl1.setFont(FONT_SIZE_20); jl2.setFont(FONT_SIZE_20); //設置標簽在面板中的位置 jl1.setBounds(100,100,70,70); jl2.setBounds(100,250,70,70); //添加文本框 JTextField jtf = new JTextField(20); //添加密碼文本框 JPasswordField jpf = new JPasswordField(20); //設置文本框位置 jtf.setBounds(200,115,200,40); jpf.setBounds(200,265,200,40); //添加按鈕 JButton jb = new JButton('登錄'); //設置按鈕文字大小 jb.setFont(FONT_SIZE_20); //設置按鈕位置及大小 jb.setBounds(250,400,100,50); //設置面板背景顏色 jp.setBackground(Color.YELLOW); //內部類進行事件處理 jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //獲取輸入的賬號和密碼 String userName = jtf.getText(); String userPassword = new String(jpf.getPassword()); //驗證是否正確 boolean aBoolean = atm.login(userName,userPassword); if(aBoolean){ //登錄成功 dispose();//關閉登錄界面 //打開功能界面 new WorkingJFrame(); } else showMessageDialog('賬號或密碼錯誤');//調用父類彈窗方法 } }); //添加組件 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();//先創建登錄界面 }}

package atmJFrame.myJFrame;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//功能界面public class WorkingJFrame extends MyJFrame { public WorkingJFrame(){ super('功能界面'); init(); setVisible(true); } //初始化功能界面 private void init(){ //設置第一個面板對象 JPanel jp1 = new JPanel(); //創建標簽,將標簽添加到第一個面板上 JLabel jb = new JLabel('請選擇要進行的操作:'); jb.setFont(FONT_SIZE_25);//設置標簽字體大小 jp1.add(jb); jp1.setBackground(Color.CYAN); //將第一個面板添加到窗體上方(JFrame窗體是邊界布局) add(jp1, BorderLayout.NORTH); //創建第二個面板對象(空布局,自己設置按鈕位置及大小),然后將按鈕添加 JPanel jp2 = new JPanel(null); //字符串數組存儲各個按鈕名字,然后循環設置按鈕名字 String[] str = {'1、余額查詢','2、取錢','3、存錢','4、轉賬','5、修改密碼','6、退出系統'}; //int二維數組儲存各個按鈕位置及大小信息,循環設置 int[][] xy = new int[][]{{50,100,200,50},{350,100,200,50},{50,200,200,50},{350,200,200,50},{50,300,200,50},{350,300,200,50}}; for(int i = 0;i < str.length;i ++){ JButton jButton = new JButton(str[i]);//創建按鈕 jButton.setFont(FONT_SIZE_20);//設置按鈕字體大小 jButton.setBounds(xy[i][0],xy[i][1],xy[i][2],xy[i][3]);//設置按鈕位置及大小 jButton.addActionListener(listener);//按鈕注冊監聽器 jp2.add(jButton);//將按鈕添加 } //設置jp2背景顏色 jp2.setBackground(Color.GRAY); //將第二個面板添加到窗體(JFrame窗體中間) add(jp2); } //創建事件監聽器 private ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand();//獲取按鈕上的字 //switch選擇功能,且每次功能結束回到該界面,關閉已操作完的功能界面 switch(actionCommand){ case '1、余額查詢': getMoney(); break; case '2、取錢': quMoney(); break; case '3、存錢': cunMoney(); break; case '4、轉賬': giveMoney(); break; case '5、修改密碼': changePassword(); break; case '6、退出系統': over(); break; } } }; //查詢余額功能 private void getMoney(){ showMessageDialog('您的賬戶余額為:' + atm.getMoney1());//調用父類方法彈窗 } //取錢功能 private void quMoney(){ new QuMoneyJFrame();//創建取錢界面 dispose();//關閉該界面 } //存錢功能 private void cunMoney(){ new CunMoneyJFrame(); dispose(); } //轉賬功能 private void giveMoney(){ new GiveMoneyJFrame(); dispose(); } //修改密碼功能 private void changePassword(){ new ChangePasswordJFrame(); dispose(); } //退出系統功能 private void over(){ atm.over();//調用方法操作文件 dispose(); }}

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;//中間窗口,存錢、取錢、轉賬、修改密碼界面的父類public class CentreJFrame extends MyJFrame { //空布局面板,自己設置組件位置及大小 protected JPanel jp = new JPanel(null); //輸入金額標簽 protected JLabel jl = new JLabel('請輸入金額:'); //輸入金額文件框 protected JTextField jtf = new JTextField(20); //確認、取消按鈕 protected JButton jb1 = new JButton('確認'); protected JButton jb2 = new JButton('取消'); //轉賬時轉賬賬號標簽 protected JLabel jLabel = new JLabel('請輸入轉賬賬號:'); //轉賬時轉賬賬號文本框 protected JTextField jTextField = new JTextField(20); //修改密碼時新密碼標簽 protected JLabel jLabelCP = new JLabel('請輸入新密碼(只能為數字):'); //修改密碼時新密碼文本框 protected JTextField jTextFieldCP = new JTextField(20); //提醒用戶輸入金額為100的倍數 private JLabel jle = new JLabel('( 提示:只能輸入100的倍數 )'); public CentreJFrame(String str){ super(str); //判斷要進行的操作 if(str.equals('轉賬')) init1(); else if(str.equals('修改密碼')) init2(); else init(); one();//最后調用共有 } //取錢和取錢特有組件 private void init(){ //輸入金額標簽,設置字體,位置及大小 jl.setFont(FONT_SIZE_25); jl.setBounds(100,100,200,100); //輸入金額文本框 jtf.setBounds(300,250,200,50); //添加輸入金額標簽和輸入金額文本框 jp.add(jl); jp.add(jtf); setJLE(); } //轉賬特有組件 private void init1(){ init(); //輸入賬戶標簽 jLabel.setFont(FONT_SIZE_25); jLabel.setBounds(100,10,200,40); //輸入賬戶文本 jTextField.setBounds(300,80,200,50); //添加輸入賬戶標簽和輸入賬戶文本 jp.add(jLabel); jp.add(jTextField); } //修改密碼特有組件 private void init2(){ //輸入新密碼標簽 jLabelCP.setFont(FONT_SIZE_25); jLabelCP.setBounds(50,100,400,70); //輸入新密碼文本框 jTextFieldCP.setBounds(300,215,200,40); //添加輸入新密碼標簽和輸入新密碼文本框 jp.add(jLabelCP); jp.add(jTextFieldCP); } //共有組件及操作 private void one(){ //按鈕設置 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); } //設置提示 private void setJLE(){ jle.setFont(FONT_SIZE_10); jle.setBounds(100,180,300,50); jp.add(jle); } //創建監聽器 private ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) {//按鈕被點擊后 String actionCommand = e.getActionCommand();//獲取按鈕上的字 switch(actionCommand){ case '確認': change(); break; case '取消': new WorkingJFrame();//創建功能界面 dispose();//關閉此界面 break; } } }; //點擊確認按鈕執行的操作,子類重寫覆蓋實現各自功能 protected void change(){ } //正則表達式判斷輸入是否為數字 protected boolean isNumber(String str){ Pattern pattern = Pattern.compile('[0-9]*'); Matcher isNum = pattern.matcher(str); if(!isNum.matches()) return false; return true; }}

package atmJFrame.myJFrame;//取錢界面public class QuMoneyJFrame extends CentreJFrame { public QuMoneyJFrame(){ super('取錢'); } protected void change(){ String s = jtf.getText(); if(isNumber(s)){ Double money = Double.parseDouble(s); boolean b = atm.quMoney(money); if(b){ showMessageDialog('請收好您的錢n您的賬戶余額為:' + atm.getMoney1()); } else showMessageDialog('您輸入有誤' ); } else showMessageDialog('您輸入有誤' ); jtf.setText(''); }}

package atmJFrame.myJFrame;//存錢界面public class CunMoneyJFrame extends CentreJFrame { public CunMoneyJFrame(){ super('存錢'); } protected void change(){ String s = jtf.getText(); if(isNumber(s)){ Double money = Double.parseDouble(s); boolean b = atm.saveMoney(money); if(b) showMessageDialog('您的錢錢已存入n您的賬戶余額為:' + atm.getMoney1()); else showMessageDialog('您輸入有誤' ); } else showMessageDialog('您輸入有誤' ); jtf.setText(''); }}

package atmJFrame.myJFrame;//轉賬界面public class GiveMoneyJFrame extends CentreJFrame { public GiveMoneyJFrame(){ super('轉賬'); } protected void change(){ String s = jTextField.getText(); boolean b = atm.anotherUser(s); if(b){ //獲取輸入金額 String s1 = jtf.getText(); if(isNumber(s1)){//如果輸入是數字 Double money = Double.parseDouble(s1); atm.giveMoney(money); showMessageDialog('錢已轉入n您的賬戶余額為:' + atm.getMoney1()); } else showMessageDialog('您輸入有誤' ); } else showMessageDialog('您輸入有誤' ); new WorkingJFrame();//創建功能界面 dispose();//關閉此界面 }}

package atmJFrame.myJFrame;//修改密碼界面public class ChangePasswordJFrame extends CentreJFrame{ public ChangePasswordJFrame(){ super('修改密碼'); } protected void change(){ String s = jTextFieldCP.getText(); if(isNumber(s)){ atm.changePassword(s); showMessageDialog('密碼修改成功'); } else showMessageDialog('您輸入有誤' ); new WorkingJFrame();//創建功能界面 dispose();//關閉此界面 }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品欧美日韩一区| 久久天堂成人| 蜜桃视频在线网站| 国产成人精品亚洲线观看| 丰满少妇一区| 老色鬼久久亚洲一区二区| 日韩激情啪啪| 久久国产人妖系列| 免费成人av在线播放| 亚洲毛片一区| 91精品啪在线观看国产爱臀| 日韩精彩视频在线观看| 亚洲精品伊人| 国产福利一区二区三区在线播放| 国产乱码精品一区二区三区四区 | 日韩高清成人| 久久久久久久欧美精品| 国产精品久久久久蜜臀| 激情综合网址| 日韩精品一区二区三区中文 | 欧美日韩一二三四| 日韩中文字幕91| 久久av影视| 一区在线免费观看| 国产精品久久久久77777丨| 亚洲女同av| 色8久久久久| av亚洲一区二区三区| 老司机精品久久| 首页国产精品| 日本国产一区| 激情欧美丁香| 国产精品欧美大片| 亚洲一区二区网站| 久久一区精品| 国产一区二区精品| 综合日韩av| 国产精品一区二区三区美女 | 国产一区二区视频在线看| 国产一区导航| 欧美日韩在线播放视频| 18国产精品| 亚洲在线网站| 99热国内精品| 青青青免费在线视频| 91综合久久爱com| 免费成人性网站| 先锋影音久久久| 日本不卡免费高清视频在线| 日韩av三区| 美女久久一区| 国产精品三上| 99国产精品99久久久久久粉嫩| 久久国产日本精品| 国产精品久久久亚洲一区| 日本综合视频| 欧美亚洲色图校园春色| 日韩av在线免费观看不卡| 综合国产在线| 91精品在线免费视频| 日本不卡一二三区黄网| 日韩中文av| 一区二区三区网站| 亚洲深夜影院| 老牛影视一区二区三区| 日韩精品一卡二卡三卡四卡无卡 | 中文字幕在线看片| 日本蜜桃在线观看视频| 日韩一区亚洲二区| 久久一区二区三区喷水| 一区免费视频| 日本不卡一区二区| 国产精品久久久久久av公交车| 国产精品尤物| 日韩免费福利视频| 99xxxx成人网| 国产伦精品一区二区三区视频 | 日韩午夜高潮| 亚洲午夜久久| 欧美偷窥清纯综合图区| 麻豆中文一区二区| 日韩欧美不卡| 午夜在线视频一区二区区别 | 亚洲男女av一区二区| 日精品一区二区三区| 日本在线观看不卡视频| 精品国产一区二区三区性色av| 日韩电影免费网址| 亚洲综合另类| 免费亚洲一区| 夜夜精品视频| 欧美激情日韩| 亚洲激情婷婷| 国产日韩高清一区二区三区在线 | 99精品美女| 日本免费新一区视频| 日韩大片在线| 日本精品另类| 精品在线91| 国产精品视频一区二区三区四蜜臂 | 国产精品二区不卡| 伊人久久在线| 欧美一区精品| 亚洲免费影院| 精品视频高潮| 综合欧美亚洲| 亚洲二区免费| 国产白浆在线免费观看| 日韩欧美一区免费| 免费精品视频| 天堂av在线| 精品中文字幕一区二区三区| 蜜臀久久久久久久| 亚洲一级高清| 99久久九九| 国产高清不卡| 国产精品xxx在线观看| 亚洲精品四区| 日韩影院免费视频| 国产精品毛片在线| 亚洲少妇自拍| 中文亚洲欧美| 亚洲一区二区三区四区五区午夜| 国产99久久| 狠狠干成人综合网| 伊人成人网在线看| 欧美综合二区| 亚洲久久一区| 欧美日韩国产一区二区在线观看| 日韩激情一二三区| 国产人成精品一区二区三| 亚洲人成精品久久久| 午夜亚洲精品| 亚欧洲精品视频在线观看| 亚洲免费毛片| 国产美女撒尿一区二区| 美女精品久久| 国产成人精品亚洲日本在线观看| 中文字幕在线免费观看视频| 在线日韩中文| 亚洲一区av| 国产精品永久| 国产成人精品亚洲日本在线观看| 久久精品国语| 日韩精品亚洲专区| 精品久久久中文字幕| 欧美xxxx中国| 99国产精品视频免费观看一公开| 日韩精品一区第一页| 麻豆一区二区在线| 激情欧美丁香| 日韩中文字幕无砖| 精品精品国产三级a∨在线| 四虎4545www国产精品| 在线一区二区三区视频| 国产精品亚洲产品| 久久精品动漫| 国产亚洲久久| 不卡中文一二三区| 国产日韩1区| 99pao成人国产永久免费视频 | 91精品一区| 91精品精品| 国产精品一区毛片| 国产一区二区精品| 91免费精品| 国产麻豆一区二区三区| 欧美日韩精品一本二本三本| 久久免费精品| 日本不卡一二三区黄网| 日韩亚洲在线| 91精品国产调教在线观看| 国产伦一区二区三区| 视频一区二区三区入口| 国产伦精品一区二区三区千人斩| 欧美精品一二| 91看片一区| 欧美激情网址| 日本aⅴ精品一区二区三区| 婷婷久久一区| 99tv成人| 久久激情中文| 国产精品传媒麻豆hd| 爽爽淫人综合网网站| 久久国产中文字幕| 韩国久久久久久| 久久免费视频66| 在线精品福利| 视频一区二区三区中文字幕| 国产欧美日韩精品一区二区免费 | 蜜桃传媒麻豆第一区在线观看| 欧美+日本+国产+在线a∨观看| 亚洲在线电影| 欧美高清不卡| 欧美在线网站| 欧美在线影院| 快she精品国产999| 伊人国产精品| 少妇精品久久久一区二区| 亚洲开心激情|