




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、ATM柜員機模擬程序一、實訓(xùn)設(shè)備與工具個人計算機(奔騰486檔以上),windowsXP,JCreator或Editplus編譯開發(fā)環(huán)境二、 實驗?zāi)康呐c要求目的:掌握圖形用戶界面設(shè)計方法,掌握常用swing組件的使用和事件處理程序設(shè)計;掌握文件的I/O操作或程序?qū)?shù)據(jù)庫的訪問要求:當(dāng)輸入給定的卡號和密碼(初始卡號和密碼為123456)時,系統(tǒng)能登錄ATM柜員機系統(tǒng),用戶可以進行:1 、查詢余額:初始余額為1000元2 、ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支3 、ATM存款:不能出現(xiàn)負存款4 、修改密碼:新密碼長度不小于6為,不允許出現(xiàn)6位完全相同的情
2、況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。三、實驗實現(xiàn)的步驟1、 分析題目2、 根據(jù)自己的想法搭建程序主界面3、 為各菜單項添加事件處理程序四、ATM柜員機界面設(shè)計圖 圖1 ATM功能結(jié)構(gòu)示意圖1、 Guest 類代碼如下:class Guest / 定義客戶類String zh; /定義賬號String pswf; /定義密碼double jine; /定義金額 public Guest() /構(gòu)造Guestpublic Guest(String zh,String pswf,double jine)this.zh=zh; /帶入頂層容器,賬號,密碼,金額
3、this.pswf=pswf;this.jine=jine;String getzh() /定義成員變量賬號return zh; /成員方法double setMima(double pswf)/定義成員變量密碼return pswf;/成員方法 double getJine()/定義成員變量金額 return jine;/定義成員方法 void cunkuan(double money)/定義成員變量存款 jine=jine+money; /定義成員方法 void quqian(double money)/定義成員變量取款 jine=jine-money; /定義成員方法 String xi
4、ugaim(String mi)/定義成員變量密碼 pswf = mi; /定義成員方法 return pswf; 2、ATM柜員機主界面模塊設(shè)計 主界面的設(shè)計,主要有按鈕、文本框,組合框,標(biāo)簽,在組合中選擇賬號,在密碼的文本框中輸入各個賬號所對應(yīng)的密碼,單擊登錄按鈕可以進入選擇界面,如果密碼錯誤,就會彈出如圖3的對話框,提示“密碼錯誤 ,拒絕登錄” import javax.swing.*;import javax.swing.event.*; import java.awt.*;import java.awt.event.*; / 導(dǎo)入包class DENGRU extends JFram
5、e implements ActionListener /導(dǎo)入接口類 JPanel p1,p2,p3; /定義3個面板JLabel l1,l2,l3,l4; /定義4個標(biāo)簽JPasswordField pswf; /定義一個密碼文本JButton jb1,jb2,jb3; /定義3個按鈕JTextField jtf1; /定義一個文本框JComboBox jc1; /定義一個組合框ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器Guest g=new Guest4; /定義客戶類數(shù)組 public DENGRU() /布局 g0=new
6、Guest("chengchao","888888",5000);/客戶類數(shù)組里給的帳號,密碼,錢數(shù) g1=new Guest("baijing","888888",5000); g2=new Guest("gaolingling","888888",5000); g3=new Guest("zhaofengying","888888",5000);p1 = new JPanel(); /定義第一個面板myimage = new Ima
7、geIcon("yl1.jpg"); /定義填入的圖片l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面p1.add(l1); p2 = new JPanel(); /定義第二個面板l2 = new JLabel("卡號:"); /定義標(biāo)簽l2 jc1 = new JComboBox(); /定義組合框 jc1.addItem( "chengchao" ); /組合框里賦值jc1.addItem("baijing");jc1.addItem("zhaofengying"
8、;);jc1.addItem("gaolingling"); jc1.setSelectedIndex( 0 ); /組合框里的下標(biāo)從0開始 jc1.setEditable(true); /里面還可以輸入 l3=new JLabel("密 碼:"); /定義標(biāo)簽l3 pswf=new JPasswordField(12); /定義密碼文本l4 = new JLabel("如果沒有賬號請注冊"); /定義標(biāo)簽l4jb3 = new JButton("注冊"); /添加注冊按鈕 p2.add(l2); /把它們分別鑲在
9、面板上 p2.add(jc1);p2.add(l3);p2.add(pswf);p2.add(l4);p2.add(jb3);p3 = new JPanel(); /定義第三個面板 jb1 = new JButton("登錄"); /定義按鈕登錄jb1jb1.addActionListener(this); /jb1申請監(jiān)聽jb2 = new JButton("注銷"); /定義按鈕注銷jb2jb2.addActionListener(this); /jb2申請監(jiān)聽p3.add(jb1); /把它們添加到p3面板里p3.add(jb2); content
10、 = this.getContentPane(); /布局定義 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定義頂部為面板p1 content.add(p2,BorderLayout.CENTER); /定義中部為面板p2 content.add(p3,BorderLayout.SOUTH); /定義底部為面板p3 this.pack(); this.setTitle("ATM 柜員機"); /定義為窗口名稱 this.setSize(600,300); / 定義窗口的
11、大小 this.setResizable(false); this.show(); /顯示 this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );/ 關(guān)閉、退出 public void actionPerformed(ActionEvent e ) /監(jiān)聽類String x= jc1.getSelectedItem().toString(); /把jc1的值強制轉(zhuǎn)換成字符if(e.getSource()=jb1) /如果點擊是jb1按鈕就進入Forfor(int i=0;i<4;i+) /判斷名字在數(shù)組的位置if(x.equals(g
12、i.zh) /檢查到開始判斷是否匹配 if(pswf.getText().equals(gi.pswf) /名字匹配成功后判斷密碼是否成功 new KQ(gi); /密碼真確后進入KQ的界面 setVisible( false); else JOptionPane.showMessageDialog( this,"密碼錯誤,拒絕登陸"); /密碼錯誤彈出提示密碼錯誤 elseSystem.exit(0); /注銷事件退出 public static void main(String args) /定義的MAIN,才能進入。 new DENGRU(); 圖1 主界面 圖2 密
13、碼輸出錯誤提示欄3、選擇界面模塊設(shè)計在選擇模塊服務(wù)中,有各種ATM的服務(wù)功能,只要在用戶該界面中選擇按鈕,它會彈出各個相應(yīng)的界面,其中的代碼為:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class KQ extends JFrame implements ActionListener /導(dǎo)入接口類 JPanel p1,p2,p3; /定義3個面板JLabel l1; /定義1個標(biāo)簽JButton jb1,jb2,jb3,jb4,jb5; /定義
14、5個按鈕ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器 Guest key; /定義客戶類傳從參數(shù)keypublic KQ(Guest key) this.key =key; /把key傳到頂層容器p1 = new JPanel(); /定義第一個面板myimage = new ImageIcon("yl1.jpg"); /定義填入的圖片l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面p1.add(l1); p2 = new JPanel(); /定義第二個面板 jb1 = new JB
15、utton("ATM取款"); /定義jb1按鈕ATM取款 jb1.addActionListener(this); /jb1申請監(jiān)聽jb2 = new JButton("ATM存款"); /定義jb2按鈕ATM存款 jb2.addActionListener(this); /jb2申請監(jiān)聽jb3 = new JButton("查詢余額 "); /定義jb3按鈕查詢余額 jb3.addActionListener(this); /jb3申請監(jiān)聽jb4 = new JButton("修改密碼"); /定義jb4按鈕修
16、改密碼 jb4.addActionListener(this); /jb4申請監(jiān)聽p2.add(jb1);p2.add(jb2);p2.add(jb3);p2.add(jb4);p3 = new JPanel(); /定義第三個面板 jb5 = new JButton("退出"); /定義jb5按鈕退出 jb5.addActionListener( /定義一個匿名類 new ActionListener() public void actionPerformed( ActionEvent event ) System.exit(0); /退出登陸 );p3.add(jb5)
17、; content = this.getContentPane(); /布局定義 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定義頂部為面板p1 content.add(p2,BorderLayout.CENTER); /定義中部為面板p2 content.add(p3,BorderLayout.SOUTH); /定義底部為面板p3 this.pack();this.setTitle("進入界面"); /定義為窗口名稱this.setSize(400,300); / 定
18、義窗口的大小 this.setResizable(false);this.show(); public void actionPerformed ( ActionEvent event ) /接口監(jiān)聽 if (event.getSource()=jb4 ) /判斷是否是jb4 new Xgmm(key); /進入Xgmm setVisible( false); if (event.getSource()=jb1 ) /判斷是否是jb1 new Zdqk(key); /進入Zdqk setVisible( false); if (event.getSource()=jb2 ) /判斷是否是jb2
19、 new Zdck(key); /進入Zdck setVisible( false); if (event.getSource()=jb3 ) /判斷是否是jb3 new Cxye(key); /進入Cxye setVisible( false); 圖3. 進入選擇KQ界面4、自動存款模塊設(shè)計 在取款模塊中,和其它界面也是同樣的結(jié)構(gòu),有文本框和按鈕還有標(biāo)簽,用戶在文本框中輸入它想存入的數(shù)額,單擊確定,就可以存入,如果輸錯了或者是不想存了,可以單擊取消,退出的選擇界面。import java.awt.*;import java.awt.event.*;import javax.swing.*;c
20、lass Zdck extends JFrame implements ActionListener /導(dǎo)入接口類 JPanel p1,p2,p3; /定義3個面板JLabel l1; /定義1個標(biāo)簽JButton jb1,jb2; /定義2個按鈕JTextField jtf1; /定義一個文本框ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器Guest key; /定義客戶類傳從參數(shù)keypublic Zdck(Guest key) this.key=key; /把key傳到頂層容器 p1=new JPanel(); /定義第一個面板
21、myimage = new ImageIcon("yl1.jpg"); /定義填入的圖片 l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面 p1.add(l1); p2=new JPanel(); /定義第二個面板 l1=new JLabel("請輸入您要存入的金額:"); /定義一個標(biāo)簽請輸入您要存入的金額: jtf1 = new JTextField(10); /定義一個文本框 p2.add(l1); p2.add(jtf1); p3=new JPanel(); /定義第三個面板 jb1=new JButton(&quo
22、t;確定"); /定義一個按鈕確定 jb1.addActionListener(this); /jb1申請一個監(jiān)聽 jb2=new JButton("返回"); /定義一個按鈕返回 jb2.addActionListener( /定義一個匿名類監(jiān)聽 new ActionListener() public void actionPerformed(ActionEvent event) KQActionPerformed(event); ); p3.add(jb1); p3.add(jb2);content=this.getContentPane(); /布局定義co
23、ntent.setLayout(neBorderLayout();content.add(p1,BorderLayout.NORTH); /定義頂部為面板p1 content.add(p2,BorderLayout.CENTER); /定義中部為面板p2 content.add(p3,BorderLayout.SOUTH); /定義底部為面板p3 this.pack(); this.setTitle("自 動 存 款"); /定義為窗口名稱 this.setSize(320,300); / 定義窗口的大小 this.setResizable(false); this.sho
24、w(); /顯示 public void actionPerformed (ActionEvent e) /接口監(jiān)聽類 if(e.getSource()=jb1) /判斷是是否是jb1 double money = Double.parseDouble(jtf1.getText();/ 把money轉(zhuǎn)成Double JOptionPane.showMessageDialog(this,"成功取款"+jtf1.getText()+"元!");/一個提示框填出你成功存了多少 key.cunkuan(money); /把存的錢傳回客戶類 jtf1.setTex
25、t("0"); return; public void KQActionPerformed ( ActionEvent event ) /匿名類監(jiān)聽過程 if (event.getSource()=jb2 ) /判斷要是jb2 new KQ(key); /返回KQ界面 setVisible( false); 圖4. 自動存款存款成功看圖5: 圖 5. 存款成功5、自動取款模塊設(shè) 在取款模塊中,和其它界面也是同樣的結(jié)構(gòu),有文本框和按鈕還有標(biāo)簽,用戶在文本框中輸入它想取的數(shù)額,但必須是100的倍數(shù),而且每一次最多只能去5000快,當(dāng)然取款時不能超過卡里的余額沒卡里的余額不可以為
26、負數(shù),否則會彈出報錯的窗口,其代碼為:import java.awt.*;import java.awt.event.*;import javax.swing.*;class Zdqk extends JFrame implements ActionListener /導(dǎo)入接口類JPanel p1,p2,p3; /定義3個面板JLabel l1; /定義1個標(biāo)簽JButton jb1,jb2; /定義2個按鈕JTextField jtf1; /定義一個文本框ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器 Guest key; /定義客戶
27、類傳從參數(shù)key public Zdqk(Guest key) this.key=key; /把key傳到頂層容器 p1=new JPanel(); /定義第一個面板 myimage = new ImageIcon("yl1.jpg"); /定義填入的圖片 l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面 p1.add(l1); p2=new JPanel(); /定義第二個面板 l1=new JLabel("請輸入您要取的金額:"); /定義一個標(biāo)簽請輸入您要取的金額: jtf1 = new JTextField(10);
28、 /定義一個文本框 p2.add(l1); p2.add(jtf1); p3=new JPanel(); /定義第三個面板 jb1=new JButton("確定"); /定義一個按鈕確定 jb1.addActionListener(this); /jb1申請一個監(jiān)聽 jb2=new JButton("返回"); /定義一個按鈕返回 jb2.addActionListener(this); /jb1申請一個監(jiān)聽 p3.add(jb1); p3.add(jb2); content=this.getContentPane(); /布局定義 content.s
29、etLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定義頂部為面板p1 content.add(p2,BorderLayout.CENTER); /定義中部為面板p2 content.add(p3,BorderLayout.SOUTH); /定義底部為面板p3 this.pack(); this.setTitle("自 動 取 款"); /定義為窗口名稱 this.setSize(320,300); / 定義窗口的大小 this.setResizable(false); this.show();
30、 public void actionPerformed (ActionEvent e) /接口監(jiān)聽類 if(e.getSource()=jb1) /判斷是是否是jb1 double money = Double.parseDouble(jtf1.getText();/ 把money轉(zhuǎn)成Double if(money<key.jine) JOptionPane.showMessageDialog(this,"成功取款"+jtf1.getText()+"元!");/一個提示框填出你成功取了多少 key.quqian(money); /把存的錢傳回客戶
31、類 jtf1.setText("0"); return; else JOptionPane.showMessageDialog(this,"你的卡即將要已透支");/一個提示框提示你你的卡即將要已透支 if (e.getSource()=jb2 )/判斷是是否是jb2 new KQ(key); /放回KQ setVisible( false); 圖6. 自動取款當(dāng)取款成功時就會提示如圖7的消息。 圖7. 成功取款提示當(dāng)取款時如果超過卡里的余額的話就會報圖8和 9的錯誤。 圖8.自動取款 圖9. 以超出你的剩余金額 6、查詢余額模塊設(shè)計查詢余額的界面主要有
32、文本框,標(biāo)簽,按鈕,主要功能是在上一級選擇菜單中選擇查詢余額,就會彈出查詢余額的這個對話框。 import java.awt.*;import java.awt.event.*;import javax.swing.*;class Cxye extends JFrame implements ActionListener /導(dǎo)入接口類JPanel p1,p2,p3; /定義3個面板JLabel l1; /定義1個標(biāo)簽JButton jb1; /定義3個按鈕 ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器Guest key; /定義客戶類
33、傳從參數(shù)key public Cxye(Guest key) this.key=key; /把key傳到頂層容器 p1=new JPanel(); /定義第一個面板 myimage = new ImageIcon("yl1.jpg"); /定義填入的圖片 l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面 p1.add(l1); p2=new JPanel(); /定義第二個面板 l1=new JLabel("您的剩余金額為:"+ key.getJine();? p2.add(l1); p3=new JPanel(); /定義
34、第三個面板 jb1=new JButton("返回"); jb1.addActionListener(this); p3.add(jb1); content=this.getContentPane(); /布局定義 content.setLayout(new BorderLayout(); content.add(p1,BorderLayout.NORTH); /定義頂部為面板p1 content.add(p2,BorderLayout.CENTER); /定義中部為面板p2 content.add(p3,BorderLayout.SOUTH); /定義底部為面板p3 th
35、is.pack(); this.setTitle("查 詢 余 額"); /定義為窗口名稱 this.setSize(320,300); / 定義窗口的大小 this.setResizable(false); this.show(); public void actionPerformed ( ActionEvent e ) /接口監(jiān)聽類 if (e.getSource()=jb1 ) /判斷是否是jb1 new KQ(key); /放回KQ setVisible( false); 圖10. 查詢余額 取款500后看查詢11圖: 圖11.存款600后看查詢12圖 圖12.
36、7、修改密碼模塊設(shè)計修改密碼的界面主要有文本框,標(biāo)簽,按鈕,主要功能是先在輸入原始密碼 的文本框中輸入原來的密碼,然后在輸入要修改的密碼的文本框中輸入新密碼,在確認(rèn)新密碼后,才能真正的將密碼修改成功。 import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;class Xgmm extends JFrame implements ActionListener /導(dǎo)入接口類JPanel p1,p2,p3; /定義3個面板JLabel l1, l2, l3, l4; /定義4個標(biāo)簽JText
37、Field jtf1,jtf2,jtf3; /定義3個文本框JButton jb1,jb2; /定義2個按鈕ImageIcon myimage; /定義導(dǎo)入圖片Container content; /定義一個容器Guest key; /定義客戶類傳從參數(shù)keypublic Xgmm(Guest key)this.key=key; /把key傳到頂層容器p1 = new JPanel(); /定義第一個面板myimage = new ImageIcon("yl1.jpg"); /定義填入的圖片l1 = new JLabel(myimage); /定義把圖片放在標(biāo)簽的上面 p1.add(l1); p2=new JPanel(); /定義第二個面板l2=new JLabel("請輸入原始密碼:"); /定義標(biāo)簽請輸入原始密碼:l3=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智能用電系統(tǒng)產(chǎn)品合作協(xié)議書
- 合伙經(jīng)營鏟車合同范本
- 土壤改良工程填土施工合同范本
- 劇組法律顧問合同范本
- 合伙運輸協(xié)議合同范本
- 商品陳列協(xié)議合同范本
- 各類廣告合同范本
- 廠房噴漆合同范本
- 俱樂部管理合同范本
- 廚師和飯店合同范本
- 2025年阜新高等??茖W(xué)校單招職業(yè)傾向性測試題庫附答案
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案一套
- 《養(yǎng)老保險的理念》課件
- 2024-2025學(xué)年第二學(xué)期英語教研組工作計劃
- 山東省海洋知識競賽(初中組)考試題庫500題(含答案)
- 服務(wù)行業(yè)人力資源薪酬體系管理與優(yōu)化
- 馬尼拉草皮施工方案
- 《蔚來發(fā)展》課件
- 人工智能融入土木水利碩士人才培養(yǎng)模式研究
- 2024年山東商務(wù)職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 醫(yī)學(xué)教育中的學(xué)習(xí)風(fēng)格與個性化教學(xué)
評論
0/150
提交評論