




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、文檔供參考,可復制、編制,期待您的好評與關注! 課 程 設 計 說 明 書課程名稱:軟件設計模式 設計題目:簡易的賬戶管理系統 院 系:計算機科學與信息工程學院 學生姓名: 學 號: 專業班級: 指導教師 2014年 6月20 / 20課 程 設 計 任 務 書設計題目簡易的賬戶管理系統學生姓名所在院系計算機科學與信息工程學院專業、年級、班設計要求:1. 設計一個應用場景,最少使用所學過的三種設計模式解決一個實際問題。2. 應用場景設計要合理,模式選擇要適當。學生應完成的工作:1. 應用場景: 簡易的賬戶管理系統,實現用戶排隊與基本信息注冊問題、用戶名不允許重復注冊問題和不同的用戶的填寫信息,
2、采用了裝飾模式、建造者模式、單件模式和模板方法模式。2. 設計模式: 裝飾模式、建造者模式、單件模式和模板方法模式。(1) 裝飾模式:實現用戶排隊單信息。(2) 建造者模式:生成用戶要填寫的基本信息。(3) 單件模式:解決重復注冊或登錄問題。(4) 模板方法模式:不同用戶的信息。3. 實現代碼: 代碼由JAVA語言實現。參考文獻閱讀:1 徐宏喆,侯迪 等著,實用軟件設計模式教程,清華大學出版2 Y.Daniel Liang 著,JAVA語言程序設計基礎篇,機械工業出版社工作計劃:1. 審題,查閱資料,進行設計前的必要資料準備(3天)。2. 把程序完整運行出來(4天)。3. 增加改進程序(3天)
3、。4. 寫課程設計報告(3天)。5. 提交課程設計報告(1天)。任務下達日期: 2014 年 6 月 9 日 任務完成日期: 2014 年 6 月 22 日指導教師(簽名): 學生(簽名):目 錄一、 系統目標4二、 系統模式選擇4三、 系統設計7四、 系統實現10五、 系統設計總結18六、 參考文獻20一、系統目標1. 設計目的設計模式的提出,是面向對象程序設計演化過程中一個重要的里程碑,設計模式使得人們可以更加簡單和方便地去復用成功的軟件設計和體系結構,從而能夠幫助設計者更快更好地完成系統設計。希望通過本次課程設計,可以更加了解設計模式的概念、設計模式的基本要素、設計模式的原則和設計模式的
4、類型,以及各種設計模式的特點和適用情形,會根據不同的場景去靈活運用各種模式,加深對軟件設計課程的理解。通過運用設計模式來解決實際系統中遇到的問題,鞏固所學的理論知識,提高程序設計能力,從而具備利用計算機編程分析解決綜合性實際問題的初步能力。2. 需求描述現如今銀行存取款越來越方便簡易,尤其是排隊器的出現為我們帶來了極大的便利。了解銀行的各部分工作流程是很有必要的,本次課程設計選擇了“簡易的賬戶管理系統”,應用所學到的四種設計模式來解決用戶排隊、注冊等問題,將設計模式的具體內容與實際的問題相結合,實現系統的相應功能。系統中總共用到四種設計模式,分別是裝飾模式,建造者模式,單件模式、模板方法模式。
5、二、 系統模式選擇1.需求分析 裝飾模式提供了一個簡易的排隊單信息,建造者模式用來讓用戶填寫賬戶單的基本信息。單件模式解決一個賬戶信息同時被多個用戶填寫或登錄的問題,這是不被允許的。模板方法模式是通過把不變的行為轉移到基類,去除子類中重復代碼來體現它的優勢,模板方法模式解決了填寫不同用戶信息的問題。2. 選用設計模式根據需求分析,簡易的賬戶管理系統可以采用了四種設計模式,分別是裝飾模式,建造者模式,單件模式和模板方法模式。(1) 裝飾模式裝飾模式是一種結構型設計模式,裝飾模式提供了一種給類添加功能的方法。它通過動態的組合對象,可以給原有的類添加新的代碼,而無需修改現有的代碼。輸出排隊單上的基本
6、信息,包括頭部信息,正文和腳注信息,解決排隊時需要做得工作問題。模式結構圖如下:(2) 建造者模式建造者模式是一種創建型設計模式,采用建造者模式的主要原因是它將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。該模式主要解決用戶填寫的賬戶單基本信息問題。模式結構圖如下:(3) 單件模式單件設計模式是一種創建型設計模式,每個系統中都會有好多對象,它們在同一時刻只能被一個線程所訪問。采用單件模式的主要用來解決用戶名重復問題。模式結構圖如下:(4) 模板方法模式模板方法模式是一種行為型設計模式,該模式定義了一個操作中算法的骨架,而將一些步驟延遲到子類中,模板方法模式使得子類可以不改
7、變一個算法的結構即可重定義該算法的某些特定步驟。該模式主要用來解決不同用戶填寫信息問題。模式結構圖如下:3、 系統設計1. 系統功能模塊設計a:裝飾模式,輸出排隊單上的基本信息。b:建造者模式,用戶填寫的賬戶單基本信息。c.單件模式,解決用戶名重復問題。 d:模板方法模式,不同用戶填寫信息。系統流程圖如下:2. 系統模塊類圖系統流程圖:3. 系統控制函數import java.util.Scanner;public class Main /* * param args */public static void main(String args) / TODO Auto-generated me
8、thod stubwhile(true)System.out.println( );System.out.println(請仔細填寫表單上的數據 );System.out.println(歡迎來到榮氏銀行);System.out.println(1。裝飾模式(賬戶排隊);System.out.println(2.建造者模式(用戶登陸詳細信息);System.out.println(3.單件模式(是否重復登陸);System.out.println(4.模板方法模式(登陸不同的用戶);System.out.println(0(退出);int number ;Scanner input=new S
9、canner(System.in);number =input.nextInt(); if (number=0) break; if(number=1) System.out.println(裝飾模式n); billDecorator bill=new header1bill(new footer2bill(new footer1bill(new concreteBill();bill.printBill(); if(number=2) System.out.println(建造者模式n); Director director=new Director();/Builder a=new Adv
10、anced();Builder b=new Common();/director.Construct(a);/Landing Advanced=a.GetLanding();/Advanced.show();director.Construct(b);Landing Common=b.GetLanding();Common.show(); if(number=3) System.out.println(單件模式n); Singleton s1=Singleton.GetInstance();Singleton s2=Singleton.GetInstance();System.out.prin
11、tln(); if(number=4) System.out.println(第一人填寫的信息:);Slip1 s1= new Slip1();s1.FillItem1();s1.FillItem2();System.out.println(n第二人填寫的信息:);Slip2 s2= new Slip2();s2.FillItem1();s2.FillItem2(); 4、 系統實現1.裝飾模式裝飾模式主要包含: bill類,headerbill類,footerbill類用來實現頭部信息,正文,腳注的輸出。bill類用來實現正文對象,headerbill類用來實現頭部信息對象,footerbi
12、ll類用來實現腳注信息對象。/裝飾模式abstract class bill public abstract void printBill();class concreteBill extends bill Overridepublic void printBill() / TODO Auto-generated method stubSystem.out.println(請自動排隊,這是您的排隊號:*n);abstract class billDecorator extends billprotected bill xpobj;public billDecorator(bill obj)xp
13、obj=obj;public abstract void printBill();class header1bill extends billDecorator public header1bill(bill obj) super(obj);/ TODO Auto-generated constructor stubOverridepublic void printBill() / TODO Auto-generated method stubSystem.out.println(榮氏銀行n);xpobj.printBill();class header2bill extends billDe
14、corator public header2bill(bill obj) super(obj);/ TODO Auto-generated constructor stubOverridepublic void printBill() / TODO Auto-generated method stubSystem.out.println(n);xpobj.printBill();class footer1bill extends billDecorator public footer1bill(bill obj) super(obj);/ TODO Auto-generated constru
15、ctor stubOverridepublic void printBill() / TODO Auto-generated method stubxpobj.printBill();System.out.println(排隊時間:*n);class footer2bill extends billDecoratorpublic footer2bill(bill obj) super(obj);/ TODO Auto-generated constructor stubOverridepublic void printBill() / TODO Auto-generated method st
16、ubxpobj.printBill();System.out.println(您的前面還有人在排隊,請稍等n);裝飾模式測試2.建造者模式建造者模式主要包含: Landing類用來將各部分內容顯示在一個集合里,Builder是一個抽象類,將各部分信息加進來, Common類用來生成普通用戶的賬單信息。 Director類用來指揮建造者builder對象。/建造者模式class Landing java.util.List parts=new java.util.ArrayList();public void add(String part)parts.add(part);public void
17、 show()System.out.println(n用戶表單數據:);for(int i=0;iparts.size();i+)System.out.println(parts.get(i);abstract class Builder public abstract void AddName();/添加姓名public abstract void AddID();/添加賬號public abstract void AddPassword();/添加密碼public abstract void AddOthers();/添加其他的驗證信息public abstract Landing Get
18、Landing();/生成用戶登陸驗證表單class Common extends Builderprivate Landing Common=new Landing();Overridepublic void AddName() / TODO Auto-generated method stubCommon.add(您的姓名:#(請仔細核對);Overridepublic void AddID() / TODO Auto-generated method stubCommon.add(您的ID號:#(請仔細核對);Overridepublic void AddPassword() / TOD
19、O Auto-generated method stubCommon.add(您的密碼:#(請仔細核對);Overridepublic void AddOthers() / TODO Auto-generated method stubCommon.add(其他:#(請填寫您的真實信息);Overridepublic Landing GetLanding() / TODO Auto-generated method stubreturn Common;class Director public void Construct(Builder builder)builder.AddName();b
20、uilder.AddID();builder.AddPassword();builder.AddOthers();建造者模式測試:3.單件模式單件模式主要包含:Singleton類,進行加鎖機制,如果該用戶未被注冊或登錄,則允許;反之則不允許操作。/單件模式public class Singleton private static Singleton instance;private static Object myLock=new Object();private Singleton()public static Singleton GetInstance()if(instance =nul
21、l)lock(myLock);if(instance=null)instance=new Singleton();System.out.println( );elseSystem.out.println(賬號已經被登錄,不允許被再次登錄);elseSystem.out.println(帳號已經被登錄,不允許再次被登陸);return instance; private static void lock(Object myLock) / TODO Auto-generated method stubSystem.out.println();單件模式測試:4. 模板方法模式 模板方法模式主要包含:
22、Slip類,用來刻畫用戶登錄信息的模板,Slip1類是第一個使用模板的用戶,Slip2類是第二個使用模板的用戶。abstract class Slip public void FillItem1()System.out.println(用戶登陸信息必填!);System.out.println(請輸入驗證碼);System.out.println(請正確的輸入信息:+Item1();public void FillItem2()System.out.println(您的姓名:);System.out.println(Item2();protected String Item1()return
23、;protected String Item2()return ;class Slip1 extends Slipprotected String Item1()return #*#*#*;protected String Item2()return 榮開放;class Slip2 extends Slip protected String Item1()return *#*#*#;protected String Item2()return ;模板方法模式測試:五、系統設計總結1. 實現的功能和優點該系統主要實現賬戶注冊和登陸的工作流程,以及賬戶的批量注冊。運用的設計模式有裝飾模式,建造者模
24、式,單件模式和模板方法模式。使用裝飾模式實現了子系統組件對客戶的屏蔽,因而減少了客戶處理的對象數目并且使子系統使用起來更加方便;建造者模式使得產品的內部表象可以獨立地變化,客戶不知道產品內部的細節,每一個Builder都相互獨立,而與其他的Builder無關,構建的代碼與表示代碼分開;該管理系統的優點就是基本實現了排隊機制和賬戶注冊的基本功能,程序簡單易懂,代碼的復用率高,合理的運用了這四種設計模式,各個模塊的層次結構都比較清晰,如果想要添加新的模塊,不需要更改很多代碼,直接在原有代碼基礎上進行繼承實現就行,減少了開發成本。2. 不足之處和改進方向不足之處就是在本系統中功能只是在簡單的輸出,沒有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司春節職工活動方案
- 公司電影活動方案
- 公司每年活動方案
- 公司生態酒會活動方案
- 公司活動視頻策劃方案
- 公司愛心捐助活動方案
- 公司新聞策劃方案
- 公司播音室活動方案
- 公司新入職活動策劃方案
- 公司旅游節目策劃方案
- 2025年 物業管理師三級考試練習試題附答案
- 2025江蘇農牧科技職業學院工作人員招聘考試真題
- 九師聯盟2024-2025學年高二下學期6月摸底聯考語文試題(含答案)
- 2025年四川瀘州兩江投資控股集團有限公司及下屬子公司招聘筆試參考題庫含答案解析
- 公司設備設施管理制度
- 2025年幼兒園教師招聘考試試題及答案
- 2026年上海中考英語一輪復習:考綱詞匯一詞多義詞清單
- 譯文文學性再現與譯者主體性發揮的對比研究
- 2025年保安人員職業資格考試試題及答案
- 《體重管理》課件
- 宗教與中國化課件
評論
0/150
提交評論