版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> java課程設(shè)計(jì)報(bào)告</p><p> 題目: </p><p><b> 專(zhuān)業(yè): </b></p><p> 班級(jí): </p><p> 姓名: </p><p> 學(xué)號(hào):
2、 </p><p><b> 2009年6月</b></p><p><b> 信息工程學(xué)院</b></p><p><b> 目 錄</b></p><p> 1 課程設(shè)計(jì)過(guò)程概述1</p><p> 2 課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求
3、2</p><p> 3 系統(tǒng)需求分析3</p><p> 3.1 功能需求分析3</p><p> 3.2 其他需求分析3</p><p><b> 4 系統(tǒng)設(shè)計(jì)4</b></p><p> 4.1 總體設(shè)計(jì)4</p><p> 4.2 A
4、TM柜員機(jī)界面設(shè)計(jì)4</p><p> 4.3 各功能模塊設(shè)計(jì)6</p><p> 4.3.1 登陸頁(yè)面模塊設(shè)計(jì)6</p><p> 4.3.2 選擇服務(wù)模塊設(shè)計(jì)7</p><p> 4.3.3 取款模塊設(shè)計(jì)9</p><p> 4.3.4 修改密碼模塊設(shè)計(jì)10</p>&
5、lt;p> 4.3.5 退卡模塊設(shè)計(jì)11</p><p> 4.4 異常處理情況說(shuō)明11</p><p> 5 系統(tǒng)實(shí)現(xiàn)與測(cè)試12</p><p> 6 課程設(shè)計(jì)總結(jié)14</p><p> 6.1 遇到的問(wèn)題及解決辦法14</p><p> 6.2 心得體會(huì)14</p>
6、<p> 附錄——源代碼16</p><p><b> 參考文獻(xiàn)28</b></p><p> 第一章 課程設(shè)計(jì)過(guò)程概述</p><p> 2009年6月,JAVA游戲開(kāi)發(fā)課程設(shè)計(jì)在實(shí)驗(yàn)樓三樓機(jī)房進(jìn)行,持續(xù)時(shí)間為兩周。這次課程設(shè)計(jì)的主要目的是結(jié)合面向?qū)ο蟪绦蛟O(shè)計(jì)課程,培養(yǎng)我們面向?qū)ο筌浖_(kāi)發(fā)的思維,初步了解軟件開(kāi)發(fā)的一
7、般流程,提高用JAVA編程的實(shí)際動(dòng)手能力并增強(qiáng)大家對(duì)面向?qū)ο蟮牧私?。這次課程設(shè)計(jì)的主要內(nèi)容是獨(dú)立用JAVA語(yǔ)言開(kāi)發(fā)一個(gè)小的應(yīng)用程序。我開(kāi)發(fā)了一個(gè)ATM柜員機(jī)。</p><p> 第二章 課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求</p><p> 我設(shè)計(jì)的ATM柜員機(jī)主要是由各個(gè)Windows窗口組成,它是由登錄頁(yè)面、選擇服務(wù)、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡(jiǎn)單
8、的模擬ATM柜員機(jī)的要求。</p><p><b> 第三章系統(tǒng)需求分析</b></p><p> 3.1 功能需求分析</p><p> 本ATM柜員機(jī)的主要功能如下所述:</p><p> 要求使用圖形用戶界面。當(dāng)輸入給定的卡號(hào)和密碼(初始卡號(hào)為000000和密碼為123456)時(shí),系統(tǒng)能登錄ATM柜員機(jī)系
9、統(tǒng),用戶可以按照以下規(guī)則進(jìn)行:</p><p> 查詢余額:初始余額為50000元</p><p> ATM取款:每次取款金額為100的倍數(shù),總額不超過(guò)5000元,支取金額不允許透支。</p><p> ATM存款:不能出現(xiàn)負(fù)存款。</p><p> 修改密碼:只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。
10、</p><p> 3.2 其他需求分析</p><p><b> ?。?)性能描述</b></p><p> 實(shí)時(shí)性好、靈活性強(qiáng)、易于不同年齡階段的人操作。</p><p><b> ?。?)設(shè)計(jì)約束</b></p><p> 開(kāi)發(fā)工具:JCrator ProV3.
11、5.0</p><p> 運(yùn)行環(huán)境:Windows 2000以上</p><p> 能實(shí)現(xiàn)用戶所定義的各項(xiàng)需求。</p><p><b> ?。?)界面要求</b></p><p> 以Windows窗口形式顯示,標(biāo)題欄為ATM柜員機(jī)名稱(chēng),右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單
12、。</p><p><b> 第四章系統(tǒng)設(shè)計(jì)</b></p><p><b> 4.1 總體設(shè)計(jì)</b></p><p> 我所設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁(yè)面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。其功能結(jié)構(gòu)圖如下所示:</p><p
13、> 圖1 ATM功能結(jié)構(gòu)示意圖</p><p> 4.2 ATM柜員機(jī)界面設(shè)計(jì)</p><p> 我覺(jué)得一個(gè)系統(tǒng)的界面應(yīng)該要簡(jiǎn)單明了,當(dāng)然樣式美觀就更好了。我設(shè)計(jì)的界面主要是由窗體組成,操作簡(jiǎn)單。而每一個(gè)窗口則執(zhí)行相應(yīng)的功能。</p><p> 一個(gè)系統(tǒng)界面的好壞直接影響到用戶的操作,界面設(shè)計(jì)要求樣式美觀、簡(jiǎn)單明了、方便易操作。我設(shè)計(jì)的界面主要分
14、為窗體、菜單、按鈕和文本輸入框幾個(gè)部分,分別執(zhí)行相應(yīng)的操作。</p><p><b> ?。?)窗體的設(shè)計(jì)</b></p><p> 窗體整個(gè)框架使用Frame類(lèi)構(gòu)造,F(xiàn)rame有自己的外邊框和自己的標(biāo)題,創(chuàng)建Frame時(shí)可以指定其窗口標(biāo)題,我創(chuàng)建的窗口標(biāo)題是各個(gè)不同功能的模塊的名字,比如說(shuō)查詢余額,還有取款等。相應(yīng)源代碼為:WindowBox(String s,A
15、ccount act){super(“ATM柜員機(jī)”);} 、Selection(String s,Account act){</p><p><b> super(s);</b></p><p><b> }</b></p><p> 向Frame窗口中添加組件使用add()。</p><p&g
16、t; 例如:button1 = new Button("存款");</p><p> p1.add(button1);</p><p> this.add(p1);</p><p> 每個(gè)Frame在其右上角都有三個(gè)控制圖標(biāo),分別代表將窗口最小化、窗口最大化和關(guān)閉的操作,其中最小化和最大化操作Frame可自動(dòng)完成,而關(guān)閉窗口操作實(shí)現(xiàn)需要書(shū)
17、寫(xiě)有關(guān)的代碼,在我的程序中我采用的是對(duì)WINDOWS_CLOSING事件做出響應(yīng),調(diào)用dispose()方法關(guān)閉窗口。Frame也可以引發(fā)WindowsEvent類(lèi)代表的窗口事件。相應(yīng)源代碼為:</p><p> addWindowListener(new WindowAdapter() //窗口偵聽(tīng)器,以從此窗口接收窗口事件</p><p> {public void windowC
18、losing(WindowEvent e) //處理窗口關(guān)閉事件 </p><p> {System.exit(0);}</p><p><b> });</b></p><p><b> }</b></p><p> (2)窗體的主要結(jié)構(gòu)的設(shè)計(jì)</p><p>
19、; 我所設(shè)計(jì)的窗口的主要結(jié)構(gòu)的特點(diǎn)就是每個(gè)窗口都對(duì)應(yīng)著一個(gè)特定的功能。比如說(shuō)報(bào)各種各樣的錯(cuò),還有各種查詢余額、取款、選擇服務(wù)等,所以它們都是由各種按鈕和文本框,標(biāo)簽組成的,而聯(lián)系各個(gè)窗體成為一個(gè)整體的就是各個(gè)按鈕的監(jiān)聽(tīng)事件。所以整個(gè)設(shè)計(jì)就趨向簡(jiǎn)單化了。</p><p> 為了定義各個(gè)按鈕所對(duì)應(yīng)的命令和操作,首先需要將各個(gè)按鈕注冊(cè)給實(shí)現(xiàn)了動(dòng)作事件的監(jiān)聽(tīng)接口ActionListener的監(jiān)聽(tīng)者,然后為監(jiān)聽(tīng)者定義a
20、ctionPerformed(ActionEvent e)方法,在這個(gè)方法中調(diào)用e.getSource()或e.getActionCommand()來(lái)判斷用戶點(diǎn)擊的菜單子項(xiàng),并完成這個(gè)菜單子項(xiàng)定義的操作。</p><p> 4.3 各功能模塊設(shè)計(jì)</p><p> 4.3.1 登陸頁(yè)面模塊設(shè)計(jì)</p><p> 與ATM柜員機(jī)打交道比較多的,也是大家對(duì)安全
21、比較關(guān)心的問(wèn)題:密碼。所以第一個(gè)界面就是要輸入密碼和卡號(hào)才能繼續(xù)服務(wù)。</p><p> 我定義了文本框累的對(duì)象tf1,tf2。抓藥是用于輸入單行的文本;文本區(qū)調(diào)用public String getText()方法,獲取用戶想要的字符串。用來(lái)判斷輸入的密碼和卡號(hào)是否正確,如果不正確的話,則彈出密碼或卡號(hào)錯(cuò)誤的警告框,并用dispose()關(guān)掉窗口。此模塊相應(yīng)的部分源代碼為:</p><p&g
22、t; public void actionPerformed(ActionEvent e){</p><p> Account act;</p><p> String card;</p><p> String pwd;</p><p> act=new Account("000000","Devil
23、","123456",50000);//初始化</p><p> /*選擇各種服務(wù)*/</p><p> if(e.getSource() == button1){</p><p> String number1,number2;</p><p> number1=tf1.getText();</p
24、><p> number2=tf2.getText();</p><p> /*判斷密碼和卡號(hào)是否正確*/if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){</p><p> dispose();</p><p> /*
25、卡號(hào)和密碼都正確則進(jìn)入功能選擇窗口*/</p><p> Selection s = new Selection("選擇服務(wù)",act);</p><p><b> }else{</b></p><p> dispose();</p><p> ErrorWarn ew = new Error
26、Warn("消息!",act);</p><p><b> }</b></p><p><b> }</b></p><p><b> /*退卡*/</b></p><p> if(e.getSource()==button2){</p>
27、;<p> System.exit(0);</p><p> dispose();</p><p><b> }</b></p><p><b> }</b></p><p> 4.3.2 選擇服務(wù)模塊設(shè)計(jì)</p><p> 在選擇服務(wù)模塊中,有各
28、種ATM的服務(wù)功能,只要用戶在該界面中選擇按鈕,它就會(huì)彈出各個(gè)相應(yīng)的界面。每一個(gè)按鈕都有監(jiān)聽(tīng)器,在選擇了按鈕后,java.awt.event中的ActionEvent類(lèi)創(chuàng)建一個(gè)事件對(duì)象,并將它傳遞給方法public void actionPerformed(ActionEvent e)中的參數(shù)e,監(jiān)視器就會(huì)知道所發(fā)生的事件,對(duì)此事件進(jìn)行處理。其中的部分源代碼為:</p><p> p.add(new Label
29、("請(qǐng)選擇你要的服務(wù)"));</p><p> this.add(p);</p><p> button1 = new Button("存款");</p><p> p1.add(button1);</p><p> this.add(p1);</p><p> but
30、ton2 = new Button("取款");</p><p> p2.add(button2);</p><p> this.add(p2);</p><p> button3 = new Button("查詢余額");</p><p> p3.add(button3);</p>
31、<p> this.add(p3);</p><p> button4 = new Button("退出");</p><p> p4.add(button4);</p><p> this.add(p4);</p><p> button5 = new Button("修改密碼"
32、;);</p><p> p5.add(button5);</p><p> this.add(p5);</p><p> this.addWindowListener(new WindowAdapter(){</p><p> public void windowClosing(WindowEvent e){</p>
33、<p> System.exit(0);</p><p><b> }</b></p><p><b> });</b></p><p> button2.addActionListener(this);</p><p> button3.addActionListener(th
34、is);</p><p> button4.addActionListener(this);</p><p> button5.addActionListener(this);</p><p> //setLayout(new GridLayout());</p><p> setBounds(150,150,200,200);<
35、;/p><p> setVisible(true);</p><p> validate();</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()=
36、=button2){//取款</p><p> dispose();</p><p> GetBalance gb = new GetBalance("取款",act);</p><p><b> }</b></p><p> if(e.getSource()==button3){//查詢余額
37、</p><p> Query q =new Query("查詢余額",act);</p><p> dispose();</p><p><b> }</b></p><p> else if(e.getSource()==button4){//退出</p><p>
38、 System.exit(0);</p><p> dispose();</p><p><b> }</b></p><p> else if(e.getSource()==button5){//修改密碼</p><p> ChangePassword cp = new ChangePassword(&quo
39、t;修改密碼",act);</p><p> dispose();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.3.3 取款模塊設(shè)計(jì)<
40、/p><p> 在取款模塊中,和其他的界面也是同樣的結(jié)構(gòu)。也是有一個(gè)文本框和一個(gè)按鈕還有標(biāo)簽組成的。用戶在文本框中輸入他想取的數(shù)額,但是必須是100的倍數(shù),而且每一次最多只能取5000塊。當(dāng)然了取款的時(shí)候也不能超過(guò)卡里的余額,再就是卡里的余額不可以為負(fù),否則就會(huì)彈出報(bào)錯(cuò)的窗口。其方法為:</p><p> if(e.getSource()==button){</p><
41、p> /*判斷余額是否為負(fù)*/</p><p> if(act.get_Money()<0){</p><p> dispose();</p><p> ErrorWarn4 ew4 = new ErrorWarn4("消息!",act);</p><p><b> }</b>&
42、lt;/p><p> /*判斷取款數(shù)額是否小于卡里余額*/</p><p> else if(money<=act.get_Money()){</p><p> /*取款的數(shù)額必須是100的倍數(shù)且每次最多只能取5000塊*/</p><p> if((money%100!=0)||(money>=5000)){</p&g
43、t;<p> dispose();</p><p> ErrorWarn6 ew6 = new ErrorWarn6("消息!",act);</p><p><b> }</b></p><p> act.set_Balance(money);//重新設(shè)置卡里的余額</p><p&g
44、t; this.setVisible(false);</p><p> /*取款后就再次進(jìn)入選擇界面*/</p><p> Selection s = new Selection("選擇服務(wù)",act);</p><p> //dispose();</p><p> }else if(money>act.g
45、et_Money()){</p><p> dispose();</p><p> ErrorWarn5 ew5 = new ErrorWarn5("消息!",act);</p><p><b> }</b></p><p><b> }</b></p>&
46、lt;p> 4.3.4 修改密碼模塊設(shè)計(jì)</p><p> 在修改密碼模塊中,首先你必須要輸入你的舊密碼是否正確,否則就會(huì)報(bào)錯(cuò)。再一個(gè)就是要兩次輸入你的新密碼,且兩次藥匹配,否則也會(huì)報(bào)錯(cuò),然后再重新回到修改密碼的界面。在修改密碼時(shí)用到的方法為:</p><p> /*判斷舊密碼是是否正確*/</p><p> if(pwd2.equals(act.g
47、et_Password())){</p><p> /*判斷兩次輸入的密碼是否匹配*/</p><p> if(pwd3.equals(pwd4)){</p><p> /*如果都正確的話就設(shè)置新密碼*/</p><p> act.setPassword(pwd3);</p><p> dispose();&
48、lt;/p><p> Selection s = new Selection("選擇",act);</p><p> }else{ </p><p> dispose();</p><p> ErrorWarn2 ew2 = new ErrorWarn2("消息",act);</p
49、><p><b> } </b></p><p><b> }else{</b></p><p> this.setVisible(false);</p><p> ErrorWarn3 ew1 = new ErrorWarn3("消息",act);</p>
50、<p> dispose();</p><p><b> }</b></p><p> 4.3.5 退卡模塊設(shè)計(jì)</p><p> 在退卡模塊設(shè)計(jì)中,這個(gè)方法就更加的簡(jiǎn)單了,它只是用了if(e.getSource()==button4){//退出</p><p> System.exit(0);&
51、lt;/p><p> dispose();</p><p><b> }</b></p><p> 這個(gè)方法就可以實(shí)現(xiàn)了,這里就不再多說(shuō)了。</p><p> 4.4 異常處理情況說(shuō)明</p><p> ?。?)打開(kāi)、保存文件時(shí)的異常處理</p><p> 需要處理
52、的異常:IOException</p><p> ?。?)數(shù)據(jù)庫(kù)訪問(wèn)時(shí)的異常處理</p><p> 需要處理的異常:SQLException</p><p> ?。?)加載類(lèi)時(shí)的異常處理</p><p> 需要處理的異常:ClassNotFindException,當(dāng)應(yīng)用程序試圖使用Class類(lèi)中的forName方法通過(guò)字符串名加載類(lèi)時(shí),
53、但是沒(méi)有找到具有指定名稱(chēng)的類(lèi)的定義。</p><p> ?。?)加載URL時(shí)的異常</p><p> 需要處理的異常:MalformedURLException,拋出這一異常指示出現(xiàn)了錯(cuò)誤的 URL?;蛘咴谝?guī)范字符串中找不到任何合法協(xié)議,或者無(wú)法分析字符串。</p><p> 第五章 系統(tǒng)實(shí)現(xiàn)與測(cè)試</p><p> ?。?)打開(kāi)DOS,
54、編譯運(yùn)行程序后,將會(huì)看到如下的界面,如圖2所示。如果輸入的密碼或卡號(hào)不正確的話就會(huì)報(bào)右下圖的錯(cuò)誤。</p><p> 圖2 主界面—登陸頁(yè)面</p><p> ?。?)選擇服務(wù)界面效果</p><p> 當(dāng)輸入的密碼和卡號(hào)正確,單擊確定后就會(huì)進(jìn)入到選擇服務(wù)的界面,如圖3所示。然后就可以選擇所需要的服務(wù)了。</p><p> 圖3 選
55、擇服務(wù)界面</p><p> ?。?)取款界面,如圖4所示。</p><p><b> 圖4 取款界面</b></p><p> 當(dāng)輸入的錢(qián)數(shù)不是100的倍數(shù)或每一次大于5000時(shí)就會(huì)報(bào)圖5的錯(cuò)誤。</p><p><b> 圖5 輸入錯(cuò)誤1</b></p><p>
56、; 當(dāng)取款時(shí)如果超過(guò)卡里的余額的話就會(huì)報(bào)圖6的錯(cuò)誤。</p><p><b> 圖6 輸入錯(cuò)誤2</b></p><p> (4)查詢余額界面,如圖7所示。</p><p> 圖7 查詢余額界面</p><p> 經(jīng)過(guò)測(cè)試,所有的功能基本上都實(shí)現(xiàn)了,而且運(yùn)行正常。</p><p>
57、 第六章 課程設(shè)計(jì)總結(jié)</p><p> 6.1 遇到的問(wèn)題及解決辦法</p><p> 在此次課程設(shè)計(jì)中,我遇到了一些問(wèn)題,如:對(duì)于面向?qū)ο蟮姆椒私獠粔蛲笍兀\(yùn)用到實(shí)際的軟件開(kāi)發(fā)中存在著困難;對(duì)于Java語(yǔ)言,只學(xué)習(xí)到了一些最基本的知識(shí),這導(dǎo)致編寫(xiě)程序時(shí)經(jīng)常出現(xiàn)一些語(yǔ)法錯(cuò)誤,而且要在短時(shí)間內(nèi)用Java語(yǔ)言來(lái)設(shè)計(jì)一個(gè)具體的系統(tǒng)是一個(gè)較大的挑戰(zhàn);還有對(duì)于正規(guī)開(kāi)發(fā)一個(gè)系統(tǒng)的流程不熟悉,
58、適應(yīng)起來(lái)比較慢,編寫(xiě)各個(gè)模塊相對(duì)應(yīng)的操作時(shí),自己感覺(jué)難以動(dòng)手,這表明所學(xué)的知識(shí)不能靈活運(yùn)用到實(shí)際中。</p><p> 對(duì)于以上的問(wèn)題,自己有清楚的認(rèn)識(shí),解決辦法是需要大量閱讀相關(guān)的書(shū)籍,對(duì)于書(shū)上以及網(wǎng)站上下載的資料中的Java實(shí)例必須有清楚的理解,還有就是多跟精通此方面的老師和同學(xué)交流,取其精華。對(duì)于實(shí)際動(dòng)手能力與系統(tǒng)開(kāi)發(fā)的流程的適應(yīng),必須多進(jìn)行實(shí)際的練習(xí)與操作,才能有大的進(jìn)步。</p><
59、;p><b> 6.2 心得體會(huì)</b></p><p> 在這次的學(xué)年度課程設(shè)計(jì)中,我主要運(yùn)用了Java語(yǔ)言的界面設(shè)計(jì)、異常處理、、Awt控件、Swing控件,輸入輸出流等,綜合運(yùn)用了Java語(yǔ)言。我深刻感受到了面向?qū)ο笳Z(yǔ)言中類(lèi)庫(kù)的強(qiáng)大功能,掌握了運(yùn)用Java中的類(lèi)實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類(lèi)的方法,為以后的面向?qū)ο笳Z(yǔ)言的自學(xué)奠定了基礎(chǔ)。</p>&l
60、t;p> 通過(guò)這兩個(gè)禮拜的課程設(shè)計(jì)我真的學(xué)到了很多的東西,當(dāng)然這也和我的同學(xué)的幫助是離不開(kāi)的。好了,下面就談一下我在這些天的體會(huì)吧:</p><p> 在這次的課程設(shè)計(jì)中,主要是運(yùn)用JAVA語(yǔ)言來(lái)編寫(xiě)一個(gè)小的應(yīng)用程序,當(dāng)然還可以用其他的技術(shù)來(lái)輔助了。在這個(gè)小應(yīng)用程序當(dāng)中,我用了Java外還用了Swing控件。輸入輸出流等技術(shù)。由于以前學(xué)的不是很扎實(shí),而且還有些知識(shí)我們都是沒(méi)有學(xué)過(guò)的,這就要求我們?nèi)ゲ橄嚓P(guān)
61、的書(shū)籍,還有就是和同學(xué)之間的交流。正因?yàn)檫@樣,才鍛煉了我的自學(xué)的能力,還有就是加深了我對(duì)各個(gè)知識(shí)點(diǎn)的認(rèn)識(shí),并且提高了我對(duì)專(zhuān)業(yè)的學(xué)習(xí)的興趣,為我以后的學(xué)習(xí)打下了基礎(chǔ)。此外,我還感受到了面向?qū)ο笳Z(yǔ)言的類(lèi)庫(kù)的強(qiáng)大的功能,掌握了運(yùn)用JAVA中的類(lèi)實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類(lèi)的方法,也就是要會(huì)用API文檔,為以后更好的學(xué)習(xí)面向?qū)ο笳Z(yǔ)言奠定了基礎(chǔ)。</p><p> 通過(guò)將近兩周的努力,這次課程設(shè)計(jì)終于結(jié)束了,
62、在這個(gè)過(guò)程當(dāng)中,我學(xué)到了很多的知識(shí),同時(shí)也感謝我的同學(xué)的幫助和指導(dǎo)。在以后的學(xué)習(xí)當(dāng)中,我會(huì)更加努力的學(xué)習(xí)好專(zhuān)業(yè)知識(shí),并將所學(xué)的知識(shí)用于實(shí)踐當(dāng)中去,以便牢固掌握知識(shí)。</p><p><b> 附錄——源代碼</b></p><p> import javax.swing.*;</p><p> import java.awt.*;<
63、/p><p> import javax.swing.border.*;</p><p> import java.awt.event.*;</p><p> import java.io.*;</p><p> /*登陸頁(yè)面首窗口*/</p><p> class WindowBox extends Frame
64、 implements ActionListener{</p><p> Box baseBox,box1,box2;</p><p> TextField tf1,tf2;</p><p> Button button1;</p><p> Button button2;</p><p> WindowBo
65、x(String s){//構(gòu)造方法</p><p><b> super(s);</b></p><p> tf1 = new TextField(6);</p><p> tf2 = new TextField(6);</p><p> box1= Box.createVerticalBox;</p&g
66、t;<p> box1.add(new Label("請(qǐng)輸入你的卡號(hào)")); //輸入卡號(hào)</p><p> box1.add(Box.createVerticalStrut(8));</p><p> box1.add(new Label("請(qǐng)輸入你的密碼"));//輸入密碼</p><p> box2
67、=Box.createVerticalBox();</p><p> box2.add(tf1);</p><p> //box2.add(new TextField(16));</p><p> box2.add(Box.createVerticalStrut(8));</p><p> box2.add(tf2);</p&g
68、t;<p> //box2.add(new TextField(16));</p><p> baseBox=Box.createHorizontalBox();</p><p> baseBox.add(box1);</p><p> baseBox.add(Box.createHorizontalStrut(10));</p>
69、<p> baseBox.add(box2);</p><p> add(baseBox);</p><p> button1= new Button("確定");//加入按鈕</p><p> button1.addActionListener(this);</p><p> add(button1
70、);</p><p> button2 = new Button("退卡");//退卡按鈕</p><p> button2.addActionListener(this);</p><p> add(button2);</p><p> setLayout(new FlowLayout());</p>
71、<p><b> /*監(jiān)聽(tīng)器*/</b></p><p> this.addWindowListener(new WindowAdapter(){</p><p> public void windowClosing(WindowEvent e){</p><p> System.exit(0);</p>&
72、lt;p><b> }</b></p><p><b> });</b></p><p> setBounds(120,125,200,175);</p><p> setVisible(true);</p><p><b> }</b></p>
73、<p> public void actionPerformed(ActionEvent e){</p><p> Account act;</p><p> String card;</p><p> String pwd;</p><p> act=new Account("000000",&quo
74、t;Devil","123456",50000);//初始化</p><p> /*選擇各種服務(wù)*/</p><p> if(e.getSource() == button1){</p><p> String number1,number2;//輸入的兩個(gè)卡號(hào)和密碼的變量</p><p> number
75、1=tf1.getText();</p><p> number2=tf2.getText();</p><p> /*判斷兩次輸入的卡號(hào)和密碼是否正確*/if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){</p><p> dispose
76、();</p><p> Selection s = new Selection("選擇服務(wù)",act);</p><p><b> }else{</b></p><p> dispose();</p><p> ErrorWarn ew = new ErrorWarn("消息!&q
77、uot;,act);//報(bào)輸入密碼或卡號(hào)不正確</p><p><b> }</b></p><p> }if(e.getSource()==button2){</p><p> System.exit(0);</p><p> dispose();//退出</p><p><b&
78、gt; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> /*主函數(shù)*/</b></p><p> class ATM{</p><p> public stati
79、c void main(String [] args){</p><p> new WindowBox("登錄頁(yè)面");</p><p><b> }</b></p><p><b> }</b></p><p><b> /*選擇服務(wù)*/</b>&
80、lt;/p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> class Selection extends Frame implements ActionListener{</p><p> Button button1,button2,button3,
81、button4,button5;</p><p> Panel p1 = new Panel();</p><p> Panel p2 = new Panel();</p><p> Panel p3 = new Panel();</p><p> Panel p4 = new Panel();</p><p>
82、; Panel p5 = new Panel();</p><p> Panel p = new Panel();</p><p> Account act;</p><p> public Selection(){}</p><p> Selection(String s,Account act){</p><
83、p><b> super(s);</b></p><p> this.act=act;</p><p> this.setLayout(null);</p><p> this.setLayout(new GridLayout(6,1));</p><p> p.add(new Label("請(qǐng)
84、選擇你要的服務(wù)"));</p><p> this.add(p);</p><p> /*各種服務(wù)功能*/</p><p> button1 = new Button("存款");</p><p> p1.add(button1);</p><p> this.add(p1);&
85、lt;/p><p> button2 = new Button("取款");</p><p> p2.add(button2);</p><p> this.add(p2);</p><p> button3 = new Button("查詢余額");</p><p> p
86、3.add(button3);</p><p> this.add(p3);</p><p> button4 = new Button("退出");</p><p> p4.add(button4);</p><p> this.add(p4);</p><p> button5 = n
87、ew Button("修改密碼");</p><p> p5.add(button5);</p><p> this.add(p5);</p><p> this.addWindowListener(new WindowAdapter(){</p><p> public void windowClosing(Wi
88、ndowEvent e){</p><p> System.exit(0);</p><p><b> }</b></p><p><b> });</b></p><p> button2.addActionListener(this);</p><p> but
89、ton3.addActionListener(this);</p><p> button4.addActionListener(this);</p><p> button5.addActionListener(this);</p><p> setBounds(150,150,200,200);</p><p> setVisib
90、le(true);</p><p> validate();</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==button2){//取款</p>&l
91、t;p> dispose();</p><p> GetBalance gb = new GetBalance("取款",act);</p><p><b> }</b></p><p> if(e.getSource()==button3){//查詢余額</p><p> Query
92、 q =new Query("查詢余額",act);</p><p> dispose();</p><p><b> }</b></p><p> else if(e.getSource()==button4){//退出</p><p> System.exit(0);</p>
93、<p> dispose();</p><p><b> }</b></p><p> else if(e.getSource()==button5){//修改密碼</p><p> ChangePassword cp = new ChangePassword("修改密碼",act);</p>
94、<p> dispose();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*class Test4{</p><p> public s
95、tatic void main(String [] args){</p><p> Selection s = new Selection("選擇");</p><p><b> }</b></p><p><b> }*/</b></p><p><b> /
96、*取款功能*/</b></p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> import javax.swing.border.*;</p><p> import java.awt.event.*;</p><p>
97、; class GetBalance extends Frame implements ActionListener{</p><p> Box baseBox, box1,box2;</p><p> Button button;</p><p> TextField tf;</p><p> Account act;</p
98、><p> GetBalance(String s,Account act){//構(gòu)造函數(shù)</p><p><b> super(s);</b></p><p> this.act=act;</p><p> button=new Button("確定");</p><p>
99、; Panel panel = new Panel();</p><p> Panel panel1 = new Panel();</p><p> tf = new TextField(6);</p><p> this.setLayout(new GridLayout(2,1));</p><p> panel1.add(new
100、 Label("請(qǐng)輸入你想取錢(qián)的數(shù)目"));</p><p> panel1.add(tf);</p><p> panel.add(button);</p><p> this.add(panel1);</p><p> this.add(panel);</p><p> button.
101、addActionListener(this);</p><p> this.addWindowListener(new WindowAdapter(){</p><p> public void windowClosing(WindowEvent e){</p><p> System.exit(0);</p><p><b&g
102、t; }</b></p><p><b> });</b></p><p> setBounds(200,200,150,150);</p><p> this.setVisible(true);</p><p><b> }</b></p><p>
103、 public void actionPerformed(ActionEvent e){</p><p> //System.out.println(e.getActionCommand());</p><p> double money;</p><p> money = Double.parseDouble(tf.getText().trim());<
104、;/p><p> if(e.getSource()==button){</p><p> if(act.get_Money()<0){//判斷余額是否為負(fù)</p><p> dispose();</p><p> ErrorWarn4 ew4 = new ErrorWarn4("消息!",act);</p&
105、gt;<p><b> }</b></p><p> else if(money<=act.get_Money()){//取錢(qián)的數(shù)額不大于余額</p><p> if((money%100!=0)||(money>=5000)){//取錢(qián)數(shù)為100的倍數(shù)或不大于5000</p><p> dispose();&
106、lt;/p><p> ErrorWarn6 ew6 = new ErrorWarn6("消息!",act);</p><p><b> }</b></p><p> act.set_Balance(money);//重置余額</p><p> this.setVisible(false);<
107、/p><p> Selection s = new Selection("選擇服務(wù)",act);//返回選擇服務(wù)窗口</p><p> //dispose();</p><p> }else if(money>act.get_Money()){判斷取款數(shù)額是否大于余額</p><p> dispose();<
108、;/p><p> ErrorWarn5 ew5 = new ErrorWarn5("消息!",act);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&
109、gt;<b> }</b></p><p><b> /*</b></p><p> public static void main(String[] args){</p><p> GetBalance test = new GetBalance("dfdf");</p><
110、;p> GetBalance gb = new GetBalance("取款");</p><p><b> }</b></p><p><b> }</b></p><p> /*修改密碼功能*/</p><p> import javax.swing.*;&l
111、t;/p><p> import java.awt.*;</p><p> import javax.swing.border.*;</p><p> import java.awt.event.*;</p><p> class ChangePassword extends Frame implements ActionListener
112、{</p><p> Panel panel1 = new Panel();</p><p> Panel panel2 = new Panel();</p><p> Panel panel3 = new Panel();</p><p> Panel panel = new Panel();</p><p>
113、; TextField tf4,tf5,tf6;</p><p> Button button;</p><p> Account act;</p><p> ChangePassword(String s,Account act){</p><p><b> super(s);</b></p>
114、<p> this.act=act;</p><p> tf4 = new TextField(6);</p><p> tf5 = new TextField(6);</p><p> tf6 = new TextField(6);</p><p> button = new Button("確定"
115、;);</p><p> button.addActionListener(this);</p><p><b> /*建立新密碼*/</b></p><p> panel1.add(new Label("請(qǐng)輸入你的舊密碼:"));</p><p> panel1.add(tf4);</
116、p><p> panel2.add(new Label("請(qǐng)輸入你的新密碼:"));</p><p> panel2.add(tf5);</p><p> panel3.add(new Label("請(qǐng)?jiān)俅屋斎肽愕男旅艽a"));</p><p> panel3.add(tf6);</p>
117、<p> panel.add(button);</p><p> this.add(panel1);</p><p> this.add(panel2);</p><p> this.add(panel3);</p><p> this.add(panel);</p><p> setLa
118、yout(new GridLayout(4,1));</p><p> setBounds(200,200,250,250);</p><p> this.setVisible(true);</p><p><b> /*窗口事件*/</b></p><p> this.addWindowListener(new
119、 WindowAdapter(){</p><p> public void windowClosing(WindowEvent e){</p><p> System.exit(0);</p><p><b> }</b></p><p><b> });</b></p>&
120、lt;p><b> }</b></p><p> /*判斷事件源,看條件是否成立再修改密碼*/</p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==button){</p><p> String
121、pwd2,pwd3,pwd4;</p><p> pwd2 = tf4.getText();</p><p> pwd3 = tf5.getText();</p><p> pwd4 = tf6.getText();</p><p> if(pwd2.equals(act.get_Password())){//判斷舊密碼是否正確<
122、;/p><p> if(pwd3.equals(pwd4)){//判斷兩次輸入的新密碼是個(gè)匹配</p><p> act.setPassword(pwd3);//啟用新的密碼</p><p> dispose();</p><p> Selection s = new Selection("選擇",act);//返回選
123、擇服務(wù)窗口</p><p><b> }else{</b></p><p> //this.setVisible(true);</p><p> //ErrorWarn2 ew = new ErrorWarn2("消息",act);</p><p> dispose();</p>
124、<p> ErrorWarn2 ew2 = new ErrorWarn2("消息",act);</p><p><b> } </b></p><p><b> }else{</b></p><p> this.setVisible(false);</p><
125、;p> ErrorWarn3 ew1 = new ErrorWarn3("消息",act);</p><p> dispose();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
126、t;</p><p><b> }</b></p><p> /*查詢余額功能*/</p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> import javax.swing.border.*;</p
127、><p> import java.awt.event.*;</p><p> class Query extends Frame implements ActionListener{</p><p> //Account act;</p><p> Button button;</p><p> Account
128、 act;</p><p> Query(String s,Account act){//構(gòu)造函數(shù)</p><p><b> super(s);</b></p><p> this.act = act;</p><p> button=new Button("確定");</p>
129、<p> //TextField tf = new TextField(6);</p><p> Panel panel1 = new Panel();</p><p> Panel panel = new Panel();</p><p> panel1.add(new Label("你的余額為: " + act.get_
130、Money()));//查詢余額的方法</p><p> //panel1.add(tf);</p><p> button.addActionListener(this);</p><p> panel.add(button);</p><p> this.add(panel);</p><p> th
131、is.add(panel1);</p><p> this.setLayout(new GridLayout(2,1));</p><p> this.addWindowListener(new WindowAdapter(){</p><p> public void windowClosing(WindowEvent e){</p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)--- atm柜員機(jī)
- java課程設(shè)計(jì)--atm機(jī)模擬系統(tǒng)
- java課程設(shè)計(jì)報(bào)告---atm柜員機(jī)
- java課程設(shè)計(jì)報(bào)告--銀行atm機(jī)系統(tǒng)
- java課程設(shè)計(jì)-atm柜員機(jī)模擬程序資料
- atm課程設(shè)計(jì)報(bào)告---簡(jiǎn)易atm機(jī)系統(tǒng)
- atm機(jī)課程設(shè)計(jì)--atm自動(dòng)粗取款系統(tǒng)
- java課程設(shè)計(jì)---atm柜臺(tái)模擬說(shuō)明書(shū)
- java課程設(shè)計(jì)報(bào)告--atm存取款系統(tǒng)
- java課程設(shè)計(jì)---atm柜臺(tái)模擬說(shuō)明書(shū)
- atm網(wǎng)絡(luò)編程cs課程設(shè)計(jì)--模擬atm機(jī)網(wǎng)絡(luò)編程
- 課程設(shè)計(jì)報(bào)告--atm取款機(jī)程序
- atm課程設(shè)計(jì)報(bào)告--atm管理系統(tǒng)
- 銀行atm自動(dòng)取款機(jī)系統(tǒng)課程設(shè)計(jì)
- 銀行atm自動(dòng)取款機(jī)系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---atm自動(dòng)提款機(jī)系統(tǒng)
- atm課程設(shè)計(jì)報(bào)告---atm交易管理系統(tǒng)
- java課程設(shè)計(jì)
- java課程設(shè)計(jì)--java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論