文档视界 最新最全的文档下载
当前位置:文档视界 › 软件设计与体系结构课程实验报告书

软件设计与体系结构课程实验报告书

软件设计与体系结构课程实验报告书
软件设计与体系结构课程实验报告书

实验一、教务系统

1. 实验目的:

①学习工厂模式;

②掌握简单工厂模式的用法,以及其优缺点;

③掌握抽象工厂模式的用法,以及其优缺点。

2. 实验内容:

1.假设我们开发一个教务管理系统,现在教务处已经购买了Oracle数据库的2年使用权,且数据库

中有大量数据,不能短时间内进行数据库迁移。教务处提出一个要求,希望我们的系统现在可以支持Oracle,但在他们需要的时候,增加支持MySql、SQLServer的功能,请用简单工厂模式实现这一需求。(提示:具体代码可以数据读取写入工作抽象为一行命令行输出,但是核心的类关系必须给出。)

2.请用抽象工厂模式实现出以上需求。

3. 简单工厂

优点:

1、工厂方法包含从一个类的结构中选择初始类的业务逻辑。

2、客户类不直接创建产品类的对象。客户类只作为对象的消费者。

3、简单工厂方法模式实现了责任分离。

4、客户类不负有创建类的对象的责任,因此如果有新产品子类加入,不必修改已有的客户类代码。

缺点:

1、简单工厂方法模式不符合开闭原则。

2、简单工厂类只能是一个单独的类,而不能成为一个层次的类

4. 抽象工厂

优点:

1、具体产品从客户代码中被分离出来

2、容易改变产品的系列

3、将一个系列的产品族统一到一起创建

缺点:

在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口

5. 类图

6、实验总结

对于简单工厂和抽象工厂的学习有了初步的认识,在此学习中基本了解了什么情况下使用简单工厂和抽象工厂。

简单工厂:

1、工厂类负责创建的对象比较少;

2、客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

3、由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

抽象工厂:

1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。

2、这个系统有多于一个的产品族,而系统只消费其中某一产品族。

3、同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。

4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。

实验二、网络连接

1. 实验目的:

①学习单例模式;

②掌握单例模式的用法,以及其优缺点;

2. 实验内容:

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

根据下面的UML图,完成相关的代码,要求为:

1,成功运行所给代码;

2,运用线程安全的单例模式重新设计软件框架;

3,用代码完成你的设计。

3.单例模式

单例模式:单例模式作为对象的一种创建模式,它的作用是确保某一个类在整个系统中只有一个实例,而且自行实例化并向整个系统提供这个实例。

其特点:

1、单例类只能有一个实例

2、单例类必须自己创建自己唯一的实例

3、单例类必须给所有其他对象提供这一实例

优点:

1、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

2、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

1、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

2、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

3、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中,只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中,其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

4.运行图示:

5.相关代码:

ClientUI.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ClientUI extends JFrame{

private static final String CONNECT = "Create Connection";

private static final String EXIT = "Exit";

private JTextField txtInstruction;

private SingleLogonGUI objLogon = null;

public ClientUI() {

super("ClientUI - Singleton Pattern");

JButton btnConnect = new JButton(CONNECT);

JButton btnExit = new JButton(EXIT);

btnConnect.setMnemonic(KeyEvent.VK_S);

btnExit.setMnemonic(KeyEvent.VK_X);

ButtonHandler vf = new ButtonHandler();

btnConnect.addActionListener(vf);

btnExit.addActionListener(vf);

JPanel buttonPanel = new JPanel();

buttonPanel.setBackground(Color.green);

buttonPanel.add(btnConnect);

buttonPanel.add(btnExit);

txtInstruction = new JTextField("Click to get a connection");

txtInstruction.setBackground(Color.green);

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(buttonPanel, "South");

contentPane.add(txtInstruction, "Center");

setSize(320, 120);

setVisible(true);

}

private void issueWarning(){

txtInstruction.setT ext("Error. You cannot start a second connection."); }

class ButtonHandler implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals(EXIT)) {

System.exit(1);

}

else if (e.getActionCommand().equals(CONNECT)) {

if(objLogon == null)

objLogon = SingleLogonGUI.getInstance();

else

issueWarning();

}

}

}

public static void main(String[] args) {

ClientUI connection = new ClientUI();

}

}

SingleLogonGUI.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SingleLogonGUI extends JFrame { public static final String LOGON = "Log On";

public static final String EXIT = "Exit";

private String USERNM="mikesun";

private String PASSWD = "opensesame";

private JTextField txtUser;

private JTextField txtPassWord;

private static SingleLogonGUI instance = null;

private JTextField txtInstruction;

private SingleLogonGUI() {

super("SingleLogonGUI - Singleton");

initializeGUI();

}

public static SingleLogonGUI getInstance() { if (instance == null)

instance = new SingleLogonGUI();

return instance;

}

public void initializeGUI() {

JLabel lblUsrName = new JLabel("User Name");

JLabel lblPassWord = new JLabel("Password");

txtUser = new JTextField(USERNM);

txtPassWord = new JTextField(PASSWD);

JButton btnLogon = new JButton(LOGON);

btnLogon.setMnemonic(KeyEvent.VK_S);

JButton btnExit = new JButton(EXIT);

btnExit.setMnemonic(KeyEvent.VK_X);

ButtonHandler vf = new ButtonHandler();

btnLogon.addActionListener(vf);

btnExit.addActionListener(vf);

JPanel buttonPanel = new JPanel();

GridBagLayout gridbag = new GridBagLayout();

buttonPanel.setLayout(gridbag);

GridBagConstraints gbc = new GridBagConstraints();

buttonPanel.add(lblUsrName);

buttonPanel.add(txtUser);

buttonPanel.add(lblPassWord);

buttonPanel.add(txtPassWord);

buttonPanel.add(btnLogon);

buttonPanel.add(btnExit);

gbc.insets.top = 5;

gbc.insets.bottom = 5;

gbc.insets.left = 5;

gbc.insets.right = 5;

gbc.gridx = 0;

gbc.gridy = 0;

gridbag.setConstraints(lblUsrName, gbc);

gbc.anchor = GridBagConstraints.WEST;

gbc.gridx = 1;

gbc.gridy = 0;

gridbag.setConstraints(txtUser, gbc);

gbc.gridx = 0;

gbc.gridy = 1;

gridbag.setConstraints(lblPassWord, gbc);

gbc.anchor = GridBagConstraints.WEST;

gbc.gridx = 1;

gbc.gridy = 1;

gridbag.setConstraints(txtPassWord, gbc);

gbc.anchor = GridBagConstraints.EAST;

gbc.insets.left = 2;

gbc.insets.right = 2;

gbc.insets.top = 40;

gbc.gridx = 0;

gbc.gridy = 6;

gridbag.setConstraints(btnLogon, gbc);

gbc.anchor = GridBagConstraints.WEST;

gbc.gridx = 1;

gbc.gridy = 6;

gridbag.setConstraints(btnExit, gbc);

Container contentPane = getContentPane();

contentPane.add(buttonPanel, BorderLayout.CENTER);

txtInstruction = new JTextField();

txtInstruction.setBackground(Color.pink);

contentPane.add( txtInstruction, BorderLayout.NORTH);

setSize(320, 200);

setVisible(true);

}

public boolean isValideCustomer() {

String usr = txtUser.getText();

String pwd = txtPassWord.getText();

if(usr.equals(USERNM) && pwd.equals(PASSWD))

return true;

else

return false;

}

private void issueWarning(){

txtInstruction.setText("Invalide user name or password.");

}

private void issueSuccess(){

txtInstruction.setText("You have been successfully connected to the web."); }

class ButtonHandler implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals(EXIT)) {

System.exit(1);

}

if (e.getActionCommand().equals(LOGON)) {

boolean isValideCus = isValideCustomer();

if(isValideCus == false){ //logon failed

issueWarning();

}

else{ //logon successfully

issueSuccess();

}

}

}

}

}// end of class

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

软件设计过程实验报告

软件开发过程 实验一软件需求分析 一、目的和意义 对本书第二和三章的内容做进一步的掌握,写出软件需求规格说明书。为下面的实习奠定基础。 二、实习内容 xx、确定软件题目(学生可自己拟定,也可在本书附录2中选择); 2、分析软件需求以及人工模式下的工作流程; 3、编写需求规格说明书(需求规格说明书的编写要求参见本节模板参考); 4、完成形式:以文档的形式完成软件的需求规格说明书。纸张型号为A4。 三、实习指导 xx、在磁盘上建立一个软件工程实习文件夹,以自己的姓名命名。 2、提交文档的格式如下: 第一页的格式为: 软件名称:文档编号 版本号 文档名称: 项目名称: 项目负责人: 编写时间 审核时间 批准时间 开发单位 第二页之后的内容为: ●编写目的:阐明编写该文档的目的,指出读者对象 ●项目背景:项目的委托单位、开发单位、该软件系统与其他系统的关系。

●参考资料 软件需求规格说明的书写原则 ①任务概述:软硬件环境、条件和限制(软件的使用条件和限制)。 ②数据描述:输入数据、输出数据、数据库设计和建立数据词典。 ③功能需求:功能划分和功能描述 ④性能需求:数据精度、时间特性、适应性(操作方式、与其他软件的接口、开 发计划变化时,软件应具有的适应能力。)。 ⑤运行要求:用户界面、硬件接口(如:连接打印机)、软件接口(如:是否为 其他项目的子项目)、故障处理。 ⑥其他需求:可使用性、安全保密性、可维护性、可移植性等。 ●模板参考 第一页: 软件名称:教务管理软件文档编号 xxxxxx 版本号 Ver xx.xx 文档名称:需求规格说明书 项目名称:课表编排系统 项目负责人:屈艳 编写: 组 第二页之后的内容: 编写目的:编写该文档是为了分析人工状态下课表编排的工作流程,把人工模式抽象为可在计算机上处理的自动模式。便于开发小组成员对系统整体功能的认识。 项目背景:高校的课表编排一直是一个烦琐的工作,为了解决这个问题,某某高校教务处委托我们开发该软件。该软件是高校教务软件的一个子系统。该子系统与专业规划子系统和教师管理软件有一定的关系。 参 实用软件工程(第二版)北京:清华大学出版社,xxxxxx7 任务概述: 硬件环境:CPU的型号为PentiumIII以上,内存25xxM ,及其兼容机

安徽工程大学课程设计报告撰写模板

封面 按学校发的封面模板填写相关信息; 起始时间:2011年6月13日~6月24日 设计报告书页数(一般20~30页之间) 电子版设计报告规定的格式用A4纸打印,正文中的任何部分不得写到纸的边框以外,亦不得随意接长或截短。汉字必须使用国家公布的规字。 页面设置:上3,下2.5,左3,右2;页眉2,页脚1.75。 行距采用单倍行距,标准字符间距。西文、数字等符号均采用Times New Roman字体。

任务书 主要是写明设计容和设计要求 例如,设计一个数字钟的任务书为:(具体根据题目拟定) Ⅰ设计题目 中文:多功能数字钟的设计 英文:Design of Multi-function Digital Clock Ⅱ设计功能要求 1、能正确显示时、分、秒(6位:HH:MM:SS); 2、要有总体复位开关; 3、能可靠校时、校分; 4、能整点报时(①59’56秒、59’57秒、59’58秒、59’59秒响0.5秒低音。②00’00 秒响1秒高音); 5、整个电路的控制开关要求在5个以; 6、秒信号发生器可以用555构成的电路产生; 7、能够设定一组闹钟功能,到了预设的时间,铃声响1分钟,在1分钟之可以用 按键停止闹铃。 Ⅲ设计任务容 1、学习与研究相关的《电子技术》理论知识,查阅资料,拿出可行的设计方案; 2、根据设计方案进行电路设计,完成电路参数计算、元器件选型、绘制电路原理 图; 3、进行电路软件仿真(如:Multisim 2001、EWB、Protel等),或制作实物进行调 试实验,获得实验数据,验证设计有效性。 4、撰写课程设计报告。 签名

设计题目(根据自己的设计题目) 摘要 摘要:独占一页; 摘要正文分三段写: 第一段:本设计的意义和完成的主要工作。——做什么?为啥做? 第二段:为了完成设计功能,你主要进行了哪些设计,怎么设计的。——怎么做? 第三段:设计结果如何,取得了哪些结论。——做的效果怎么样? 关键词:关键词1;关键词2;关键词3;关键词4(根据自己的设计题目)

软件项目管理课程设计实验报告精

软件项目管理课程设计报告 学院: 专业: 班级: 学号: 姓名: 指导教师: 时间:2013年 1月 目录 1、项目概述 (1) 2、工作任务 (Statement Of Work,SOW书 (1) (一整体要求 (1) (二系统逻辑模型 (2) (三系统功能描述 (3) (四应达到的技术指标和参数 .................................... 3 3、项目进度计划 .. (4) (一分解项目工作 (4) (二项目工作关系表 (5) (三项目甘特图 (6) (四网络进度计划图 (7) (五里程碑计划 ................................................ 9 4、项目规模成本估算 . (9)

(一分解项目工作 (9) (二项目规模估算表 (11) (三计算开发成本 (12) (四计算管理、质量成本 (12) (五直接成本 (12) (六计算间接成本 (12) (七计算总估算成本 (12) (八项目报价 ................................................. 13 5. 项目质量计划 .. (13) (一项目质量保证组织 (13) (二质量目标 (14) (三质量策略 (15) (四质量保证活动 (15) (五质量控制活动 (17) (六质量保证的报告途径 (17) (七记录的收集、维护和保存 ................................... 17 6、软件项目团队 . (17) (一团队组织及职责 (18) (二项目的沟通计划 ........................................... 19 7、软件项目配置管理计划 .. (19) 学校内部职工工资系统项目管理书 1、项目概述 假设学校共有教职工约 1000人, 10个行政部门和 8个系部。每个月 20日前各部门(包括系、部要将出勤情况上报人事处, 23日前人事处将出勤工资、奖金及扣款清单送财务处。财务处于每月月底将教职工的工资表做好并将数据送银行。每月初(3日前将工

南京邮电大学软件设计实验报告

软件设计报告 ( 2014 / 2015 学年第二学期) 课程名称软件设计 指导老师赵江实习时间第十八周学生姓名学号 ____学院______专业

软件设计 课程编号:B0465011C 适用专业: 班级: 一、所涉及的课程及知识点 涉及的课程:第6学期之前的专业基础课程。 知识点:专业基础课程中所学的知识点。 二、目的与任务 目的:通过软件设计,培养学生的实践能力和创新精神,加强学生对专业基础课程的理解和掌握,加强学生高级语言编程能力、应用软件以及仿真能力。 任务:选择以下任一模块进行设计:Matlab软件仿真、C语言及应用。

软件设计的内容 题目1:如果给出两个矩阵?? ??? ?????=136782078451220124A ,????? ?????=087654321B ,执行下面的矩阵运算命令。 (1)B A *5+和I B A +-分别是多少(其中I 为单位矩阵) (2)B A *?和B A *将分别给出什么结果,它们是否相同为什么 逻辑功能程序: function [ ] = EXP1() A=[4,12,20;12,45,78;20,78,136]; B=[1,2,3;4,5,6;7,8,0]; I=eye(3); disp('A+5*B='); disp(A+5*B); disp('A-B+I=') disp(A-B+I); disp('A.*B='); disp(A.*B) disp('A*B='); disp(A*B); End 实验过程与结果 打开matlab ,在命令窗口“Command Window ”中键入edit,启动程序编辑器。输入完整程序后利用save as 储存为M 文件,文件名为EXP1。返回主界面,

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 (2) 组合模式 某教育机构组织结构如下图所示: 北京总部 教务办公室湖南分校行政办公室 教务办公室长沙教学点湘潭教学点行政办公室

教务办公室行政办公室教务办公室行政办公室 在该教育机构的OA系统中可以给各级办公室下发公文,现采用 组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。) (3) 外观模式 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下: reader = new FileReader();EncryptFacadecipher = new CipherMachine();writer = new FileWriter();-reader: FileReader-cipher: CipherMachine-writer: FileWriter +EncryptFacade () +fileEncrypt (String fileNameSrc,: voidString plainStr=reader.read(fileNameSrc); String fileNameDes)String

课程设计报告参考模板

课程设计报告参考模板 河海大学计算机及信息工程学院 课程设计报告 题目专业、学号授课班号学生姓名指导教师完成时间 课程设计任务书 Ⅰ、课程设计题目: Ⅱ、课程设计工作内容 一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力; 2、…… 二、研究方法及手段应用 1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务; 2、…… 三、课程设计预期效果 1、完成实验环境搭建; 2、…… 学生姓名:专业年级: 目录空一行。空一个中文字符行。“目录”,分页,居中,加黑宋体二号。前言………………………………………………………………………………………………1 第一章系统设计………………………………………………………………

…………………2 第一节课题目标及总体方案…………………………………………………………………..2 ……………… 目录正文,宋体小四号,倍行距。第二节…………………………….. ………………… 第二章实验结果及讨论 (5) ……………… 第三章结论 (10) ……………… 心得体会 (42) 河海大学本科课程设计报告 1、移动台 MS 二级标题“1、”,左对齐,加黑宋体小三号。移动台是公用GSM移动通信网中用户使用的设备,……………… NMCDPPSPCSSEMC OSSOMCMBTSSBTSBSCHLR/ MSC/VLRAUC BSSEIR NSSPSTNISDNPDN 图 GSM系统

组成 2、基站子系统 BSS 图编号及图名“图”,位于图下,居中。基站子系统BSS是GSM系统实现无线通信的关键组成部分。它通过无线接口直接与移动台通信,进行无线发送、无线接收及无线资源管理。另一方面,它通过与网络子系统NSS的移动业务交换中心,………………。 ⑴、基站收发信台 BTS 三级标题“⑴、”,左对齐,加黑宋体四号。基站收发信台BTS属于基站子系统BSS的无线部分,………………。①收发信台组成四级标题“①”,左对齐,加黑宋体小四号。 BTS包含有若干个收发信息单元TRX,而一个TRX有八个时隙,………………。●收发信息单元 五级标题“●”,左对齐,加黑宋体小四号。收发信息单元是………………。●其它辅助单元 辅助单元包括………………。②收发信台作用 收发信台的主要作用有………………。 ⑵、基站控制器 BSC 基站控制器BSC是基站子系统BSS的控制部分,………………。 3、网络交换子系统 NSS - 4 - 河海大学本科课程设计报告

设计模式实验报告

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML 图。 3 实验代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AppConfig { publicclass Singleton { privatestatic Singleton instance; private Singleton() {

} publicstatic Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } class Program { staticvoid Main(string[] args) { Singleton singletonOne = Singleton.GetInstance(); Singleton singletonTwo = Singleton.GetInstance(); if (singletonOne.Equals(singletonTwo)) { Console.WriteLine("singletonOne 和 singletonTwo 代表的是同一个实例"); } else { Console.WriteLine("singletonOne 和 singletonTwo 代表的是不同实例"); } Console.ReadKey(); } } } 4 实验结果

天津大学机械制造技术基础课程设计报告书

机械制造技术基础课程设计报告书 学院机械工程 专业机械设计制造及其自动化 年级 班级组别 小组成员 指导教师 2014年 10 月 10 日

机械制造技术基础课程设计任务书

目录 第一章零件分析 1.1 零件的作用 (1) 1.2 零件的工艺分析 (1) 1.3 确定零件生产类型 (1) 第二章确定毛坯类型绘制毛坯简图 2.1选择毛坯 (2) 2.2确定毛坯尺寸公差和机加工余量 (2) 2.3绘制拨叉毛坯简图 (3) 第三章工艺规程设计 3.1定位基准的选择 (4) 3.2拟定工艺路线 (4) 3.3工序尺寸及公差确定 (6) 3.3切削用量的确定 (7) 第四章机床夹具设计 4.1定位及加紧机构设计 (8) 4.2切削力及夹紧力计算 (11) 4.3夹紧元件的强度校核 (13) 4.4定位误差分析 (14) 参考文献.................................................... .. (18)

附 录 .................................................... . (19)

第一章零件分析 1.1 零件的作用 题目所给的零件是拨叉。它位 于变速机构中,主要起换档、使主轴 回转运动按照工作者的要求工作,获 得所需的速度和扭矩的作用。零件上 方的φ20H7孔与操纵机构相连,并用 螺钉经M5孔与变速叉轴连接。拨叉脚 则夹在双联变换齿轮的槽中。当需要 变速时,操纵变速杆,变速操纵机构 就通过拨叉头部的操纵槽带动拨叉与 变速叉轴一起在变速箱中滑移,通过 连接装置改换档位,实现变速。 1.2 零件的工艺分析 零件的材料为QT400,球墨铸铁 是通过球化和孕育处理得到球状石 墨,有效地提高了铸铁的机械性能, 特别是提高了塑性和韧性,从而得到 比碳钢还高的强度。 该拨叉零件叉轴孔Φ20H7 mm的 轴线是拨叉脚两端面和螺纹孔M5的设 计基准,拨叉头左端面是拨叉轴向方 向上尺寸设计基准。选用叉轴孔Φ20H7 mm的轴线和拨叉头左端面作为精基准。选用叉轴孔Φ20H7 mm的轴线和拨叉头左端面作为精基准定位加工拨叉脚两端面和螺纹孔M5,实现了设计基准和工艺基准重合,保证了被加工表面的垂直度要求。另外,由于拨叉件刚性较差,受力易发生弯曲变形,选用拨叉头左端面作为精基准,夹紧力作用在插头的右端面上,可以避免在机械加工中产生夹紧变形, mm的尺寸要求,所以选择拨叉脚左端面作为粗基准。夹紧稳定可靠。由于有50 2.0 采用Φ32 mm的外圆面定位加工内孔尅保证孔的壁厚均匀;采用拨叉脚左端面作为粗基准加工左端面,可以为后续工序准备好精基准。 该拨叉的加工质量要求较高,可将加工阶段分为粗加工、半精加工和精加工几个阶段。在粗加工阶段,首先用车床将精基准(拨叉头左端面和叉轴孔)准备好,因为车床可以一次性将两个精基准都加工出来,从而提高了精度,也为使后续工序都采用精基准定位加工,保证其他加工表面的精度要求;由于精度要求不高,故而粗铣,半精铣拨叉脚左右端面、拨叉脚内表面、螺纹孔端面,最后完成M5螺纹孔的加工,这也体现了工序集中的原则。 1.3 确定零件生产类型 由零件图示的生产批量200件可知,该零件为单件小批量生产。

《软件课程设计》实验报告

编号:()字号 《软件课程设计》报告 班姓学级:名:号: 指导老师: 职称: 计算机科学与技术学院 二〇〇八年月

专业年级: 学生姓名: 任务下达日期: 课程设计日期: 课程设计题目:面向过程 一.需求分析 设计任务:软件课程设计任务书 题目七: 1.将输入的罗马数据化为10进制数。假设罗马数据中只使用如下7 个“基值”字母:M、D、C、L、X、V、I,分别用来表示 1000、500、100、50、10、5、1。如,罗马数据LXXXVII 表示10 进 制的87。 2.将输入的10进制正整数转换为罗马数据。假设罗马数据中只使用 “基值”字母:M、D、C、L、X、V、I,分别用来表示 1000、500、100、50、10、5、1。 主要界面为:

输入1或2可以选择功能。 输出的形式 如上所示:当输入大写或小写的阿拉伯字母时。 程序能计算出十进制。 程序所能达到的功能 测试的数据:当输入mvii罗马数字时输出十进制 1007 当输入十进制数4535 时相应输出MMMMDXXXV。 二.概要设计 程序中主要在开头用了一个死循环来实现功能的不断循环。通过exit函数退出程序。 主程序的流程以及各程序模块之间的层次(调用)关系。

Convert1() Break; >switch(n) Default; 三.详细设计 实现概要设计中定义的数据类型和操作。以增加程序的可读性,关键算法部分 画出程序流程图。 主函数的流程图如右图示: Switch() Cin>>n Convert1() Break; Case1: Case2:; Convert2(); Break; Default; Exit(1); While(1) Main() Return 0; Main->jiemina->while(1)- Convert2() Break; Exit()

设计模式上机实验二实验报告

设计模式实验二 实验报告书 专业班级软件0703 学号3901070324 姓名吉亚云 指导老师伟 时间2010年4月24日 中南大学软件学院

实验二设计模式上机实验二 一、实验目的 使用PowerDesigner和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。 三、实验要求 1. 正确无误绘制装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式的模式结构图; 2. 使用任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,代码运行正确无误。 四、实验步骤 1. 使用PowerDesigner绘制装饰模式结构图并用面向对象编程语言实现该模式; 2. 使用PowerDesigner绘制外观模式结构图并用面向对象编程语言实现该模式; 3. 使用PowerDesigner绘制代理模式结构图并用面向对象编程语言实现该模式; 4. 使用PowerDesigner绘制职责链模式结构图并用面向对象编程语言实现该模式; 5. 使用PowerDesigner绘制命令模式结构图并用面向对象编程语言实现该模式; 6. 使用PowerDesigner绘制迭代器模式结构图并用面向对象编程语言实现该模式; 7. 使用PowerDesigner绘制观察者模式结构图并用面向对象编程语言实现该模式; 8. 使用PowerDesigner绘制状态模式结构图并用面向对象编程语言实现该模式; 9. 使用PowerDesigner绘制策略模式结构图并用面向对象编程语言实现该模式; 10. 使用PowerDesigner绘制模板方法模式结构图并用面向对象编程语言实现该模式。 五、实验报告要求 1. 提供装饰模式结构图及实现代码; 2. 提供外观模式结构图及实现代码; 3. 提供代理模式结构图及实现代码; 4. 提供职责链模式结构图及实现代码;

软件工程实验报告

1.1 实验一结构化需求分析 一.实验类型 图书馆管理系统 假定校图书馆需要你设计一个图书馆管理系统,要求包括以下功能: ●图书管理员可以管理馆藏图书,包括每本图书的藏书编号、书名、编著者、 ISBN号、出版社、出版时间、入馆时间、馆藏数量(如果馆藏数量为1,则标明为孤本图书)、在馆数量、学科类别等(或其它你认为有用的信息); ●管理员可以查询、统计所有图书、每一类图书或每一本书的借阅记录; ●图书管理员可以管理所有读者的信息,包括读者类型(学生、教师、社会人 士)、姓名、图书证编号、办证时间、证件状态(正常、挂失、冻结)等信息; ●图书管理员可以查询和统计所有读者、每一类读者或每一个读者的借阅记录; ●读者可以通过本系统查询馆藏图书; ●读者可以通过本系统借阅读书。但对于孤本图书或在馆数量为1的图书则不 准外借; ●管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年 不归还图书的读者冻结其图书证; ●读者可以通地本系统归还图书。如果图书超期,则自动计算罚款金额。二.实验目的 1.掌握数据流的分析技术 2.掌握软件需求分析的过程和方法。 3.熟悉项目开发计划和需求规格说明书的制定方法。 三.实验内容和要求 1.用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流图和数据字典。 2.正确运用图表工具进行表示。 3.按规范正确编写软件文档。

四.实验步骤 1.理解所承担项目的业务流程和业务内容。 本软件项目是面向中小型学校、单位机构对于图书管理的基于服务的一款便捷式软件。能满足一系列常用图书管理的功能模块,提供简介、准确的操作性,可以很大程度减少人为因素带来的数据错误,统计错误,系统逻辑错误。并且规模小,很容易进行推广。 ●本项目的参与对象有图书管理员及读者。 ●对于读者,能通过该软件浏览馆藏的所有图书。读者在图书馆找到自己喜欢 的书后,能自行通过该软件操作完成借阅操作。若读者是第一次借书,必须通过图书管理员进行添加读者记录,登记读者信息。读者在登陆后方能完成借阅操作,对于孤本图书(即图书馆中馆藏只有一本的图书)则拒绝进行借阅操作。在规定期限内,读者可以通过该软件完成还书操作,对于超期的图书,应将扣除一定罚款金额,对于超期一年不归还图书的读者冻结其图书证。 并且读者能修改个人信息。 ●对于图书管理员,能管理自己和比自己低一级管理权限的管理员。一级管理 员能完成维护管理员的基本信息和二级管理员的一切操作。二级管理员则能维护自己的信息和添加读者、添加图书的功能。管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年不归还图书的读者冻结其图书证; 2.按照系统的功能及性能要求,系统的作业范围等,确定软件系统的开发环境(操作系统、开发工具、程序设计语言等)。 根据软件编程经验,本系统将采用面向对象的设计方法,使用Eclipse开发工具,java窗体应用程序,操作系统使用Win8。 3.绘制数据流图、功能分析图等。

南京邮电大学软件设计VHDL实验报告

南京邮电大学软件设计VHDL实验报告

通信与信息工程学院 / 年第 2 学期 软件设计实验报告 模块名称VHDL 专业通信工程 学生班级 学生学号 学生姓名 指导教师梅中辉

设计题目 基本课题:04. 2对4译码器 综合课题:18. 奇偶校验器 任务要求 1.基本课题:设计一个2对4译码器(输入:A B 输出:Y3 Y2 Y1 Y0),真值表如图2。 2. 奇偶校验器系统的功能是对八位二进制数据及其奇偶校验位的输入进行校验,输出正确的奇、偶校验位。ODD_IN 与EVEN_IN 是控制奇校验和偶校验功能输入,IN0到IN7是七位数据及一位校验位数据输入,IN_READY 表示输入数据已经准备好,能够处理,当OUT_REQ 输入表示要求输出数据,CLK 端口用于接收时钟信号,支持系统的时钟上升沿同步。当输出端口OUT_READY 输出信号有效时,表示输出数据已经准备好,能够为下级电路使用,ODD_OUT 与EVEN_OUT 用来输出正确的奇偶校验位。上述控制端口均为高电平有效。 A B Y3 Y2 Y1 Y0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 实验设备 及软件 1. 微型计算机 2. EDA-VHDL 开发软件 同组人员 学号及姓名 11001803 胡雪琪

参考文献 1. 张顺兴 《数字电路与系统设计》东南大学出版社 .8 2. 苗丽华《VHDL 数字电路设计教程》人民邮电出版社 .11 VHDL 课程设计题目及要求(自编资料) 3. VHDL 课程设计题目及要求(自编资料) 4. 杨晓慧 杨永健 《基于FPGA 的EDA/SOPC 技术与VHDL 》 国防工业出版社 .7 5. Peter J. Ashenden 《The VHDL Cookbook 》Dept. Computer Science University of Adelaide South Australia July, 1990 报告内容 一. 实验目的 1.掌握组合逻辑中译码器电路的设计原理。 2.能利用VHDL 语言设计一个2-4译码器。 二. 实验器件 1.微型计算机 2.EDA-VHDL 开发软件 三. 实验名称 2-4译码器 四. 题目要求概述 设计一个2对4译码器(输入:A B 输出:Y3 Y2 Y1 Y0),真值表如图 五. 系统分析 ○ 1.原理图: 分析:EN=1,Z[0]=Z[1]=Z[2]=Z[3]=1; EN=0,Z[0]=!(!A!B ),Z[1]=!(!AB),Z[2]=!(A!B),Z[3]=!AB ○ 2.设计算法: A B Y3 Y2 Y1 Y0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1

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

《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 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】采用的是抽象方法模式

单片机课程设计报告书模板

. .. . .. .. 西南科技大学 2011级微机原理与接口技术 课程设计报告 课题名称微机原理与接口技术 姓名 学号 院、系、部制造科学与工程学院 专业 指导教师 2014年月日

目录 一、绪言 (1) 二、系统设计 (1) 2.1系统整体流程图 (1) 2.2日历时钟的控制方案论证 (1) 2.3单片机的选择方案论证 (2) 2.4键盘选择方案论证 (2) 2.5显示模块的选择方案论证 (2) 2.6模块的选择方案论证 (2) 三、硬件电路设计 (2) 3.1日历时钟的控制电路图 (2) 3.2行列式键盘的设计 (3) 3.3数码管显示电路的设计 (3) 3.4蜂鸣器驱动电路的设计 (4)

3.5主要元器件选择 (4) 四、程序流程图 (5) 五、c语言程序设计 (5) 六、日历时钟的控制器仿真 (19) 6.1K e i l调试 (19) 6.2P r o t e u s调试 (19) 七、结束语 (20) 八、参考文献 (21) 1、绪言 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采用AT89C51单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

软件设计实验报告

通达学院 2017/2018 学年第 1 学期 课程设计实验报告 模块名称综合软件设计 专业通信工程 学生班级141301 学生学号14130118 学生姓名陈启朋 指导教师王诚

目录 第一章在线考试系统 (1) 1.1 实验目的 (1) 1.2 实验内容 (1) 1.3.1考试登录模块设计 (1) 1.3.2管理员模块设计 (7) 1.4 实验结果 (12) 第二章学生成绩管理系统 (13) 2.1 实验目的 (13) 2.2 实验内容 (13) 2.3 实验过程 (13) 2.3.1学生成绩管理模块设计 (13) 2.3.2 公共模块设计 (18) 2.4 实验结果 (20) 总结 (21) 参考文献 (21)

第一章在线考试系统 1.1 实验目的 通过本次软件设计,使学生掌握并能熟练运用Java和mysql语言编写程序,掌握面向对象的概念,采用C/S结构,设计数据库模型,能够了解和数据库连接的方法。 1.2 实验内容 本次实验的内容是编辑生成试题库,随机生成本次考试试题,提供在先评分并保存结果;同时,管理员可以添加、修改、删除考题和考生用户。 1.3 实验过程 1.3.1考试登录模块设计 主要程序如下: package com.Exam.Index; import java.awt.Insets; import javax.swing.*; import javax.swing.GroupLayout; import https://www.docsj.com/doc/0b19172180.html,youtStyle; import com.Exam.bean.*;

import com.Exam.controller.ControllerFrame; import com.Exam.dao.*; public class MyLand extends javax.swing.JFrame { initComponents(); }@SuppressWarnings("unchecked") private void initComponents() { jTextField3 = new javax.swing.JTextField(); jTextField1 = new javax.swing.JTextField(); jpanel = new MyJPanel(); choicejLabel = new javax.swing.JLabel(); userChoicejComboBox = new javax.swing.JComboBox(); choicejLabel1 = new javax.swing.JLabel(); UserNameTextField = new javax.swing.JTextField(); choicejLabel2 = new javax.swing.JLabel(); PassWordjTextField = new javax.swing.JPasswordField(); enterButton = new javax.swing.JButton(); enterButton.setMargin(new Insets(2, 2, 2, 2)); resButtonjButton = new javax.swing.JButton(); resButtonjButton.setMargin(new Insets(2, 2, 2, 2)); jTextField3.setText("jTextField3"); jTextField1.setText("jTextField1"); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); choicejLabel.setText("选择用户:"); userChoicejComboBox.setModel(newjavax.swing.DefaultComboBoxModel(new String[] { "","考生", "管理员" })); setTitle("考试系统"); choicejLabel1.setText("用户名:"); UserNameTextField.setText(""); choicejLabel2.setText(" 密码:"); PassWordjTextField.setText(""); enterButton.setText("登录"); enterButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { enterButtonActionPerformed(evt); } }); resButtonjButton.setText("重置"); resButtonjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

设计模式实验报告

计算机科学与技术学院 实验报告 课程名称:软件设计模式 专业:计算机科学与技术班级:班 学号: 姓名:

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。 [代码截图]: namespace实验一_单例模式_ { class Program { static void Main(string[] args) { AppConfig appc1 = AppConfig.GetAppConfig(); AppConfig appc2 = AppConfig.GetAppConfig(); appc1.SetParameterA("hello"); appc2.SetParameterA("hi"); if (appc1.Equals(appc2)){ Console.WriteLine("appc1 和 appc2 代表的是同一个实例"); } else{ Console.WriteLine("appc1 和 appc2 代表的是不同实例"); } Console.WriteLine(appc1.GetParameterA()); Console.WriteLine(appc2.GetParameterA()); Console.ReadKey();

相关文档
相关文档 最新文档