第一篇:个体实验报告4顺序图
《系统分析与设计》实验报告 实验四 顺序图
【实验名称】顺序图 【实验目的】
1.理解动态交互模型的建模技术。
2.掌握顺序图的描述方法。
【实验器材】
1.计算机一台。
2.Rational Rose 工具软件。
【实验内容】
在前面的类图分析、设计中,我们已经确定了类的属性,类之间的关系,现在我们要考虑类的方法。寻找类的操作的有效方法之一是绘制交互图。交互图体现了如何为对象分配职责。当一个对象接收了某条消息,就表明该对象具有处理该条消息的职责。
针对特定场景中各个系统事件单独绘制交互图,用以说明系统接收到该事件后,由哪些对象互相协作、来共同完成对事件的处理,从而抽象出对象以及对象的职责。顺序图用来描述对象间的交互行为。
【实验结果】
将各自负责的子系统的顺序图复制,有几个就复制几个。
姓名
学号
实验日期
实验地点
班级
任课教师 王丽颖
第二篇:顺序表的操作实验报告
顺序表的基本操作
一、实验目的
1、复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。[基本要求](1).依次从键盘读入数据,建立带头结点的顺序表;(2).输出顺序表中的数据元素
(3).根据指定条件能够取元素和修改元素;(4).实现在指定位置插入和删除元素的功能。
三、实验步骤、调试及输出结果
(—).数据结构与核心算法的设计描述: #include
/*当前的表长度*/ /*顺序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}
/*顺序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}
/*顺序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*顺序表的删除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){
SeqList L;int i,x;int n=10;
/*当前顺序表的长度*/ L.length=0;CreateList(&L,n);
/*建立顺序表*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*顺序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*顺序表插入*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*顺序表删除*/ PrintList(&L,L.length);/*输出顺序表*/ }(二).调试及输出结果 测试数据:
1、输入n个数;
2、输出顺序列表;
3、顺序表的查找;4.顺序表的插入;
5、顺序表的删除;
数据测试如下截图:
四、实验讨论与总结:
通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。
在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。
单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。
这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。
第三篇:工图实验报告2
西安郵電大学
工程制图与计算机制图 报 告 书
院(系)名称 : 学生姓名 : 专业名称 : 班
级 :
电子工程学院
卫少东 电子信息工程 电子1601
16年 12 月
8日 至
年
时间 :
12月
9日
概述
本课程的实践性教学环节主要是要求学生掌握AutoCAD的基本操作、绘图命令、平面图形的修改与编辑命令、尺寸标注和工程图样的绘制方法,强化学生的图形设计能力和AutoCAD应用能力。实践教学共包括六项内容,即AutoCAD的基本操作、基本体的绘制、组合体的绘制、零件图的绘制,其中零件图的绘制为综合型实验。实验指导书附实验考核内容及成绩评定,可供实践环节考核之用。
实验所需AutoCAD软件在实验时提供。学生除完成所要求题目之外,还应对所实验之结果进行分析与总结。本实验指导书内容包括:实验目的与要求、方法与步骤、实验过程及内容等。学生做完相关实验后应及时填写实验报告。
本实验指导书与《画法几何及工程制图》(唐克中,朱同钧编著,高等教育出版社,2009)配套使用。另外,由于实验时间有限,学生对课程的掌握不同,除安排上机实验之外应另外自行安排时间学习、解决相关知识及问题。
实验一 AutoCAD的基本操作
一、实验目的
1、了解AutoCAD基本概念
2、学习AutoCAD的基本操作
二、实验内容
I、实验要求:
1.启动AutoCAD,熟悉工作界面。2.绘制习题集P86:10-1图形。II、实验方法:
1.用下拉菜单“格式”→“单位”或命令行输入:UNITS↙,查看和设置绘图单位、精度及角度(建议使用缺省值)。
2.建图层,设颜色、线型及线宽。
粗实线
白色(或黑色)
实线(CONTINUOUS)
0.7 mm 细实线
白色(或黑色)
实线(CONTINUOUS)
0.30 mm 3.设置图幅(选A3图幅)。
4.使用绘图命令和编辑命令绘图。
三、实验结果(附在下方,并手写出每个图形使用哪些命令)
实验二 基本体的绘制
一、实验目的
学会使用AutoCAD的基本绘图命令和编辑命令。
二、实验内容
I、实验要求:绘制下图。
II、实验方法: 1.新增图层:
点画线
红色
点画线(JIS_8_11)
0.30mm 尺寸
白色(或黑色)
实线(CONTINUOUS)
0.00mm 2.注意画图顺序:先画出点画线,确定圆心位置;其次画出圆和圆弧,圆弧用画圆修剪得到;最后标注尺寸。
三、实验结果(附在下方,并手写出图层设置方法,修剪命令与删除命令的区别是什么及如何操作的。)
实验三 组合体的绘制
一、实验目的
学会使用AutoCAD的绘图命令和编辑命令,标注尺寸。
二、实验内容
I、实验要求:
绘制习题集P87:10-3或10-4。II、实验方法:
1.注意利用“极轴追踪”、“对象捕捉”和“对象追踪”,使三视图“长对正、高平齐、宽相等”。2.新增图层:
虚线
蓝色
虚线(HIDEDN2)
0.30 mm
三、实验结果(附在下方,并手写出尺寸样式设置方法和标注类型)
实验四 轴类零件的绘制
一、实验目的
使用AutoCAD的绘图命令、编辑命令、标注尺寸和图块等命令。
二、实验内容
I、实验要求:
绘制习题集P87:10-5。II、实验方法:
三、实验结果(附在下方,并手写出文字样式和尺寸样式设置方法及标注要领,图块的创建及插入)
第四篇:饮料销售机顺序图
实验内容及要求:
内容:
在自动饮料销售机的”买饮料”场景中,假定饮料销售机有三个部分,前端(front),钱币记录仪(register)和分发器(dispenser)。
前端负责:接受顾客的选购和现钞;从记录仪接收找回的零钱并返回给顾客;
返回现钞;从分配器接收一罐饮料并把它交给顾客。
钱币记录仪负责:从前端获取顾客输入的信息(即选购的饮料的种类和现钞);
更新现钞存储;显示现钞情况;如果缺少零钱将不让系统服务并在前端显示没有
零钱;如果零钱充足一切正常,找零钱。
分配器负责:检查待选购的饮料是否还有货;分发一罐饮料。
请根据以下情形,参照教材93-94页,画出顺序图
理想状态下买饮料(购买成功)
在理想状态下,事件流顺序如下:
1)顾客放入现钞(inputMoney());
2)前端接受现钞并将现钞传给钱币记录仪accept();
3)钱币记录仪对现钞面额进行判断getCustomerInput();
4)钱币记录仪向前端发送现钞情况 sendMoneyInfo()
5)前端将现钞情况显示给顾客showMoney()
6)钱币记录仪根据现钞面额、饮料价格和零钱情况检查可购买的饮料
checkForSoda();
7)钱币记录仪向分发器发送消息检查可购买的饮料的存货情况
checkAvailability()
8)分配器向前端返回可购买且有存货的饮料信息returnSodaFree
9)前端将可购买且有存货的饮料信息显示给顾客displayPrompt();
10)顾客选择饮料chooseSoda
11)前端将选择结果给分配器sendChoseToDis
12)前端将选择结果给钱币记录仪 sendChoseToReg
13)钱币记录仪检查找零情况 checkForChange()
14)钱币记录仪更新余额 updateChange()
15)分配器向前端释放饮料 releaseSoda()
16)钱币记录仪向前端释放找零 releaseChange()
17)前端接收饮料并释放出来给顾客receiveSoda()
18)前端接收找零并返回给顾客 receiveChange()
要求:
写出分析过程,画出顺序图,完成实验报告
分析:
和教材93-94页图7-14到图7-14相比较有何不同,请参照对比来分析。
如果现钞不够买饮料,会如何,事件流将有什么变化?
如果零钱不够,会如何,事件流将有什么变化?
如果无须找零钱呢?
第五篇:数据结构实验报告二线性表的顺序存储
实验报告二 线性表的顺序存储
班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX
2858505197@qq.com
一、实验目的:
(1)掌握顺序表的基本操作的实现方法。
(2)应用顺序表的基本算法实现集合A=AUB算法。
(3)应用顺序表的基本算法实现两有序顺序表的归并算法。
二、实验内容:
1、线性表顺序存储结构的基本操作算法实现(要求采用类模板实现)
[实现提示](同时可参见教材p5822-p60页算法、ppt)函数、类名称等可自定义,部分变量请加上学号后3位。库函数载和常量定义:(代码)#include
(1)顺序表存储结构的定义(类的声明):(代码)
template
SeqList(datatype a[ ], int n);//有参构造函数 ~SeqList(){};//析构函数为空 int Length();//求线性表的长度
datatype Get(int i);//按位查找,取线性表的第i个元素 int Locate(datatype item);//查找元素item void Insert(int i, datatype item);//在第i个位置插入元素item datatype Delete(int i);//删除线性表的第i个元素 void display();//遍历线性表,按序号依次输出各元素 private: datatype data[MaxSize];//存放数据元素的数组 int length;//线性表的长度 };
(2)初始化顺序表算法实现(不带参数的构造函数)/* *输 入:无
*前置条件:顺序表不存在 *功 能:构建一个顺序表 *输 出:无
*后置条件:表长为0 */ 实现代码:
template
(3)顺序表的建立算法(带参数的构造函数)
/* *输 入:顺序表信息的数组形式a[],顺序表长度n *前置条件:顺序表不存在
*功 能:将数组a[]中元素建为长度为n的顺序表 *输 出:无
*后置条件:构建一个顺序表 */ 实现代码:
template
cout<<“数组元素个数不合法”< data[i]=a[i];length=n;}(4)在顺序表的第i个位置前插入元素e算法 /* *输 入:插入元素e,插入位置i *前置条件:顺序表存在,i要合法 *功 能:将元素e插入到顺序表中位置i处 *输 出:无 *后置条件:顺序表插入新元素,表长加1 */ 实现代码: template cout<<“溢出”< cout<<“i不合法!”< data[j]=data[j-1];data[i-1]=item;length++;}(5)删除线性表中第i个元素算法 /* *输 入:要删除元素位置i *前置条件:顺序表存在,i要合法 *功 能:删除顺序表中位置为i的元素 *输 出:无 *后置条件: 顺序表册除了一个元素,表长减1 */ 实现代码: template cout<<“表为空,无法删除元素!”< cout<<“i不合法!”< for(j=i;j data[j-1]=data[j];//注意数组下标从0记 length--;return item;}(6)遍历线性表元素算法 /* *输 入:无 *前置条件:顺序表存在 *功 能:顺序表遍历 *输 出:输出所有元素 *后置条件:无 */ 实现代码: template cout<<“表为空,无法输出!”< cout< (7)获得线性表长度算法 /* *输 入:无 *前置条件:顺序表存在 *功 能:输出顺序表长度 *输 出:顺序表长度 *后置条件:无 */ 实现代码: template (8)在顺序线性表中查找e值,返回该元素的位序算法 /* *输 入:查询元素值e *前置条件:顺序表存在 *功 能:按值查找值的元素并输出位置 *输 出:查询元素的位置 *后置条件:无 */ 实现代码: template //下标为i的元素等于item,返回其序号i+1 return 0;//查找失败 } (9)获得顺序线性表第i个元素的值 /* *输 入:查询元素位置i *前置条件:顺序表存在,i要合法 *功 能:按位查找位置为i的元素并输出值 *输 出:查询元素的值 *后置条件:无 */ 实现代码: template cout<<“i不合法!”< (10)判表空算法 /* *输 入:无 *前置条件:无 *功 能:判表是否为空 *输 出:为空返回1,不为空返回0 *后置条件:无 */ 实现代码: template return 1;} else { return 0;} } (11)求直接前驱结点算法 /* *输 入:要查找的元素e,待存放前驱结点值e1 *前置条件:无 *功 能:查找该元素的所在位置,获得其前驱所在位置。*输 出:返回其前驱结点的位序。*后置条件:e1值为前驱结点的值 */ 实现代码: template return k;else { cout<<“无前驱结点!”< return 0;} }(12)求直接后继结点算法 /* *输 入:要查找的元素e,待存放后继结点值e1 *前置条件:无 *功 能:查找该元素的所在位置,获得其后继所在位置。*输 出:返回其后继结点的位序。*后置条件:e1值为后继结点的值 */ 实现代码: template cout<<“无后继结点!”< return k;} } 上机实现以上基本操作,写出main()程序: void main(){ SeqList if(Seq.Empty()){ cout<<“线性表为空!”< } Seq.Insert(1,1);Seq.Insert(2,2);Seq.Insert(3,3);Seq.Insert(4,4);Seq.Insert(5,5);//插入元素操作 cout<<“输出插入的五个元素:”< cout< cout<<“2是第”< cout<<“第五个元素是:”< cout<<“线性表的长度为:”< Seq.Delete(3);//删除元素 cout<<“删除第三个元素后的线性表为:”< cout< cout<<“元素2前驱结点的数值为:”< cout<<“元素4后继结点的位置为:”< cout<<“元素4后继结点的数值为:”< 要求对每个算法都加以测试,判断是否正确;并测试不同类型数据的操作。粘贴测试数据及运行结果: 2、用以上基本操作算法,实现A=AUB算法。(利用函数模板实现)/* *输 入:集合A,集合B *前置条件:无 *功 能:实现A=AUB *输 出:无 *后置条件:A中添加了B中的元素。*/ 实现代码: template return *this;else { int k=item.Length(); int num=this->Length(); for(int i=1;i<=k;i++) { for(int j=0;j if(data[j]==item.Get(i)) { break; } else if(num-1==j&&data[num-1]!=item.Get(i)) { this->Insert(++num,item.Get(i)); } } return *this;} } void main(){ SeqList B.Insert(1,2);B.Insert(2,6);B.Insert(3,1);B.Insert(4,8);B.Insert(5,9);//插入集合B中元素 A.Add(B);A.display();cout< 3、对以上顺序表类中的基本操作算法适当加以补充,实现向一个有序的(非递减)的顺序表中插入数据元素e算法。/* *输 入:插入元素e *前置条件:顺序表已有序 *功 能:将元素e插入到顺序表中适当的位置,使顺序表依然有序 *输 出: 无 *后置条件:有序顺序表插入了新元素,且表长加1。*/ 实现代码: template if((data[i] { for(int k=num;k>i;k--) data[k]=data[k-1]; data[i+1]=item; length++; break; } if(data[i]>item) { for(int k=num;k>i;k--) data[k]=data[k-1]; data[i]=item; length++; break; } } } void main(){ SeqList cout<<“原顺序表为:”< cout< cout<<“插入新元素后的顺序表为:”< 4、算法实现:La,Lb为非递减的有序线性表,将其归并为Lc,该线性表仍有序(未考虑相同时删除一重复值)(利用函数类板实现)MergeList: /* *输 入:有序线性表La,有序线性表Lb *前置条件:顺序表已有序 *功 能:将两线性表归并,不去掉相同元素 *输 出: 返回一个新的有序线性表Lc *后置条件:无 */ 实现代码: template Seq1.orderInsert(Seq2.Get(i));} return Seq1;} void main(){ SeqList cout<<“合并后的Lc为:”< cout< 粘贴测试数据及运行结果: 三、心得体会:(含上机中所遇问题的解决办法,所使用到的编程技巧、创新点及编程的心得)