




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式大作业课程名称: 软件设计模式 设计题目:公司经费申请 院 系: 计算机科学与信息工程学院 学生姓名: 学 号: 专业班级: 软件工程13-1 指导教师: 高 原 2016年6月软 件 设 计 模 式 任 务 书设计题目公司经费申请学生姓名 所在院系计算机科学与信息工程学院专业、年级、班软件工程13-1设计要求:1设计一个应用场景,最少使用所学过的三种设计模式解决一个实际问题。一人一题,不可重复。2应用场景设计要合理,模式选择要适当。3要求给出系统模式结构图,主要类的设计代码。4编写验证程序,在验证程序中要在显著位置显示个人信息。学生应完成的工作:1. 应用场景:公司经费申请,可以了解申请经费的具体流程,由申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,如果没有批准下来,领导会通知申请人审批未通过。不同级别的领导,对于审批的额度是不一样的,比如,项目经理只能审批500元以内的申请;部门经理能审批1000元以内的申请;而总经理可以审核3000元以内的申请,否则不通过。2. 设计模式:模板方法模式,职责链模式,观察者模式。 (1)模板方法模式:定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 (2)职责链模式:不同级别的领导,对于审批的额度不一样,使其各自的职责权限更加清晰明了。 (3)观察者模式:一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。3. 实现代码: 使用java语言实现所有功能。参考文献阅读:1 徐宏喆,侯迪等编著,实用软件设计模式教程M,清华大学出版社。2 颜炯编著,C#设计模式M,中国电力出版社。3 程杰,大话设计模式,北京:机械工业出版社,2008。4 设计模式可复用面向对象软件的基础,北京:机械工业出版社。5 美Alan Shalloway著,设计模式精解M,清华大学出版社。工作计划:1. 审题,查阅资料,进行设计前的必要资料准备(3天)。2. 把程序完整运行出来(4天)。3. 增加改进程序(3天)。4. 写课程设计报告(3天)。5. 提交课程设计报告(1天)。任务下达日期: 2015 年 6 月 9 日 任务完成日期: 2015 年 6 月 22 日指导教师(签名): 高原 学生(签名): 代小雪目录一、 系统目标11. 设计目的12. 需求描述1二、系统模块选择11. 需求分析12. 选用设计模式2(1)模板方法模式2(2)职责链模式2(3)观察者模式3三、 系统设计41. 系统功能模块设计4四、 系统实现51.模板方法模块及其实现类52.职责链模块及其实现类63.观察者模块及其实现类94.事件处理程序10五、 系统设计总结111. 实现的功能和优点112. 不足之处123. 完成心得12六、 参考文献12参考文献121、 系统目标1. 设计目的通过本课程设计,加深对软件设计课程的理解,熟练掌握和巩固所学的各种设计模式,培养自我动手、查阅技术文献、资料、手册以及编写技术文献的能力。通过运用设计模式来解决实际系统中遇到的问题,从而具备利用计算机编程分析解决综合性实际问题的初步能力。2. 需求描述 本系统的主要目的在与应用设计模式解决公司经费申请问题,可以了解申请经费的具体流程为申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,财务部给于其拨款,如果没有批准下来,领导会通知申请人审批未通过。不同级别的领导,对于审批的额度是不一样的,比如,项目经理只能审批500元以内的申请;部门经理能审批1000元以内的申请;而总经理可以审核3000元以内的申请,否则不通过。系统中总共用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。 模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。申请经费的具体流程是固定的,写申请单,审核,得到通知这三个过程,只是审核过程不同。职责链模式鉴于不同级别的领导,对于审批的额度是不一样,使其各自的职责权限更加清晰明了。观察者模式是一种一对多依赖关系,一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。二、 系统模块选择1. 需求分析根据问题的描述,可以确定系统的大致业务逻辑。如下:需要申请活动费用,按照固定工作流程进行申请,给出申请金额,由领导根据各自的职责权限进行审核,并将结果告知申请人,财务部根据结果给予拨款。将结果返回到客户端,呈现给用户。2. 选用设计模式根据需求分析,该公司经费申请可以采用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。(1) 模板方法模式采用模板方法模式的原因是它定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。公司申请活动经费的流程是固定的,由申请人先填写申请单,然后交给领导审批,最后得到审批结果,作出相应行动。用模板方法模式使其结构清晰,提高了代码的复用性。模式结构图如图1-1:图1-1 模板方法模式结构图(2)职责链模式采用职责链模式的主要原因是对于审核经费申请单,由上级领导进行处理,而不同级别的领导,对于审批的额度是不一样的。职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。这样降低了耦合度,简化对象的相互连接,增强给对象指派职责的灵活性。模式结构图如图1-2:图1-2职责链模式结构图(3)观察者模式采用观察者模式的主要原因是可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。在观察目标和观察者之间建立一个抽象的耦合。模式结构图如图1-3:图1-3观察者模式结构图3、 系统设计1. 系统功能模块设计根据需求分析,公司经费申请可分为三个模块,主要如下:u 申请人填写经费申请单:向上级领导提交申请。u 领导审核:根据职责权限不同,按各自的管理范围一一送派审核。u 收到审核结果通知:收到上级领导对经费申请单批准与否的信息。 公司经费申请填写经费申请单领导审核收到审核结果图2-1 公司经费申请模块4、 系统实现1. 模板方法模式和其实现类模板方法模式贯穿在整个系统中,公司经费申请由三个具体部分组成,填写申请单,经领导审批,最后接收到通知。模板方法模式贯穿整个工作模块,实现代码如下: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(活动经费);public class ProjectFund extends ApplicationForFundspublic void toExamine()System.out.println(项目经费);2. 职责链模式和其实现类职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决的是上级领导中的那个具体人来实现审核工作。职责链模式来完成领导审核模块,实现代码如下: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(部门经理 + name + 审批 + request.getReplyName() + 员工的活动经费,经费为 + 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(总经理 + name + 审批员工 + request.getReplyName() + 员工的活动经费,经费为 + request.getMoney() + 元。可去财务部领取费用。);elseSystem.out.println( request.getReplyName() + 员工的活动经费为 + request.getMoney() + 元,由于其经费要求太高将不予批准!);public class ProjectManager extends Leader public ProjectManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()500)System.out.println(项目经理 + name + 审批 + request.getReplyName() + 员工的活动经费,经费为 + request.getMoney() + 元。可去财务部领取费用。);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. 观察者模式和其实现类观察者模式可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。在观察目标和观察者之间建立一个抽象的耦合。观察者模式来完成接收到审核通知模块,实现代码如下: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、 系统设计总结1. 实现的功能和优点该公司经费申请主要实现的是公司经费申请的具体流程和实现过程,运用到的设计模式有模板方法模式,职责链模式和观察者模式。职责链模式根据审核经费申请单经费的多少,由不同级别的领导进行审批。观察者模式可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。模板方法模式为整个业务流程应用的该模式,客户端只需访问,而无需知道具体如何实现。该管理系统的优点就是代码的复用率很高,合理的运用了这三种设计模式,各个模块的层
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级灌区管理工考试题库及解析
- 2025年特岗教师招聘考试初中历史模拟试题及答案解析
- 2025年江西抚州赣东学院招聘考试笔试试卷【附答案】
- 2025年心理学前沿知识深度解析题库及答案
- 2025年物流管理专业期末考试预测题
- 2025年特岗教师招聘面试题解初中生物实验设计与操作技巧
- 2025年特岗教师招聘初中化学学科试题分析与应对策略
- 2025年燃气储运专业高频考点回顾与备考策略
- 电信诈骗案件办理课件
- 儿童画课件教学目标
- 搅拌类设备单机试车原始记录
- 甘肃省公务员录用审批表
- 成都市第三十八中学校初一新生分班(摸底)语文考试模拟试卷(10套试卷带答案解析)
- 护理品管圈QCC成果汇报之降低中心静脉导管堵管率
- 目标计划行动-PPT
- 信息系统运维方案
- 2023年杭州市中小学教师教学能力水平考核
- 劳动关系协调员真题模拟汇编(共1142题)
- 数独课件完整版
- 摊铺机使用说明rp953e-903e操作手册
- 伸屈指肌腱断裂
评论
0/150
提交评论