java課程設(shè)計(ATM機).doc_第1頁
java課程設(shè)計(ATM機).doc_第2頁
java課程設(shè)計(ATM機).doc_第3頁
java課程設(shè)計(ATM機).doc_第4頁
java課程設(shè)計(ATM機).doc_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

目 錄1 前言12 需求分析12.1 任務(wù)和要求12.2 運行環(huán)境12.3 開發(fā)工具13 分析和設(shè)計23.1 系統(tǒng)分析及設(shè)計思路23.2 主要類圖24 具體代碼實現(xiàn)55 課程設(shè)計總結(jié)55.1 程序運行結(jié)果或預(yù)期運行結(jié)果165.2 設(shè)計結(jié)論16參考文獻20致 謝211 前言本次的課程設(shè)計,主要是編寫一個程序來管理ATM機模擬系統(tǒng)。ATM機模擬系統(tǒng)主要是由各個Windows窗口組成,它是由登錄頁面、選擇服務(wù)、存款、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡單的模擬ATM機系統(tǒng)的要求。2 需求分析2.1 任務(wù)和要求設(shè)計一個ATM機模擬系統(tǒng)。要求:可以登錄ATM柜員機系統(tǒng),用戶可以按照以下規(guī)則進行:查詢余額:初始余額為50000元;ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支;ATM存款:不能出現(xiàn)負存款;修改密碼:只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。以Windows窗口形式顯示,標題欄為ATM機名稱,右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單。2.2 運行環(huán)境(1)WINDOWS7/XP系統(tǒng)(2)myeclipse2.3 開發(fā)工具Java 3 分析和設(shè)計3.1 系統(tǒng)分析及設(shè)計思路ATM機模擬系統(tǒng)主要是由登錄頁面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由存款模塊、取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。登錄頁面模塊:我們對于ATM機最關(guān)心的是安全問題,當然是密碼,所以第一個界面就是要輸入密碼和卡號才能繼續(xù)服務(wù)。首先定義了文本框類的對象tf1,tf2,用于輸入單行的文本;調(diào)用public String getPassword()方法,獲取用戶想要的字符串;判斷輸入的密碼和卡號是否正確,如果不正確的話,則彈出密碼或卡號錯誤的警告框,并用dispose()關(guān)掉窗口。定義一個Account類來實現(xiàn)這一功能。選擇服務(wù)模塊:在選擇服務(wù)模塊中,有各種ATM的服務(wù)功能,只要用戶在該界面中選擇按鈕,它就會彈出各個相應(yīng)的界面。每一個按鈕都有監(jiān)聽器,在選擇了按鈕后,java.awt.event中的ActionEvent類創(chuàng)建一個事件對象,并將它傳遞給方法public void actionPerformed(ActionEvent e)中的參數(shù)e,監(jiān)視器就會知道所發(fā)生的事件,對此事件進行處理。定義一個Selection類來實現(xiàn)這一功能。其中部分代碼:p.add(new Label(請選擇你要的服務(wù));this.add(p); /*各種服務(wù)功能*/buttonCUN = new Button( 存 款 );p1.add(buttonCUN);this.add(p1);buttonQU = new Button( 取 款 );p2.add(buttonQU);this.add(p2);buttonCHA = new Button( 查詢余額 );p3.add(buttonCHA);this.add(p3);buttonGAI = new Button( 修改密碼 );p4.add(buttonGAI);this.add(p4);buttonTUI = new Button( 退 出 );p5.add(buttonTUI);this.add(p5);存款模塊:在存款模塊中,有一個文本框和一個按鈕還有標簽組成的。用戶在文本框中輸入他想存的數(shù)額,但是必須是100的倍數(shù)且是正整數(shù)。否則就會彈出報錯的窗口。定義一個SetBalance類來實現(xiàn)這一功能。取款模塊:在取款模塊中,也是有一個文本框和一個按鈕還有標簽組成的。用戶在文本框中輸入他想取的數(shù)額,但是必須是100的倍數(shù),而且每一次最多只能取5000元塊。當然了取款的時候也不能超過卡里的余額,再就是卡里的余額不可以為負,否則就會彈出報錯的窗口。定義一個GetBalance類來實現(xiàn)這一功能。部分代碼為:public String withdrawMoney(double money)String str = null ; if(money=0) str = 取款數(shù)目須是正數(shù)!; else if(getMoney()0)/判斷余額是否為負 str=余額為負數(shù)!; else if(money=5000)/取錢數(shù)為100的倍數(shù)或不大于5000 str= 取款數(shù)目須是一百的整數(shù)倍!; else setBalance(money); str = 取款成功:余額為+getMoney(); else str = 余額不足!; return str ;查詢余額模塊:,運用panel1.add(new Label(你的余額為: + act.getMoney();方法來查詢的你余額,余額可以是任何格式的,沒有要求限制。定義了一個Query類來實現(xiàn)這一功能。修改密碼模塊:在修改密碼模塊中,首先你必須要輸入你的舊密碼是否正確,否則就會報錯。再一個就是要兩次輸入你的新密碼,且兩次要匹配,否則也會報錯,然后再重新回到修改密碼的界面。定義了一個ChangePassword類,來實現(xiàn)這一功能。退卡模塊:在退卡模塊設(shè)計中,只是用了if(e.getSource()=buttonTUI)/退出System.exit(0);dispose();這個方法就可以實現(xiàn)了。3.2 主要類圖圖3.1 機模擬系統(tǒng)類圖4 具體代碼實現(xiàn)(主要源代碼)Account類package com.syxy.kcsj.account; /* * 帳戶 * 該類為實現(xiàn)客戶信息及部分功能 */public class Account private String code = null; /信用卡號private String name = null; /客戶姓名private String password= null; /客戶密碼private double money = 0.0; /卡里金額public Account()this.code = 123456 ;this.password = 123456 ;public Account(String code,String name,String password,double money) this.code=code; =name;this.password=password;this.money=money; public String getCode() /取得卡號return code; public String getName() /取得名字return name;/* * 取得密碼 * return */public String getPassword() return password;/* * 重置秘密的方法 */public void changePassword(String pwd)password = pwd; public double getMoney()/取得余額return money;/* * 得到剩余的錢的數(shù)目 */private void setBalance(double mon) money -= mon;/* * 取款設(shè)置 * 若成功顯示余額 * 不成功顯示提示信息 */public String withdrawMoney(double money)String str = null ; if(money=0) str = 取款數(shù)目須是正數(shù)!; else if(getMoney()0)/判斷余額是否為負 str=余額為負數(shù)!; else if(money5000)/取錢數(shù)為100的倍數(shù)或不大于5000 str= 取款數(shù)目須是一百的整數(shù)倍且不大于5000!; elsesetBalance(money); str = 取款成功:余額為+getMoney(); else str = 余額不足!; return str ;/* * 存款設(shè)置 * 若成功顯示余額 * 不成功顯示提示信息 */public String depositMoney(double money)String str = null ;if(money0)|(money%100!=0)|(money=100)str =存款數(shù)目須是正數(shù)且是一百的倍數(shù)!;elsesetBalance(-money);str = 存款成功:余額為+getMoney();return str ;WindowBox 類package com.syxy.kcsj.WindowBox;import javax.swing.*;import com.syxy.kcsj.Selection.Selection;import com.syxy.kcsj.account.Account;import java.awt.*;import java.awt.event.*; /* * 登陸頁面首窗口 */SuppressWarnings(serial)public class WindowBox extends Frame implements ActionListenerBox baseBox,box1,box2; TextField tf1;JPasswordField tf2; Button button1; Button button2;public WindowBox(String s)/構(gòu)造方法 super(s); tf1 = new TextField(6); tf2 = new JPasswordField(6);box1= Box.createVerticalBox();box1.add(new Label(請輸入您的卡號); /輸入卡號box1.add(Box.createVerticalStrut(8);box1.add(new Label(請輸入您的密碼);/輸入密碼box2=Box.createVerticalBox();box2.add(tf1);box2.add(Box.createVerticalStrut(8);box2.add(tf2);baseBox=Box.createHorizontalBox();baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(10); baseBox.add(box2);add(baseBox);button1= new Button(確定);/加入按鈕button1.addActionListener(this);add(button1);button2 = new Button(退卡);/退卡按鈕button2.addActionListener(this);add(button2);setLayout(new FlowLayout();/*監(jiān)聽器*/this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(120,125,300,200);setVisible(true); public void actionPerformed(ActionEvent e)Account act;act=new Account(000000,kcsj,123456,50000);/初始化 /*選擇各種服務(wù)*/if(e.getSource() = button1)String number1,number2;/輸入的兩個卡號和密碼的變量number1=tf1.getText().toString();number2 = new String(tf2.getPassword() ;/*判斷兩次輸入的卡號和密碼是否正確*/if(act.getCode().equals(number1)&(act.getPassword().equals(number2)dispose();new Selection(選擇服務(wù),act);elseJOptionPane.showMessageDialog(this, 密碼或帳號錯誤!,賬戶提示信息,JOptionPane.ERROR_MESSAGE );dispose();new WindowBox(ATM) ;if(e.getSource()=button2)System.exit(0); dispose();/退出 Query類package com.syxy.kcsj.Query;import java.awt.*;import java.awt.event.*;import com.sun.mail.imap.ACL;import com.syxy.kcsj.Selection.Selection;import com.syxy.kcsj.account.Account;SuppressWarnings(serial)public class Query extends Frame implements ActionListenerButton button;Account act;public Query(String s,Account act)/構(gòu)造函數(shù)super(s);this.act = act;button=new Button(確定);Panel panel1 = new Panel(); Panel panel = new Panel();panel1.add(new Label(你的余額為: + act.getMoney();/查詢余額的方法this.add(panel1); this.add(panel); button.addActionListener(this);panel.add(button);this.setLayout(new GridLayout(2,1);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(200,200,200,150); setVisible(true);public void actionPerformed(ActionEvent e)if(e.getSource()=button)dispose(); new Selection(選擇服務(wù),act);/返回選擇服務(wù)窗口 GetBalance 類package com.syxy.kcsj.GetBalance;import com.syxy.kcsj.Selection.Selection;import com.syxy.kcsj.account.Account;import javax.swing.*;import java.awt.*;import java.awt.event.*;SuppressWarnings(serial)public class GetBalance extends Frame implements ActionListenerBox baseBox, box1,box2;Button button;TextField tf; Account act;public GetBalance(String s,Account act)/構(gòu)造函數(shù)super(s); this.act=act; button=new Button(確定);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2,1);panel1.add(new Label(請輸入你想取錢的數(shù)目);panel1.add(tf); panel.add(button);this.add(panel1); this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(200,200,300,200);this.setVisible(true);public void actionPerformed(ActionEvent e)double money; String str = null ;/* * 取款判定 */if(tf.getText().toString().equals()str = 取款數(shù)目不能為空! ;elsemoney = Double.parseDouble(tf.getText().toString();str = act.withdrawMoney(money); JOptionPane.showMessageDialog(this, str,取款提示信息,JOptionPane.INFORMATION_MESSAGE);dispose();this.setVisible(false); new Selection(選擇服務(wù),act); SetBalance 類package com.syxy.kcsj.SetBalance;import javax.swing.*;import com.syxy.kcsj.Selection.Selection;import com.syxy.kcsj.account.Account;import java.awt.*;import java.awt.event.*;SuppressWarnings(serial)public class SetBalance extends Frame implements ActionListenerBox baseBox, box1,box2;Button button;TextField tf; Account act;public SetBalance(String s,Account act)/構(gòu)造函數(shù)super(s); this.act=act; button=new Button(確定);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6); this.setLayout(new GridLayout(2,1);panel1.add(new Label(請輸入你想存款的數(shù)目);panel1.add(tf); panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(200,200,300,200);this.setVisible(true);public void actionPerformed(ActionEvent e)double money;String str = null ;if(tf.getText().toString().equals()str = 存款數(shù)目不能為空! ;elsemoney = Double.parseDouble(tf.getText().toString();str = act.depositMoney(money) ;JOptionPane.showMessageDialog(this, str,存款提示信息,JOptionPane.INFORMATION_MESSAGE );dispose();this.setVisible(false); new Selection(選擇服務(wù),act); Selection 類package com.syxy.kcsj.Selection;import java.awt.*;import java.awt.event.*;import com.syxy.kcsj.GetBalance.GetBalance;import com.syxy.kcsj.Query.Query;import com.syxy.kcsj.SetBalance.SetBalance;import com.syxy.kcsj.account.Account;import com.syxy.kcsj.frameui.ChangePassword;SuppressWarnings(serial)public class Selection extends Frame implements ActionListenerButton buttonCUN,buttonQU,buttonCHA,buttonTUI,buttonGAI;Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;public Selection()public Selection(String s,Account act)super(s); this.act=act; this.setLayout(null);this.setLayout(new GridLayout(6,1);p.add(new Label(請選擇你要的服務(wù));this.add(p); /*各種服務(wù)功能*/buttonCUN = new Button( 存 款 );p1.add(buttonCUN); this.add(p1);buttonQU = new Button( 取 款 );p2.add(buttonQU);this.add(p2);buttonCHA = new Button( 查詢余額 );p3.add(buttonCHA);this.add(p3);buttonGAI = new Button( 修改密碼 );p4.add(buttonGAI);this.add(p4);buttonTUI = new Button( 退 出 );p5.add(buttonTUI);this.add(p5);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););buttonCUN.addActionListener(this);buttonQU.addActionListener(this);buttonCHA.addActionListener(this);buttonTUI.addActionListener(this);buttonGAI.addActionListener(this);setBounds(150,150,300,200);setVisible(true);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=buttonCUN)/存款dispose() ;new SetBalance(存款,act);else if(e.getSource()=buttonQU)/取款dispose();new GetBalance(取款,act);else if(e.getSource()=buttonCHA)/查詢余額dispose();new Query(查詢余額,act);else if(e.getSource()=buttonGAI)/修改密碼dispose();new ChangePassword(修改密碼,act);else if(e.getSource()=buttonTUI)/退出System.exit(0);dispose(); ChangePassword類package com.syxy.kcsj.frameui;import javax.swing.*;import com.syxy.kcsj.Selection.Selection;import com.syxy.kcsj.account.Account;import java.awt.*;import java.awt.event.*;SuppressWarnings(serial)public class ChangePassword extends Frame implements ActionListenerPanel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = new Panel();Panel panel = new Panel();JPasswordField tf4,tf5,tf6;Button button;Account act;public ChangePassword(String s,Account act)super(s);this.act=act;tf4 = new JPasswordField(6);tf5 = new JPasswordField(6); tf6 = new JPasswordField(6);button = new Button(確定);button.addActionListener(this);/*建立新密碼*/panel1.add(new Label(請輸入你的舊密碼:);panel1.add(tf4);panel2.add(new Label(請輸入你的新密碼:);panel2.add(tf5);panel3.add(new Label(請再次輸入新密碼:);panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(panel3);this.add(panel);setLayout(new GridLayout(4,1); setBounds(200,200,300,200);this.setVisible(true);/* 窗口事件, 判斷窗口是否關(guān)閉*/this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0);); /* 判斷事件源,看條件是否成立再修改密碼*/public void actionPerformed(ActionEvent e)if(e.getSource()=button)String pwd2,pwd3,pwd4,pwd1;char p2,p3,p4;pwd1 = act.getPassword();p2=tf4.getPassword();p3=tf5.getPassword(); p4=tf6.getPassword();pwd2 = new String(p2); pwd3 = new String(p3); pwd4 = new String(p4);if(pwd2.equals(pwd1)if(pwd3.equals(pwd4)/判斷兩次輸入的新密碼是個匹配act.changePassword(pwd3);/啟用新的密碼dispose();JOptionPane.showMessageDialog(this, 修改密碼成功!);new Selection(選擇,act);/返回選擇服務(wù)窗口elsethis.setVisible(true); dispose(); JOptionPane.showMessageDialog(this, 兩次輸入要修改的密碼不同,更新密碼失敗!); new Selection(選擇,act); elsethis.setVisible(false);dispose();JOptionPane.showMessageDialog(this, 輸入密碼錯誤,更新密碼失敗!); new Selection(選擇,act); ATM類package com.syxy.kcsj.WindowBox;public class ATM /* * 主測試程序 * param args */public static void main(String args) new WindowBox(ATM); 5 課程設(shè)計總結(jié)5

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論