文档库 最新最全的文档下载
当前位置:文档库 › 智能终端软件设计及开发实验二

智能终端软件设计及开发实验二

智能终端软件设计及开发实验二
智能终端软件设计及开发实验二

昆明理工大学信息工程与自动化学院学生实验报告

(2013 —2014 学年第 1 学期)

课程名称:智能终端软件设计及开发开课实验室:信自楼444机房 2013 年11月 4日

一、上机目的及内容

1.上机内容

Android用户界面设计与开发。

请参考下图中界面控件的摆放位置,分别使用线性布局、相对布局和绝对布局实现用户界面,并对比各种布局实现的复杂程度和对不同屏幕尺寸的适应能力。然后选择一种布局方式,在程序中添加4个按钮的事件处理函数,使用LogCat将捕获的按钮事件显示在Eclipse的控制台中。

2.上机目的

(1)学习并熟悉Android用户界面;

(2)能够基于Android平台初步进行用户界面设计与开发。

二、实验原理及基本技术路线图(方框原理图或程序流程图)

2.1使用Eclipse建立一个Android程序;

2.2分别使用线性布局、相对布局和绝对布局实现用户界面进行界面布局;

2.3选择一种布局方式,在程序中添加4个按钮的事件处理函数,使用LogCat将捕获的按钮事件

显示在Eclipse的控制台中。

2.4线性布局

线性布局是最简单,Android开发者使用得最多的布局类型之一,开发者用它来组织你们的用户界面上的控件。线性布局的作用就像它的名字一样:它将控件组织在一个垂直或水平的形式。当布局方向设置为垂直时,它里面的所有子控件被组织在同一列中;当布局方向设置为水平时,所有子控件被组织在一行中。

(1)线性布局的重要特性和属性

◆方向属性(必须),取值可以是vertical或horizontal(类:LinearLayout)

◆对齐属性(可选),控制子控件在线性布局中如何排列和显示(类:LinearLayout)

◆layout_weight属性(可选,应用到每个子控件)指定每个子控件在父级线性布局中的相对重要性(类:https://www.wendangku.net/doc/831266099.html,youtParams)

此外,通用的ViewGroup-style属性也应用到线性布局。这些属性包括:

◆通用布局参数如layout_height (必须)和layout_width (必须) (类:https://www.wendangku.net/doc/831266099.html,youtParams)

◆边距布局参数如margin_top,margin_left,margin_right和margin_bottom (类:ViewGroup. MarginLayoutParams)

◆布局参数如layout_height和layout_width (类:https://www.wendangku.net/doc/831266099.html,youtParams)

(2)给子控件赋权

绝大部分线性布局的属性都是自明性的。然而layout_weight属性需要一些额外的讨论。与其它线性布局属性不同,其它属性应用在线性布局视图本身,而这个属性是应用在它的子控件上的。权值本身应该是一个数字(比如0.5,0.25,0.10,0.10,0.05),如果你把所有子控件的权值加起来等于1(100%)。

子控件的权值控件它在父线性布局中有多“重要”或者留给其多少“空间”。这一点最好通过例子来说明。让我们回到我们前面用的彩虹线性布局。为了允许所有子控件相同地“拉伸”填充线性布局,不管屏幕的大小,我们使用layout_weight来对每个TextView赋予相对权值。因为有7种我们想赋相同权值的颜色,我们将1除以7大约得到0.143.然而,既然我们想要权值之和最后为1,因此5个控件权值设为0.14,另外两个为0.15——一个微小的区别使得总和刚刚好为1,但是这对于第一个和最后一个控件来说还是很明显的。

当屏幕上有足够空间来正确的展示所有控件的时候,这个权值技巧很有效。那就是说,当空间很紧的时候,权值属性可能会被其它因素覆盖,比如视图裁剪或者在TextView下试图不环绕文本。当我们改变rainbow.xml布局文件以包含相似水平布局(layout_height 还是设置为 fill_parent)的时候,这变得很明显。

Android程序用户界面使用布局来定义,而线性布局是最基本的布局类型之一。线性布局允许子控件被组织在一行或一行(水平)或一列(竖直)上。子控件的位置可以使用对齐和权值属性进一步设置。

2.5相对布局

除了将控件显示在一行或一列的线性布局,相对布局也是Android用户界面设计使用得很普遍的布局类型。和其它布局很相似,相对布局可以通过XML布局资源来定义也可以用Java程序来定义。相对布

局的功能就像它的名字表达的一样:它相对其它控件或父控件本身来组织控件。

(1)相对布局的重要特性和属性

◆用于子控件在父布局中居中的规则,包括:水平居中,垂直居中,或者两者皆居中。

◆用于子控件在父布局中排布的规则,包括:在顶部,底部,左,右边缘放置。

◆用于子控件相对于其它子控件排布的规则,包括:在另一个控件顶,底,左,右边缘放置。

◆用于子控件相对于其它子控件放置的规则,包括:在另一个控件上面,底下,左边或右边放置。

同样的,通用的 ViewGroup-style属性也可以应用于相对布局。这些属性包括:

◆通用布局参数比如layout_height(必须)和layout_width(必须)(类:https://www.wendangku.net/doc/831266099.html,youtParams)

◆边距布局参数比如margin_top, margin_left, margin_right和margin_bottom (类:ViewGroup. MarginLayoutParams)

布局参数比如layout_height和layout_width (类:https://www.wendangku.net/doc/831266099.html,youtParams)

(2)相对布局使用技巧

◆这里是一些使用相对布局的技巧。

◆相对布局的子控件必须有唯一的id属性以使规则正确应用。

◆当心循环规则。循环规则发生在两个控件具有互相指向的规则时。如果你在布局设计中使用了循环规则,你将会得到以下错误信息:

IllegalStateException: Circular dependencies cannot exist in a RelativeLayout(相对布局中不允许存在循环依赖)

◆回忆一下相对布局规则的应用被一次处理是很有用的

◆保持你的相对布局规则最小化。这减小了循环规则的机率并且使得你的布局更加可维护和灵活。

◆一般地,记住测试一下你的布局设计在横屏和竖屏模式下,以及在不同的屏幕大小和解决方案下是不是符合预期的。

◆使用相对布局代替嵌套线性布局以改进程序性能和响应能力。

Android程序用户界面使用布局来定义,相对布局是用于使得程序屏幕更加灵活和强大的布局类型之一。相对布局允许子控件相对于其它子控件和相对于父控件(边缘以及水平和垂直居中)来组织。一旦你掌握了如何使用相对布局的规则,它们可以有非常多的用处,使你能够创建复杂布局,而不需要过多嵌套不同的布局,因此也改进了性能。

2.6绝对布局

绝对布局(AbsoluteLayout)是指一个ViewGroup以绝对方式显示它的子视图(View)元素,即以坐标的方式来定位在屏幕上位置。这种布局方式很好理解,在布局文件中编程设置View的坐标,从而绝对地定位。

AbsoluteLayout可以让子元素指定准确的x和y坐标值,并显示在屏幕上。其中坐标(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非有正当理由使用它,因为它会使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

具体实现

使用Eclipse创建一个名为“004”的Android工程。

编写布局文件“res/layour/main.xml”,代码如下所示。

android:id="@+id/AbsoluteLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:text="使用绝对布局"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_x="20dip"

android:layout_y="20dip">

< /AbsoluteLayout>

执行效果如图:

三、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC及Eclipse 4.2、ADT 22.0开发软件

四、实验方法、步骤(或:程序代码或操作过程)

1.界面布局结果如图,如下

线性布局代码:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@style/AppBaseTheme"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:visibility="visible"

tools:context=".LineMainActivity"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:visibility="visible" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/name" />

android:id="@+id/editText1"

android:layout_height="wrap_content"

android:layout_weight="0.80" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:visibility="visible" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/age" />

android:id="@+id/editText2"

android:layout_height="wrap_content"

android:layout_weight="0.80" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:visibility="visible" >

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/height" />

android:id="@+id/editText3"

android:layout_height="wrap_content" android:layout_weight="0.80" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:visibility="visible" >

android:id="@+id/button1"

android:layout_width="73dp"

android:layout_height="wrap_content" android:text="添加数据" />

android:id="@+id/button2"

android:layout_width="65dp"

android:layout_height="wrap_content" android:text="全部显示" />

android:id="@+id/button3"

android:layout_width="72dp"

android:layout_height="wrap_content" android:text="清除显示" />

android:id="@+id/button4"

android:layout_width="match_parent" android:layout_height="wrap_content" android:text="全部删除" />

相对布局代码如下:

xmlns:tools="https://www.wendangku.net/doc/831266099.html,/tools"

android:layout_width="match_parent"

android:layout_height="fill_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

>

android:id="@+id/label"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/editText1"

android:layout_alignParentLeft="true"

android:layout_alignTop="@+id/editText1"

android:text="姓名:" />

android:id="@+id/editText1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:layout_marginRight="15dp"

android:layout_marginTop="10dp"

android:layout_toRightOf="@+id/label"

android:ems="10" />

android:id="@+id/label2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/label1"

android:layout_below="@+id/editText2"

android:layout_marginTop="17dp"

android:text="身高:" />

android:id="@+id/editText2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editText3"

android:layout_alignRight="@+id/editText1"

android:layout_below="@+id/editText1"

android:layout_marginTop="16dp"

android:ems="10" />

android:id="@+id/editText3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editText1"

android:layout_alignRight="@+id/editText1"

android:layout_alignTop="@+id/label2"

android:ems="10" />

android:id="@+id/button2"

android:layout_width="70dp"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/label2"

android:layout_below="@+id/editText3"

android:text="添加数据" />

android:id="@+id/button3"

android:layout_width="70dp"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/button2"

android:layout_alignBottom="@+id/button2"

android:layout_toRightOf="@+id/button2"

android:text="全部显示" />

android:id="@+id/button4"

android:layout_width="70dp"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/button3"

android:layout_alignBottom="@+id/button3"

android:layout_toRightOf="@+id/button3"

android:text="清除显示" />

android:id="@+id/button5"

android:layout_width="70dp"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/button4"

android:layout_alignBottom="@+id/button4"

android:layout_toRightOf="@+id/button4"

android:text="全部删除" />

android:id="@+id/label1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/editText2"

android:layout_alignBottom="@+id/editText2"

android:layout_toLeftOf="@+id/editText2"

android:text="年龄:" />

绝对布局代码如下:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="https://www.wendangku.net/doc/831266099.html,/apk/res/android"

>

android:layout_x="10dip"

android:layout_y="20dip"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="姓名:" />

android:id="@+id/entry"

android:layout_width="246dp"

android:layout_height="wrap_content"

android:layout_x="50dip"

android:layout_y="10dip" />

android:id="@+id/label1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_x="10dp"

android:layout_y="70dp"

android:text="年龄:" />

android:id="@+id/entry1"

android:layout_width="246dp"

android:layout_height="wrap_content"

android:layout_x="50dip"

android:layout_y="60dip" />

android:id="@+id/label2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_x="11dp"

android:layout_y="115dp"

android:text="身高:" />

android:id="@+id/entry2"

android:layout_width="246dp"

android:layout_height="wrap_content"

android:layout_x="50dip"

android:layout_y="110dip" />

android:id="@+id/button1"

android:layout_width="78dp"

android:layout_height="wrap_content"

android:layout_x="5dp"

android:layout_y="156dp"

android:text="添加数据" />

android:id="@+id/button2"

android:layout_width="78dp"

android:layout_height="wrap_content"

android:layout_x="160dp"

android:layout_y="156dp"

android:text="清除显示" />

android:id="@+id/button3"

android:layout_width="78dp"

android:layout_height="wrap_content"

android:layout_x="236dp"

android:layout_y="156dp"

android:text="全部删除" />

android:id="@+id/button4"

android:layout_width="78dp"

android:layout_height="wrap_content"

android:layout_x="83dp"

android:layout_y="156dp"

android:text="全部显示" />

在程序中添加4个按钮的事件处理函数如下:

package com.example.window;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.app.Activity;

import android.content.Intent;

public class LineMainActivity extends Activity {

private Button button;

private Button button1;

private Button button2;

private Button button3;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/831266099.html,yout.relative_main);

button=(Button)this.findViewById(R.id.button2);

button.setOnClickListener(new View.OnClickListener(){

public void onClick(View arg0) {

System.out.println("添加数据");

Intent intent=new Intent(LineMainActivity.this,LineMainActivity.class);

startActivity(intent);

}

});

button1=(Button)this.findViewById(R.id.button3);

button1.setOnClickListener(new View.OnClickListener(){

public void onClick(View arg0) {

System.out.println("全部显示");

Intent intent=new Intent(LineMainActivity.this,LineMainActivity.class);

startActivity(intent);

}

});

button2=(Button)this.findViewById(R.id.button4);

button2.setOnClickListener(new View.OnClickListener(){

public void onClick(View arg0) {

System.out.println("清除显示");

Intent intent=new Intent(LineMainActivity.this,LineMainActivity.class);

startActivity(intent);

}

});

button3=(Button)this.findViewById(R.id.button5);

button3.setOnClickListener(new View.OnClickListener(){

public void onClick(View arg0) {

System.out.println("全部删除");

Intent intent=new Intent(LineMainActivity.this,LineMainActivity.class);

startActivity(intent);

}

});

}

}

五、实验过程原始记录( 测试数据、图表、计算等)

使用LogCat将捕获的按钮事件显示在Eclipse的控制台中结果截图:

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

软件设计报告 ( 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。返回主界面,

软件设计过程实验报告

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

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

实验二_软件设计

武汉工程大学计算机科学与工程学院 《软件工程》实验报告 专业班级实验地点计算机学院403 学生学号指导教师刘菲 学生姓名实验时间 实验项目需求分析 实验类别操作性()验证性()设计性(√)综合性()其它 实验目的及要求1.掌握分析模型向设计模型的转换方法;2.掌握4种类型的模块; 3.掌握系统结构图SC的基本功能和绘制方法;4.掌握程序流程图的基本功能和绘制方法;5.掌握N-S图和PAD图的基本功能和绘制方法 成绩评定表 类别评分标准分值得分合计 上机表现积极出勤、遵守纪律 主动完成实验设计任务 30分 实验报告及时递交、填写规范 内容完整、体现收获 70分 说明: 评阅教师: 日期:年月日

实验内容 1.绘制通用的四种模块类型图。 2.绘制SC图的两种主要成分。 3.某学校设计“成绩录入”程序,由教务处输入成绩信息(学号+课程代码+ 成绩),对程序的要求如下: (1)查询学生信息,确认是否有该考生; (2)查询学生的班级信息; (3)查询课程信息; (4)查询成绩是否重复录入; (5)核对该学生信息、班级信息、课程信息后,在成绩没有重复录入的情况下保存该成绩。 (6)画出数据流图,并按实验指导书中标示方法区分出系统的输入、输出和加工部分。 (7)将已给出的数据流图转换为软件结构图。

4.下列是直接选择排序算法(描述语言:C++类模板): template void SelectSort ( datalist& list ) { //对表list.Vector[0]到list.Vector[n-1]进行排序, n表示当前长度。 for ( int i=0; i

通信软件基础期末考试试卷A卷定稿

通信软件基础2013年期末考试题目 (含参考答案) 一、选择题(总分10分) 1、(1分)快速排序算法是基于( A )的一个排序算法。 A、分治法 B、贪心法 C、递归法 D、动态规划法 2、(1分)当进程因时间片用完而让出处理机时,该进程应转变为(B)状态。 A、等待 B、就绪 C、运行 D、完成 3. (1分)在多道程序环境下,操作系统分配资源的基本单位是( A ) A.进程 B.线程 C.程序 D.作业 4. (1分)文件系统中用(D)管理文件。 A、堆栈结构 B、指针 C、页表 D、目录 5. (1分)在操作系统中,JCB是指(A)。 A.作业控制块 B.进程控制块 C.文件控制块 D.程序控制块 6.(1分)关系模型中3NF是指(A) A.满足2NF且不存在传递依赖现象 B.满足2NF且不存在部分依赖现象 C.满足2NF且不存在非主属性 D.满足2NF且不存在组合属性 7.(1分)将E-R模型转换成关系模型,属于数据库的( C) A.需求分析 B.概念设计 C.逻辑设计D.物理设计 8. (1分)以下属于链表的优点的是(B)(单选) A、用数组可方便实现 B、插入操作效率高 C、不用为节点间的逻辑关系而增加额外的存储开销 D、可以按元素号随机访问 9. (1分)借助于栈输入A、B、C、D四个元素(进栈和出栈可以穿插进行),则不可能出现的输出是(D)。 A、DCBA B、ABCD C、CBAD D、CABD 10.(1分)在视图上不能完成的操作是(C) A. 更新视图 B. 查询 C. 在视图上定义新的基本表 D. 在视图上定义新视图 二、填空题(21分) 1、(2分)一个优秀算法应达到的指标有正确性、可读性、健壮性和高效性。 2、(2分)递归算法的执行构成分为递推和回归两个阶段。 3、(2分)贪心法的基本思想是:略。 4. (1分)若信号量S的初值定义为10,则在S上调用了16次P操作和15次V操作后S的值应该为__9__。 5. (2分)产生死锁的四个必要条件是_互斥条件_、_占有和等待条件_、_不剥夺条件_和_循环等待条件(或答“环路”)_. 6. (1分)在操作系统的存储管理中,由于进行动态不等长存储分配,在内存中形成一些很小的空

仲恺软件设计模式实验指导书

设计模式实验指导 一、实验目的 使用合理的UML建模工具(ROSE或者Visio)和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括简单工厂模式、工厂方法模 式、抽象工厂模式、单例模式、适配器模式、组合模式、装饰模式、外观模式、、命令模式、迭代器模式、观察者模式、策略模式等12种模式。 二、实验内容 根据以下的文档描述要求,使用合理的UML建模工具(ROSE或者Visio)和任意一种面向对象编程语言实现以下设计模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。 (1)、简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进 行修改并注意女娲的变化。 (2)、工厂方法模式 海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition) 。使用工厂方法模式描述该场景,绘制类图并编程实现。 (3)、抽象工程模式 电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。

(4)、单例模式 用懒汉式单例实现在某系统运行时,其登录界面类LoginForm只能够弹出一个,如果第二次实例化该类则提示“程序已运行”。绘制类图并编程实现。 提示:不要求做界面,用类模拟界面就可以了。 (5)、组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、音频视频文件MediaFile。绘制类图并编程实现。 (6)、适配器模式 现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找) (7)、装饰模式 某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook() 。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统,绘制类图并编程实现。 (8)、外观模式 在电脑主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬

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

软件项目管理课程设计报告 学院: 专业: 班级: 学号: 姓名: 指导教师: 时间: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日前将工

软件工程实验二66217

软件设计实验 一、实验目的 学会使用Case工具完成描述软件结构的软件结构图和软件层次图的设计,并熟练地掌握几种常用的软件详细设计的工具,如程序流程图、盒图、PAD图和判定表,并能把给定的软件问题描述转化为过程设计结果。 二、实验内容 1、软件结构设计: (1)采用visio绘制教材的图4.26中的软件结构图; (2)采用visio绘制教材的图4.41的软件层次图。 (3)分析如下所示的数据流图,并把它转换成软件结构图,然后 用visio把结果画出来。(注意,请用结构图) 图1 某系统的数据流图 2、软件的详细设计:某航空公司规定,乘客可以免费托运重量不超过20公斤的行李,当行李重量超过20公斤,对头等舱的国内乘客超重部分每公斤收费6元,对其他舱的国内乘客超重部分每公斤

收费

8元,对外国顾客超重部分每公斤收费比国内乘客多1.5倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。 实验包含三部分的内容: a)用word设计描述其详细设计结果的PAD图、判定表。 b)用viso画出它的程序流程图,并计算它的Mccabe程序复杂度。 (要求把计算过程写到实验报告中) 三、实验结果 【本人用诚信保证,实验都是本人自己实践完成的,标准原创】 1.(1)教材的图4.26中的软件结构图

(2)教材的图4.41的软件层次图

2. a)PAD图

开 开 开开 开开 开开 开开 T F P1 P1开开开20kg T P2 F P2开开开开开 P3 开开开开开开开开6开/kg 开开开开开开开开9开/kg 开开开开开开开开3开/kg P3开开开开开开开开 T F P4 P5 开开开开开开开开 4.5开/kg P6 T F 开开开开开开开开8开/kg 开开开开开开开开4开/kg 开开开开开开开开12开/kg 开开开开开开开开6开/kg P4开P5开开开开开开开 P7 P8 P7开P8开开开开开开开 PAD 开 P6开开开开开开开开开 判定表【原创】

通信软件基础 Linux简答与应用题简化版

简答题与应用题: 1、 试简要说明Linux 内核构成,并简要说明各部分的功能? 答: MMU :内存管理单元,完成地址映射(应用虚拟地址方式) VFS :虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方 便传输 SCHED :进程调用单元。支持多任务运行。利用软件中断的特点,将CPU 的时间线划分给各个任务,完成多任 务管理 IPC :进程间通信单元。实现多个不同程序在运行时可以进行数据交换、通信。 NET :网络。网络不做为通用设备,以特定工作单元存在。负责计算机系统与其他计算机相互通信的接口。 2、 通常可采用哪几种方式来开发嵌入式Linux 系统?给出示意图。 答:方式有: (1)连接型(宿主机/目标板链接开发) (2)可移动连接型(利用可移动的存储器作为宿主机/目标板之间的中介) (3)标准化(在开发板上进行独立开发) 3、 为什么要建立交叉开发平台?在何种情形下可以不必建立? 答:嵌入式系统的构造决定。嵌入式处理器多为专用的cpu ,1、必须将用C 编写的程序编译成能在该专用平台 上运行的机器码。2、C 语言库是必需的,必需提供能在专用cpu 上运行的库的二进制代码。以上两点要求有这么一种编译工具能够实现两种CPU 之间的交叉。当执行应用程序的平台和用来建立应用程序的平台相同时就可以不建立交叉开发平台。 4、 【NO 】试简要叙述GNU 及其所提供的开发工具链。 答: GNU 是“GNU's Not Unix”的递归缩写,它是一个自由软件工程项目组织。提供各种开源代码。提供一 整套的开发工具链包括:GNU 工具链基础,内核头文件安装程序,Binutils (二进制工具)的安装程序,引导编译器安装程序,C 库安装程序,全编译器安装程序,完成工具链的设置。 (1) ? 第二引导加载程序 ? 内核 ? 根文件系统 (2) (3)

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

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

专业年级: 学生姓名: 任务下达日期: 课程设计日期: 课程设计题目:面向过程 一.需求分析 设计任务:软件课程设计任务书 题目七: 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()

实验二选择结构程序设计实验报告

实验三:C程序的选择结构 一、实验目的和要求 (1)了解 C 语言表示逻辑量的方法(以0 代表“假”,以非0 代表“真”)。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟练掌握if 语句的使用(包括if 语句的嵌套)。 (4)熟练掌握多分支选择语句—switch 语句。 (5)结合程序掌握一些简单的算法。 (6)进一步学习调试程序的方法。 二、、实验软硬件配置 1.硬件配置 电脑 2.软件配置 Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0 集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时 改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提 示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正 确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容: 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 x x 1 (1)有一函数:y 2x 1 1 x 10 3x 11 x 10 写程序,输入x 的值,输出y 相应的值。用scanf 函数输入x 的值,求y 的值。程序如下:#include int main() {float x,y; int i; while(i<1000) { printf(" 请输入x 的值:"); scanf("%f",&x); if(x<1) y=x; else if(1<=x&&x<10)

软件设计实验报告

通达学院 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.wendangku.net/doc/831266099.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());

局域网点对点通信软件设计与实现

《网络编程技术》 课程设计报告 课程设计题目:局域网点对点通信软件与实现作者所在系部:计算机科学与工程系 作者所在专业:网络工程 作者所在班级: 作者姓名: 作者学号: 指导教师姓名: 完成时间: 2013年07月10日

课程设计任务书

摘要 所谓网络中的点对点通信是实现网络上不同计算机之间,不经过任何中继设备而直接交换数据或服务的一种技术。由于允许网络中任何一台计算机可以直接连到网络中的其他计算机,并与之进行数据交换,这样既可以消除中间环节,也使得网络上的沟通变的更加容易、更加直接。本文介绍的是一种是用Winsock编程技术,基于TCP/IP协议的、面向连接的流式套接字网络通信编程设计。 局域网即时通讯软件使用TCP协议作为传输层的协议,采用点对点模式服务,不需要服务器支持,使局域网用户的使用更加方便和高效。它可以实现局域网用户的自动检测,用户间文本信息的交流,文件的传输等功能。 本系统使用Visual Studio 2010作为开发工具,将.NET中的一些技术运用到系统中关键词:点对点;TCP/IP;Socket;UDP;P2P

目录 摘要 (2) 目录 (3) 第1章绪论 (4) 1.1课题研究现状分析 (4) 1.2选题的目的及意义 (4) 第2章系统需求分析 (5) 2.1 问题的提出 (5) 2.2 系统的设计目标 (5) 第3章系统总体设计 (6) 3.1系统功能设计 (6) 3.2功能模块的说明 (7) 3.2.1初始化(广播用户信息) (7) 3.2.2用户列表管理 (7) 3.2.3文本信息传输 (7) 3.2.4文件传输 (7) 3.2.5发送心跳包 (7) 第4章系统实现 (8) 4.1初始化模块的设计和实现 (8) 4.1.1监听端口 (8) 4.2 广播消息 (8) 4.3 文本消息的发送和接收 (9) 4.4 文件的发送和接收 (12) 4.5发送心跳包 (14) 第5章课程设计总结 (16) 5.1 主要问题及解决办法 (16) 5.2 课程设计体会 (16) 5.3 自我评定 (16) 参考文献 (17)

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

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

中南大学软件体系结构设计模式实验二

中南大学软件体系结构设计模式实验二 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

实验3 设计模式实验二 实验学时: 4 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它) 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括职责链模式、命令模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验内容 1. 某企业的SCM(Supply Chain Management,供应链管理)系统中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。如下图所示: 试使用职责链模式设计并模拟实现该系统。 2. 房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。 3. 某软件公司欲开发一个基于Windows平台的公告板系统。系统提供一个主菜单(Menu),在主菜单中包含了一些菜单项(MenuItem),可以通过Menu类的addMenuItem()方法增加菜单项。菜单项的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括OpenCommand(打开命令),CreateCommand(新建命令),EditCommand(编辑命令)等,命令类具有一个execute()方法,用于调用公告板系统界面类(BoardScreen)的open()、create()、edit()等方法。现使用命令模式设计该系统,使得MenuItem类与BoardScreen类的耦合度降低,绘制类图并编程实现。 4. 某实时在线股票软件需要提供如下功能:当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的所有股民。试使用观察者模式设计并实现该系统,要求绘制相应的类图并编程模拟实现。 5. 某公司欲开发一套机房监控系统,如果机房达到某一指定温度,温度传感器(Thermosensor)将自动传递信号给各种响应设备,例如警示灯(CautionLight)将闪烁(flicker())、报警器(Annunciator)将发出警报(alarm())、安全逃生门(SecurityDoor)将自动开启(open())、隔热门(InsulatedDoor)将自动关闭(close())

即时通讯软件的设计及实现

即时通讯软件的设计与实现 1 系统实现模块 1.1 服务端模块 服务端主要包括三个模块: 1.网络模块,建立TCP服务器,负责监听端口,与客户端建立连接并接受和发送数据。 2.应用模块,负责处理从网络模块接收到的数据,予以分析处理,进行转发或对数据库进行操作,并返回相关信息。 3.数据层,数据层用来与数据库建立连接,应用模块必须通过数据层来进行数据库的操作。 图4.1 系统模块图

1.2 客户端模块 用户端包块以下模块: 1.用户界面模块,此模块包括客户端的操作界面,由NetBeans编写的GUI,进行了较多的美化,采用偏向Vista的风格。 2.网络模块,此模块包括两个小模块,TCP模块用于和服务器端通讯,而UDP模块则负责和客户端进行P2P通讯。 3.聊天模块,此模块负责在用户聊天时候,对聊天的数据进行封装,对聊天的图片也进行压缩,以适用网络传输。在接受到聊天数据之后,又会对聊天数据进行分解操作,最后生成聊天内容。 4.群组模块,此模块包括群组聊天、群组的创建、管理、更新等功能。 5.文件传输模块,此模块用于实现客户端之间的文件传输功能。 6.视频聊天模块,此模块用于实现客户端之间的视频聊天功能。 7.系统设置记录模块,此模块用于实现保存聊天记录,登录日志,以及保存系统设置信息的功能。 图4.2 客户端模块图

2 数据库设计 2.1用户表设计 用户表是系统中的基础表,主要用来记录用户注册时的各种信息,此表还有一个从表userlogin表用来记录用户登录和状态信息。[12] Userinfo表 UserLogin表

2.2 用户关系表 用户关系表是用来保存用户之间的好友关系的数据表,查询好友列表的时候要从此表中查询与自己ID想关联的好友ID,type字段可以设置两者的关系,其中1为好友关系,0为黑。 其他表,如组群表,族群信息表就不在此一一列出。 3 系统模块的详细设计 此章节将叙述系统部分模块的设计方法和具体实现。 3.1 网络模块的设计实现 本系统采用TCP和UDP混合的网络通讯,客户端与服务器之间登录验证时采用TCP连接,登录之后,客户端与服务器采用UDP方式保持通讯,客户端和客户端之间采用UDP连接,如果无法直接连接,通过服务器申请UDP穿透NAT,如果失败,则消息通过服务器中转传递。 因为要在网络通讯中直接传递对象,故采用基于Java NIO的I/O 的Cindy异步框架,Cindy是一个Java异步I/O框架,提供了一个统一高效的模型,同时支持TCP、UDP以及Pipe,并能够方便的在异步和同步操作之间进行切换。目前其实现是基于Java NIO,并计划通过JNI

软件设计实验一

南京信息工程大学实验(实习)报告 实验(实习)名称对象设计实验日期得分指导教师王海彬 系计算机与软件学院专业软件工程年级13班次2姓名张慧聪学号20131344055 一、实验目的 1.refinement class diagram, design the methods and attributes of that 2.clear the relationship between classes 3.know the way of painting class diagram 二、实验内容 The description of each class in entity class: A. visitors The class name: visitors Attribute: visitors ID Operation: browse the web, register information B. user The class name: user Attribute: user name, user password, user permission Operation: add user, delete user, change user, privilege allocation C. job hunter The class name: job hunter Operation: change password, update personal data, check the mailbox, download resume form work, deliver resume, search recruitment information D. recruiter The class name: recruiter Operation: check the enterprise mailbox, publish recruitment information, update enterprise information, reply to applicant, browse the resume, change password E. administrator The class name: administrator Operation: management news, management password, management of job seekers, management recruiters F. personal information The class name: personal information Attribute: name, age, gender, personal mailbox, address, educational background, job requirements G. resume The class name: resume Attribute: resume number,resume type,job application,date of submission Operation: resume input, resume submission, resume inquiry, resume printing H. enterprise data The class name: enterprise data Attribute: enterprise name, enterprise contact information, enterprise establishment information, enterprise development scale, enterprise mailbox, enterprise intention, enterprise employee information I. recruitment information

软件工程实验报告

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

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

相关文档