《软件技术基础》实验指导书_实验三、四
- 格式:doc
- 大小:92.50 KB
- 文档页数:14
软件工程实验教学大纲
一、课程简介
软件工程实验是软件工程专业的一门基础实验课程。
本课程旨在通过实践操作和实验项目,培养学生软件开发与测试的能力,提升学生的团队协作和解决问题的能力。
本课程将通过一系列实验项目,引导学生掌握软件工程的基本概念、方法和流程。
二、教学目标
1.了解软件开发的基本原理和方法;
2.理解软件工程的基本概念和软件开发的生命周期;
3.掌握常用的软件开发工具和方法;
4.培养团队合作和项目管理能力;
5.提升解决问题和分析能力。
三、教学内容
本课程的教学内容主要包括以下几个方面:
1.软件开发基本原理
- 软件开发的基本概念和流程
- 需求分析与规格说明
- 设计与架构
- 编码与测试
- 部署与维护
2.软件开发工具和方法
- Agile开发方法
- 敏捷开发工具和项目管理工具的使用
- 版本控制工具的使用
3.实验项目
本课程将根据教学内容设计一系列实验项目,每个实验项目都将涉及到一定的软件开发和测试任务。
具体的实验项目将在课程开始前公布,并根据学生的实际情况进行调整。
四、教学方法。
说明每个实验题目含有一个main函数和一些函数, 与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出, 供上机实验参考使用。
对于每个题目, 只需要根据题目要求设计算法, 补充函数定义, 然后对程序进行编译、调试。
实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容设有一个线性表E={e1, e2, …, en-1, en}, 设计一个算法, 将线性表逆置, 即使元素排列次序颠倒过来, 成为逆线性表E’={ en , en-1 , …, e2 , e1 }, 要求逆线性表占用原线性表空间, 并且用顺序表和单链表两种方法表示, 分别用两个程序来完成。
(文件夹: 顺序表逆置、单链表逆置)已知由不具有头结点的单链表表示的线性表中, 含有三类字符的数据元素(字母、数字和其他字符), 试编写算法构造三个以循环链表表示的线性表, 使每个表中只含有同一类的字符, 且利用原表中的结点空间, 头结点可另辟空间。
(文件夹: 分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符, 试编写算法, 判断该字符串是否有中心对称的关系, 例如xyzzyx是中心对称的字符串。
(提示: 将单链表中的一半字符先依次进栈, 然后依次出栈与单链表中的另一半字符进行比较。
)(文件夹: 判字符串中心对称)假设以数组sequ[m]存放循环队列的元素, 同时设变量rear和quelen 分别指示循环队列中队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。
(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1. 串采用顺序存储结构, 编写朴素模式匹配算法, 查找在串中是否存在给定的子串。
《计算机软件技术基础》实验指导书编写:XXX适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。
通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。
二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。
写出各操作的实现函数,并上机验证。
三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。
具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。
(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。
为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。
(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。
(6)以上操作的正确性,均可以通过链表的输出结果来验证。
《教学软件设计与开发》实验教学指导书课程名称:教学软件设计与开发英文名称:Instructional Software Design and Development设置形式:非独立设课课程模块:专业核心课实验课性质:专业基础实验课程编号:501819课程负责人:冯天敏大纲主撰人:冯天敏大纲审核人:李焕勤一、学时、学分课程总学时:64实验学时:32课程学时:4二、适用专业及年级教育技术学二年级三、课程目标与基本要求熟悉多媒体教学软件的类型和设计因素;掌握教学软件设计的基本理论和方法;熟悉多媒体教学软件设计与开发过程;熟练掌握教学软件的编辑制作技术;了解评价标准和实施方法,形成初步的多媒体教学软件设计、开发能力和项目管理能力,训练创作工具开发多媒体教学软件的技能,培养创新意识和创新能力,提高学生的合作意识和合作能力。
四、主要仪器设备计算机五、实验项目及教学安排考核方式:1、实验平时成绩:(1)实验考勤:每次考勤分出勤(2分);请假、迟到、早退(1分);旷课(0分)记分。
(2)预习报告:要求写明实验目的、主要实验设备名称、实验原理和内容。
分优秀(4分)、良好(3分)、中等(2分)、及格(1分)和不及格(0分)记分。
(3)实验报告:要求写明实验设备名称和型号、实验步骤、实验分析及注意事项。
分优秀(4分)、良好(3分)、中等(2分)、及格(1分)和不及格(0分)记分。
实验平时成绩最后折算成100分。
2、平时作业:根据作品评定成绩,满分为100分。
3、实验考试:上机考试,满分为100分。
成绩评定:总实验成绩占本课程成绩的50%。
总实验成绩=实验平时成绩×20%+平时作业×30%+实验考试成绩×50%。
七、实验教科书、参考书1.实验教科书教学软件设计与开发(讲义),冯天敏,20062.实验参考书多媒体教学软件设计与开发,王志军等著,高等教育出版社,2006.5实验一 Authorware开发平台基础一、实验目的1. 熟悉 Authorware 的集成开发环境2. 掌握 Authorware 图标的基本功能、编写功能3.掌握计算图标的使用、函数变量的使用4.理解athorware的基本语句及用法二、实验内容1.Authorware的集成开发环境的认识;2.Authorware的图标类型及创建;3.计算图标窗口;4.变量、函数的类型及应用;5.Authorware的脚本语句。
《软件工程》实验指导书太原理工大学计算机科学与技术学院2013年3月目录第一部分实验教学大纲 (1)第二部分实验说明 (3)实验一软件工程的网上资源与常用的CASE工具 (3)实验二传统软件开发方法的可行性研究 (5)实验三传统软件开发方法的需求分析建模 (6)实验四传统软件开发方法的结构设计 (7)实验五系统测试 (8)实验六面向对象的分析与设计 (9)实验七软件项目管理 (10)附录一实验题目 (11)第一部分实验教学大纲课程名称:软件工程(Software Engineering)课程总学时: 48 学时[理论: 40 学时;实验: 8 学时]课程总学分: 3 学分适用专业和年级:计算机科学与技术、软件工程专业一、实验的目的与任务本实验课程通过完整地实施软件生命周期各阶段的任务,让学生系统地学习到软件开发过程的主要理论、方法、技术、标准和规范,使他们具备基本的软件开发设计能力;通过软件工程中常用CASE工具和软件项目管理的实践,使他们具备运用各种工具完成项目设计和实施的基本技能;通过集体项目开发,培训学生的合作意识和团队精神,培养学生对技术文档的编写能力。
二、实验内容和要求本课程的实验内容包括结构化(生命周期法)的方法学和面向对象的方法学。
通过一个模拟项目,要求学生分别用结构化方法和面向对象的方法完成系统的分析、设计和实现的整个软件开发过程。
此外实验中引入我国国家《计算机开发规范》,以规范技术文档的书写标准,提高实验教学质量。
实验要求学生采用“项目小组”的形式,结合具体的开发项目进行分析、设计。
每个项目小组必须按照《软件工程实验指导书》附录中给定的文档规范标准提供项目文档;具体要求如下:1.班级按项目不进行分组。
2.每个人均为负责人或项目经理,由项目经理召集项目组成员讨论、选定开发项目,所有实验中都要采用同一个实验题目。
项目开发的每项任务要规定该任务的起止日期和时间。
3.每个项目均要进行需求分析,完成需求分析报告,修订并评审需求分析报告,确定系统的需求分析模型。
实验报告
实验名称数据库应用系统的开发
班级
学号
姓名
成绩
【实验方案设计】
1. 利用Visual Basic里的VB Application Wizard按照步骤逐步创建一个窗体应用程序,并链接到上一实验创建的数据库中,同时添加各种操作按钮,如插入、删除、更改等,最后将数据库的每个表视图集合到主视图中
【实验过程】(实验步骤、记录、数据、分析)
1.选择数据来源种类
2.选择数据库文件并做链接
3.选择数据视图布局,此处选择网格式布局,便于查看全部数据
4.选择一个表及要添加的字段和排列顺序
5.选择对数据可进行的操作按钮,如添加、更改、删除、更新、关闭等
6.添加完一个表后,继续添加其他表,直到整个数据库所有表已添加
7.添加完成后界面
8.通过链接到ACCESS数据库的VB数据库管理程序查看每个表数据,并进行数据增加、删除、修改等操作
9.在数据库管理系统中对数据进行增加操作,此处增加一条订单ID为151112的记录,可以看到在ACCESS中的数据表进行了同步增加。
这样就可以达到不打开ACCESS而只通过一个单界面应用程序就实现对数据库的维护工作,具有简单性、高效性的特点。
人工智能技术实验指导书实验背景本实验指导书旨在帮助学生深入了解人工智能技术的基础原理及应用方法。
通过本实验,学生将能掌握人工智能技术的基本概念、算法和编程技能,为未来在人工智能领域的研究和研究打下坚实基础。
实验目的本实验旨在培养学生的人工智能算法设计和编程能力,提高学生对人工智能技术的理解和应用能力。
实验内容实验一:人工智能算法基础- 研究人工智能算法的基本概念和分类;- 掌握常见的人工智能算法原理和实现方法;- 利用Python编程语言实现简单的人工智能算法。
实验二:机器研究算法实践- 掌握机器研究算法的基本原理和应用方法;- 研究使用机器研究库进行数据预处理和算法训练;- 利用已有数据集,实现一个简单的机器研究算法模型。
实验三:深度研究算法应用- 理解深度研究算法的基本原理和结构;- 研究使用深度研究框架进行神经网络模型的设计和训练;- 实现一个简单的深度研究算法应用案例。
实验要求- 学生应具备基本的编程能力,熟悉Python编程语言;- 学生应具备基本的数学和统计知识,对概率和线性代数有一定了解;- 学生应具备良好的逻辑思维能力和问题解决能力。
实验评估- 实验报告:学生需按要求书写并提交实验报告,内容包括实验目的、方法、实验结果和分析等;- 实验成绩:根据实验报告和实验结果,对学生的实验成果进行综合评估。
实验资源- 教材:提供相关的教材和参考书籍,供学生参考和研究;- 软件工具:提供相应的编程环境和开发工具,供学生进行实验操作和编程实现。
实验安排- 实验时间:本实验预计需要3周的时间完成;- 实验地点:学生可以自行选择合适的实验地点进行实验。
注意事项- 学生在进行实验时,应遵守实验室规定和安全操作流程;- 学生在编写实验报告时,应保证报告内容真实可信。
参考资料- 《人工智能导论》- 《机器研究实战》- 《深度学习》。
软件技术基础实验指导书2014年9月1日目录实验一斐波那契数列的实现算法及分析 (3)实验二顺序表的实现与应用 (5)实验三链表的实现和应用 (7)实验四栈的实现和应用 (9)实验五队列 (11)实验六二叉树的创建和遍历 (12)实验七图 (15)实验八哈夫曼树及哈夫曼编码 (16)实验九查找算法的实现 (19)实验十内部排序算法的实现 (26)实验十一迷宫问题 (29)实验十二 B+树程序设计 (30)实验十三四叉树程序设计 (31)实验十四修路方案问题 (32)实验一斐波那契数列的实现算法及分析实验目的:1.掌握分别用递归和非递归方法计算斐波那契(Fibonacci)数列。
2.掌握算法性能测试的方法,并能进行算法分析和比较。
实验环境(硬/软件要求):Windows 2000, VisualC++ 6.0实验内容:二阶Fibonacci数列的定义如下:F0=1,F1=1, F2=2,F3=3,F4=5,。
,Fi=F(i-1)=F(i-2) (i>=1).试用递归法和非递归法两种方法写出计算Fn的函数。
实验要求:1.完成计算Fn的递归函数Fib-rec.2.完成计算Fn的非递归数列Fib-ite.3.当n=10,15,20,25,30,35,40,45时测试以上两种算法执行的时间,并把测试结果填写在附表1-1中。
附表1-1 测试表注:表格中填写的是测试时间,单位μm.4.试解释两种算法在执行时间上的不同,并对两种算法进行算法分析。
【C语言源程序】#include <stdio.h>#include <time.h>Long Fib-rec(int n){if(n==0||n==1)return(1);else return(Fib-rec(n-1) + Fib-rec(n-2) );}long Fib-ite(int n){long fib1,fib2,fib;int i;fib1=1;fib2=1;for (i=3;i<=n,i + + ){fib=fib1+fib2;fib1=fib2;fib2=fib;}return fib;}void main ( ){clock-t us1, us2;int n;printf(“请输入n:\n”);scanf(“%d,&n);us1=clock( );printf(“递归函数计算结果:%1d\n”,Fib-rec(n) ); us2=clock( );printf(“递归函数执行时间%1d毫秒\n”,us2-us1);us1=clock( );printf(“非递归函数计算结果:%1d\n”,Fib-ite(n) ); us2=clock( );printf(非递归函数执行时间%1d毫秒\n”,us2-us1);}实验二顺序表的实现与应用实验目的:1.掌握线性表的概念。
徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解关注薇公号-精研学习网-查找资料第1章预备知识1.1复习笔记一、集合1基本概念集合是指若干个或无穷多个具有相同属性的元(元素)的集体。
通常,一个集合名称用大写字母表示,而集合中的某个元素用小写字母表示。
如果集合M由n(n≥0)个元素a1,a2,…,a n组成,则称集合M 为有限集。
如果一个集合中有无穷多个元素,则称此集合为无限集。
不包括任何元素的集合称为空集。
空集通常用Φ表示。
如果M是一个集合,a是集合M中的一个元素,则记作a∈M,称元素a属于集合M;如果a不是集合M中的元素,则记作a∉M,称元素a不属于集合M。
(1)列举法用列举法表示一个集合是将此集合中的元素全部列出来,或者列出若干项但能根据规律可知其所有的元素。
例如:大于1而小于100的所有整数的集合A可以表示为A={2,3,4, (99)(2)性质叙述法用性质叙述法表示一个集合是将集合中的元素所具有的属性描述出来。
例如:大于1而小于100的所有整数的集合A可以表示为A={a|1<a<100的所有整数}设M与N为两个集合,若M中的每个元素也为N的元素,则称M为N的子集,记作M⊆N,若M⊆N且N中至少有一个元素a∉M,则称M为N的真子集,记作M⊂N。
2基本运算(1)两个集合的并设有两个集合M和N,它们的并集记作M∪N,定义如下:M∪N={a|a∈M或a∈N}(2)两个集合的交设有两个集合M和N,它们的交集记作M∩N,定义如下:M∩N={a|a∈M且a∈N}两个集合M和N的并、交均满足交换律,即M∪N=N∪MM∩N=N∩M(3)两个集合的差设有两个集合M和N,它们的差集记作M-N,定义如下:M-N={a|a∈M但a∉N}两个集合的差不满足交换律,即M-N≠N-M对于集合的并、交、差有以下几点基本性质:①结合律(A∩B)∩C=A∩(B∩C)(A∪B)∪C=A∪(B∪C)②分配律A∩(B∪C)=(A∩B)∪(A∩C)A∪(B∩C)=(A∪B)∩(A∪C)③其他(4)映射映射的相关概念如下:①设A、B是两个非空集,如果根据一定的法则f,对于每一个x∈A,在B中都有唯一确定的y与之对应,则称f为定义在A上而在B中取值的映射,记作f:A→B,并将x与y的关系记作y=f(x),x称为自变元,y称为在f作用下x的像;②设给定映射f:A→B,且B=f(A),若对于每个y∈B仅有唯一的x∈A使f(x)=y,则称f有逆映射f-1;③若A、B两个集合有一一映射f存在,使f(A)=B,则称A与B成一一对应,A与B对等,记作A~B。
电子科技大学通信与信息工程学院标准实验报告(实验)课程名称软件技术基础实验电子科技大学教务处制表电子科技大学实验报告一、实验室名称:校公共机房二、实验项目名称:查找与排序三、实验学时:4学时四、实验原理:使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。
通过上机练习掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等方法、过程和实际应用。
五、实验目的:1.熟练掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等算法方法并实现。
2.掌握课程平台使用方法。
六、实验内容:ex5_1:查找设有序序列的数据元素为:(3,10,13,17,40,43,50,70)1)编写顺序查找函数2)编写二分查找函数3)在主程序中输入关键字(43和5),分别调用两种查找函数,输出结果。
//第一题#include <stdio.h>#define maxnum 20typedef struct{int data[maxnum];int length;}list_type;void create(list_type *l){l->length=8;l->data[0]=3;l->data[1]=10;l->data[2]=13;l->data[3]=17;l->data[4]=40;l->data[5]=43;l->data[6]=50;l->data[7]=70;}void shunxucz(list_type *l,int a1,int a2){int i,flag=0;printf("-----------------------------------------------\n");printf("顺序查找法:\n");for(i=0;i<l->length;i++){if(a1==l->data[i]){printf("%d是第%d个元素\n",a1,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a1);flag=0;for(i=0;i<l->length;i++){if(a2==l->data[i]){printf("%d是第%d个元素\n",a2,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a2);}void erfencz(list_type *l,int a1,int a2){printf("-----------------------------------------------\n");printf("二分查找法:\n");int low,h,m,flag=0,i;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a1){printf("%d是第%d个元素\n",a1,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a1);flag=0;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a2){printf("%d是第%d个元素\n",a2,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a2);}int main(){int flag1=43,flag2=5;list_type list,list1,list2;create(&list);create(&list1);create(&list2);shunxucz(&list1,flag1,flag2);erfencz(&list1,flag1,flag2);printf("-----------------------------------------------\n");}ex5_2:排序1)编写简单选择法函数2)编写直接插入法函数3)编写冒泡法排序函数4)编写快速排序函数5)在主程序中输入一组数据元素(513,87,512,61,908,170,897,275,653,462),分别调用4种排序函数,输出每趟排序结果。
实验1软件工程概念与相关工具1.1 软件工程的计算环境(实验估计时间:90 分钟)1.1.1 背景知识软件工程学主要研究如何以较少的代价获得高质量的软件,而要达到这个目的,就必须研究软件开发方法和软件开发工具。
软件开发方法就是开发软件的规范化方法。
软件工具是指能支持软件生存周期中某一阶段(如系统定义、需求分析、设计、编码、测试或维护等)的需要而使用的软件系统;软件开发环境则是面向软件整个生存周期,为支持各个阶段的需要,在基本硬件和宿主软件的基础上使用的一组软件系统。
软件工具和软件开发环境都是软件工程的重要支柱,对于提高软件生产率,改进软件质量,以及适应计算机技术的迅速发展有着越来越大的作用。
从20世纪70年代末开始,专家们就致力于软件开发自动化工具的研究,并逐步形成了应用于软件过程的集成的项目支撑环境(Integrated Project Support Environment)和计算机辅助软件工程(CASE,Computer-Aided Software Engineering)工具。
在此基础上建立集成式软件开发环境,全面支持软件开发过程,以期实现软件设计过程的自动化或半自动化。
1.1.2 实验目的1)理解软件工程的基本概念,熟悉软件、软件生存周期、软件生存周期过程和软件生存周期各阶段的定义和内容。
2)通过Internet 搜索与浏览,了解网络环境中主流的软件工程技术网站,掌握通过专业网站不断丰富软件工程最新知识的学习方法,尝试通过专业网站的辅助与支持来开展软件工程应用实践。
1.1.3 工具/准备工作在开始本实验之前,请预习教科书第一章的相关内容。
需要准备一台带有浏览器、能够访问因特网的计算机。
1.1.4 实验内容与步骤1)请查阅有关资料,给“软件”下一个权威性的定义:软件(中国大陆及香港用语,台湾作软体,英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。
一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。
《软件建模》实验指导书前言软件建模课程是计算机科学与技术本科专业的一门重要的专业课.通过本课程的学习,使学生在已有的计算机软硬件基础知识、程序设计知识、数据库和网络通信知识的基础上系统掌握面向对象系统分析与设计的基本方法和技术,并具有针对特定环境下的应用问题进行信息系统开发(包括系统分析,设计与实现)的能力。
通过学习本课程学生可以理解和掌握软件建模的分析和设计方法,掌握面向对象系统分析和设计的建模标准UML语言,能够利用Rational Rose(或Microsoft Viso)软件以某一信息系统为例进行系统分析和设计。
本课程主要介绍系统原理的基本概念、系统开发过程RUP、对面向对象分析和面向对象设计的方法、对面向对象分析和设计的建模标准UML等内容。
通过本课程的学习,学生掌握的知识、内容及掌握的程度要求为:1. 使学生理解面向对象的信息系统的开发过程、系统分析和设计的原则和方法;2. 使学生掌握UML语言的基础知识,以及UML在面向对象的软件系统分析和设计中的应用,并能使用UML工具建立系统模型;3. 使学生掌握在UML系统模型下应用高级语言建立应用系统的方法;4. 通过案例教学和实验,提高学生在应用面向对象技术开发软件方面的动手能力和解决问题的能力,并鼓励创新。
本实验所要求的建模工具为Rational Rose 2003。
实验要求计算机软件建模技术现在越来越广泛的应用于软件工程、软件体系结构中。
本课程实验的目的是为了使学生在课程理论学习的同时,通过在一个实践的环境下,实际学习软件统一建模语言,对软件建模技术有一个初步的了解及认识。
通过本指导书中的各个实验,学习掌握对一般面向对象系统建模的方法与技术。
总之,通过上述实验环节,使学生加深了解和更好地掌握《软件建模》课程教学大纲要求的内容。
在《软件建模》的课程实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。
2020实验报告大全文档Contract Template实验报告大全文档前言语料:温馨提醒,报告一般是指适用于下级向上级机关汇报工作,反映情况,答复上级机关的询问。
按性质的不同,报告可划分为:综合报告和专题报告;按行文的直接目的不同,可将报告划分为:呈报性报告和呈转性报告。
体会指的是接触一件事、一篇文章、或者其他什么东西之后,对你接触的事物产生的一些内心的想法和自己的理解本文内容如下:【下载该文档后使用Word打开】实验要求及说明:1、基本要求是程序必须实现部分。
在完成基本要求的基础上,可对程序功能进行增强和增加。
程序功能的增强可以获得额外的成绩。
2、程序的书写应符合规范。
应具有适当的缩进、空格和空行,清晰的注释。
函数名和变量名应尽量有意义,能够反映用途。
(书写不符合要求的程序要扣分)3、实验报告中,要对每个程序要有详细的功能描述、输入和输出说明,程序代码和程序运行结果。
(功能描述不清晰、输入输出说明不准确对报告要扣分)4、除规定的实验内容之外,每人可以提交一个自己设计的程序,要求同上。
(有附加分)5、合格条件:1)完成三个实验。
2)按要求书写实验报告。
3)独立完成。
6、上述说明在提交的报告中删除。
实验一:数据分析程序编写一个程序,从数据文件中读取数据,并计算数据的统计特性,如均值和标准差。
在显示器上输出数据的总数、均值和标准差。
具体说明如下:数据文件名作为程序参数输入。
2.数据文件中数据的个数预先未知,应从文件中得到。
数据文件的格式可自定义。
程序的各功能应由不同的函数完成。
实验二:形状表示程序基本要求定义三角形(Triangle)、矩形(Rectangle)和圆形(Circle)三个形状类。
编写一个程序,能够根据用户输入生成相应的形状类对象。
将形状的信息输出到显示器和文件中。
具体说明如下: 1.三个形状类应包含构造函数和成员函数(函数的参数和返回值根据需要自己定义):Set――设置形状Display――显示形状,格式为Rectangle(left,right,width,height),Circle((x,y),r),Triangle((x1,y1),(x2,y2),(x3,y3))GetArea――计算形状的面积GetPerimeter――计算形状的周长2.用户根据提示选择要生成的形状类型,并设置形状的位置。
一、做实验1.材料工具(1)常见的种子(如:绿豆黄豆)40粒。
(2)有盖的罐头4个,小勺1个,餐巾纸8张,4张分别标有1、2、3、4的标签,胶水,清水。
2.方法步骤(1)在第一个罐头里,放入两张餐巾纸,然后用小勺放入10粒绿豆,拧紧瓶盖。
彩色视野及盲点的测定1.教学目的测定各种彩色视野的范围以及盲点的位置,学习使用视野计2.实验程序2—1 准备工作。
2—1—1 准备好视野图纸、彩色铅笔(红、黄、蓝、绿)、单眼罩。
物理探究实验:影响摩擦力大小的因素探究准备技能准备:弹簧测力计,长木板,棉布,毛巾,带钩长方体木块,砝码,刻度尺,秒表。
知识准备: 1. 二力平衡的条件:作用在同一个物体上的两个力,如果大小相等,方向相反,并且在同一直线_______课程实验报告实验名称系别姓名学号班级实验地点实验日期评分指导老师同组其他成员一、实验内容(含实验原理介绍):二、实验目的第一范文网整理该文章,版权归原作者、原出处所有.三、涉及实验的相关学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________实验五指针一、实验目的1、掌握指针的概念、会定义和使用指针变量2、掌握指向数组的指针变量3、掌握字符串指针的使用二、实学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验四函数一、实验目的1、掌握函数定义、调用和声明的方法2、掌握实参和形参之间的传递方式3、函数的嵌套调用二、实验内容学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验三数组一、实验目的1、掌握一维和二维数组的定义、赋值和输入输出2、掌握字符数组和字符串数组的使用3、掌握与数组有关学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________实验二逻辑结构程序设计一、实验目的1、学会正确使用逻辑运算符和逻辑表达式2、熟练掌握if语句和switch 语句3、熟练掌握用w学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________实验一上机操作初步和简单的C程序设计一、实验目的1、熟悉C语言运行环境Turbo C++、会简单的程序调试3、熟悉C语言各种实验名称计算出1000以内10个最大素数之和实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。
2、掌握队列的特点。
3、掌握队列的基本运算。
◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。
◆实验内容1、写出队列的出队和入队算法。
2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。
编制一个程序模拟该停车场的管理。
◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。
当然数据结构中的队列远没有生活中的排队灵活。
数据结构中的队列规定:数据只能从队尾进,从队首出来。
已经进入队列的数据次序不能再做改变。
这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。
与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。
根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。
2、入队列:在队尾加入一个新数据项。
3、出队列:从队首取出一个数据项,并使余下诸项向队首移动。
4、队列空:判断队列是否为空。
5、队列满:判断队列是否已满。
从概念上说,队列不存在“满”状态,其长度可以任意增加,但实现(不论静态或动态)中总有空间限制的。
下面我就来讨论用数组实现队列结构。
假定队列中元素的类型为T,队列的最大长度为queue_size,在任何一刻队列首、尾位置分别用下标head、tail指向。
队列初始状态应为:head=0,tail=-1。
根据队列定义,head值应恒为0,那么每当出队一个数据项,则必须执行多次移动操作(余下诸项向队首移动)。
显然不能直接采用这种结构实现队列。
解决这个问题,可以从数学取模运算联想到一个解决办法。
比如x=(x+1) mod 100 ,则x的变化范围在[0,99]之间,超过100的又从0,1开始。
这不就是我们所需要的嘛!许多书上把它叫作“循环数组”技术。
即当入队列时先移动tail(即tail=(tail+1) mod queue_size),出队列时先移动head(即head=(head+1) mod queue_size)。
在移动中,若head(或tail)值为queue_size-1,则移动后head(或tail)的值就变成0了,对这种特征就是一个环,只要数组有空间,就可以入队列。
用“循环数组”实现队列,必须注意怎样判断队列的空与满的状态。
除起始状态外。
任何时刻tail所指为最后一个进入队列的元素,而head所指的是刚刚出队列的那个元素原先所占的位置。
因此(head+1) mod queue_size才是真正当前队列中首元素位置。
采用条件:(tail+1) mod queue_size == head 作为“队列满”的判断条件。
实际上此时队列中还有一个空位置,这样队列的利用空间比定义的最大空间少一个单元。
假如把这个单元也利用上,则就不好判断“满”或“空”了(当head==tail),必须根据是tail追上了head,还是head追上了tail才能区分,这样给处理带来了不便。
#include <stdlib.h>#include <stdio.h>#define NULL 0typedef struct node{int data;}NODE;#define LEN sizeof(NODE)/*队列的需要变量*/typedef enum {false,true}bool; /*定义bool类型*/unsigned int head; /*定义队首下标变量*/unsigned int tail; /*定义队尾下标变量*/static NODE *queue=NULL; /*定义一个队列*/static unsigned int queue_size=0;/*队列的大小*//*========================功能:初始化队列的大小返回:true or false========================*/bool InitQueue(unsigned int size){queue=(NODE *)malloc(size*LEN); /*开辟空间*/ if (queue==NULL) /*开辟空间失败,则返回false*/{return false;}queue_size = size; /*保存队列空间大小值*/head = queue_size-1;/*队首下标赋初值*/tail = queue_size-1;/*队尾下标赋初值*/return true; /*初始化成功,返回true*/}/*======================功能:释放队列的内存返回:void======================*/void FreeQueue(){free(queue);/*注意:这一点很重要。
free()之后并不能将queue置为NULL,所以我们一定要自己做。
这样能防止产生“野指针”,即地址不确定的指针。
*/queue = NULL;}/*==========================功能:判断队列是否已满返回:true or false==========================*/bool Full(){return (((tail+1)%queue_size)==head);}/*===========================功能:判断队列是否为空返回:true or false===========================*/bool Empty(){return (head==tail);}/*========================功能:入队列返回:true or false========================*/bool Push(NODE p){if (!Full()) /*队列不满,则入队列;队尾下标要加1*/ {tail = (tail+1)%queue_size;queue[tail] = p;return true;}else{printf("queue is overflow !\n");return false;}}/*===================功能:出队列返回:出队列元素指针===================*/NODE *Pop(){if (!Empty()) /*队列不空,则出队列;队首下标要加1*/ {head = (head+1)%queue_size;return (&queue[head]);}else{printf("queue is empty !\n");return NULL;}}void main(void){NODE node1 = {3};NODE *p;if (!InitQueue(3)) /*初始化不成功,则退出*/{exit(0);}Push(node1);/*去掉下面的注释,你可以验证讲解中空间利用问题*//*Push(node1);Push(node1);Push(node1);*/p =Pop();printf("%d",p->data);FreeQueue(); /*注意程序退出时释放队列内存*/printf("\n");system("pause");}提示:可以停车场内的车辆管理,看做是堆栈,采用先进后出的运算规则;而在停车场外排队的车辆管理,可以看做是队列,采用先进先出的运算规则。
基本思想:根据题目要求,停车场只有一个大门,因此可用一个栈来模拟。
而当栈满后,继续来到的车辆只能停在便道上,根据便道停车的特点,可知这可以用一个队列来模拟,先排队的车辆先离开便道,进入停车场。
由于排在停车场中间的车辆可以提出离开停车场,并且要求在离开车辆到停车场大门之间的车辆都必须离开停车场,让此车辆离去,然后再让这些车辆依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要有一个地方保存为了让路离开停车场的车辆,很显然这也应该用一个栈来模拟,因此,本题中要用到两个栈和一个队列。
参考程序如下:#define N 2 /* 定义停车场栈长度 */#define M 5 /* M为单元时间的收费值 */#define True 1#define False 0#include “stdio.h”/* 存储结构 */typedef struct /* 定义栈元素类型 */{ int num;int arrtime;}elemtype;typedef struct /* 定义栈 */{ elemtype stack[N];int top;}sqstktp;typedef struct node /* 定义队列结点的类型 */{ int num;struct node *next;}queueptr;typedef struct /* 定义队列 */{ queueptr *front, *rear;}Linkedquetp;void inistack(sqstktp *s) /*初始化栈 */{ s->top=-1;int push(sqstktp *s, elemtype x) /* 数据元素x入指针s所指的栈 */ { if(s->top= = N-1)return(False); /* 如果栈满,返回False */else{ s->stack[++s->top]=x; /* 栈不满, x入栈 */return(True);}elemtype pop(sqstktp *s) /* 栈顶元素出栈 */{elemtype x;if(s->top<0){ x.num=NULL;x.arrtime=NULL;return(x); /* 如果栈空,返回空值 */}else{ s->top--;return(s->stack[s->top+1]); /* 栈不空,返回栈顶元素 */ }}实验四二叉树的应用◆实验目的与基本要求1、掌握指针变量,动态变量的含义。