




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章項(xiàng)目編碼實(shí)現(xiàn)
1Java軟件開(kāi)發(fā)基礎(chǔ)驅(qū)動(dòng)任務(wù)一
創(chuàng)建出合理的項(xiàng)目分層結(jié)構(gòu)2Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)高內(nèi)聚低耦合的項(xiàng)目結(jié)構(gòu)設(shè)計(jì)
113Java面向?qū)ο筌浖_(kāi)發(fā)基本概念低耦合:是指一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間相互關(guān)聯(lián)的程度要低,也就是要盡量保持模塊間的獨(dú)立性。高內(nèi)聚:在同一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度要高,元素具有高度相關(guān)的職責(zé),除了這些職責(zé)內(nèi)的任務(wù),沒(méi)有其它過(guò)多的工作,那么該元素就具有高內(nèi)聚性,這里的元素可以是功能、對(duì)象(類(lèi))。4Java面向?qū)ο筌浖_(kāi)發(fā)顯示層ui、display或者view
業(yè)務(wù)處理controller或者logic
數(shù)據(jù)層db、model、dao5Java面向?qū)ο筌浖_(kāi)發(fā)“低耦合、高內(nèi)聚”的項(xiàng)目結(jié)構(gòu)項(xiàng)目名稱(chēng)
通用工具包
業(yè)務(wù)處理包
業(yè)務(wù)控制包
6Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)1按照?qǐng)D創(chuàng)建出工程atm_cs,并添加包結(jié)構(gòu)
23按照?qǐng)D結(jié)構(gòu)和命名方式,創(chuàng)建出各個(gè)類(lèi)
每個(gè)類(lèi)寫(xiě)上注釋7Java面向?qū)ο筌浖_(kāi)發(fā)驅(qū)動(dòng)任務(wù)二實(shí)現(xiàn)項(xiàng)目中數(shù)據(jù)庫(kù)底層管理類(lèi)(DatabaseManager),對(duì)數(shù)據(jù)庫(kù)的基本操作進(jìn)行封裝。8Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)JDBC底層類(lèi)的實(shí)現(xiàn)11加深面向?qū)ο蠓庋b的理解
29Java面向?qū)ο筌浖_(kāi)發(fā)為什么寫(xiě)數(shù)據(jù)庫(kù)底層管理類(lèi)在實(shí)際開(kāi)發(fā)當(dāng)中涉及到數(shù)據(jù)庫(kù)操作的很多,因此我們?cè)陂_(kāi)發(fā)過(guò)程中一般將對(duì)數(shù)據(jù)庫(kù)的基本操作方法封裝到一個(gè)類(lèi)中,這樣可以增加代碼的重用率,減少我們很多工作量和出錯(cuò)的機(jī)會(huì)在這里我們將對(duì)數(shù)據(jù)庫(kù)的常用操作方法封裝如下:UML類(lèi)圖中減號(hào)表示私有private;加號(hào)表示公有public。10Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第一步按照類(lèi)圖,給DatabaseManager類(lèi)添加連接數(shù)據(jù)庫(kù)和獲得數(shù)據(jù)庫(kù)查詢(xún)結(jié)果的三個(gè)屬性,其屬性為Connection、Statement、ResultSet的對(duì)象。 privateConnectionconn=null;//數(shù)據(jù)庫(kù)連接對(duì)象 privateStatementst=null;//執(zhí)行sql語(yǔ)句的對(duì)象 publicResultSetrs=null;//存放查詢(xún)結(jié)果的對(duì)象11Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第二步創(chuàng)建一個(gè)獲得數(shù)據(jù)庫(kù)連接的方法,將類(lèi)屬性中的Connection對(duì)象賦值privatevoidgetConnection(){ finalStringDRIVERNAME="com.mysql.jdbc.Driver"; finalStringURL="jdbc:mysql://localhost/atm?characterEncoding=utf-8"; finalStringLOGIN="root";//數(shù)據(jù)庫(kù)管理員用戶(hù)名 finalStringPASSWORD="";//數(shù)據(jù)庫(kù)密碼 try{ Class.forName(DRIVERNAME);//加載驅(qū)動(dòng)程序 DriverManager.getConnection(URL,LOGIN,PASSWORD); }catch(Exceptione){ System.out.println("執(zhí)行g(shù)etConnection()方法出錯(cuò):"); e.printStackTrace(); }}12Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第三步創(chuàng)建類(lèi)的構(gòu)造方法,調(diào)用步驟2中創(chuàng)建的方法獲得Connection對(duì)象,并通過(guò)該對(duì)象獲得Statement對(duì)象給類(lèi)屬性賦值。 publicDatabaseManager(){
getConnection(); try{ st=conn.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); } }13Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第四步完成數(shù)據(jù)庫(kù)查詢(xún)方法,將查詢(xún)后的結(jié)果保存為類(lèi)中的ResultSet對(duì)象屬性,其參數(shù)為SQL語(yǔ)句字符串。/***數(shù)據(jù)庫(kù)查詢(xún)*@paramsql傳入的SQL語(yǔ)句*/publicvoidexecuteQuery(Stringsql){try{rs=st.executeQuery(sql);//執(zhí)行SQL語(yǔ)句獲得結(jié)果集}catch(Exceptione){System.out.println(“執(zhí)行executeQuery(Stringsql)方法出錯(cuò)”); e.printStackTrace();//打印出錯(cuò)誤原因 }}14Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第五步完成對(duì)數(shù)據(jù)庫(kù)的增刪改操作的方法,其參數(shù)為SQL語(yǔ)句字符串,返回更改了數(shù)據(jù)庫(kù)表的行數(shù)。/***數(shù)據(jù)庫(kù)增加/刪除/修改*@paramsql傳入的SQL語(yǔ)句*@return>0執(zhí)行成功*/publicintexecuteUpdate(Stringsql){intret=-1try{ret=st.executeUpdate(sql);//執(zhí)行SQL語(yǔ)句對(duì)數(shù)據(jù)表進(jìn)行操作}catch(Exceptione){System.out.println("執(zhí)行executeUpdate(sql)方法出錯(cuò):"+sql);e.printStackTrace();//打印出錯(cuò)誤原因}returnret;}15Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)—第五步創(chuàng)建關(guān)閉數(shù)據(jù)庫(kù)資源方法。/***數(shù)據(jù)庫(kù)關(guān)閉*/publicvoidclose(){ try{ if(rs!=null){
rs.close();//關(guān)閉結(jié)果集 } if(st!=null){
st.close();//關(guān)閉Statement對(duì)象 } if(conn!=null){
conn.close();//關(guān)閉連接 }}catch(Exceptione){ System.out.println("執(zhí)行close()方法出錯(cuò):"); e.printStackTrace(); }}16Java面向?qū)ο筌浖_(kāi)發(fā)課堂總結(jié)17Java面向?qū)ο筌浖_(kāi)發(fā)驅(qū)動(dòng)任務(wù)三實(shí)現(xiàn)通用方法封裝類(lèi)(Tools),封裝對(duì)鍵盤(pán)輸入獲取的方法,和將信息保存到一個(gè)特定文件中的方法(模擬打印憑條)。18Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)獲取控制臺(tái)信息,實(shí)現(xiàn)人機(jī)交互
2對(duì)文件的讀寫(xiě)操作
3BufferedReader類(lèi)的使用1119Java面向?qū)ο筌浖_(kāi)發(fā)獲取鍵盤(pán)輸入過(guò)程示意圖20Java面向?qū)ο筌浖_(kāi)發(fā)讀取字符BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));實(shí)現(xiàn)將BufferedReader對(duì)象與控制臺(tái)輸入關(guān)聯(lián)了起來(lái),使得我們其后只關(guān)注BufferedReader對(duì)象中的方法。21Java面向?qū)ο筌浖_(kāi)發(fā)【例10-1】使用BufferedReader類(lèi)的相關(guān)方法來(lái)讀取控制臺(tái)上輸入的單個(gè)字符。importjava.io.*;//要用到輸入輸出的類(lèi),需要導(dǎo)入該包c(diǎn)lassBRRead{publicstaticvoidmain(Stringargs[])throwsIOException{charc;//定義一個(gè)字符變量/*產(chǎn)生緩沖輸入流對(duì)象br*/
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));System.out.println("請(qǐng)輸入");/*調(diào)用br對(duì)象的read()方法從緩沖輸入流中獲得一個(gè)字符并把這個(gè)字符賦值給變量c*/c=(char)br.read();//讀取一個(gè)字符System.out.println(c);}}運(yùn)行結(jié)果:請(qǐng)輸入135abc122Java面向?qū)ο筌浖_(kāi)發(fā)練習(xí)學(xué)生實(shí)現(xiàn)10-123Java面向?qū)ο筌浖_(kāi)發(fā)讀取字符串要想讀取輸入的完整字符串,可以使用BufferedReader對(duì)象的成員方法readLine()。24Java面向?qū)ο筌浖_(kāi)發(fā)【例子10-2】從控制臺(tái)中獲得輸入的字符串。importjava.io.*;classBRReadLines{publicstaticvoidmain(Stringargs[])throwsIOException{/*產(chǎn)生緩沖輸入流對(duì)象br*/
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringstr;//定義一個(gè)字符串變量System.out.println("請(qǐng)輸入");str=br.readLine();//調(diào)用br對(duì)象的readLine()方法從緩沖輸入流中獲得一行字符串并賦值給變量strSystem.out.println(str);}}運(yùn)行結(jié)果:請(qǐng)輸入135abc135abc25Java面向?qū)ο筌浖_(kāi)發(fā)練習(xí)學(xué)生實(shí)現(xiàn)10-226Java面向?qū)ο筌浖_(kāi)發(fā)
文件讀取文件讀取與從控制臺(tái)讀取類(lèi)似,其差別僅在于讀取的對(duì)象不同,因此我們只需要將關(guān)聯(lián)控制臺(tái)轉(zhuǎn)換為關(guān)聯(lián)一個(gè)文件即可。27Java面向?qū)ο筌浖_(kāi)發(fā)【例子10-3】從文件讀取數(shù)據(jù)importjava.io.*;publicclass{publicstaticvoidmain(String[]args)throwsIOException{ BufferedReaderfin=null;//定義一個(gè)文件輸入流類(lèi)的對(duì)象fin StringreadString=""; try{
fin=newBufferedReader(new(“D:\\”));//建立文件流對(duì)象,與文件關(guān)聯(lián) while((readString=fin.readLine())!=null){//按行讀取文件內(nèi)容,每次讀一行,循環(huán)讀完為止 System.out.println(readString); } }catch(e){ System.out.println("文件沒(méi)有找到!"); }catch(IOExceptione){ System.out.println("文件讀取失敗!"); }finally{
fin.close();//關(guān)閉文件流 } }}
文件的內(nèi)容如下:運(yùn)行結(jié)果:請(qǐng)輸入135abc135abc28Java面向?qū)ο筌浖_(kāi)發(fā)文件寫(xiě)入文件的寫(xiě)入,使用文件輸出流()的成員方法write()實(shí)現(xiàn)。29Java面向?qū)ο筌浖_(kāi)發(fā)【例子10-4】將信息保存到一個(gè)特定文件中importjava.io.*;publicclass{publicstaticvoidmain(String[]args)throwsIOException{fout;//定義一個(gè)文件輸出流類(lèi)的對(duì)象fout//創(chuàng)建文件輸出流對(duì)象fout,同時(shí)打開(kāi)了文件*.txt,若文件不存在將新建一個(gè)
fout=new("D:\\");//保存信息到d盤(pán)的文件中//保存用戶(hù)信息到文件try{//要保存到文件中的用戶(hù)信息StringuserInfo=“客戶(hù)姓名:張三\r\n客戶(hù)帳號(hào):123456789\r\n取款金額:1500元\r\n賬戶(hù)余額:300元\r\n";fout.write(userInfo.getBytes());//注意,write方法的參數(shù)是字節(jié)數(shù)組,因此調(diào)用String對(duì)象的getBytes方法通過(guò)字符串生成字節(jié)數(shù)組}catch(IOExceptione){System.out.println("文件保存失敗");}//文件關(guān)閉fout.close();//關(guān)閉輸出流對(duì)象,同時(shí)自動(dòng)關(guān)閉和保存文件 }}
在D盤(pán)生成一個(gè)文件內(nèi)容如下:30Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)123引入java.util包中StringTokenizer類(lèi)
使用BufferedReader對(duì)象的read()方法來(lái)讀取控制臺(tái)上輸入的單個(gè)字符
使用BufferedReader對(duì)象的readLine()方法來(lái)讀取控制臺(tái)上輸入的字符串;
45使用BufferedReader對(duì)象的readLine()方法來(lái)讀取文件
使用對(duì)象的write()方法把信息寫(xiě)入到特定文件中去31Java面向?qū)ο筌浖_(kāi)發(fā)驅(qū)動(dòng)任務(wù)四完成業(yè)務(wù)層中Login類(lèi),實(shí)現(xiàn)登錄功能32Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)閱讀活動(dòng)圖與時(shí)序圖
2根據(jù)業(yè)務(wù)流程完成具體開(kāi)發(fā)任務(wù)
1133Java面向?qū)ο筌浖_(kāi)發(fā)登錄業(yè)務(wù)流程分析業(yè)務(wù)流程:1.用戶(hù)輸入用戶(hù)名和密碼2.系統(tǒng)根據(jù)用戶(hù)輸入的用戶(hù)名和密碼,到后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún),如果存在這樣的記錄,表示登錄成功。3.如果用戶(hù)輸入的用戶(hù)名和密碼不匹配,那么就提示用戶(hù)名或密碼不正確,然后返回登錄界面,讓用戶(hù)重新輸入用戶(hù)名和密碼。 34Java面向?qū)ο筌浖_(kāi)發(fā)登錄活動(dòng)圖35Java面向?qū)ο筌浖_(kāi)發(fā)登錄模塊詳細(xì)設(shè)計(jì)36Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)123根據(jù)時(shí)序圖創(chuàng)建出對(duì)應(yīng)的三個(gè)類(lèi)
完成Login類(lèi)中的doLogin()方法
在AutoTerminalMachine中調(diào)用doLogin()方法并判斷登錄是否成功
37Java面向?qū)ο筌浖_(kāi)發(fā)驅(qū)動(dòng)任務(wù)五完成業(yè)務(wù)層中BalanceQuery類(lèi),實(shí)現(xiàn)余額查詢(xún)功能。38Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)根據(jù)活動(dòng)圖和實(shí)訓(xùn)圖進(jìn)行開(kāi)發(fā)1139Java面向?qū)ο筌浖_(kāi)發(fā)余額查詢(xún)流程分析業(yè)務(wù)流程:從數(shù)據(jù)庫(kù)中獲取當(dāng)前登錄用戶(hù)的余額信息,并顯示出賬戶(hù)存款余額40Java面向?qū)ο筌浖_(kāi)發(fā)余額查詢(xún)活動(dòng)圖41Java面向?qū)ο筌浖_(kāi)發(fā)余額查詢(xún)模塊詳細(xì)設(shè)計(jì)42Java面向?qū)ο筌浖_(kāi)發(fā)任務(wù)實(shí)現(xiàn)123根據(jù)時(shí)序圖創(chuàng)建出對(duì)應(yīng)的類(lèi)與方法
完成BalanceQuery類(lèi)中的doBalanceQuery()方法
在AutoTerminalMachine中調(diào)用doBalanceQuery()方法
43Java面向?qū)ο筌浖_(kāi)發(fā)驅(qū)動(dòng)任務(wù)六完成業(yè)務(wù)層中Withdrawal類(lèi),實(shí)現(xiàn)取款功能44Java面向?qū)ο筌浖_(kāi)發(fā)目標(biāo)及知識(shí)點(diǎn)根據(jù)活動(dòng)圖和實(shí)訓(xùn)圖進(jìn)行開(kāi)發(fā)1145Java面向?qū)ο筌浖_(kāi)發(fā)取款流程分析業(yè)務(wù)流程:選擇查詢(xún)余額菜單項(xiàng),輸入取款金額。驗(yàn)證取款金額的合法性,驗(yàn)證通過(guò),提示取款成功和賬戶(hù)余額;否則提示余額不足46Java面向?qū)ο筌浖_(kāi)發(fā)取款活動(dòng)圖47Java面向?qū)ο?/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)展規(guī)劃處內(nèi)部管理制度
- 智慧安檢安全管理制度
- ktv員工工作管理制度
- 家具廠(chǎng)外出安裝管理制度
- 日本注塑工場(chǎng)管理制度
- 河道施工安全管理制度
- 幼兒園活動(dòng)活動(dòng)管理制度
- 客服務(wù)員培訓(xùn)與管理制度
- ppr車(chē)間衛(wèi)生管理制度
- 公司董事長(zhǎng)食堂管理制度
- 2025年中國(guó)石油套管油管市場(chǎng)現(xiàn)狀分析及前景預(yù)測(cè)報(bào)告
- 《課件的責(zé)任與擔(dān)當(dāng)》
- 美縫合同協(xié)議書(shū)
- 2025-2030中國(guó)造紙行業(yè)市場(chǎng)前景趨勢(shì)及競(jìng)爭(zhēng)格局與投資研究報(bào)告
- 95式自動(dòng)步槍對(duì)不動(dòng)目標(biāo)的射擊動(dòng)作要領(lǐng)上課講義
- 建設(shè)領(lǐng)域信息技術(shù)應(yīng)用基本術(shù)語(yǔ)標(biāo)準(zhǔn)
- 講好法院故事:消息寫(xiě)作與新聞攝影實(shí)戰(zhàn)指南
- 2025-2030中國(guó)納豆激酶行業(yè)現(xiàn)狀調(diào)查與發(fā)展前景趨勢(shì)預(yù)測(cè)研究報(bào)告
- 臨床預(yù)防有法護(hù)理有道“4321”結(jié)構(gòu)化干預(yù)方案在腦卒中患者失禁性皮炎皮膚管理臨床應(yīng)用
- GB/T 27030-2025合格評(píng)定第三方符合性標(biāo)志的通用要求
- 口腔科人員應(yīng)急替代方案
評(píng)論
0/150
提交評(píng)論