第一篇:软件实验
《软件技术基础》实验报告
实验一:
顺序表的操作
班 级
0801210 学 号
2012212982 姓 名
蒲米
栈,然后编写进栈和出栈的操作,读取栈顶元素。这里栈有顺序栈和链式栈两种,顺序栈是利用一种动态存储的数组定义,而链式栈是一个无头节点,只是在头部插入和删除元素的单链表。使用顺序栈要先为存储元素的数组申请一个空间,然后编写进栈和出栈取栈顶元素的操作。#include
printf(“此栈表已满”);pst->top++;pst->st[pst->top]=x;} void pop(struct stack *pt,int *p){ if(pt->top==-1)
printf(“此栈表为空”);*p=pt->st[pt->top];pt->top--;} void main(){ struct stack T;struct stack *t=&T;int a[n];int i;printf(“请输入数组的值:”);for(i=0;i<5;i++){
scanf(“%d”,&a[i]);} T.top=-1;for(i=0;i<5;i++)
push(t,a[i]);for(i=0;i<5;i++){
pop(t,&a[i]);
printf(“%dn”,a[i]);
}
}
四、算法。
顺序栈的算法:
1、顺序栈的初始化。
2、进栈操作
3、出栈操作
4、取栈顶元素。链式栈的算法:
1、进栈操作
若栈不满,则在栈顶插入元素x作为新的栈顶。
2、出栈操作
若栈不空,则删除栈顶的元素,用e返回其值。
五、实验心得体会:
通过本次实验我学习了栈这种特殊形式的线性表,就是只能从一端进行操作,逻辑和一般的线性表相同,只是元素的操作方式不同。
实验五:
队列的操作
一、实验目的:
掌握队列的定义及其运算,了解队列的应用。
二、实验内容:
1、掌握队列的特点及常见算法。
2、队列测试和应用。要求:
设计一个主函数对循环队列代码进行测试。测试方法为:依次把数据元 素2,4,6,8,10入队,然后出队中的数据元素并在屏幕上显示。
三、实验思路:
使用队列的时候要创建一个空队列,这里队列可以分为两种存储方式,顺序存储和链式存储,顺序存储顾名思义它的存储数据方式是连续存储的,而链式存储则是不连续的,队头和队尾定义两个指针,通过指针来操作队列。先创建一个含有头结点的空的链队列,建立头结点,在队尾插入结点后建立好队尾指针,判断队列是否为空,然后编写出队列的功能函数。
#include
{ if(rst->len==n)
printf(“此队列已满”);else {
rst->rear=(rst->rear+1)%n;
rst->data[rst->rear]=x;} } int out(struct nobe *rst){ int x;if(rst->len==0)
printf(“此队列为空”);else {
rst->front=(rst->front+1)%n;
x=rst->data[rst->front];} return x;}
首先建立一个结构体包含数据域与指针域,然后编写队列的入队与出队操作,最后编写主函数,在主函数调用入队与出队操作,实现程序的编程。
四、算法。队列的算法:
1、入队操作。
若队列不满,则在队尾插入元素x作为新的队尾。
2、出队操作。
3、若队列不空,则删除队头元素的值。链队列的算法
1、链队列初始化
建立一个含有头结点的空的链队列。
2、求队列的长度
返回队列的元素个数,即队列的长度。
3、入队列操作
插入元素x作为队列新的队尾元素。
4、出队列操作
若队列不空,则删除队头元素,用e返回其值。
五、实验心得体会:
队列和栈一样是一种特殊形式的线性表,队列不同与栈的是它可以在一端插入,另一端删除。
实验六: 二叉树的生成与遍历
一、实验目的:
1、熟悉二叉树节点的定义和生成方式;
2、熟悉二叉树链式结构的生成方式;
3、掌握二叉树遍历算法的实现。
二、实验内容:
1.设计实现二叉树的建立及遍历算法,要求:
(1)编写创建二叉链式存储结构的二叉树程序并输出。
(2)编写递归实现二叉树的先序、中序、后序遍历算法。(3)编写主函数测试以上二叉树的创建和遍历函数。
2.假设二叉树采用链式存储结构进行存储,编写程序实现二叉树的所有叶子
结点的统计并输出统计个数。
三、实验思路:
首先建立一个结构体包含数据域,左右子树的指针三个数据元素,这里左子树和右子树分别为某一结点指向其左子树和右子树的指针。对于叶子结点或者新生成的结点,它的左子树和右子树的指针都是空值。定义二叉树结构体变量,然后编写二叉树的输入和先序、中序、后序遍历算法,最后编写主函数,在主函数中初始化二叉树长度为零,输入二叉树的各个元素,再调用二叉树的先序、中序、后序遍历操作,输出二叉树,实现程序的编程。
四、算法。
1.二叉树的建立:
二叉树的遍历算法需要先建立二叉树,二叉树的建立需要建立栈和数组
栈和数组的建立:
typedef struct node
/*结点定义*/ {
char
data;
struct node * lchild, * rchild;} BinTreeNode;
typedef struct{ //栈的定义
BinTreeNode * ptr;int tag;}StackNode;
二叉树的建立:
BinTreeNode * CreateBinTree(BinTreeNode * Tree)/*,按先序序列建立二叉树,输入并建立一棵二叉树Tree*/ {
char c;scanf(“%c”,&c);if(c=='&')Tree = NULL;else {
Tree=(BinTreeNode *)malloc(sizeof(BinTreeNode));
Tree->data=c;
Tree->lchild= CreateBinTree(Tree->lchild);
Tree->rchild= CreateBinTree(Tree->rchild);
}
return(Tree);}
2.先序遍历
先序遍历的递归算法:
/*二叉树的先序遍历*/ void PreOrder(BinTreeNode *T){ if(T!= NULL)
{
printf(“%c”,T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
} } 先序遍历的非递归算法:
/*二叉树的先序遍历的非递归算法*/ void PreOrderTwo(BinTreeNode *T){
BinTreeNode *p,*S[Max];
int top=-1;
p=T;
/*初始化*/
do
{
while(p!= NULL)
{
printf(“%c”,p->data);
top++;S[top]=p;
p=p->lchild;
}
if(top >-1)/*栈非空*/
{
p=S[top];top--;/*取栈顶元素,出栈*/
p = p->rchild;
}
}while((p!= NULL)||(top>-1));
}
3、中序遍历:
void InOrder(BinTreeNode*t){
if(t){
InOrder(t—>leftchild);
Visit(t);
InOrder(t—>rightchild);
} }
4、后序遍历:
void PostOrder(BinTreeNode*t){
if(t){
PostOrder(t—>leftchild);
PostOrder(t—>rightchild);
visit(t);
} }
五、实验心得体会:
二叉树是一种非线性的数据存储结构,描述的是结点一对多的关系,这种结构最常用,最适合的描述方法是用链表的形式。每个结点都包含一个数据域和两个指针域。
实验七: 查找算法的实现
一、实验目的:
掌握各种查找算法的特点,测试并验证查找常见算法。
二、实验内容:
1.建立有序表,采用折半查找实现某一已知的关键字的查找。
2.利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。
三、实验思路:
#include
int search(int x,int data[],int n){ int low,high,mid;low=0;high=n-1;while(low<=high){
mid=(low+high)/2;
if(data[mid]=x)
return(mid+1);
else
if(data[mid]>x)
high=mid-1;
else
low=mid+1;} return 0;}折半查找法首先定义一个一维数组表示有序表,查找的思路是将给定的数据与有序表中间位置的元素做比较,若两者相等则查找成功,若前者小于后者,则在中间位置左边的元素中继续查找;若前者大于后者,则在中间位置右边的元素中继续查找。重复这个步骤直到查找成功。然后编写折半查找法的算法和利用折半查找法插入元素的算法,最后编写主函数,在主函数中输入有序表的元素,再调用折半查找法的查找和插入操作,保持有序表的有序性并输出,实现程序的编程。
四、算法。
1、设置查找区间初值,设下界low=0,设上界high=length—1。
2、若low<=high,则计算中间位置mid=(low+high)/2.3、若key 若key>data[mid],则设low=mid+1并继续执行步骤2; 若key=data[mid]则查找成功,返回目标元素位置mid+1(位置从1计数)。 4、若当low=high时,key!=data[mid]则查找失败,返回0.四、实验心得体会: 折半查找法是对一个有序表进行折中查找,首先对表进行排序,则查找起来就会事半功倍。这种查找的算法直观,形象,便于使用。 实验八: 排序综合实验 一、实验目的: 参照各种排序算法程序样例,验证给出的排序常见算法。 二、实验内容: 输入一组关键字序列分别实现下列排序,并将上述几种排序的算法编写成菜 单,根据输入的数字不同执行对应的排序算法(任选两种排序方法实现)。 1、直接插入排序。 2、冒泡排序。 3、直接选择排序。 4、快速排序。 三、实验思路: 首先编写直接插入排序法和冒泡排序法,然后编写主函数,在主函数中定义一个一维数组用来记录数据,再编写一个菜单用来选择排序方法,最后调用直接插入排序法和冒泡排序法等操作,使用循环结构实现程序的反复执行直到退出为止。 四、算法。 直接插入排序算法void insort(int p[],int n){ int i,j,temp;for(i=1;i temp=p[i]; j=i; while(j>0&&temp { p[j]=p[j-1]; j--; } p[j]=temp;} } 冒泡排序算法void bublesort(int v[],int n){ int i,j,temp;for(i=1;i for(j=0;j { if(v[j]>v[j+1]) { temp=v[j]; v[j]=v[j+1]; v[j+1]=temp; } } } } 简单选择排序法void Select_Sort(datatype R[ ],intn){ /*对排序表R[1].....R[n]进行冒泡排法,n是记录个数*/ for(i=1;i 邢台学院信科系实验报告 课程名称:《计算机软件基础》 实验类型:验证型(验证型、创新型、综合型、设计型)实验项目名称:SQL语言 学生姓名: 杨扬专业: 教育技术学学号: 2011121105指导老师:甘莉莉 实验地点: 软件实验室实验学时:2学时 实验目的和要求:1掌握SQL语言的使用方法 2利用SQL语句实现相关的操作 3能够独立写出一些较复杂的SQL语句 主要仪器设备或者软件:计算机 操作方法与实验步骤: 1.使用SQL语句定义READER表,其结构与实验一中的表1——“读者”表相同,然后使用插入命令在READER表中插入两条记录,内容自定。 2.根据“图书管理”数据库中的“读者”、“图书”和“借书登记”3个表,使用SQL语句完成以下查询。 (1)从“读者”表中查找法律系读者的所有信息。 (2)从“借书登记”表中查找尚未归还的图书的书号、借书证号和借书日期。 (3)从“借书登记”表中查询每本书每次借出的天数。 (4)从“借书登记”表中查询每本书的借阅次数。 (5)从“图书”表中查找各出版社图书的价格总计,并按价格降序输出。 (6)查询所有借过书的读者姓名和借书日期。 (7)查询所有借阅了“红楼梦”的读者的姓名和借书证号。 (8)查询至今没有人借阅的图书的书名和出版社。 讨论或心得: 学会了SQL语句的使用 邢台学院信科系实验报告 课程名称:《计算机软件基础》 实验类型:设计型(验证型、创新型、综合型、设计型) 实验项目名称:需求调查与可行性分析实验 学生姓名:杨扬专业: 教育技术 学号: 2011121105指导老师:甘莉莉 实验地点: 软件实验室实验学时:2学时 一、实验目的和要求 目的:通过本次实验,掌握需求调查与可行性研究的方法、过程和步骤,加深对可行性分析有关理论的理解,为学习后面的需求分析与软件设计打下一个良好的基础 要求:布置“运动会信息管理系统可行性分析”或其它类似题目,了解用户业务情况、数据、网络和需求情况,分析并开展可行性研究 二、主要仪器设备或者软件 1.硬件环境 :PC 机 2.软件环境 :Windows环境,C语言系统或 其它语言工具 三、操作方法与实验步骤 (1)围绕题目独立进行需求收集、分析 (2)提出解决问题的初步方案 (3)从技术、操作、经济等方面进行可行性分析 (4)独立写出需求调查与可行性分析报告 四、讨论或心得 为什么要进行可行性研究 ? 因为可行性研究对软件有很大的意义 《软件体系结构》实验指导书 实验一 系统的用例模型 实验名称:系统的用例模型 实验类型: 设计性实验 学 时:2课时 一、实验目的 1.熟悉用例图的基本功能和使用方法。 2.锻炼结合给定题目,进行有效需求分析的能力。3.掌握如何使用建模工具绘制用例图的方法。 二、实验器材 1.计算机一台。 2.UML建模工具,比如软件ArgoUML,Rational Rose 或StarUML。 三、实验内容 在理解用例图的基本功能和使用方法的基础上,结合具体问题,完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程。用Rational Rose或StarUML工具软件绘制系统的用例图。下文以Rational Rose为例讲解基本步骤。 四、实验步骤 1.结合实际给定题目,完成系统的需求建模。 2.针对每个用例进行业务分析。以图书管理系统中“删除读者信息”用例为例来说明实验具体步骤。 (1)分析:在图书管理系统中,管理员首先登录系统,系统验证通过后,管理方可向系统查询数据,在查询后,系统会给出提示,有没有找到相关的数据,管理员根据系统查询的返回结果,进行下一步的操作,就是删除读者,在删除的过程中,系统会对查询得到的结果判断该记录是否可以删除,若可以删除,则给删除提示,若不能删除,也给相关的提示信息。 (2)根据分析结果,书写业务流程,一般包含以下信息: ①管理员在录入界面,输入待删除的读者名; ②“业务逻辑”组件在数据库中,查找待删除的读者名; ③如果不存在,则显示出错信息,返回步骤①,如果存在则继续; ④“业务逻辑”组件判断“待删除的读者”是否可以删除; ⑤如果不可以,则显示出错信息,返回步骤⑧,如果可以则继续; ⑥在数据库中,删除相关信息; ⑦显示删除成功信息; ⑧结束。 3.根据分析结果,绘制用例图。以图书管理系统中“删除读者信息”用例为例说明具体绘图步骤:(1)在用例图上双击main,出现如图1.1所示,为绘制用例图做好准备。 图1.1(2)在图中的工具栏选取Actor图标,在右边的图中添加一个Actor,并输入名称:administrator,如图1.2所示。 (3)在左边的工具栏中,选取用例的图标,在右边的图中画出一个用例,并输入用例的名称:login。 图1.2(4)按照步骤(3),绘制出如图1.4和图1.5的两个用例。 图1.3 图1.4 图1.5(5)在绘出了用例后,接下来的是绘制参与者与用例实现,如图1.6所示。 图1.6 (6)根据步骤(5),同时完成如图1.7和图1.8。此时,删除读者用例图就到此完成。其系统查询读者信息等其他的功能会在时序图和活动图中描绘。 (7)根据分析情况,进一步添加或细化用例图。 图1.7 图1.8 五、实验报告要求 1. 说明系统的需求建模结果,对主要用例整理用例图。2. 小结实验心得体会。 实验二 系统的类模型 实验名称:系统的类模型 实验类型: 设计性实验 学 时:2课时 一、实验目的 1.理解类的基本概念。 2.掌握如何从需求分析中抽象出类的方法。 3.掌握在ArgoUML,Rational Rose或StarUML中绘制类的操作方法。 二、实验器材 1.计算机一台。 2.ArgoUML,Rational Rose 或StarUML工具软件。 三、实验内容 完成实验一后,对给定题目的系统的需求的初步分析,得出系统的用例图,通过对用例的业务流程的分析,我们可以初步了解系统的业务处理流程。本实验需要对系统进行静态建模,这就需要从系统的用例图去寻找和发现类。用Rational Rose或StarUML工具软件绘制系统的类图。下文以Rational Rose为例讲解基本步骤。 四、实验步骤 1.分析:由前面试验对需求的分析抽象出类。2.绘制类图的步骤: (1)打开前面初步构建的UML模型文件;(2)打开Rose中的逻辑视图(Logical View),选择分析模型(analysis model)目录。并在其下创建一个子目录并命名为:“图书馆业务功能”。 (3)用鼠标右击“图书馆业务功能”在弹出来的菜单中选择“New→Class diagram”项,创建类图,如图2.1所示。 (4)双击新建的类图,并点右边控件集中选中的类的图标,并用鼠标在图中分别拖出一个类图,并命名为Book,如图2.2所示。 图2.1 图2.2(5)接下来的一步为设置类的属性,在新的类中双击该类,在打开属性面板中,可以看到在此可以设置类的属性和方法等其他的信息,图2.3所示;后撞击Attributes这个栏目,此栏目为设置类的属性的选项,在图中间的单击右键,可以看到有一个“Insert”的选项,选中这个选项,图2.4所示,后在出现的对话框中输入相关信息如图2.5所示;如书本的ISBN号,在Type这个方框内输入此属性的类型值,同时可以看到一栏可以设置此属性的访问权限,一般这些属性都设置Private这个权限,如图2.6所示。这个类的其他属性也可以按照以上的做法设置,最后得到的结果是图2.7所示。 图2.3 图2.4 图2.5 图2.6(6)设置好类的属性,现在来设置类的方法(也是操作),双击类后在弹出的菜单上选operations这个选项,可以看到图2.8所示,在图中的空白地方,单击右键,在弹出的菜单中选insert这个选项,也就只有这个选项可用,见图2.9,接着输入方法名,同时可以设置该方法的返回类型,也可以在Documentations的方框内填写一些相关的方法说明,如图2.12所示,设置好该方法的访问权限,见图2.13。类的其他方法也可以按上面来设置好,最后,得到该类的其他方法见类2.14。 图2.7 图2.8 图2.9 图2.11 图2.10 图2.12 图2.13 图2.14(7)至此,类的方法和属性都设置好了,如图2.15所示。 图2.15(8)按照上面的步骤设置好所有类的属性和方法。 (9)为各个类添加关系,由关联、泛化、依赖等关系来静态描述业务。 五、实验报告要求 1.整理实验结果。2.小结实验心得体会。实验三 系统的状态建模 实验名称:系统的状态建模 实验类型: 设计性实验 学 时:2课时 一、实验目的 1.熟悉状态图的基本功能和使用方法。2.掌握如何使用建模工具绘制状态图方法。 二、实验器材 1.计算机一台。 2.ArgoUML,Rational Rose或StarUML 工具软件。 三、实验内容 完成实验一后,对给定题目的系统的需求的初步分析,得出系统的用例图,通过对用例的业务流程的分析,我们可以初步了解系统的业务处理流程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。因此,在本实验主要完成用例的状态图。 四、实验步骤 1.业务分析:由前面实验对用例的描述和分析得到业务动态行为的状态分析。以用例“还书”为例,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。 2.绘制状态图。 还书的状态图,还书的主要业务都是由管理员来完成,首先管理员必须先登录系统,并通过验证后,便可以进行下一步的操作,查找该书的相关信息,如存在,则进行还书操作,如不存在该信息,则给出提示信息; 绘图步骤: (1)在用例图中的还书(revesion)用例,单击右键,如图3.1所示,新建一个状态图,命名为revesion状态图,图3.2所示。 图3.1 图3.2(2)双击“receivesion”状态图,展开后,在左边的工具栏上选取一个实心圆点,此结点为开始结点,图3.3所示;当还书的时候,操作者先要询问系统的状态,如果系统忙,操作者则必需等待,因此,得到系统的两种状态,如图3.5所示。 图3.3 图3.4 图3.5(3)操作者在询问系统和状态后,得到的图3.6所示两种状态,如果系统忙,操作者必需要等待、结束,如图3.7和图3.8所示,重返步骤(1)。 图3.6 图3.7 图3.8(4)如系统空闲,则进行对还书的信息进行查询操作,图3.9所示;查询也有两种结果,一是查询得到该书的相关信息,二查询不到该书的相关信息;则此时有两种状态,需要建立两种状态,如图3.10所示。 图3.9 图3.10(5)最后,操作者进行了操作后,系统会给出操作的结果给操作者;操作成功或失败,都会有提示信息给出。整个的还书的过程便完成;图3.11所示。 (7)根据分析设计情况,进一步添加或细化状态图。 图3.11 五、实验报告要求 1.整理实验结果。2.小结实验心得体会。 软件测试实验报告 专 业 : 学 号 : 姓 名 : 任课老师 : 代码覆盖工具使用(Eclemam) 1、开发工具 Eclipse、JUnit、Eclemma开源工具 2、实验目的 1)安装Eclemma插件 2)熟练掌握Eclemma的插件用法 3、实验要求 查阅Triangle类的覆盖率是否达到100%,若未达到100%,通过添加测试用例,使之达到100%。 4、实验结果 5、心得体会 在测试实验前,我以为不会难做。就像以前的物理实验一样,做做实验,做过之后交一份实验报告就好了。直到做实验的时候我才知道其实并不容易做,但是学到的知识与实验的难度成正比,这使我受益匪浅。 在做实验之前一定要将课本上的知识吃透,因为这是实验的基础,否则,在老师讲解实验的时候就会听不懂,这将增加实验的难度,浪费时间。同时在做实验时老师还会给我们讲一些自己的亲身体会和老师们在做的时候遇到的问题以及会将一些课本上没有的知识告诉我们使我们对这门课的了解更加深入。 通过这次实验,我学到不少实用的知识,更重要的是,做实验的过程,思考问题的方法与其他实验的方法是相通的,真正使我受益匪浅。第二篇:软件基础实验
第三篇:软件基础实验
第四篇:软件体系结构实验指导书
第五篇:软件测试实验(Eclemma)