




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計報告(本科)課程:面向?qū)ο蟪绦蛟O(shè)計學(xué)號: 姓名: 班級: 教師: 時間: 計算機學(xué)院設(shè)計名稱:ATM柜員機模擬程序設(shè)計內(nèi)容、目的與要求:設(shè)計內(nèi)容:(1)程序要求 (2)算法分析 (3)流程圖 (4)源程序 (5)調(diào)試及運行結(jié)果 (6)總結(jié)目的:設(shè)計一個ATM模擬模擬程序來實現(xiàn)ATM機系統(tǒng)的基本功能,充分運用自己所學(xué)的Java知識進行設(shè)計編程。要求:使用圖形用戶界面。當輸入給定的卡號和密碼(初始卡號和密碼為)時,系統(tǒng)能登錄ATM柜員機系統(tǒng),用戶可以按照以下規(guī)則進行:1、查詢余額:初始余額為10000元2、ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支。3
2、、ATM存款:不能出現(xiàn)負存款。4、修改密碼:新密碼長度不小于6位,不允許出現(xiàn)6位完全相同的情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。計劃與進度安排:設(shè)計過程、步驟(可加頁):算法設(shè)計:根據(jù)程序要求,我們可以清楚的知道本次設(shè)計的ATM柜員模擬程序需要實現(xiàn)四大功能,即查詢余額、取款、存款、修改密碼。除此之外,作為ATM系統(tǒng),還需要最基本的兩大功能,即登陸和退出。根據(jù)上述的功能分析,我們可以吧整個ATM系統(tǒng)分為登陸模塊、查詢模塊、取款模塊、存款模塊、修改密碼模塊。除此之外,還有在登陸系統(tǒng)后的功能選擇模塊,退出功能則鑲嵌在各個需要的模塊中。由于各個模塊的功能實現(xiàn)是
3、通過界面顯示出來的,則程序設(shè)計又可以理解為幾大界面的設(shè)計:登陸界面、主界面、查詢余額界面、取款界面、存款界面、修改密碼界面。除了幾大界面之外,還有系統(tǒng)的初始化,主要是初始卡號、密碼的設(shè)定等。在程序的大體框架確定之后,我們需要了解各個模塊所要實現(xiàn)和需要具有的功能。根據(jù)現(xiàn)有的銀行ATM系統(tǒng),我們可以很快就可以了解本次設(shè)計的ATM系統(tǒng)應(yīng)該具有的操作。登陸 界面輸卡號密碼開 始正確?否是進入主界面查詢余額取款修改密碼退出存款(1)登陸界面用戶輸入正確的賬號和密碼就可以登錄到該系統(tǒng)的主界面中去,進行相應(yīng)的操作:取款、存款、查詢、修改密碼。(2)主界面主界面包括查詢、存款、取款、修改密碼、退出的功能按鈕,
4、按下相應(yīng)的按鈕,可以進行相應(yīng)的操作。查詢余額返 回取 款顯示 余額退 出(3)查詢界面在主界面中按下查詢按鈕可以進行查詢操作。通過查詢功能我們可以查詢賬戶的余額,在查詢過程中我們可以選擇取款的業(yè)務(wù),除此之外,查詢界面之中還有返回和退出的操作。返回的操作會使用戶回到主界面,退出的操作會使用戶直接回到登陸界面。存款返 回清 除退 出存儲 余額確 定(4)存款界面在主界面按下存款按鈕可以進行存款操作,在對話中輸入你需要存入的金額,所輸入的數(shù)字也要是100的整數(shù)倍,而且不可以是負數(shù)。取款返 回清 除退 出取款 余額確 定(5)取款界面取款界面既可以通過主界面進入,也可以通過查詢、存款等操作過程中的界面
5、進入。取款功能在對話框中輸入你想要取出的金額,但是次金額不可以比賬戶的余額大,且必須是100的整數(shù)倍,輸入取款金額,會彈出取款對話框,點確定,取款完畢。 修改密碼確認新密碼確 定退 出輸入舊密碼輸入新密碼(6)修改密碼選擇修改密碼按鈕可以進行修改密碼,但是要先輸入舊密碼正確并且兩次輸入新密碼一致才可以修改密碼。修改完成后,會返回主界面。結(jié)果與分析(可以加頁): (1) 打開Ecplise,編譯運行程序后,將會看到如圖所示的歡迎界面。點擊確定之后,會進入如圖所示的登陸界面。用如下代碼段實現(xiàn):public class AtmUser user=new User();LandingFrame lf=
6、new LandingFrame();public Atm()JOptionPane.showMessageDialog(null,歡迎使用ATM柜員機,提示,JOptionPane.INFORMATION_MESSAGE);public void userLand() landing.setText(用戶登錄); userNo.setText(卡 號:); password.setText(密 碼:); btnSub.setText(登錄); btnReset.setText(重置); .進入到登陸界面后,需要輸入賬號和密碼,當賬號和密碼正確時,才會進入到主界面。賬號和密碼不符合時,會進入如
7、圖所示的錯誤提示界面。初始賬號為abc和密碼為“”(2) 當輸入的密碼和卡號正確,單擊確定后就會進入到主界面,選擇服務(wù),如圖所示,點擊相應(yīng)的按鈕就可以選擇所需要的服務(wù)了,點擊“退出”會回到登陸界面。用如下代碼實現(xiàn):class Main extends JFramepublic JPanel main;public JButton button1;public JButton button2;public JButton button3;public JButton button4;public JButton button5;Main().button1.setText(查詢余額);butto
8、n2.setText(取 款);button3.setText(存 款);button4.setText(修改密碼);button5.setText(退 出); .(3) 點擊存款,進入存款界面,如圖所示。當輸入的錢數(shù)不是100的倍數(shù)時,就會彈出如圖所示的錯誤提示界面。輸入正確時,進入如圖所示的界面。 用如下代碼實現(xiàn):class Deposit extends JFrame.public Deposit()button1.setText(確 定);button2.setText(返 回);button3.setText(清 除);button4.setText(退 出); (4) 點擊取款按鈕
9、,進入取款界面,如圖所示。當輸入的錢數(shù)是負數(shù),或者是0,或者不是100的倍數(shù),又或者大于5000時,會彈出如圖所示的出錯提示界面。當輸入的錢數(shù)符合要求時,取款成功。用如下代碼實現(xiàn):class Withdraw extends JFrame.public Withdraw()public void WithdrawFrame()this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(400,400); this.setResizable(false); this.setTitle(取款); this.add(withdr
10、awMoney); this.setVisible(true); this.setLocation(450,200); withdrawMoney.setLayout(null); jl.setText(取款金額:);button1.setText(確 定);button2.setText(返 回);button3.setText(清 除);button4.setText(退 出);.(5) 點擊主界面中的查詢按鈕,就會進入到如圖所示的查詢界面。點擊取款按鈕,會進入到取款界面。初始金額為10000。用如下代碼實現(xiàn):class Query extends JFrame.String moneyS
11、tr=+user.getMoney(); /取當前用戶的余額public Query()public void QueryFrame() this.setTitle(查詢余額); this.add(queryMoney); this.setVisible(true); this.setLocation(450,200); queryMoney.setLayout(null); extraMoney.setText(您的總余額是:);numberEMoney.setText(moneyStr);numberEMoney.setEditable(false); button1.setText(取
12、款);button2.setText(返 回);button3.setText(退 出);(6) 點擊主界面中的修改密碼按鈕,進入到如圖所示的修改密碼界面。新密碼長度不小于6位,不允許出現(xiàn)6位完全相同的情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼,彈出如圖所示的提示界面,點擊確定后會回到主界面。否則,密碼修改不成功,點擊確定按鈕,界面沒有反應(yīng)。用如下代碼實現(xiàn):class ChangePassword extends JFrame.public ChangePassword().public void CpwdInterface()this.add(cpwd);
13、 this.setVisible(true); this.setLocation(450,200); cpwd.setLayout(null); jl1.setText(舊 密 碼:);jl2.setText(新 密 碼:);jl3.setText(確認新密碼:);button1.setText(確 定);button2.setText(退 出); 經(jīng)過上面的操作,既測試了程序的實現(xiàn)效果,又對系統(tǒng)的使用進行了詳細的說明。從上面的運行結(jié)果可以看出,程序基本上實現(xiàn)了所有的設(shè)計要求,而且運行正常。設(shè)計體會與建議: *:在這次的課程設(shè)計中,我們主要運用了Java圖形界面編程方面的知識,加深了對Java
14、語言中各個基礎(chǔ)知識點的了解和應(yīng)用,將自己所學(xué)的知識運用到實際操作當中,而不再是紙上談兵。通過這次設(shè)計,我深刻感受到了面向?qū)ο笳Z言中類庫的強大功能,掌握了運用Java中的類實現(xiàn)某些基本功能,并學(xué)會了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。*:在這次課程設(shè)計中,我查了很多資料,很好的鍛煉了自己的查閱資料的能力和快速吸收新知識的能力。同時,也加深了與同學(xué)的交流,在設(shè)計過程中,我們互相幫助,共度難關(guān),培養(yǎng)了很好的默契??傊?,在這次課程設(shè)計中,我學(xué)到了很多的知識,同時也感謝我的合作伙伴們。在以后的學(xué)習當中,我會更加努力的學(xué)習好專業(yè)知識,并將所學(xué)的知識用于實踐當中去,以便牢固掌握知識。
15、*:本次Java程序課程設(shè)計讓我學(xué)到了很多,也在自學(xué)的過程中積累了很多在平時學(xué)不到的東西,雖然在這個過程中遇到了許多問題,但在我們小組的共同努力下順利完成了課程設(shè)計。通過本次課程設(shè)計,我熟悉掌握了Java和SOL語言以及eclipse軟件的應(yīng)用。在以后的學(xué)習中,我要更加努力了,努力學(xué)習,努力做一名出色的大學(xué)生。import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;public class AtmUser user=new User();LandingFrame lf=new Landing
16、Frame();public Atm()JOptionPane.showMessageDialog(null,歡迎使用ATM柜員機,提示,JOptionPane.INFORMATION_MESSAGE);public static void main(String args) Atm atm=new Atm();/用戶class Userprivate int money=10000;private String no=abc;private String pwd=123;public User()/修改密碼public void changePwd(String pwd)this.pwd=p
17、wd;/修改錢public void reduceMoney(int mon)money -=mon;public void increaseMoney(int mon)money +=mon;/取當前用戶的錢、卡號、密碼public int getMoney()return money;public String getNo()return no;public String getPwd()return pwd;/登陸界面class LandingFrame extends JFrame public JPanel land; / 定義面板public JLabel landing; /定義
18、標簽public JLabel userNo;public JLabel password; public JTextField txtNo; /定義普通文本框public JPasswordField pwdPwd; /定義密碼文本框public JButton btnSub;public JButton btnReset;public LandingFrame()land = new JPanel();landing = new JLabel();userNo = new JLabel();password = new JLabel();txtNo = new JTextField();p
19、wdPwd = new JPasswordField();btnSub = new JButton();btnReset = new JButton();userLand();public void userLand() this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置關(guān)閉框架的同時結(jié)束程序 this.setSize(300,200); /設(shè)置框架大小為長300,寬200 this.setResizable(false); /設(shè)置框架不可以改變大小 this.setTitle(用戶登錄); /設(shè)置框架標題 this.add(lan
20、d); /加載面板到框架 this.setVisible(true); /設(shè)置框架可顯 this.setLocation(550,300); /設(shè)置出現(xiàn)位置 land.setLayout(null); /設(shè)置面板布局管理 land.setBackground(Color.cyan); /設(shè)置面板背景顏色 landing.setText(用戶登錄); /設(shè)置標簽標題 userNo.setText(卡 號:); password.setText(密 碼:); btnSub.setText(登錄); btnReset.setText(重置); btnSub.setMnemonic(KeyEvent.
21、VK_ENTER); /設(shè)置快捷鍵為Alt+回車 landing.setBounds(120,15,60,20); /設(shè)置標簽x坐標120,y坐標15,長60,寬20 userNo.setBounds(50,55,60,20); password.setBounds(50,85,60,25); txtNo.setBounds(110,55,120,20); pwdPwd.setBounds(110,85,120,20); btnSub.setBounds(85,120,60,20); land.add(landing); /加載標簽到面板 land.add(userNo); land.add(
22、password); land.add(txtNo); land.add(pwdPwd); land.add(btnSub); land.add(btnReset); btnSub.addActionListener(new ActionListener()/匿名類實現(xiàn)ActionListener接口 public void actionPerformed(ActionEvent e) btnsub_ActionEvent(e); ); btnReset.setBounds(155,120,60,20); btnReset.addActionListener(new ActionListene
23、r()/匿名類實現(xiàn)ActionListener接口 public void actionPerformed(ActionEvent e) btnreset_ActionEvent(e); );/注冊按鈕監(jiān)聽器public void btnsub_ActionEvent(ActionEvent e)if(txtNo.getText().equals()JOptionPane.showMessageDialog(null,卡號不能為空,錯誤,JOptionPane.ERROR_MESSAGE);return;else if (pwdPwd.getText().equals()JOptionPane
24、.showMessageDialog(null,密碼不能為空,錯誤,JOptionPane.ERROR_MESSAGE);return;else if(txtNo.getText().equals(user.getNo() & pwdPwd.getText().equals(user.getPwd()this.dispose(); /此界面銷毀new Main(); /跳轉(zhuǎn)到此界面txtNo.setText(); /文本框的內(nèi)容為空pwdPwd.setText();return;elseJOptionPane.showMessageDialog(null,賬號或密碼錯誤,錯誤,JOptionP
25、ane.ERROR_MESSAGE);return;public void btnreset_ActionEvent(ActionEvent e)txtNo.setText();pwdPwd.setText(); /主界面class Main extends JFramepublic JPanel main;public JButton button1;public JButton button2;public JButton button3;public JButton button4;public JButton button5;Main()main=new JPanel();button
26、1 = new JButton();button2 = new JButton();button3 = new JButton();button4 = new JButton();button5 = new JButton();MainFrame();public void MainFrame()this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置關(guān)閉框架的同時結(jié)束程序this.setSize(400,400); /設(shè)置框架大小為長400,寬300this.setResizable(false); /設(shè)置框架不可以改變大小this.s
27、etTitle(ATM柜員機); /設(shè)置框架標題this.add(main); /加載面板到框架this.setVisible(true); /設(shè)置框架可顯 this.setLocation(450,200); /設(shè)置出現(xiàn)位置main.setLayout(null); /設(shè)置面板布局管理button1.setText(查詢余額);button2.setText(取 款);button3.setText(存 款);button4.setText(修改密碼);button5.setText(退 出);button1.setBounds(0,40,100,30);button2.setBounds(
28、300,40,100,30);button3.setBounds(0,120,100,30);button4.setBounds(300,120,100,30);button5.setBounds(0,200,100,30);main.add(button1);main.add(button2);main.add(button3);main.add(button4);main.add(button5);button1.addActionListener(new ActionListener()/匿名類實現(xiàn)ActionListener接口public void actionPerformed(A
29、ctionEvent e)button1_ActionEvent(e); );button2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button2_ActionEvent(e); );button3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button3_ActionEvent(e); );button4.addActionListener(new Act
30、ionListener()public void actionPerformed(ActionEvent e)button4_ActionEvent(e); );button5.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button5_ActionEvent(e); );/注冊按鈕監(jiān)聽器public void button1_ActionEvent(ActionEvent e)this.setVisible(false); /設(shè)置此界面不可見new Query(); /跳轉(zhuǎn)界面
31、return;public void button2_ActionEvent(ActionEvent e)this.setVisible(false);new Withdraw();return;public void button3_ActionEvent(ActionEvent e)this.setVisible(false);new Deposit();return;public void button4_ActionEvent(ActionEvent e)this.setVisible(false);new ChangePassword();return;public void but
32、ton5_ActionEvent(ActionEvent e)this.setVisible(false);return;/查詢界面class Query extends JFramepublic JPanel queryMoney;public JLabel extraMoney;public JTextField numberEMoney;public JButton button1;public JButton button2;public JButton button3;String moneyStr=+user.getMoney(); /取當前用戶的余額public Query()q
33、ueryMoney=new JPanel();extraMoney=new JLabel();numberEMoney=new JTextField();button1=new JButton();button2=new JButton();button3=new JButton();QueryFrame();public void QueryFrame()this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置關(guān)閉框架的同時結(jié)束程序this.setSize(400,400); /設(shè)置框架大小為長400,寬300this.setResiz
34、able(false); /設(shè)置框架不可以改變大小this.setTitle(查詢余額); /設(shè)置框架標題this.add(queryMoney); /加載面板到框架this.setVisible(true); /設(shè)置框架可顯 this.setLocation(450,200); /設(shè)置出現(xiàn)位置queryMoney.setLayout(null); /設(shè)置面板布局管理extraMoney.setText(您的總余額是:);numberEMoney.setText(moneyStr);numberEMoney.setEditable(false); /設(shè)置文本框不可寫button1.setTex
35、t(取 款);button2.setText(返 回);button3.setText(退 出);extraMoney.setBounds(100, 60, 100, 30);numberEMoney.setBounds(200, 60, 100, 30);button1.setBounds(250, 140, 100, 30);button2.setBounds(250, 190, 100, 30);button3.setBounds(250, 240, 100, 30);queryMoney.add(extraMoney);queryMoney.add(numberEMoney);quer
36、yMoney.add(button1);queryMoney.add(button2);queryMoney.add(button3);button1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button1_ActionEvent(e); );button2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button2_ActionEvent(e); );butt
37、on3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button3_ActionEvent(e); );/注冊按鈕監(jiān)聽器public void button1_ActionEvent(ActionEvent e)this.setVisible(false);new Withdraw();return;public void button2_ActionEvent(ActionEvent e)new Main();this.setVisible(false);return;publ
38、ic void button3_ActionEvent(ActionEvent e)this.setVisible(false);lf.setVisible(true);return;/取款界面class Withdraw extends JFramepublic JPanel withdrawMoney;public JLabel jl;public JTextField jt;public JButton button1;public JButton button2;public JButton button3;public JButton button4;public Withdraw(
39、)withdrawMoney=new JPanel();jl=new JLabel();jt=new JTextField();button1=new JButton();button2=new JButton();button3=new JButton();button4=new JButton();WithdrawFrame();public void WithdrawFrame()this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置關(guān)閉框架的同時結(jié)束程序this.setSize(400,400); /設(shè)置框架大小為長400,寬3
40、00this.setResizable(false); /設(shè)置框架不可以改變大小this.setTitle(取款); /設(shè)置框架標題this.add(withdrawMoney); /加載面板到框架this.setVisible(true); /設(shè)置框架可顯 this.setLocation(450,200); /設(shè)置出現(xiàn)位置withdrawMoney.setLayout(null); /設(shè)置面板布局管理jl.setText(取款金額:);button1.setText(確 定);button2.setText(返 回);button3.setText(清 除);button4.setText
41、(退 出);jl.setBounds(80, 100, 100, 30);jt.setBounds(180, 100, 150, 30);button1.setBounds(80, 150, 100, 30);button2.setBounds(230, 150, 100, 30);button3.setBounds(80, 200, 100, 30);button4.setBounds(230, 200, 100, 30);withdrawMoney.add(jl);withdrawMoney.add(jt);withdrawMoney.add(button1);withdrawMoney.
42、add(button2);withdrawMoney.add(button3);withdrawMoney.add(button4);button1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button1_ActionEvent(e); );button2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button2_ActionEvent(e); );button3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button3_ActionEvent(e); );button4.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)button4_ActionEven
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路開挖合同范本
- 買衣服購銷合同范本
- 養(yǎng)殖配件小窗采購合同范本
- 京津冀外包合同范本
- 農(nóng)民承包樹苗合同范本
- 企業(yè)定制酒合同范本
- 出售農(nóng)機全套紙合同范本
- 半日制合同范本
- 單位門衛(wèi)聘用合同范本
- 北京正規(guī)購車合同范本
- 【生 物】光合作用課件-2024-2025學(xué)年人教版生物七年級下冊
- 2024-2025年第二學(xué)期數(shù)學(xué)教研組工作計劃
- 2025輔警招聘公安基礎(chǔ)知識題庫附含參考答案
- GB/T 44927-2024知識管理體系要求
- 2025年環(huán)衛(wèi)工作計劃
- 2024年07月山東省泰山財產(chǎn)保險股份有限公司2024年夏季校園招考29名工作人員筆試歷年參考題庫附帶答案詳解
- 品質(zhì)巡檢培訓(xùn)課件
- 醫(yī)療器械生產(chǎn)企業(yè)并購合同
- 2025版新能源汽車充電站建設(shè)合同含政府補貼及稅收優(yōu)惠條款
- 初驗整改報告格式范文
- 2025年北京國資公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論