计软实验二
- 格式:doc
- 大小:184.00 KB
- 文档页数:8
北航计软实验报告一————————————————————————————————作者: ————————————————————————————————日期:计算机软件基础上机实验报告(一)XXXXXX班XXX1.实验目的掌握线性表在顺序分配下的插入与删除运算;掌握线性表的链式存储结构;掌握插入排序的方法;并掌握一种产生随机数的方法。
2.实验内容1.产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件中。
2.编制一个程序,依次实现以下功能:(1)ﻩ定义一个有序(非递减)线性表,其最大容量为1000,初始时为空。
(2)ﻩ从由1产生的数据文件中依次取前N个随机整数,陆续插入到此线性表中,并要求在每次插入后保持线性表的有序性。
最后将此有序线性表打印输出。
(3)ﻩ在由(2)产生的线性表中,依在1中产生的次序逐个将元素删除,直至表空为止。
3. 以N=100及N=400分别运行2的程序,并比较它们的运行时间。
4. 编写一个程序,用插入排序依次将1中产生的1000个随机整数链接成有序链表(不改变原随机数在存储空间中的顺序)。
3.源代码与运行结果#include<stdio.h>#include<stdlib.h>#include<time.h>/**1_1产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件(1_1.txt)中。
**/main(){FILE *fo=fopen("1_1.txt","w");int i,j;srand((unsigned)time(0));for(i=0;i<=999;i++)fprintf(fo,"%d\n",rand()%1000);fclose(fo);printf("1000个随机数已输出至目录下1_1.txt文件\n");system("pause");}输出文件1_1.txt如下:(因输出文本长度缘故,此处只截了一幅图)#include<stdio.h>#include<stdlib.h>#include<time.h>/**1_2从数据文件(1_1.txt)中读取数据,进行插入排序,然后屏幕输出。
2014 年 12 月 7 日课程名称:软件质量保证与测试实验名称:功能性测试班级:姓名:同组人:指导教师评定:签名:一、实验目的掌握边界值、等价类、决策表测试的基本功能性测试方法二、实验要求分别用健壮性测试(边界值方法)、弱健壮等价类测试(等价类方法)和决策表测试技术分别对三角形问题|、Nextdate问题和佣金问题设计测试用例,并分别对实验一所编写的三个程序进行测试。
三、实验步骤1.运行Visual C++开发工具;2.在开发环境中完成程序设计,并进行调试;3.在程序没有语法错误的前提下重点检查程序的逻辑错误;4.对程序进行调试,并记录实验数据。
四、实验内容1.三角形问题问题描述:输入三角形三条边a、b、c,三条边有效取值范围为[1,200],判断该三角形是什么三角形,输出内容具体包括:(1)等边三角形;(2)等腰三角形;(3)直角三角形;(4)等腰直角三角形;(5)一般三角形;(6)非三角形;(7)输入数据非法测试方法:边界值测试—健壮性测试,由于三角形三边边界较多,通过边界值测试能够更多地发现边界处的错误,缺陷测试用例的设计12100200110一般三角形一般三角形Passed131********一般三角形一般三角形Passed141001100输入非法输入非法Passed1580801等腰三角形等腰三角形Passed16901102非三角形无输出Failed截图31784114197一般三角形一般三角形Passed181********一般三角形一般三角形Passed19100110201一般三角形一般三角形Passed截图1截图2截图32.佣金问题问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。
枪机卖45美元,枪托卖30美元,枪管卖25美元。
销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。
软件工程实验二软件工程实验二引言在软件工程领域,实验是学习和巩固相关知识的重要方式之一。
实验二是软件工程课程中的一项重要实践,旨在让学生了解软件开发过程中的需求分析和设计阶段,并通过实践,掌握软件工程的基本技巧和方法。
本文档将介绍实验二的内容、目的和具体要求,并给出一些实验中可能遇到的问题和解决方案。
通过阅读本文档,学生可以更好地理解和完成实验任务。
实验目的实验二的目的是让学生学会进行需求分析和设计,并通过合理的系统设计来满足用户的需求。
通过本次实验,学生将了解以下内容:- 需求分析的基本概念和方法- 系统设计的基本原则和技巧- 使用UML工具进行建模和设计实验内容实验二的内容主要包括需求分析和系统设计两个部分。
在需求分析中,学生需要对给定的需求进行分析和理解,并编写需求规格说明书。
在系统设计中,学生需要根据需求规格说明书,设计出满足需求的系统结构和功能模块,并进行相应的UML建模。
具体的实验步骤如下:1. 需求分析部分- 仔细阅读并理解实验二所提供的需求文档- 根据需求文档,编写需求规格说明书,包括功能需求和非功能需求- 确定系统的用例,并绘制用例图2. 系统设计部分- 根据需求规格说明书和用例图,进行系统架构设计,确定系统的组成模块和模块之间的关系- 绘制类图,定义类的属性、操作和关联关系- 绘制时序图,描述类之间的交互和消息传递过程可能遇到的问题和解决方案在实验过程中,学生可能会遇到一些问题,以下是一些建议的解决方案:1. 对需求理解不清:如果对需求文档理解不清,可以参考相关的软件工程教材或网络资料,学习和了解需求分析的基本概念和方法。
2. UML建模不熟悉:如果对UML建模的相关知识不熟悉,可以通过学习UML教程或参考资料,加强对UML建模语言的理解和应用。
3. 架构设计不合理:在进行系统设计时,可能会遇到架构设计不合理的情况。
此时,可以与同学或老师进行讨论,寻求意见和建议,或者参考相关的系统设计案例。
实验二系统总体设计
一、实验目的
1、掌握将数据流图映射成软件体系结构的原理
2、掌握变换流分析
3、掌握事务流分析
二、实验仪器
安装visio 2013软件的计算机一台,或使用在线processOn平台。
三、实验内容
1、将下列数据流图转换成SC软件结构图。
2、按照下列环境描述,完成系统结构化分析和设计部分工作。
要求:根据要求画出该系统的数据流图,并将其转换为软件结构图。
高考录取统分子系统有如下功能:
(1)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件。
(2)计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
3、将下列数据流图转换成SC软件结构图。
(事务流)
4、将下列数据流图转换成SC软件结构图。
(事务流)
四、实验步骤
1、
2、
数据流图:
结构图:
3、步骤:
五、实验报告要求
1.整理实验结果。
2.小结实验心得体会。
实验二〔一〕异方差性【实验目的】掌握异方差性的检验及处理方法【实验内容】建立并检验我国制造业利润函数模型【实验步骤】【例1】表1列出了1998年我国主要制造工业销售收入与销售利润的统计资料,请利用统计软件Eviews建立我国制造业利润函数模型。
一、检验异方差性⒈图形分析检验⑴观察销售利润〔Y〕与销售收入〔X〕的相关图(图1):SCAT X Y图1 我国制造工业销售利润与销售收入相关图从图中可以看出,随着销售收入的增加,销售利润的平均水平不断提高,但离散程度也逐步扩大。
这说明变量之间可能存在递增的异方差性。
⑵残差分析首先将数据排序〔命令格式为:SORT 解释变量〕,然后建立回归方程。
在方程窗口中点击Resids按钮就可以得到模型的残差分布图〔或建立方程后在Eviews工作文件窗口中点击resid对象来观察〕。
图2 我国制造业销售利润回归模型残差分布图2显示回归方程的残差分布有明显的扩大趋势,即说明存在异方差性。
⒉Goldfeld-Quant检验⑴将样本安解释变量排序〔SORT X〕并分成两部分〔分别有1到10共11个样本合19到28共10个样本〕⑵利用样本1建立回归模型1〔回归结果如图3〕,其残差平方和为。
SMPL 1 10LS Y C X图3 样本1回归结果⑶利用样本2建立回归模型2〔回归结果如图4〕,其残差平方和为。
SMPL 19 28 LS Y C X图4 样本2回归结果⑷计算F 统计量:12/RSS RSS F ==,21RSS RSS 和分别是模型1和模型2的残差平方和。
取05.0=α时,查F 分布表得44.3)1110,1110(05.0=----F ,而44.372.2405.0=>=F F ,所以存在异方差性⒊White 检验⑴建立回归模型:LS Y C X ,回归结果如图5。
图5 我国制造业销售利润回归模型⑵在方程窗口上点击View\Residual\Test\White Heteroskedastcity,检验结果如图6。
实验报告程名称课大学计算机基础实验名称 Excel图标的创建与编辑姓名__ __ 寸利芳 __ ___学号_ 201107010125 __ 专业班级_计1101 实验日期___2011_ _ 年10_月_27_日成绩_____ __ 指导教师___杨文阳__一、实验目的。
1、学习图标的制作方法。
2、掌握图标的制作、编辑、修饰等基本操作。
二、实验内容。
按样例创建表格,然后按下面的操作建立图标,保存在D盘,文件名为Excel2.xls。
1.选定含有需要绘制数据的区域,嵌入柱形图。
2、为柱形图加入标题:“西安德华公司2009年销售统计表”。
3、对创建的图标修饰。
放大该图表。
将“类型合计”删除。
为“季度合计”增加以直显示的数据标记。
图表标题设置为方正姚体、18磅,选用圆角边框。
横坐标变为“386型”、“486型”、“586型”、“季度合计”。
将图标类型改为折线图。
三、操作过程。
①选择“插入”菜单下的“图表”命令,打开图表向导对话框创建嵌入式柱形图。
②选择所创建的图标,选择图标下的图表选项命令,利用标题选项卡加入图表标题。
对图表操作。
①选择图标,选族图标周围的某一手柄,按住鼠标键调整图表的大小。
②选择图标,单击右键,选择源数据,在此对话框中重新定义图表所使用的区域。
③选中季度合计的数据系列,单击右键,选择数据系列格式命令,在此对话框中,选择数据标志选项卡,选中值。
④选中图表标题设置为方正姚体、18磅;单击右键,选择图标区格式命令,在图案选项卡中选择圆角。
⑤选择一个数据系列,单击右键,选择数据系列格式,在此对话框中选择系列次序,选定486型,并向下移。
⑥选族图标,单击右键,选择图标类型命令,选择折线图。
《软件工程》实验教案一、实验目的1. 让学生了解软件工程的基本概念、原则和方法。
2. 培养学生运用软件工程知识分析和解决实际问题的能力。
3. 加深学生对软件开发过程的理解,提高团队协作和沟通能力。
二、实验内容1. 实验一:软件工程概述了解软件工程的定义、目的、历史和发展趋势。
掌握软件开发过程中的基本活动和相关工具。
2. 实验二:需求分析学习需求分析的基本方法,如问卷调查、访谈、观察等。
实践使用需求分析工具,如UseCase图、DFD图等。
3. 实验三:软件设计掌握软件设计的基本原则,如模块化、抽象、封装等。
学习软件设计的方法,如结构化设计、面向对象设计等。
4. 实验四:编码与实现熟悉编程语言的基本语法和编程规范。
5. 实验五:软件测试了解软件测试的目的、方法和过程。
学习使用测试工具进行单元测试、集成测试和系统测试。
三、实验步骤1. 实验一:软件工程概述讲解软件工程的定义、目的、历史和发展趋势。
介绍软件开发过程中的基本活动和相关工具。
2. 实验二:需求分析讲解需求分析的基本方法。
练习使用需求分析工具,如UseCase图、DFD图等。
3. 实验三:软件设计讲解软件设计的基本原则和方法。
练习进行结构化设计和面向对象设计。
4. 实验四:编码与实现讲解编程语言的基本语法和编程规范。
5. 实验五:软件测试讲解软件测试的目的、方法和过程。
练习使用测试工具进行单元测试、集成测试和系统测试。
四、实验要求1. 实验一:软件工程概述2. 实验二:需求分析完成一个简单的需求分析案例,绘制UseCase图和DFD图。
3. 实验三:软件设计完成一个简单的软件设计案例,包括结构化设计和面向对象设计。
4. 实验四:编码与实现5. 实验五:软件测试五、实验评价1. 实验一:软件工程概述评价学生对软件工程基本概念的理解程度。
2. 实验二:需求分析评价学生对需求分析方法的掌握程度。
3. 实验三:软件设计评价学生对软件设计原则和方法的掌握程度。
软件工程实验二软件工程实验二1. 实验背景软件工程实验二是软件工程课程的实践性实验环节,旨在帮助学生加深对软件工程原理和方法的理解,并通过实践掌握相关的技术和工具。
本实验将重点围绕软件测试展开,学生需要学习并运用测试策略、测试用例设计、测试执行等软件测试的基本知识和技术。
2. 实验目标本实验的主要目标如下:1. 掌握软件测试的基本概念和流程;2. 学习并运用常用的测试策略和测试用例设计方法;3. 熟悉常见的软件测试工具和环境;4. 进行实际的软件测试实践,提高解决问题、分析问题和沟通协作的能力。
3. 实验内容3.1 实验准备在开始实验之前,需要进行一些准备工作:1. 了解软件测试的基本概念和流程;2. 学习并掌握常用的测试策略和测试用例设计方法;3. 选择合适的软件测试工具,并进行安装和配置;4. 根据实验要求选择合适的实验项目,并进行代码的准备。
3.2 实验步骤1. 分析实验项目的需求和设计文档,理解项目的功能和逻辑;2. 根据需求和设计文档,制定测试策略和测试计划;3. 进行测试用例设计,包括黑盒测试和白盒测试;4. 根据测试用例,编写测试脚本或测试程序;5. 使用选择的测试工具执行测试用例,并记录测试结果;6. 分析测试结果,修复问题,并重新执行测试用例,直至通过所有测试用例;7. 撰写实验报告,测试过程和结果,并提出改进建议。
4. 实验要求1. 按照实验内容和步骤完成实验,确保测试结果准确;2. 实验报告中需要包含测试策略、测试用例设计、测试工具选择和使用情况、测试结果分析等内容;3. 实验报告需要清晰、有条理,并注明实验人员的姓名和学号。
5. 实验评分标准实验评分主要根据以下几个方面评估:1. 实验步骤的完整性和正确性;2. 测试策略和测试用例设计的合理性;3. 测试工具的选择和使用情况;4. 测试结果分析的深度和准确性;5. 实验报告的结构和表达风格。
6. 实验参考资料1. 《软件工程》(第5版),作者:Ian Sommerville2. 《软件测试基础教程》(第2版),作者:张彩云、陆俊林、杨玉飞3. 《软件测试技术》(第3版),作者:陈艳、章伟、崔海云7. 实验通过本次实验,我对软件测试的基本流程和方法有了更深入的理解,学会了运用测试策略和测试用例设计方法进行软件测试。
软件设计实验
一、实验目的
学会使用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图
判定表【原创】
程序流程图
开开开开开
复杂度计算过程:
V(G)=m-n+1
V(G):表示有向图G中的环数;
m:为有向图G中的弧数;
n:有向图G中的节点数;
m=32,n=24,V(G)=32-24+1=9 得复杂度为9。
实验二二叉树1. 实验目的掌握二叉树的存储结构2. 实验内容1.对给定二叉树用链式链式存储结构;利用队列与栈对二叉树进行运算。
2.按层次输出所有结点。
3.输出所有叶子结点。
4.将所有左右子树值交换。
3. 实验步骤1.分别编制实验内容中题2、3、4的三个子程序。
2.以上图所示的二叉树为例编制主程序,实现下述功能,并运行这个程序。
(1)输入二叉树用链式结构存储;(2)调用题2的子程序,并输出结果;(3)调用题3的子程序,并输出结果;(4)调用题4的子程序,并输出结果;3.自行设计一棵二叉树,重复步骤2。
4.整理程序清单与所有结果,并写出实验报告。
4. 方案设计(1)二叉树的链式存储结构二叉树的每一个结点i有三个域:值域V(i),左链域L(i),右链域R(i)。
我们分别用三个一维数组表示它们,并用头指针HBT指向二叉树的根结点。
具体存储方案由读者自行考虑。
(2)按层次输出所有结点为了达到按层次扫描结点的目的,需要设置一个容量足够大的循环队列(可以用一个首尾相接的一维数组模拟)。
初始时,将根结点序号入队。
然后每次从队列中退出一个结点序号,将此结点的值及左右链指针输出,且依次将此结点的左右链指针入队。
这个过程一直进行到队列空为止。
设循环队列数组为cq(1:m),其头尾指针分别为front与rear,则按层次输出所有结点的算法如下:IF HBT = 0 THEN RETURN “ THIS TREE IS EMPTY”Front ←m, rear← mADD ( cq, HBT, front, rear )WHILE front ≠rear DO{DEL ( cq , i, front ,rear )OUTPUT ( L( i ) , V( i ) ,R ( i ))IF L( i )≠0 THEN ADD (cq , L( i ), front, rear)IF R( i )≠0 THEN ADD (cq , R( i ), front, rear)}RETURN在这个算法中的ADD和DEL分别为入队和退队运算的两个过程,其算法(不考虑溢出情况)如下:ADD (cq,i,front,rear)rear←rear + 1IF rear = m + 1 THEN rear ←1cq (rear)←iRETURNDEL (cq, i, front, rear )front ←front + 1IF front = m+ 1 THEN font←1i←cq (front )RETURN(3)输出所有叶子结点叶子结点的左右指针域均为零。
因此,为了输出所有叶子结点,需要设置一个容量足够大的栈S(可以用一个一维数组模拟它,栈底在数组的第一个元素处)。
具体过程是:从根结点开始扫描二叉树,如果扫描的当前结点的左右均为零,则输出次叶子结点;否则将非零的右指针和左指针值推入堆栈。
然后从栈中退出一个结点序号重新进行这个过程,直至栈空为止。
其算法如下:IF HBT = 0 THEN RETURN “THIS TREE IS EMTPY ”top←0PUSH (S,HBT,top)WHILE top ≠0 DO{POP(S,i,top)IF (L(i)=0)and (R(i)=0)THEN OUTPUT V(i)ELSE{IF R(i)≠0 THEN PUSH (S,R(i),top)IF L(i)≠0 THEN PUSH (S,L(i),top)}}RETURN其中PUSH 和POP分别为入栈和退栈的过程,其算法由读者自行考虑。
(4)将所有左右子树值交换这个问题的处理和输出所有叶子结点的问题很类似,只要将非叶子结点的左右指针交换即可,其算法如下:IF HBT = 0 THEN RETURN “THIS TREE IS EMPTY”top ←0PUSH (S,HBT,top)WHILE top≠0 DO{POP(S,i,top)IF (L(i)≠0)or (R(i)≠0)THEN{L(i)↔R(i)IF L(i)≠0 THEN PUSH (S,L(i),top)IF R(i)≠0 THEN PUSH (S,R(i),top)}}RETURN5.源代码1.按层次输出所有节点#include "stdio.h"int Front=9;int Rear=9;int k=1;ADD(int *cq,int i){Rear=Rear+1;if (Rear==10)Rear=1;cq[Rear]=i;return;}DEL(int *cq){Front=Front+1;if (Front==10)Front=1;k=cq[Front];return;}main(){int V[11]={0,15,98,6,20,10,45,30,40,60,70};int L[11]={0,2,4,6,7,0,0,0,0,10,0};int R[11]={0,3,5,0,8,0,9,0,0,0,0};int head=1;int cq[10];int n;ADD(cq,head);while(Front!=Rear){DEL(cq);printf("%d is the %dth number of the tree:\n",V[k],k); if (L[k]!=0){ADD(cq,L[k]);printf("its left is %d\n",V[L[k]]);}else printf("it has no left tree!\n");if (R[k]!=0){ADD(cq,R[k]);printf("its right is %d\n",V[R[k]]);}else printf("it has no right tree!\n");}return 0;}2.输出所有叶子结点#include "stdio.h"int Front=9;int Rear=9;int k=1;ADD(int *cq,int i){Rear=Rear+1;if (Rear==10)Rear=1;cq[Rear]=i;return;}DEL(int *cq){Front=Front+1;if (Front==10)Front=1;k=cq[Front];return;}main(){int V[11]={0,15,98,6,20,10,45,30,40,60,70};int L[11]={0,2,4,6,7,0,0,0,0,10,0};int R[11]={0,3,5,0,8,0,9,0,0,0,0};int head=1;int cq[10];int n;ADD(cq,head);while(Front!=Rear){DEL(cq);if (L[k]==0&&R[k]==0)printf("%d ,the %d number of the tree,is the leaf of the tree\n",V[k],k); if (R[k]!=0)ADD(cq,R[k]);if (L[k]!=0)ADD(cq,L[k]);}}3. 将所有左右子树值交换#include "stdio.h"int rear=9,front=9,k=1;ADD(int* cq,int i){rear=rear+1;if(rear==10) rear=1;cq[rear]=i;return 0;}DEL(int* cq){++front;if(front==10) front=1;k=cq[front];return 0;}main(){int V[11]={0,15,98,6,20,10,45,30,40,60,70};int L[11]={0,2,4,6,7,0,0,0,0,10,0};int R[11]={0,3,5,0,8,0,9,0,0,0,0};int cq[10];ADD(cq,1);int temp;while(front != rear){DEL(cq);printf("%d is the %dth number\n",V[k],k);if(L[k]!=0||R[k]!=0){temp=L[k];L[k]=R[k];R[k]=temp;}if(L[k]!=0){ADD(cq,L[k]);printf("the left is %d\n",V[L[k]]);}if(R[k]!=0) {ADD(cq,R[k]);printf("the right is %d\n",V[R[k]]);}}return 0;}6. 运行结果1.按层次输出所有节点2.输出所有叶子结点共有四个叶子结点,分别是10,40,30,70。
3. 将所有左右子树值交换实际的树的结构为:7.实验感想本次实验使我对二叉树的存储结构有了以一定的了解,能够更加灵活地使用二叉树进行程序编写,使得程序更加简洁明朗。
在以后的学习中我会更多的应用到二叉树的知识。