




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 说 明 书课程名称:软件设计模式 设计题目:简易的账户管理系统 院 系:计算机科学与信息工程学院 学生姓名: 学 号: 专业班级: 指导教师 2014年 6月课 程 设 计 任 务 书设计题目简易的账户管理系统学生姓名所在院系计算机科学与信息工程学院专业、年级、班设计要求:1. 设计一个应用场景,最少使用所学过的三种设计模式解决一个实际问题。2. 应用场景设计要合理,模式选择要适当。学生应完成的工作:1. 应用场景: 简易的账户管理系统,实现用户排队与基本信息注册问题、用户名不允许重复注册问题和不同的用户的填写信息,采用了装饰模式、建造者模式、单件模式和模板方法模式。2. 设计模式: 装饰模式、建造者模式、单件模式和模板方法模式。(1) 装饰模式:实现用户排队单信息。(2) 建造者模式:生成用户要填写的基本信息。(3) 单件模式:解决重复注册或登录问题。(4) 模板方法模式:不同用户的信息。3. 实现代码: 代码由JAVA语言实现。参考文献阅读:1 徐宏喆,侯迪 等著,实用软件设计模式教程,清华大学出版2 Y.Daniel Liang 著,JAVA语言程序设计基础篇,机械工业出版社工作计划:1. 审题,查阅资料,进行设计前的必要资料准备(3天)。2. 把程序完整运行出来(4天)。3. 增加改进程序(3天)。4. 写课程设计报告(3天)。5. 提交课程设计报告(1天)。任务下达日期: 2014 年 6 月 9 日 任务完成日期: 2014 年 6 月 22 日指导教师(签名): 学生(签名):目 录一、 系统目标4二、 系统模式选择4三、 系统设计7四、 系统实现10五、 系统设计总结18六、 参考文献20一、系统目标1. 设计目的设计模式的提出,是面向对象程序设计演化过程中一个重要的里程碑,设计模式使得人们可以更加简单和方便地去复用成功的软件设计和体系结构,从而能够帮助设计者更快更好地完成系统设计。希望通过本次课程设计,可以更加了解设计模式的概念、设计模式的基本要素、设计模式的原则和设计模式的类型,以及各种设计模式的特点和适用情形,会根据不同的场景去灵活运用各种模式,加深对软件设计课程的理解。通过运用设计模式来解决实际系统中遇到的问题,巩固所学的理论知识,提高程序设计能力,从而具备利用计算机编程分析解决综合性实际问题的初步能力。2. 需求描述现如今银行存取款越来越方便简易,尤其是排队器的出现为我们带来了极大的便利。了解银行的各部分工作流程是很有必要的,本次课程设计选择了“简易的账户管理系统”,应用所学到的四种设计模式来解决用户排队、注册等问题,将设计模式的具体内容与实际的问题相结合,实现系统的相应功能。系统中总共用到四种设计模式,分别是装饰模式,建造者模式,单件模式、模板方法模式。二、 系统模式选择1.需求分析 装饰模式提供了一个简易的排队单信息,建造者模式用来让用户填写账户单的基本信息。单件模式解决一个账户信息同时被多个用户填写或登录的问题,这是不被允许的。模板方法模式是通过把不变的行为转移到基类,去除子类中重复代码来体现它的优势,模板方法模式解决了填写不同用户信息的问题。2. 选用设计模式根据需求分析,简易的账户管理系统可以采用了四种设计模式,分别是装饰模式,建造者模式,单件模式和模板方法模式。(1) 装饰模式装饰模式是一种结构型设计模式,装饰模式提供了一种给类添加功能的方法。它通过动态的组合对象,可以给原有的类添加新的代码,而无需修改现有的代码。输出排队单上的基本信息,包括头部信息,正文和脚注信息,解决排队时需要做得工作问题。模式结构图如下:(2) 建造者模式建造者模式是一种创建型设计模式,采用建造者模式的主要原因是它将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。该模式主要解决用户填写的账户单基本信息问题。模式结构图如下:(3) 单件模式单件设计模式是一种创建型设计模式,每个系统中都会有好多对象,它们在同一时刻只能被一个线程所访问。采用单件模式的主要用来解决用户名重复问题。模式结构图如下:(4) 模板方法模式模板方法模式是一种行为型设计模式,该模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。该模式主要用来解决不同用户填写信息问题。模式结构图如下: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 method 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 Scanner(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 Advanced();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.println(); 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类用来实现头部信息对象,footerbill类用来实现脚注信息对象。/装饰模式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)xpobj=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 billDecorator 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 constructor 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 stubxpobj.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 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 GetLanding();/生成用户登陆验证表单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() / TODO 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();builder.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 =null)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. 模板方法模式 模板方法模式主要包含: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 ;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. 实现的功能和优点该系统主要实现账户注册和登陆的工作流程,以及账户的批量注册。运用的设计模式有装饰模式,建造者模式,单件模式和模板方法模式。使用装饰模式实现了子系统组件对客户的屏蔽,因而减少了客户处理的对象数目并且使子系统使用起来更加方便;建造者模式使得产品的内部表象可以独立地变化,客户不知道产品内部的细节,每一个Builder都相互独立,而与其他的Builder无关,构建的代码与表示代码分开;该管理系统的优点就是基本实现了排队机制和账户注册的基本功能,程序简单易懂,代码的复用率高,合理的运用了这四种设计模式,各个模块的层次结构都比较清晰,如果想要添加新的模块,不需要更改很多代码,直接在原有代码基础上进行继承实现就行,减少了开发成本。2. 不足之处和改进方向不足之处就是在本系统中功能只是在简单的输出,没有用界面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职心态培训课件
- 倪莉莉公务礼仪课件
- 伸缩缝施工培训课件
- 智慧树知道网课《宠物手术(黑龙江生物科技职业学院)》课后章节测试答案
- 2025土管所公务员面试题目及答案
- 企业班前安全培训记录课件
- 企业春运安全培训课件
- 罪犯记分考核管理办法
- 兰西辅警考试题库2025(有答案)
- 衡水金卷四省(四川云南)高三联考9月联考英语(含答案)
- 口腔设备学发展史
- 2025年广西专业技术人员继续教育公需科目(二)答案
- 外墙防水渗漏红外检测技术
- 监控系统维护方案
- 二手电车买卖合同范本
- 中介拍卖合同协议书范本
- 2025年云南红河州开发区投资建设集团有限公司招聘笔试参考题库含答案解析
- 法医物证课件法医植物学
- 第37届中国化学奥林匹克(初赛)试题及答案
- JJF 2223-2025氡子体测量仪校准规范
- 吧员礼仪礼节培训
评论
0/150
提交评论