java課程設計-ATM模擬程序_第1頁
java課程設計-ATM模擬程序_第2頁
java課程設計-ATM模擬程序_第3頁
java課程設計-ATM模擬程序_第4頁
java課程設計-ATM模擬程序_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ATM模擬程序目錄TOC\o"1-3"\u第1章課題概述 第1章課題概述本次java課程設計的題目是簡單的ATM程序。1.1課題的目的ATM柜員機在我們生活中隨處可見,24小時為我們提供了存取款等業(yè)務,讓我們的生活更加的便利,我需要做的就是將這樣一個程序通過圖形界面模擬現(xiàn)實生活中的ATM界面,并且也會提供一些已有的賬號和密碼,在登陸頁面登陸,若密碼與賬號無誤則會顯示選擇業(yè)務頁面,會提供常見的功能,存取款,修改密碼功能。這里就有文件存儲與讀取來記錄賬號和密碼,以及余額,密碼的改動,密碼改動后將更新密碼,這樣就更接近現(xiàn)實生活中的程序,有很大的現(xiàn)實意義。1.2課題的要求1.2.1存取款的要求(1)查詢余額:初始余額為10000元;(2)ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支;(3)ATM存款:不能出現(xiàn)負存款;(4)余額變化要通過文件存儲的形式保存下來,該賬號對應的余額在程序下次啟動時是更新后的數(shù)目;1.2.2修改密碼的要求(1)修改密碼:新密碼長度不小于6位,不允許出現(xiàn)6位完全相同的情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼;(2)修改的新密碼需要以文件存儲方式更新,下次該賬戶登錄需要使用修改的新密碼;

第2章概要設計2.1整個程序的界面結構根據(jù)課題要求,首先出現(xiàn)的是登陸界面,在確認賬號密碼無誤后出現(xiàn)選擇業(yè)務頁面,再可以選擇業(yè)務,并根據(jù)你選擇的業(yè)務出現(xiàn)相應界面,每個界面都有程序退出鍵以及返回鍵返回登陸界面。下圖是功能模塊圖:登陸界面登陸界面選擇業(yè)務選擇業(yè)務取款存款查詢余額修改密碼取款存款查詢余額修改密碼2.2各個界面的設計2.2.1登錄界面第一個窗口的變量有JPanelimagePanel; ImageIconbackground JFrameframe1; JLabellb1,lb2,lb3,lb4; JTextFieldtext1; JPasswordFieldtext2; JPanelpane; JButtonbt1,bt2,bt3背景圖片放在一個JLable中再將frame1的背景設為透明,再將有背景圖片的JLable放在pane上,將pane放在frame1上達到背景的效果。窗口的其他組件在計算好坐標后就依次添加在pane上,這樣第一個界面就已經設計好了2.2.2選擇業(yè)務界面第二個界面的變量有JButtonb1,b2,b3,b4,b5,b6;利用在 MainFrame中的構造方法,設置每一個JButton的位置,排列好了之后添加監(jiān)聽,在用戶選擇后顯示相應的界面。2.2.3修改密碼界面第三個界面的變量有JButtonbtn1,btn2,btn3; JLabellbe1,lbe2,lbe3,cw1,cw2,cw3; JPasswordFieldtf1,tf2,tf3;在文本輸入框的右方依次放置三個JLabel,用于提示用戶輸入密碼的規(guī)則,密碼輸入框的字符是以*表示,是不可見的。在密碼修改全部符合規(guī)則才可以更新密碼,返回到選擇業(yè)務界面。2.2.4查詢余額界面第四個界面的變量有JLabellabel; JLabeltt; JLabeltt1; JButtonbb1,bb2;這個界面是一個查詢的頁面,用戶無法修改余額,因此沒有設置文本輸入框,兩個按鍵用戶可以操作,可以返回選擇業(yè)務界面或者退出程序。2.2.5取款界面第五個界面的變量有JLabelaa,bb,ww1; JTextFieldff; JPanelpp; JButtonqq1,qq2,qq3;在這個界面用戶需要輸入的金額,輸入的金額需要符合規(guī)則,是大于100且小于5000的100的整數(shù),這一點也是很符合實際生活中的標準的。在這里設置了JOptionPane,來提示用戶輸入金額。2.2.6存款界面第六個界面的變量有JLabelw1,w2,ww; JTextFieldf; JPanelp3; JButtonq1,q2,q3;這個界面與第五個界面沒有什么大的區(qū)別,只是文本不一樣,提示的文字也不一樣,在這里用戶輸入的金額要求不能為負數(shù),且為100的倍數(shù),大于100小于5000。

第3章程序功能的實現(xiàn)3.1主界面的實現(xiàn)在設置好界面的布局后,添加事件的監(jiān)聽,用數(shù)組的形式依次讀取賬號和密碼,之所以用數(shù)組是以為,數(shù)組可以存儲多個用戶,這樣就可以實現(xiàn)取款機的多用戶使用了。在這些準備工作做好之后就是實現(xiàn)登錄界面的功能。代碼如下:publicvoidactionPerformed(ActionEvente){ if(e.getSource()==bt1){ lb3.setText(""); lb4.setText(""); text1.setText(""); text2.setText(""); }elseif(e.getSource()==bt2){ intflag=0; for(inti=0;i<zh.length;i++){ if(text1.getText().equals(zh[i]) &&text2.getText().equals(password)){ flag=1; newFrame_2(); frame1.dispose(); break; } flag=-1; } if(flag==-1){ text1.setText(""); text2.setText(""); lb3.setText(""); lb4.setText("賬戶不存在,請重新輸入"); return; } }elseif(e.getSource()==bt3){ System.exit(0); } } publicstaticvoidWriter()throwsIOException{ try{ FileWriterf3=null; f3=newFileWriter("d:\\password.txt"); BufferedWriterff3=newBufferedWriter(f3); ff3.write(password); ff3.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); } } publicstaticvoidWriterMoney()throwsIOException{ try{ FileWriterf3=null; f3=newFileWriter("d:\\count.txt"); BufferedWriterff3=newBufferedWriter(f3); ff3.write(money+""); ff3.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); } }}3.2業(yè)務界面的實現(xiàn)3.2.1選擇業(yè)務界面實現(xiàn)選擇業(yè)務界面主要是根據(jù)用戶的選擇顯示相應的界面,用if-else判斷并做出響應皆可。因此在選擇業(yè)務界面的實現(xiàn)里只要是方法的調用。publicvoidactionPerformed(ActionEvente){ if(e.getSource()==b1){ newModifyPassword(this); }elseif(e.getSource()==b2){ newSearchMoney(this); }elseif(e.getSource()==b3){ newDrawMoney(this); }elseif(e.getSource()==b4){ newAddMoney(this); }elseif(e.getSource()==b5){ System.exit(0); }elseif(e.getSource()==b6){ System.exit(0); } }3.2.2修改密碼界面實現(xiàn)修改密碼的實現(xiàn)主要是判斷,在判斷原密碼是否錯誤,在判斷新密碼兩次是否一致,以及新密碼的要求,當符合所有的條件后才可以修改成功,并以寫的方式寫到存儲密碼的文件里,實現(xiàn)密碼的刷新。publicvoidactionPerformed(ActionEvente){ if(e.getSource()==btn1){//確認 if(tf1.getText().equals(MainFrame.password)){ Strings=tf2.getText(); if(s.matches("[0-9]{6}")==true){ if(s.equals(tf3.getText())){ intsum=0; charc=s.charAt(0); for(intj=0;j<s.length();j++){ if(s.charAt(j)==c){ sum++; } if(sum>=6){ tf2.setText(""); tf3.setText(""); cw1.setText(""); cw2.setText("請輸入不重復的六位數(shù)!"); cw3.setText(""); return; }else{ cw1.setText(""); cw2.setText(""); MainFrame.password=s; try{ MainFrame.Writer(); }catch(IOExceptione1){ e1.printStackTrace(); } cw3.setText("密碼修改成功!"); return; } } }else{ cw1.setText(""); cw3.setText(""); tf1.setText(""); tf2.setText(""); tf3.setText(""); cw2.setText("兩次輸入的密碼不一致!"); return; } }else{ cw1.setText(""); cw2.setText(""); tf1.setText(""); tf2.setText(""); tf3.setText(""); cw3.setText("請輸入六位數(shù)的密碼!"); return; } }else{ cw1.setText("原密碼錯誤!"); cw2.setText(""); cw3.setText(""); tf1.setText(""); tf2.setText(""); tf3.setText(""); } }elseif(e.getSource()==btn2){ dispose(); }elseif(e.getSource()==btn3){ System.exit(0); } }}3.2.3查詢余額界面實現(xiàn)查詢余額的實現(xiàn)就是將在文件中讀取的數(shù)目顯示出來publicvoidactionPerformed(ActionEvente){ if(e.getSource()==bb1){ this.dispose(); }elseif(e.getSource()==bb2){ System.exit(0); } }}3.2.4存取款界面實現(xiàn)存取款界面的實現(xiàn)的方法是一樣的就放在一起來描述,存款的限制是需要符合為大于100小于5000的100的倍數(shù),取款除此之外還不能大于賬戶的余額,之后符合條件才可以存取款成功若不符合就會出現(xiàn)提示框提示用戶操作。這里給出存款功能實現(xiàn)的代碼如下:publicvoidactionPerformed(ActionEvente){ if(e.getSource()==q1){ Stringstr=f.getText(); doubleprice=0; try{ price=Double.parseDouble(str); }catch(NumberFormatExceptione1){ JOptionPane.showMessageDialog(this,"存款金額格式錯誤,請重新輸入!"); f.setText(""); return; } if(price<0){ JOptionPane.showMessageDialog(this,"存錢不能為負數(shù)!"); f.setText(""); return; }else{ JOptionPane.showMessageDialog(this,"存款成功,謝謝!"); MainFrame.money+=price; try{ MainFrame.WriterMoney(); }catch(IOExceptione1){ e1.printStackTrace(); } f.setText(""); } }elseif(e.getSource()==q2){ this.dispose(); }elseif(e.getSource()==q2){ System.exit(0); } }}

第4章調試及發(fā)現(xiàn)問題的解決在做課程設計的時候遇見了很多的問題,但是通過百度,詢問老師和同學也一一解決了,總結在編寫程序過程中遇見的問題及其解決的方法如下:1.在界面的設計上,選擇使用的是什么布局管理器?為什么?在開始準備用流式布局管理器,但是界面出來后發(fā)現(xiàn)組件的排列就不是自己設計的樣子,也嘗試過別的布局管理器,在嘗試過后發(fā)現(xiàn)還是網(wǎng)格管理器比較靈活,可以設置坐標,這樣就可以計算坐標,組件的位置就可以自主設計。2.怎么將六個界面分開,而不是放在一起,并且可以正常的運行?在修改程序的時候發(fā)現(xiàn)將六個界面的代碼放在一個類里面會很長,并且出現(xiàn)錯誤時不好調試以及修改,在修改第一個界面的設計是,就需要該相應的事件響應程序,代碼過長就容易混亂。在這個問題上,是咨詢的同學,最后的解決方法是將六個界面放在六個類里面,并且將登陸界面更名為MainFrame的類,用來提示主頁面。接下來就是將各個頁面都放入新的類里,類中包括界面的設計以及事件監(jiān)聽,在需要事就可以調用類。這樣在修改程序或是捕獲異常時就少了很多的麻煩。3.怎么實現(xiàn)多用戶,以及余額的存儲?單用戶的操作不符合實際,而且余額不可能一直是同一個數(shù)目。因此想實現(xiàn)多用戶和余額的存儲。開始就只能想到要用文件讀寫來實現(xiàn)這些功能,在查閱一些資料之后想到,可以用數(shù)組或者集合來讀取,并存儲多個數(shù)據(jù),因為對集合的使用不多,就選擇了用數(shù)組讀取,通過循環(huán)來按行讀取數(shù)據(jù)并放在數(shù)組中,每一個用戶相對應的密碼也用數(shù)組來存儲,這樣就可以實現(xiàn)多用戶了。余額的存儲主要就是文件的讀寫,在存取款之后都調用一次寫的方法更新余額,在查詢余額是就是文件的讀取。4.實現(xiàn)多用戶后修改密碼怎么更新?開始的時候實現(xiàn)多用戶就已經將修改密碼的功能寫好了,實現(xiàn)了以后,修改密碼就不能對應每一個賬號來修改了,這個問題困擾了我,在詢問同學之后。是這樣解決的:用一個for循環(huán)來獲取當前賬號所對應的密碼,確認舊密碼是否與輸入的密碼一致,若一致,則判斷新密碼是否符合要求,待所有條件都符合就允許修改當前賬號的密碼,并調用已經寫好的文件的寫入類,來更新此賬號的密碼并存儲在密碼所在的數(shù)組中。5.運行時會偶爾拋出一些異常,但是編譯時卻沒有提示異常?第一次運行發(fā)現(xiàn)沒有任何錯誤,但是第二次卻拋出了異常,將異常捕獲到,發(fā)現(xiàn)是調用文件讀寫類的時候沒有正確處理異常,雖然在寫讀寫類時用了try-catch捕獲異常,但是并沒有捕獲全部可能出現(xiàn)的異常。解決方法是百度搜索了一下可能在運行中出現(xiàn)的異常,捕獲,就沒有出現(xiàn)這樣的問題了。

第5章程序測試及分析在運行程序后就會出現(xiàn)登陸頁面,輸入錯誤的賬號,即賬號不是存儲在文件中的賬號就會出現(xiàn)提示,如圖5-1圖5-1登陸界面同理,密碼的錯誤也會有這樣的提示。當密碼與賬號均正確就會顯示選擇業(yè)務界面,如圖5-2圖5-2選擇業(yè)務界面修改密碼時若密碼與舊密碼不一致則如圖5-3圖5-3修改密碼界面兩次輸入的新密碼不一致則如圖5-4圖5-4修改密碼界面取款成功如圖5-5圖5-5取款界面若不成功則顯示用戶提示,其他同上。存款成功如圖5-6圖5-6存款界面若不成功則顯示用戶提示,其他同上。余額界面就是在進行上述操作后,余額更新,并顯示即可。第6章總結在這次的課程設計中,主要運用了Java語言的界面設計、異常處理、Swing控件等,綜合運用了Java語言。我深刻感受到了面向對象語言中類庫的強大功能,掌握了運用Java中的類實現(xiàn)某些基本功能,并且學會自己解決一些編譯過程中的問題,為以后的面向對象語言的自學奠定了基礎。通過這一個禮拜的課程設計我真的學到了很多的東西,當然這也和我的同學的幫助是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論