设计模式大作业报告

合集下载

大作业设计报告书(嵌入式系统原理与开发)

大作业设计报告书(嵌入式系统原理与开发)

大作业设计报告书题目:嵌入式系统原理与开发院(系):物联网工程学院专业: 班级:姓名:指导老师:设计时间: 10-11 学年 2 学期20XX年5月目录1.目的和要求 (3)2.题目内容 (3)3.设计原理 (4)4.设计步骤 (5)4.1 交通指示灯设计 (5)4.2 S3C44B0X I/O 控制寄存器 (6)4.3 红绿灯过渡代码: (8)4.4 电源电路设计 (10)4.5 系统复位电路设计 (11)4.6 系统时钟电路设计 (11)4.7 JTAG 接口电路设计 (12)4.8串口电路设计 (12)5.引脚分类图 (13)6.参考文献 (13)1.目的和要求ARM技术是目前嵌入式应用产业中应用十分广泛的先进技术,课程开设的目的在于使学生在了解嵌入式系统基础理论的前提下能够掌握ARM处理器的汇编语言和c语言的程序设计方法,掌握S3C44B0X芯片的基本硬件结构特点和接口设计方法,同时熟悉ARM开发环境,学习ARM的硬件设计和软件编程的基本方法,为今后从事相关的应用与研究打下基础。

通过大作业要达到如下目的:一、掌握ARM的开发工具使用和软件设计方法。

二、掌握ARM处理器S3C44B0X的原理和GPIO接口设计原理。

三、掌握C语言与的ARM汇编语言的混合编程方法;四、培养学生选用参考,查阅手册及文献资料的能力。

培养独立思考,深入研究,分析问题、解决问题的能力。

五、通过课程设计,培养学生严肃认真的工作作风。

2.题目内容题目:交通指示灯系统设计功能描述:1.用S3C44B0X的GPIO设计相关电路;2.设计相关的软件并注释;3.实现十字路口2组红、黄、绿交通灯交替显示。

编程提示:1.交通灯可用发光二极管代替;2.电路可部分参照实验电路;3.时间控制可以使用软件循环编程解决。

嵌入式大作业红绿灯实验模拟场景交通指示灯,需要东西南北四个方向的红绿灯配合交替显示。

以上海交通指示灯为例,绿灯向黄灯过渡时,绿灯会闪几下,然后绿灯灭,黄灯亮。

大作业报告

大作业报告

华北科技学院《程序设计》大作业班级: 电商B112 姓名: 赵世明学号:201104064223设计题目:评语:____________________________________ ________________________________________________________________________________________________________________________________________________________________________________评阅成绩: ___________ 评阅教师: ___________目录1 引言 (3)1.1设计选题 (3)1.2设计的目的 (3)1.3本选题的设计背景 (3)2 系统分析与设计 (3)2.1 系统功能需求分析 (3)2.2 系统功能模块设计 (4)2.3 系统开发运行环境 (5)3 数据库设计 (5)4 模块详细设计与实现 (9)4.1 登录模块 (9)4.2管理员设置模块 (10)4.3读者档案管理 (12)4.4图书借还模块 (14)4.5图书借阅档案查询模块 (19)4.6 更改口令模块 (21)结论 (24)参考文献 (25)1 引言1.1设计选题《图书借阅管理系统》1.2设计的目的通过本设计,掌握使用技术进行网络程序设计的基本知识,如:服务器控件、内部对象、数据库建立、数据库的读取、数据显示等;熟悉网络程序设计每个步骤中的任务和实施方法,并加深对C#语言的理解。

通过设计一个图书借阅管理系统,进一步熟悉网络环境下的程序设计方法,综合训练动手能力,提高分析问题、解决实际问题的能力。

也同时了解图书借阅的一个较为整体和全面的过程。

1.3本选题的设计背景开发这个小图书管理系统是为了进一步提高图书信息管理的效率和质量,通过学习这门课程将理论运用到实践。

实现信息管理的系统化、规范化、自动化只需一到二名管理员即可操作系统,节省大量人力;可以迅速查到所需信息。

软件设计模式与软件体系结构实验报告

软件设计模式与软件体系结构实验报告

软件设计模式与软件体系结构实验报告《软件体系结构》大作业(1)学院:软件学院课程名称:软件体系结构专业班级:学生姓名:学号:学生姓名:学号:指导教师:完成时间:年月日评分表1、叙述各小组成员完成本题目的分工协作情况。

小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。

另外,组长负责文档制作。

2、评分表作业正文需要包括以下内容:1、作业题目内容的详细描述。

2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其它图,也一并画出。

4、完成本题目所设计的程序代码。

5、程序运行的典型界面截图1、作业题目内容的详细描述。

【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。

现在需要扩展例2.3的设计图,添加一个名为LuxuryCarInsurance 的类,而且需要编写此类和其它需要添加的类的代码,详细要求参见光盘的相应作业部分。

【作业 2.1-1】在例 2.4中,设计而且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。

要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),而且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。

2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。

【作业2.1-1】采用的是工厂方法模式【作业2.1-2】采用的是抽象方法模式3、画出完成本题目所设计程序的设计类图;如还有其它图,也一并画出。

【作业2.1-1】采用的是工厂方法模式。

设计模式实验报告总结(3篇)

设计模式实验报告总结(3篇)

第1篇一、实验背景随着软件工程的不断发展,设计模式作为一种解决软件开发中常见问题的有效方法,越来越受到广泛关注。

本次实验旨在通过学习设计模式,提高编程能力,掌握解决实际问题的方法,并加深对设计模式的理解。

二、实验目的1. 理解设计模式的基本概念和分类;2. 掌握常见设计模式的原理和应用;3. 提高编程能力,学会运用设计模式解决实际问题;4. 培养团队协作精神,提高项目开发效率。

三、实验内容本次实验主要涉及以下设计模式:1. 创建型模式:单例模式、工厂模式、抽象工厂模式、建造者模式;2. 结构型模式:适配器模式、装饰者模式、桥接模式、组合模式、外观模式;3. 行为型模式:策略模式、模板方法模式、观察者模式、责任链模式、命令模式。

四、实验过程1. 阅读相关资料,了解设计模式的基本概念和分类;2. 分析每种设计模式的原理和应用场景;3. 编写代码实现常见设计模式,并进行分析比较;4. 将设计模式应用于实际项目中,解决实际问题;5. 总结实验经验,撰写实验报告。

五、实验结果与分析1. 创建型模式(1)单例模式:通过控制对象的实例化,确保一个类只有一个实例,并提供一个访问它的全局访问点。

实验中,我们实现了单例模式,成功避免了资源浪费和同步问题。

(2)工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

实验中,我们使用工厂模式创建不同类型的交通工具,提高了代码的可扩展性和可维护性。

(3)抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。

实验中,我们使用抽象工厂模式创建不同类型的计算机,实现了代码的复用和扩展。

(4)建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

实验中,我们使用建造者模式构建不同配置的房屋,提高了代码的可读性和可维护性。

2. 结构型模式(1)适配器模式:将一个类的接口转换成客户期望的另一个接口,使原本接口不兼容的类可以一起工作。

UML大作业实验报告

UML大作业实验报告

UML建模大作业实验报告组号:选题名:E-store网上书店系统小组成员.1.需求模型从用户角度描述系统功能的用例意见反馈(from Use Case View)从系统管理员角度描述系统功能的用例订货通知(from Use Case View)(from Use Case View) 2.分析模型2.1.架构模型E-store网上书店包图系统辅助包图2.2.分析机制2.3.关键抽象2.4.用例实现2.4.1.注册用例的用例1. 用例名注册1.1 简要描述本用例由游客触发的,允许顾客在该书店注册成为会员用户,实现会员的一些权限。

2. 事件流2.1 基本流2.1.1 顾客进行注册顾客在登陆系统时必须先注册一个账号,才能进行登录查询。

2.2 备选流2.2.1 注册账号无效如果顾客登陆账号已存在或者验证码错误,提示顾客无效。

本用例结束。

3. 特殊需求没有和本用例有关的特殊需求。

4. 前置条件在针对登陆书店,必须先注册成为会员5. 后置条件无。

6. 扩展点没有和本用例有关的扩展点。

·2.4.2.图书浏览用例的用例1.用例名图书浏览1.1简要描述本用例由游客、会员触发的,允许顾客在书店页面浏览书店的概况和书籍种类。

2.事件流2.1基本流2.1.2顾客进行图书浏览顾客在书店页面浏览书店概况和书籍种类。

本用例结束2.2备选流2.2.1浏览无效如果顾客浏览页面不存在或者方式不正确,提示顾客浏览无效。

本用例结束。

3.特殊需求没有和本用例有关的特殊需求。

4.前置条件无。

5.后置条件无。

6.扩展点没有和本用例有关的扩展点。

·2.4.3.图书查询用例的用例1.用例名图书查询1.1简要描述本用例由游客、会员触发的,允许顾客在书店页面查询书籍信息。

2.事件流2.1基本流2.1.2顾客进行图书查询顾客在书店页面查询书店里书籍种类。

本用例结束2.2备选流2.2.1查询无效如果顾客查询书籍不存在或者方式不正确,提示顾客查询无效。

JAVA程序设计大作业报告

JAVA程序设计大作业报告
JAVA程序设计大作业报告
过程:
1、课程设计目的 2、课程设计题目描述与要求 3、课程设计报考内容 4、输出结果 5、实验总结
1、课程设计目的
用面向对象语言JAVA完成计算 器的设计和实施。通过课程设计掌 握面向对象编程技术,常用库类的 使用和应用系统的开发过程。
2、课程设计题目描述与要求
(1)完成窗口的关闭 按钮的功能; (2)完成清空键 功能;(即清空文本框中的内容) (3)完成数字按钮的功能;(即文本框显示对应数字) (4)完成基本的“+”,“-”,“*”,“/”四则运算;
3、课程设计报告内容
3.1 课程设计思路 设计的程序能完成计算器的基本功能 例如四则运算 3.2 设计过程 本次设计一个简易的计算器的界面,该计算器运行 程序后的界面如下图所示 该计算机包括了加减乘除四则运算 操作建议
3.3实验源代码
在设计这个程序的开始,我们首先设计这个计算器的 界面,我用比较简单的方法,运用GridLayout(4,5)来实 现简单的排版。然后把我需要的几个按键都依次的输入s("CE"))
{
display.setText("0"); start=true; flag=true; command="=";
} else if(start&&flag) { if(command.equals("-")) { display.setText(command); start=false; } else if((command.equals("1/x")||command.equals("sqrt"))&&flag) calculate(Double.parseDouble(display.getText()),command); else if(flag) lastCommand=command; } else { if(command.equals("Backspace")&&flag) { String s=display.getText(); char[] s1=s.toCharArray(); if(s.length()>=2) { String s2=new String(s1,0,s.length()-1); display.setText(s2); } else { display.setText("0"); start=true; } } else if(flag) { calculate(Double.parseDouble(display.getText()),command); lastCommand=command; start=true; } } } }

大作业设计报告

大作业设计报告

程序设计基础(一)大作业设计报告一、题目要求设计一个程序,实现学生成绩管理功能。

基本功能:1)提供菜单式的用户界面2)输入课程名称3)输入某门课程的成绩4)增加或删除学生记录5)输入姓名或学号,查找某个学生的成绩6)对学生成绩按照姓名、学号或某门成绩排序7)计算某个学生的平均绩点8)统计某门课程成绩在100-90,89-80,79-70,69-60,60以下各分数段的人数并显示其它:全部数据可保存到文件二、设计方案基本思路:采用二叉树为基本存储结构。

每个学生的课程信息和成绩用结构保存,再将所有学生信息构成一棵二叉树;全部课程信息用一个链表保存,便于统一操作。

在这种数据结构的基础上,进行进一步的功能实现。

框架结构:在Task_main.cpp中进行主菜单的处理,将其他功能的具体实现分别放到Task_deeds.cpp和Task_filework.cpp中,利用头文件filework.h和deeds.h将它们关联起来,实现模块化设计和操作。

三、具体功能及实现包括9大基本功能:(1)从文件中读入数据初始化将初始化信息保存到文件中,利用文件输入这些信息,对程序中的学生信息等进行初始化。

调用filework.cpp中的fileIn()函数实现信息的读入。

读入的同时对输入格式进行判错,以保证程序正常运行。

(2)输入课程名称或删除课程这一功能在EditCourses()函数中实现,包括输入课程名称InputCourses()和删除课程DeleteCourses()。

这涉及到对课程链表headOfCourse的增加结点和删除结点的操作。

增加或删除课程成功后,会调用AddCourses()或DeleteCourseOfStudent()对相应的学生课程信息进行更新。

(3)输入或查询某门课程的成绩这一功能在ScoresOfCourse()函数中实现,包括输入课程成绩InputScoresOfCourse()和查询成绩SearchOfCourse()。

软件设计模式大作业样例

软件设计模式大作业样例

设计模式大作业课程名称:软件设计模式设计题目:公司经费申请院系:计算机科学与信息工程学院学生姓名:学号:专业班级:软件工程13-1指导教师:**2016年6月软件设计模式任务书目录一、系统目标 ...................................................................................... 错误!未定义书签。

1. 设计目的......................................................................................... 错误!未定义书签。

2. 需求描述......................................................................................... 错误!未定义书签。

二、系统模块选择 ............................................................................... 错误!未定义书签。

1. 需求分析......................................................................................... 错误!未定义书签。

2. 选用设计模式 (2)(1)模板方法模式 (2)(2)职责链模式......................................................................... 错误!未定义书签。

(3)观察者模式 (3)三、系统设计 (4)1. 系统功能模块设计 (4)四、系统实现 (5)1.模板方法模块及其实现类 (5)2.职责链模块及其实现类 (6)3.观察者模块及其实现类 (9)4.事件处理程序 (10)五、系统设计总结 (11)1. 实现的功能和优点 (11)2. 不足之处 (12)3. 完成心得 (12)六、参考文献 (12)参考文献 (12)一、系统目标1.设计目的通过本课程设计,加深对软件设计课程的理解,熟练掌握和巩固所学的各种设计模式,培养自我动手、查阅技术文献、资料、手册以及编写技术文献的能力。

设计模式大作业报告

设计模式大作业报告

《设计模式》课程大作业报告姓名:陈明专业:软件工程班级:1202日期:2015年5月29日西安欧亚学院2014—2015学年第二学期考试试卷专业:软件工程 课程:设计模式 年级:12级完成一个综合项目程序,其中使用所学设计模式两个或者两个以上。

要求在文档中首先给出项目程序完成的功能或者解决的问题,然后详细说明模式使用的具体情况,即角色和相应程序代码。

文档赋分标准如下:1、程序功能阐述明确,分析清楚。

(15分)2、使用两种设计模式,使用得当,并给出相应的角色及程序代码,程序代码有恰当的注释。

(60分)3、文档格式正确,排版清晰。

(15分)4、如果使用超过两种设计模式,并且使用正确。

(10分)说明:以上总分为个人的期末成绩,本课程个人总成绩=平时成绩*40%+期末成绩*60%。

号_____________ 班级___________ 姓名________ 考场号____ 座位号____- -- - - - -- - - - - - - -- - - -- -- -密 ○- - - - - - - - - - - - - - -- - - -- -- - -封 ○- - - - - - - - - - - - -- - - --- - - -- -线 ○- - - - - - - - - - -- - - - -- - - - -- - - -- - - --用户和药店以及制药厂交互的例子一、程序功能描述工厂方法模式:为某药店开发的应用程序需要使用Drug类的某个子类的实例为用户提供药品,而不直接使用Drug的子类的构造方法直接创造对象。

因为药店没有能力给出药品的各个成分的含量,只有药厂才有这样的能力。

抽象工厂模式:通过创建多个药品工厂的类,让用户可以和创建的对象的类进行脱耦,为用户提供多个相关的药品,方便用户联合使用它们,用户不需要知道药品具体的生产过程将“工厂方法模式”与“抽象工厂模式”相结合,实现用户和创建对象的类脱耦,并且为用户提供多个相关的对象。

软件工程大作业设计报告格式

软件工程大作业设计报告格式

软件工程大作业设计报告格式
组长汇总,每组设计完整软件文档(电子档)一份,内容包括,
可行性研究报告(项目计划书)
软件需求说明书(DFD、数据词典、数据加工描述)
概要设计说明书(系统结构等)
详细设计说明书(用例图、活动图、序列图、ER图与数据库设计、类的描述)主页设计
每人一份设计报告
(主诉自己完成的子项目的分析设计工程)【打印稿及其电子稿】
[封面](注:每个同学的报告都有封面,独占一页。

用小四号宋体,行距22磅,报告中可加上适当的小图形)
软件综合设计报告
设计题目:班级:报告人姓名:学号:承担角色:
同组组长:同组其他成员:
指导教师:完成日期:
[正文] (总体不小于20页)
一、课程设计概述(目的、任务、开发环境、参考资料)
二、项目的可行性研究与需求分析
三、项目设计的基本原理和采用的主要方法与技术
四、本人实现子项目的过程与步骤,包括以下内容(本节内容不得少于2页)
需求分析说明书(DFD、数据词典、数据加工描述)
详细分析说明书(用例图、活动图、序列图、ER图与数据库设计、类的描述)
主页设计
五、个人遇到的困难与获得的主要成果
六、设计完成结果分析与个人小结
注:设计报告着重说明个人所做工作、成果和体会,即四、五、六部分,报告不得
与他人雷同,严重者无成绩。

软件系统分析与设计大作业实验报告

软件系统分析与设计大作业实验报告

武汉轻工大学软件系统分析与设计大作业实验报告基于的学生信息管理系统的设计与实现学院:数学与计算机学院姓名:时保粮班级:软工一班学号:1205110210指导老师:蒋丽华2015年5月20 日一.需求分析学生信息管理系统是高校管理工作中一项非常重要的组成部分。

用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分地满足各种信息的输入和输出。

收集基本数据、数据结构以及数据处理的流程,为后面的设计打下基础。

本系统是针对高等院校的学生信息的后台管理,因此学生信息管理系统的用户包括系统管理员和教师用户。

主要涉及学期信息、班级信息、学生信息、课程信息、成绩信息和用户信息等数据信息。

的运用可以轻松地使用近年流行的三层结构模式开发WEB站点或基于B/S结构的应用程序。

学生成绩管理信息系统是由 Web后台进行统一管理,所有业务逻辑都集中在Web应用程序中管理和制定,具有数据的录入和查询统计等功能,客户端的分布广泛,数据集中处理,因此在设计时充分考虑各种体系结构的优缺点,选择三层WEB模式进行开发实现。

二.系统设计1.系统概要设计、图 2-1 系统概要设计图2.子模块设计以学生信息管理模块为例:图 2-2 学生信息管理模块设计图学生信息管理模块分为添加学生信息和查询信息两个界面,实现学生信息的添加和查询功能。

按照实际情况,只有查询出相应的学生信息才能对其进行修改和删除,故对学生信息的修改和删除功能集成在查询学生信息界面里。

PS:其他子模块的功能实现与此类似3.三层架构的设计模式之三层WEB结构及其优点三层模式是在两层模式的基础上,增加了新的一级。

这种模式在逻辑上将应用功能分为三层:客户显示层、业务逻辑层、数据层。

客户显示层是为客户提供应用服务的图形界面,有助于用户理解和高效的定位应用服务,负责处理用户的输入和向用户的输出,但并不负责解释其含义(出于效率的考虑,它可能在向上传输用户输入前进行合法性验证),这一层通常用前端工具(VB,VC,ASP等)开发;业务逻辑层位于显示层和数据层之间,专门为实现企业的业务逻辑提供了一个明确的层次,在这个层次封装了与系统关联的应用模型,并把用户表示层和数据库代码分开。

设计模式实验一实验报告完整版

设计模式实验一实验报告完整版

实验1 UML实验(1)实验学时: 2每组人数: 1实验类型: 3 (1:基础性2:综合性3:设计性4:研究性)实验要求: 1 (1:必修2:选修3:其它)实验类别: 3 (1:基础2:专业基础3:专业4:其它)一、实验目的1.学会安装和使用建模工具PowerDesigner,熟练使用PowerDesigner绘制常用的UML 图形,熟悉常用的UML符号;2.构建用例模型来描述软件需求,包括绘制用例图,撰写用例文档并制作用例检查矩阵;3. 绘制状态图描述对象的状态及转换。

二、实验内容1. 某酒店订房系统描述如下:(1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订;(2) 前台服务员可以利用系统直接在前台预订房间;(3) 不管采用哪种预订方式,都需要在预订时支付相应订金;(4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付;(5) 利用信用卡进行支付时需要和信用卡系统进行通信;(6) 客房部经理可以随时查看客房预订情况和每日收款情况。

绘制该酒店订房系统的用例图。

2. 根据以下场景绘制用例图:某企业为了方便员工用餐,为企业餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。

该系统功能描述如下:(1) 企业的任何员工都可以查看菜单和今日特价;(2) 系统的顾客是注册到系统的员工,可以在线订餐(以下操作均需先登录)、注册工资支付、修改订餐信息和删除订餐信息,在注册工资支付时需要通过工资系统进行身份验证;(3) 餐厅员工是特殊的顾客,可以进行备餐(系统记录备餐信息)、生成付费请求和请求送餐,其中对于注册使用工资支付的顾客生成付费请求并发送给工资系统;(4) 菜单管理员是餐厅员工的一种,可以管理菜单;(5) 送餐员也是餐厅员工的一种,可以打印送餐说明、记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。

设计模式大作业——斗地主程序

设计模式大作业——斗地主程序
刘品时序图人机对战游戏参与者电脑智能图像管理音效管理控制器刷新画面10输出音效11游戏主循环12游戏结束输出结果游戏参与者网络通信模块图像显示模块音效输出模块控制模块打开游戏大厅初始化环境获取局域网信息初始化图像初始化音效选取游戏对手生成游戏对象是否组建游戏参与游戏创建游戏主机建立稳定的连接创建游戏从机开始游戏开始游戏动作刷新图像输出音效游戏循环游戏逻辑判断传输游戏信息是否结束通知游戏结束输出游戏概要推出游戏环境结束操作时序图多人对战游戏参与者网络通信模块图像显示模块音效输出模块控制模块打开游戏大厅初始化环境获取局域网信息初始化图像初始化音效选取游戏对手生成游戏对象是否组建游戏参与游戏创建游戏主机建立稳定的连接创建游戏从机开始游戏开始游戏动作刷新图像输出音效游戏循环游戏逻辑判断传输游戏信息是否结束通知游戏结束输出游戏概要推出游戏环境结束操作游戏中的设计模式声音模块网络模块工厂模式门面模式模式监听者模式模式纸牌管理声音模块soundplayerisstop
+Card(m: Main, name: String) +turnFront() +turnRear() +mouserPressed() +getName()
CardManager
<<static>>-manager: CardManager <<static>>-map: Map
<<static>>+init(main: Main) <<static>>+getInstance() +getAll() +getCard(key: String) +getRandomSequence(list: List)

设计模式大作业实验报告

设计模式大作业实验报告

蛋糕订购系统一、实验介绍 (3)二、实验环境 (3)三、系统流程 (3)四、系统总类图 (4)五、程序源代码及各个模块子类图 (5)六、程序运行截图 (22)七、实验总结 (22)一、实验介绍本系统使用了简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式一共6种模式实现了从蛋糕店订购订购蛋糕的这样一个系统。

二、实验环境Windows操作系统、MyEclipse10.0、MySQL 5.5、jdk1.6 三、系统流程四、系统总类图五、程序源代码及各个模块子类图(一)测试类Client.java:package net.xsl.ordercake.test;import net.xsl.ordercake.discount.DiscountStyleThree;import net.xsl.ordercake.discount.OrderCake;import net.xsl.ordercake.order.CakeShop;import net.xsl.ordercake.order.EastVilla;import net.xsl.ordercake.order.WestVilla;public class Client {public static void main (String arg[]){CakeShop starCakeShop = CakeShop.getCakeShop();new WestVilla(starCakeShop, "草莓水果");starCakeShop.getNewName("西13");starCakeShop.notifyCustomer();OrderCake cake = new OrderCake();System.out.println("今日促销一律8折优惠");cake.setM(8);cake.setStyle(new DiscountStyleThree());cake.setPrice(80) ;System.out.println("本次订购成功完成,需要支付的金额为"+cake.getMoney(cake.getPrice(),cake.getM())+",原价80");System.out.println("=================================");new EastVilla(starCakeShop, "甜奶");starCakeShop.getNewName("东18");starCakeShop.notifyCustomer();System.out.println("=================================");starCakeShop.getNewName("东12");starCakeShop.notifyCustomer();}}(二)折扣的接口和方法(策略模式):a)接口DiscountStyle.java:package net.xsl.ordercake.discount;public interface DiscountStyle {public double disCount(double price,double m);}b)折方式一DiscountStyleOne.java:package net.xsl.ordercake.discount;public class DiscountStyleOne implements DiscountStyle{public double disCount(double price,double m) {return price;}}c)打折方式二DiscountStyleTwo.java:package net.xsl.ordercake.discount;public class DiscountStyleTwo implements DiscountStyle{public double disCount(double price,double m) {price = price - m;return price;}}d)打着方式三DiscountStyleThree.java:package net.xsl.ordercake.discount;public class DiscountStyleThree implements DiscountStyle{ public double disCount(double price,double m) {price = price * m/10;return price;}}e)订蛋糕对象类,使用了get/set方法OrderCake.java:package net.xsl.ordercake.discount;public class OrderCake {double money,price;//money是打折后的最终价格,price是原价DiscountStyle style;double m;public double getMoney(double price,double m){return style.disCount(price,m);}public void setPrice(double price){this.price = price ;}public double getPrice(){return price;}public void setStyle(DiscountStyle style){this.style = style ;}public DiscountStyle getStyle(){return style;}public void setM(double m){this.m = m ;}public double getM(){return m;}}(三)顾客向蛋糕订购蛋糕(观察者模式),并在具体主题中使用了单例模式a)主题Shop.java:package net.xsl.ordercake.order;public interface Shop {public void addCustomer(Customer o);public void deleteCustomer(Customer o);public void notifyCustomer();}b)具体主题(使用了单例模式,只能创建一个蛋糕商店的对象)CakeShop.java:package net.xsl.ordercake.order;import java.util.ArrayList;public class CakeShop implements Shop{String name;boolean changed;ArrayList<Customer>personList;private int i = 0;private static CakeShop uniqueCakeShop;private CakeShop() {uniqueCakeShop = this;personList = new ArrayList<Customer>();name = "";changed = false;}public static synchronized CakeShop getCakeShop(){if(uniqueCakeShop == null){uniqueCakeShop = new CakeShop();}return uniqueCakeShop;}public void addCustomer(Customer o) {if(!(personList.contains(o)))personList.add(o);}public void deleteCustomer(Customer o) {if((personList.contains(o)))personList.remove(o);}public void notifyCustomer() {if(changed){try{Customer customer = personList.get(i);customer.orderCake(name);i++;changed = false;}catch(Exception e){System.out.println("没有新的订购信息");}}}public void getNewName(String str){if(str.equals(name))changed = false;else{name = str;changed = true;}}}c)观察者Customer.java:package net.xsl.ordercake.order;public interface Customer {public void orderCake(String name);}d)体观察者一EastVilla.java:package net.xsl.ordercake.order;import net.xsl.ordercake.creator.MakeChocolateCake;import net.xsl.ordercake.creator.MakeFruityCake;import net.xsl.ordercake.creator.MakeMilkCake;import net.xsl.ordercake.jdbc.JDBCFacade;import net.xsl.ordercake.product.ChocolateFactory;import net.xsl.ordercake.product.FruitFactory;import kFactory;public class EastVilla implements Customer{Shop shop;private String cakeType;public EastVilla(Shop shop,String cakeType){this.shop = shop;this.cakeType = cakeType;shop.addCustomer(this);}public void orderCake(String name){System.out.println(name+"订了一个"+cakeType+"蛋糕");JDBCFacade dbFacade=new JDBCFacade();String sqlStr = "select * from ordercake";String sqlStr1 = "insert into ordercake(cakeType, name, quantity)"+ " VALUES ('"+cakeType+"','"+name+"','1')";dbFacade.jdbcInsert(sqlStr1);System.out.println("查询插入之后新的数据库");dbFacade.jdbcSelect(sqlStr);if(cakeType.equals("草莓水果") || cakeType.equals("葡萄水果")){MakeFruityCake eastVilla = new MakeFruityCake(cakeType);FruitFactory fruitCake = eastVilla.makeFruityCake();fruitCake.createCake();}else if(cakeType.equals("牛奶巧克力") || cakeType.equals("黑巧克力")){MakeChocolateCake eastVilla1 = newMakeChocolateCake(cakeType);ChocolateFactory chocolateCake =eastVilla1.makeChocolateCake();chocolateCake.createCake();}else if(cakeType.equals("双层鲜奶") || cakeType.equals("甜奶")){MakeMilkCake eastVilla1 = new MakeMilkCake(cakeType);MilkFactory milkCake = eastVilla1.makeMilkCake();milkCake.createCake();}}}e)具体观察者二WestVilla.java:package net.xsl.ordercake.order;import net.xsl.ordercake.creator.MakeChocolateCake;import net.xsl.ordercake.creator.MakeFruityCake;import net.xsl.ordercake.creator.MakeMilkCake;import net.xsl.ordercake.jdbc.JDBCFacade;import net.xsl.ordercake.product.ChocolateFactory;import net.xsl.ordercake.product.FruitFactory;import kFactory;public class WestVilla implements Customer{Shop shop;private String cakeType;public WestVilla(Shop shop,String cakeType){this.shop = shop;this.cakeType = cakeType;shop.addCustomer(this);}public void orderCake(String name){System.out.println(name+"订了一个"+cakeType+"蛋糕");JDBCFacade dbFacade=new JDBCFacade();String sqlStr = "select * from ordercake";String sqlStr1 = "insert into ordercake(cakeType, name, quantity)"+ " VALUES ('"+cakeType+"','"+name+"','1')";dbFacade.jdbcInsert(sqlStr1);System.out.println("查询插入之后新的数据库");dbFacade.jdbcSelect(sqlStr);if(cakeType.equals("草莓水果") || cakeType.equals("葡萄水果")){MakeFruityCake westVilla = new MakeFruityCake(cakeType);FruitFactory fruitCake = westVilla.makeFruityCake();fruitCake.createCake();}else if(cakeType.equals("牛奶巧克力") || cakeType.equals("黑巧克力")){MakeChocolateCake westVilla1 = newMakeChocolateCake(cakeType);ChocolateFactory chocolateCake =westVilla1.makeChocolateCake();chocolateCake.createCake();}else if(cakeType.equals("双层鲜奶") || cakeType.equals("甜奶")){MakeMilkCake westVilla1 = new MakeMilkCake(cakeType);MilkFactory milkCake = westVilla1.makeMilkCake();milkCake.createCake();}}}(四)JDBC(门面模式)JDBCFacade.java:package net.xsl.ordercake.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;public class JDBCFacade {Connection conn = null;Statement stmt = null;ResultSet rs = null;String sqlStr = "";public void createStatement() {try {stmt = conn.createStatement();} catch (SQLException e) {e.printStackTrace();}}public ResultSet jdbcSelect(String sqlStr){this.sqlStr = sqlStr;getConnection();createStatement();try {rs = stmt.executeQuery(sqlStr);ResultSetMetaData rsmd = rs.getMetaData();int j = 0;j = rsmd.getColumnCount();while(rs.next()){for(int i=0;i<j;i++){System.out.print(rs.getString(i+1));System.out.print("\t");}System.out.println();}} catch (SQLException e) {e.printStackTrace();}return rs;}public void jdbcUpdate(String sqlStr) {this.sqlStr = sqlStr;getConnection();createStatement();try {int count = stmt.executeUpdate(sqlStr);System.out.println("表更新 " + count + " 条数据");} catch (SQLException e) {System.out.println("更新数据失败");}}public void jdbcInsert(String sqlStr) {this.sqlStr = sqlStr;getConnection();createStatement();try {int count = stmt.executeUpdate(sqlStr);System.out.println("向表插入 " + count + " 条数据");} catch (SQLException e) {System.out.println("插入数据失败" + e.getMessage());}}public void jdbcDelete(String sqlStr) {this.sqlStr = sqlStr;getConnection();createStatement();try {int count = stmt.executeUpdate(sqlStr);System.out.println("向表删除 " + count + " 条数据");} catch (SQLException e) {System.out.println("删除数据失败");}}public void jdbcClose(){try {rs.close();stmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}public Connection getConnection() {try {Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cakeshop","root","admin");} catch (Exception e) {System.out.println("数据库连接失败" + e.getMessage());}return conn;}}(五)构造蛋糕(工厂方法模式):a)构造者MakeCake.java:package net.xsl.ordercake.creator;public interface MakeCake {}b)具体构造者一MakeChocolateCake.java:package net.xsl.ordercake.creator;import net.xsl.ordercake.product.ChocolateFactory;public class MakeChocolateCake implements MakeCake{ private String cakeType;public MakeChocolateCake(String cakeType){this.cakeType = cakeType;}public ChocolateFactory makeChocolateCake(){return new ChocolateFactory(cakeType);}}c)具体构造者二MakeFruityCake.java:package net.xsl.ordercake.creator;import net.xsl.ordercake.product.FruitFactory;public class MakeFruityCake implements MakeCake{ private String cakeType;public MakeFruityCake(String cakeType){this.cakeType = cakeType;}public FruitFactory makeFruityCake(){return new FruitFactory(cakeType);}}d)具体构造者三MakeMilkCake.java:package net.xsl.ordercake.creator;import kFactory;public class MakeMilkCake implements MakeCake{ private String cakeType;public MakeMilkCake(String cakeType){this.cakeType = cakeType;}public MilkFactory makeMilkCake(){return new MilkFactory(cakeType);}}e)抽象产品Factory.java:package net.xsl.ordercake.product;public interface Factory {public void createCake();}f)具体产品一FruitFactory.java:package net.xsl.ordercake.product;public class FruitFactory implements Factory{ private String cakeType;public FruitFactory(String cakeType){this.cakeType = cakeType;}public void createCake(){try{if (cakeType.equals("草莓水果")){FruityCake strawberryCake = new StrawberryCake();strawberryCake.show();}else if (cakeType.equals("葡萄水果")) {FruityCake grapeCake = new GrapeCake();grapeCake.show();}}catch (Exception e){System.out.println("制作"+cakeType+"蛋糕失败");}}}g)具体产品二MilkFactory.java:package net.xsl.ordercake.product;public class MilkFactory implements Factory{private String cakeType;public MilkFactory(String cakeType){this.cakeType = cakeType;}public void createCake(){try{if (cakeType.equals("双层鲜奶")){MilkCake doubleMilkCake = new DoubleMilkCake();doubleMilkCake.show();}else if (cakeType.equals("甜奶")) {MilkCake sweetMilkCake = new SweetMilkCake();sweetMilkCake.show();}}catch (Exception e){System.out.println("制作"+cakeType+"蛋糕失败");}}}h)具体产品三ChocolateFactory.java:package net.xsl.ordercake.product;public class ChocolateFactory {private String cakeType;public ChocolateFactory(String cakeType){this.cakeType = cakeType ;}public void createCake(){try{if (cakeType.equals("牛奶巧克力")){ChocolateCake milkChocolateCake = new MilkChocolateCake();milkChocolateCake.show();}else if (cakeType.equals("黑巧克力")) {ChocolateCake darkChocolateCake = new DarkChocolateCake();darkChocolateCake.show();}}catch (Exception e){System.out.println("制作"+cakeType+"蛋糕失败");}}}(六)蛋糕工厂(简单工厂模式):a)水果蛋糕:i.FruitFactory.java(第五项构造蛋糕中已贴出):ii.接口类FruityCake.java:package net.xsl.ordercake.product;public interface FruityCake {public void show();}iii.实现接口:StrawberryCake.java:package net.xsl.ordercake.product;public class StrawberryCake implements FruityCake{ public void show() {System.out.println("生产了一个草莓水果蛋糕");}}GrapeCake.java:package net.xsl.ordercake.product;public class GrapeCake implements FruityCake{public void show() {System.out.println("生产了一个葡萄水果蛋糕");}}b)牛奶蛋糕:kFactory.java(第五项构造蛋糕中已贴出):ii.接口类MilkCake.java:package net.xsl.ordercake.product;public interface MilkCake {void show();}iii.实现接口:SweetMilkCake.java:package net.xsl.ordercake.product;public class SweetMilkCake implements MilkCake{ public void show() {System.out.println("生产了一个甜奶蛋糕");}}DoubleMilkCake.java:package net.xsl.ordercake.product;public class DoubleMilkCake implements MilkCake{public void show() {System.out.println("生产了一个双层鲜奶蛋糕");}}c)巧克力蛋糕:i.ChocolateFactory.java(第五项构造蛋糕中已贴出):ii.接口类ChocolateCake.javapackage net.xsl.ordercake.product;public interface ChocolateCake {void show();}iii.实现接口:DarkChocolateCake.java:package net.xsl.ordercake.product;public class DarkChocolateCake implements ChocolateCake{public void show() {System.out.println("生产了一个黑巧克力蛋糕");}}MilkChocolateCake.java:package net.xsl.ordercake.product;public class MilkChocolateCake implements ChocolateCake{public void show() {System.out.println("生产了一个牛奶巧克力蛋糕");}}六、程序运行截图七、实验总结本次实验的实现过程中,对有些模式理解还不是很深刻,后来通过翻阅教科书,研究它的示例程序,还有老师的ppt,其中最重要的是它的类图,最终使用了出来,并把它和其他模式结合在一起。

设计模式课程设计报告

设计模式课程设计报告

设计模式课程设计报告通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

以下是小编整理的设计模式课程设计报告,欢迎阅读。

设计模式课程作业要求独立制作一个软件,功能是实现23种模式的定义、优缺点以及显示示例代码。

、题目要求设计软件,将23种设计模式结合,要能够显示每种模式的定义、优缺点以及举例说明例子,加上简单的代码说明。

、主要任务主要是选择一种工具,实现显示的功能,整理各种模式的定义,概念、使用情况、以及选择模式实例,代码实现;、典型实例实现1、单例模式定义与结构单例模式的意思就是只有一个实例。

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

这个类称为单例类。

单例模式的要点显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

在下面的对象图中,有一个单例对象,而客户甲\、客户乙和客户丙\是单例对象的三个客户对象。

可以看到,所有的客户对象共享一个单例对象。

而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。

静态变量(这是c/c++的叫法,其他语言或有不同)是实现单例模式的要素。

单例模式的2种方式:饿汉式,懒汉式单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

对一些类来说,只有一个实例是很重要的,虽然系统中可以有许多打印机,但却只应该有一个打印机假脱机,只应该有一个文件系统和一个窗口管理器,一个数字滤波器只能有一个A/D转换器,一个会计系统只能专用于一个公司。

怎样才能保证一个类只有一个实例并且这个实例易于被访问,一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象,一个更好的方法是让类自身负责保存他的唯一实例。

Java程序设计大作业实验总结报告

Java程序设计大作业实验总结报告

目录一、前言 (2)二、需求分析 (3)三、系统总体设计 (3)3.1系统总体设计系统思路 (3)3.2数据库设计 (4)3.2.1 login1表的设计和数据 (4)3.2.2 student表的设计和数据 (5)3.2.3 course表的设计和数据 (5)3.2.4 score表的设计和数据 (6)3.3系统功能模块设计 (6)四、系统详细设计 (7)4.1登录模块 (7)4.2 学生模块 (7)4.3 教师模块 (8)4.4 管理员模块 (8)五、系统测试及运行结果 (9)5.1 主界面 (9)5.2 学生管理中心界面 (9)5.3 教师管理中心界面 (10)5.4 管理员管理中心界面 (10)5.5 查询课表界面 (11)5.6 查询成绩界面 (11)5.7 查询教学情况界面 (11)5.8 查询所有学生成绩界面 (12)5.9 学生信息管理界面 (12)5.10 学生成绩管理界面 (13)5.11 用户管理界面 (13)六、实验总结 (14)七、参考文献 (14)一、前言随着计算机在人们生活中的普及和网络时代的来临,对信息的要求日益增加,学生信息管理业务受到了较为强烈的冲击,传统的手工管理方式传统的手工管理方式已不能适应现在的信息化社会。

如何利用现有的先进计算机技术来解决学生信息管理成为当下的一个重要问题,学生信息管理系统是典型的信息管理系统,其开发主要就是针对前台的页面展示以及后台数据的管理。

对于前者,要求应用程序功能完备,易于使用,界面简单;而对于后者,则要求数据库具有一致性、完整性,并能够依据前台的操作来对应操作后台数据库达到一定的安全性。

本学生信息管理系统主要采用的纯JAVA代码实现图形界面系统的开发,以及数据库知识进行数据的查询,删除,插入和更新。

本系统主要分为三个部分:学生模块、教师模块、管理员模块。

其中学生模块实现的功能:查询课表信息和查询成绩。

教师模块实现的功能:查询课表信息、查询教学情况和查询所有学生的各科成绩。

软件设计模式大作业

软件设计模式大作业

体系结构和设计模式的说明系统名称:商店管理系统1.体系结构:MVC体系结构。

2.软件设计模式:单例模式,观察者模式,适配器模式。

单例模式:实现注册。

观察者模式:添加商品显示在列表。

适配器模式:实现密码的加密。

1.本系统采用的体系结构为MVC体系结构。

2.设计模式:包括(单例模式,适配器模式,观察者模式)(1)单例模式本项目在注册时候实现单例模式,该单例模式采用的是懒汉式的单例模式。

当在登录界面,点击“注册”按钮时,会使用单例模式的方法getInstance()生成了一个注册界面。

单例实现的类为SingleRegisterStage(),设定一个公开访问点,实现注册界面的打开,而且是单线程的方式,只能打开一个界面。

视图层:Login.fxml控制层:LoginController.java注册实现类:SingleRegisterStage.java界面显示:(2)适配器模式适配器模式主要用在注册对密码的加密,以及在密码修改的时候进行密码的加密。

实现的三个类分别为适Adaptee(适配器者类),Target(目标抽象类),Adapter(适配器类)。

而在Adaptee类定义为final类,只能使用对象适配器实现;Target目标类中包含了抽象方法doEncrypt(),客户端针对抽象类Target中进行编程,在客户端代码中调用了Target的doEncrypt()实现加密;Adapter类是适配器类,在该类的构造器函数中实例化Adaptee对象,Adapter和Adaptee是组合关系。

适配者类:Adptee.java目标抽象类:Target.java适配器类:Adapter.java控制层:RegisterController.java(3)观察者模式观察者主要是在添加商品的时候,显示在列表中实现的。

通过添加观察者,通知观察者,然后将结果显示在列表上。

有四个类分别为Subject(目标类),ConcreteSubjest(具体目标类),Observer(观察者),ConcreteObserver(具体观察者)。

设计模式实验报告范文

设计模式实验报告范文

《设计模式》实验指导书10学时*师:**实验一工厂模式的应用【实验目的】1) 掌握工厂模式(Factory)的特点2) 分析具体问题,使用工厂模式进行设计。

【实验内容和要求】有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。

利用工厂模式改善设计,用C#控制台应用程序实现该OEM制造商的工厂模式。

绘制该模式的UML图。

【模式UML图】【模式代码(JA V A语言实现)】public class FactoryMethod {public static void main(String[] args) {Computer c;Factory f=new DellFactory();c=f.getComputerType();puterType();f=new LenovoFactory();puterType();f=new AcerFactory();c=f.getComputerType();puterType();}}interface Factory{Computer getComputerType();}class DellFactory implements Factory{ @Overridepublic Computer getComputerType() {return new Dell();}}class AcerFactory implements Factory{ @Overridepublic Computer getComputerType() {return new Acer();}}class LenovoFactory implements Factory{ @Overridepublic Computer getComputerType() {return new Lenovo();}}/*** 电脑品牌*/interface Computer{public void ComputerType();}class Dell implements Computer{@Overridepublic void ComputerType() {// TODO Auto-generated method stubSystem.out.println("Dell Computer");}}class Acer implements Computer{@OverrideSystem.out.println("Acer Computer");}}class Lenovo implements Computer{@Overridepublic void ComputerType() {// TODO Auto-generated method stubSystem.out.println("Lenovo Computer");}}【运行截图】【实验小结】通过本次实验,学会了使用工厂方法模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《设计模式》课程大作业报告姓名:陈明专业:软件工程班级:1202日期:2015年5月29日西安欧亚学院2014—2015学年第二学期考试试卷专业:软件工程 课程:设计模式 年级:12级完成一个综合项目程序,其中使用所学设计模式两个或者两个以上。

要求在文档中首先给出项目程序完成的功能或者解决的问题,然后详细说明模式使用的具体情况,即角色和相应程序代码。

文档赋分标准如下:1、程序功能阐述明确,分析清楚。

(15分)2、使用两种设计模式,使用得当,并给出相应的角色及程序代码,程序代码有恰当的注释。

(60分)3、文档格式正确,排版清晰。

(15分)4、如果使用超过两种设计模式,并且使用正确。

(10分)说明:以上总分为个人的期末成绩,本课程个人总成绩=平时成绩*40%+期末成绩*60%。

号_____________ 班级___________ 姓名________ 考场号____ 座位号____- -- - - - -- - - - - - - -- - - -- -- -密 ○- - - - - - - - - - - - - - -- - - -- -- - -封 ○- - - - - - - - - - - - -- - - --- - - -- -线 ○- - - - - - - - - - -- - - - -- - - - -- - - -- - - --用户和药店以及制药厂交互的例子一、程序功能描述工厂方法模式:为某药店开发的应用程序需要使用Drug类的某个子类的实例为用户提供药品,而不直接使用Drug的子类的构造方法直接创造对象。

因为药店没有能力给出药品的各个成分的含量,只有药厂才有这样的能力。

抽象工厂模式:通过创建多个药品工厂的类,让用户可以和创建的对象的类进行脱耦,为用户提供多个相关的药品,方便用户联合使用它们,用户不需要知道药品具体的生产过程将“工厂方法模式”与“抽象工厂模式”相结合,实现用户和创建对象的类脱耦,并且为用户提供多个相关的对象。

买药的用户只需要知道去药店买什么药就行了,不必去药厂,也不需要知道要的成分,只需要去药店,然后药店就会提供所需药品的信息,包括成分和生产厂商以及对应的生产线。

二、程序代码文件1:Drug.javapublic abstract class Drug { //抽象产品类String constitute;String name;public String getConstitute() { //获得药品成分return constitute;}public String getName() { //获取药品名称return name;}public abstract String getType(); //获取药品类型}文件2:Paracetamol.javapublic class Paracetamol extends Drug{ //具体产品类String part1 = "每粒含乙酰氨基酚";String part2 = "每粒含咖啡因";String part3 = "每粒含人工牛黄";String part4 = "每粒含马来酸氯苯";String type;public Paracetamol(String name, int[] a) { //具体药品,并创建数组用来存放药品的各种成分含量 = name;part1 = part1 + ":" + a[0] + "毫克\n";part2 = part2 + ":" + a[1] + "毫克\n";part3 = part3 + ":" + a[2] + "毫克\n";part4 = part4 + ":" + a[3] + "毫克\n";constitute = part1 + part2 + part3 + part4;}public Paracetamol() { //具体药品所在生产线System.out.println("氨加黄敏胶囊是使用1号生产线生产的。

");}@Overridepublic String getType() { //获取药品类型return type = "氨加黄敏胶囊";}}文件3:Amorolfine.javapublic class Amorolfine extends Drug{ //具体产品类String part1 = "每粒含甲硝唑";String part2 = "每粒含人工牛黄";String type;public Amorolfine(String name, int[] a) { = name;part1 = part1 + ":" + a[0] + "毫克\n";part2 = part2 + ":" + a[1] + "毫克\n";constitute = part1 + part2;}public Amorolfine() {System.out.println("甲硝唑胶囊是使用2号生产线生产的。

"); }@Overridepublic String getType() {// TODO Auto-generated method stubreturn type = "甲硝唑胶囊";}}文件4:DrugCreator.javapublic interface DrugCreator { //构造者public abstract Drug getDrug(); //工厂方法}文件5:ParaDrugCreator.javapublic class ParaDrugCreator implements DrugCreator { // 具体构造者public Drug getDrug() { //返回具体药品以及药品成分int[] a = { 250, 15, 1, 10 };Drug drug = new Paracetamol("氨加黄敏胶囊", a);return drug;}}文件6:AmorDrugCreator.javapublic class AmorDrugCreator implements DrugCreator { //具体构造者public Drug getDrug() {int [] a = {200,5};Drug drug = new Amorolfine("甲硝唑胶囊", a);return drug;}}文件7:DrugFactory.javapublic abstract class DrugFactory { //抽象工厂类public abstract Drug createDrug();}文件8:AmorolfineFactory.javapublic class AmorolfineFactory extends DrugFactory { //具体工厂类public Drug createDrug() { //工厂生产药品方法return new Amorolfine();}}文件9:ParacetamolFactory.javapublic class ParacetamolFactory extends DrugFactory{ //具体工厂类public Drug createDrug() { //工厂生产药品方法return new Paracetamol();}}文件10:Application.javapublic class Application {public static void main(String[] args) { //应用程序DrugFactory factory = new ParacetamolFactory();Drug paracetamol = factory.createDrug();System.out.println("生产线生产的药品类型:"+paracetamol.getType());DrugCreator creator = new ParaDrugCreator();Drug drug = creator.getDrug();System.out.println(drug.getName() + "的成分:");System.out.println(drug.getConstitute());factory = new AmorolfineFactory();Drug amorolfine = factory.createDrug();System.out.println("生产线生产的药品类型:"+amorolfine.getType());Creator = new AmorDrugCreator();drug = creator.getDrug();System.out.println(drug.getName() + "的成分:");System.out.println(drug.getConstitute());}}六、程序结果。

相关文档
最新文档