




已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
設計模式大作業(yè)課程名稱: 軟件設計模式 設計題目:公司經(jīng)費申請 院 系: 計算機科學與信息工程學院 學生姓名: 學 號: 專業(yè)班級: 軟件工程13-1 指導教師: 高 原 2016年6月軟 件 設 計 模 式 任 務 書設計題目公司經(jīng)費申請學生姓名 所在院系計算機科學與信息工程學院專業(yè)、年級、班軟件工程13-1設計要求:1設計一個應用場景,最少使用所學過的三種設計模式解決一個實際問題。一人一題,不可重復。2應用場景設計要合理,模式選擇要適當。3要求給出系統(tǒng)模式結構圖,主要類的設計代碼。4編寫驗證程序,在驗證程序中要在顯著位置顯示個人信息。學生應完成的工作:1. 應用場景:公司經(jīng)費申請,可以了解申請經(jīng)費的具體流程,由申請人先填寫申請單,然后交給領導審批,如果申請批準下來,領導會通知申請人審批通過,然后申請人去財務領取費用,如果沒有批準下來,領導會通知申請人審批未通過。不同級別的領導,對于審批的額度是不一樣的,比如,項目經(jīng)理只能審批500元以內(nèi)的申請;部門經(jīng)理能審批1000元以內(nèi)的申請;而總經(jīng)理可以審核3000元以內(nèi)的申請,否則不通過。2. 設計模式:模板方法模式,職責鏈模式,觀察者模式。 (1)模板方法模式:定義了一個操作中算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 (2)職責鏈模式:不同級別的領導,對于審批的額度不一樣,使其各自的職責權限更加清晰明了。 (3)觀察者模式:一個對象狀態(tài)發(fā)生改變時,其相應依賴對象得到通知并自動更新。3. 實現(xiàn)代碼: 使用java語言實現(xiàn)所有功能。參考文獻閱讀:1 徐宏喆,侯迪等編著,實用軟件設計模式教程M,清華大學出版社。2 顏炯編著,C#設計模式M,中國電力出版社。3 程杰,大話設計模式,北京:機械工業(yè)出版社,2008。4 設計模式可復用面向?qū)ο筌浖幕A,北京:機械工業(yè)出版社。5 美Alan Shalloway著,設計模式精解M,清華大學出版社。工作計劃:1. 審題,查閱資料,進行設計前的必要資料準備(3天)。2. 把程序完整運行出來(4天)。3. 增加改進程序(3天)。4. 寫課程設計報告(3天)。5. 提交課程設計報告(1天)。任務下達日期: 2015 年 6 月 9 日 任務完成日期: 2015 年 6 月 22 日指導教師(簽名): 高原 學生(簽名): 代小雪目錄一、 系統(tǒng)目標11. 設計目的12. 需求描述1二、系統(tǒng)模塊選擇11. 需求分析12. 選用設計模式2(1)模板方法模式2(2)職責鏈模式2(3)觀察者模式3三、 系統(tǒng)設計41. 系統(tǒng)功能模塊設計4四、 系統(tǒng)實現(xiàn)51.模板方法模塊及其實現(xiàn)類52.職責鏈模塊及其實現(xiàn)類63.觀察者模塊及其實現(xiàn)類94.事件處理程序10五、 系統(tǒng)設計總結111. 實現(xiàn)的功能和優(yōu)點112. 不足之處123. 完成心得12六、 參考文獻12參考文獻121、 系統(tǒng)目標1. 設計目的通過本課程設計,加深對軟件設計課程的理解,熟練掌握和鞏固所學的各種設計模式,培養(yǎng)自我動手、查閱技術文獻、資料、手冊以及編寫技術文獻的能力。通過運用設計模式來解決實際系統(tǒng)中遇到的問題,從而具備利用計算機編程分析解決綜合性實際問題的初步能力。2. 需求描述 本系統(tǒng)的主要目的在與應用設計模式解決公司經(jīng)費申請問題,可以了解申請經(jīng)費的具體流程為申請人先填寫申請單,然后交給領導審批,如果申請批準下來,領導會通知申請人審批通過,然后申請人去財務領取費用,財務部給于其撥款,如果沒有批準下來,領導會通知申請人審批未通過。不同級別的領導,對于審批的額度是不一樣的,比如,項目經(jīng)理只能審批500元以內(nèi)的申請;部門經(jīng)理能審批1000元以內(nèi)的申請;而總經(jīng)理可以審核3000元以內(nèi)的申請,否則不通過。系統(tǒng)中總共用到三種設計模式,分別是模板方法模式,職責鏈模式,觀察者模式。 模板方法模式定義了一個操作中算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。申請經(jīng)費的具體流程是固定的,寫申請單,審核,得到通知這三個過程,只是審核過程不同。職責鏈模式鑒于不同級別的領導,對于審批的額度是不一樣,使其各自的職責權限更加清晰明了。觀察者模式是一種一對多依賴關系,一個對象狀態(tài)發(fā)生改變時,其相應依賴對象得到通知并自動更新。二、 系統(tǒng)模塊選擇1. 需求分析根據(jù)問題的描述,可以確定系統(tǒng)的大致業(yè)務邏輯。如下:需要申請活動費用,按照固定工作流程進行申請,給出申請金額,由領導根據(jù)各自的職責權限進行審核,并將結果告知申請人,財務部根據(jù)結果給予撥款。將結果返回到客戶端,呈現(xiàn)給用戶。2. 選用設計模式根據(jù)需求分析,該公司經(jīng)費申請可以采用到三種設計模式,分別是模板方法模式,職責鏈模式,觀察者模式。(1) 模板方法模式采用模板方法模式的原因是它定義了一個操作中算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。公司申請活動經(jīng)費的流程是固定的,由申請人先填寫申請單,然后交給領導審批,最后得到審批結果,作出相應行動。用模板方法模式使其結構清晰,提高了代碼的復用性。模式結構圖如圖1-1:圖1-1 模板方法模式結構圖(2)職責鏈模式采用職責鏈模式的主要原因是對于審核經(jīng)費申請單,由上級領導進行處理,而不同級別的領導,對于審批的額度是不一樣的。職責鏈模式避免請求發(fā)送者和接收者耦合在一起,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。這樣降低了耦合度,簡化對象的相互連接,增強給對象指派職責的靈活性。模式結構圖如圖1-2:圖1-2職責鏈模式結構圖(3)觀察者模式采用觀察者模式的主要原因是可以實現(xiàn)表示層和數(shù)據(jù)邏輯層的分離,并定義可穩(wěn)定的消息更新傳遞機制,抽象了更新接口。在觀察目標和觀察者之間建立一個抽象的耦合。模式結構圖如圖1-3:圖1-3觀察者模式結構圖3、 系統(tǒng)設計1. 系統(tǒng)功能模塊設計根據(jù)需求分析,公司經(jīng)費申請可分為三個模塊,主要如下:u 申請人填寫經(jīng)費申請單:向上級領導提交申請。u 領導審核:根據(jù)職責權限不同,按各自的管理范圍一一送派審核。u 收到審核結果通知:收到上級領導對經(jīng)費申請單批準與否的信息。 公司經(jīng)費申請?zhí)顚懡?jīng)費申請單領導審核收到審核結果圖2-1 公司經(jīng)費申請模塊4、 系統(tǒng)實現(xiàn)1. 模板方法模式和其實現(xiàn)類模板方法模式貫穿在整個系統(tǒng)中,公司經(jīng)費申請由三個具體部分組成,填寫申請單,經(jīng)領導審批,最后接收到通知。模板方法模式貫穿整個工作模塊,實現(xiàn)代碼如下:public abstract class ApplicationForFunds public void apply()System.out.println(填寫申請單);public abstract void toExamine();public void evaluate()System.out.println(得到通知); public void process() this.apply(); this.toExamine(); this.evaluate(); public class ActivityFund extends ApplicationForFundspublic void toExamine()System.out.println(活動經(jīng)費);public class ProjectFund extends ApplicationForFundspublic void toExamine()System.out.println(項目經(jīng)費);2. 職責鏈模式和其實現(xiàn)類職責鏈模式避免請求發(fā)送者和接收者耦合在一起,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。主要解決的是上級領導中的那個具體人來實現(xiàn)審核工作。職責鏈模式來完成領導審核模塊,實現(xiàn)代碼如下:public abstract class Leaderprotected String name;protected Leader successor;public Leader(String name)=name;public void setSuccessor(Leader successor)this.successor=successor;public abstract void handleRequest(Funts request);public class DivisionManager extends Leaderpublic DivisionManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()1000)System.out.println(部門經(jīng)理 + name + 審批 + request.getReplyName() + 員工的活動經(jīng)費,經(jīng)費為 + request.getMoney() + 元。可去財務部領取費用。);elseif(this.successor!=null)this.successor.handleRequest(request);public class GeneralManager extends Leaderpublic GeneralManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()3000)System.out.println(總經(jīng)理 + name + 審批員工 + request.getReplyName() + 員工的活動經(jīng)費,經(jīng)費為 + request.getMoney() + 元??扇ヘ攧詹款I取費用。);elseSystem.out.println( request.getReplyName() + 員工的活動經(jīng)費為 + request.getMoney() + 元,由于其經(jīng)費要求太高將不予批準!);public class ProjectManager extends Leader public ProjectManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()500)System.out.println(項目經(jīng)理 + name + 審批 + request.getReplyName() + 員工的活動經(jīng)費,經(jīng)費為 + request.getMoney() + 元??扇ヘ攧詹款I取費用。);elseif(this.successor!=null)this.successor.handleRequest(request);public class Funtsprivate String replyName;private int money;public Funts(String replyName,int money)this.replyName=replyName;this.money=money;public void setReplyName(String replyName) this.replyName = replyName; public void setMoney(int money) this.money = money; public String getReplyName() return (this.replyName); public int getMoney() return (this.money); 3. 觀察者模式和其實現(xiàn)類觀察者模式可以實現(xiàn)表示層和數(shù)據(jù)邏輯層的分離,并定義可穩(wěn)定的消息更新傳遞機制,抽象了更新接口。在觀察目標和觀察者之間建立一個抽象的耦合。觀察者模式來完成接收到審核通知模塊,實現(xiàn)代碼如下:import java.util.*;public abstract class MySubjectprotected ArrayList observers = new ArrayList();/注冊方法public void attach(MyObserver observer)observers.add(observer); /注銷方法public void detach(MyObserver observer)observers.remove(observer);public abstract void pass(); /抽象通知方法public interface MyObservervoid response(); /抽象響應方法public class Check extends MySubjectpublic void pass()System.out.println(審核通過!);System.out.println(-);for(Object obs:observers)(MyObserver)obs).response();public class ApplyPeople implements MyObserverpublic void response()System.out.println(申請人去財務部領取資金!);public class GiveFunt implements MyObserverpublic void response()System.out.println(財務部撥給申請人相應資金!);4. 事件處理程序事件處理程序的代碼如下:public class Clientpublic static void main(String a)Leader objProjectManager,objDivisionManager,objGeneralManager;ApplicationForFunds bank;bank=(ApplicationForFunds)XMLUtil.getBean();cess();System.out.println(-);objProjectManager=new ProjectManager(王明);objDivisionManager=new DivisionManager(趙強);objGeneralManager=new GeneralManager(李波);objProjectManager.setSuccessor(objDivisionManager);objDivisionManager.setSuccessor(objGeneralManager);Funts lr1=new Funts(第一小組,450);objProjectManager.handleRequest(lr1);Funts lr2=new Funts(第二小組,3200);objProjectManager.handleRequest(lr2);Funts lr3=new Funts(第三小組,1500);objProjectManager.handleRequest(lr3);Funts lr4=new Funts(第四小組,900);objProjectManager.handleRequest(lr4);MySubject subject=new Check();MyObserver obs1,obs2,obs3;obs1=new GiveFunt();obs2=new GiveFunt();obs3=new ApplyPeople();subject.attach(obs1);subject.attach(obs2);subject.attach(obs3);subject.pass();5、 系統(tǒng)設計總結1. 實現(xiàn)的功能和優(yōu)點該公司經(jīng)費申請主要實現(xiàn)的是公司經(jīng)費申請的具體流程和實現(xiàn)過程,運用到的設計模式有模板方法模式,職責鏈模式和觀察者模式。職責鏈模式根據(jù)審核經(jīng)費申請單經(jīng)費的多少,由不同級別的領導進行審批。觀察者模式可以實現(xiàn)表示層和數(shù)據(jù)邏輯層的分離,并定義可穩(wěn)定的消息更新傳遞機制,抽象了更新接口。模板方法模式為整個業(yè)務流程應用的該模式,客戶端只需訪問,而無需知道具體如何實現(xiàn)。該管理系統(tǒng)的優(yōu)點就是代碼的復用率很高,合理的運用了這三種設計模式,各個模塊的層
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼代紀年墓葬、塔基出土陶瓷器研究-以分布和行銷為中心
- 物業(yè)服務公司安全保障義務研究
- 十年教育發(fā)展歷程
- 高效銷售團隊建設與運營體系設計
- 店長管理培訓總結
- 頸椎影像檢查技術課件
- 預防腮腺炎的課件
- 老年人健康宣講
- 體育培訓機構市場調(diào)查報告
- 肝膽疾病的早期診斷與治療方法
- 急診醫(yī)學休克優(yōu)質(zhì)課件
- 2023深圳工務署品牌名單
- 成人高級心血管生命支持
- 房缺術后患者護理查房課件
- 大樂透旋轉(zhuǎn)矩陣表
- 23式觀音拳拳譜及動作分解
- PDCA循環(huán)管理培訓PPT課件:降低采集血標本不合格率
- 南瑞繼保PCS9700綜自監(jiān)控和遠動系統(tǒng)維護操作手冊.
- 市政道路雨季施工方案
- 保健食品良好生產(chǎn)規(guī)范GB 17405—1998
- 2006年東風雪鐵龍c2原廠維修手冊al4變速箱
評論
0/150
提交評論