操作系统试验报告

时间:2019-05-12 06:42:22下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《操作系统试验报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《操作系统试验报告》。

第一篇:操作系统试验报告

操作系统课外实践报告

项 目 名 称: 磁盘调度模拟系统 所 在 班 级: 软件工程一班 小 组 成 员:;刘清元,学号:120904012 指 导 教 师: 王蕾 起 止 时 间: 2014.6.1—2014.6.20

磁盘调度模拟系统实验报告

一:实验目标:

通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。

二:实验要求:

系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。

三:实现原理

设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。

平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即:

L=(M1+M2+„„+Mi+„„+MN)/N

其中Mi为所需访问的磁道号所需移动的磁道数。

启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此,执行一次输入输出所花的时间有:

寻找时间——磁头在移动臂带动下移动到指定柱面所花的时间。

延迟时间——指定扇区旋转到磁头下所需的时间。

传送时间——由磁头进程读写完成信息传送的时间。

其中传送信息所花的时间,是在硬件设计就固定的。而寻找时间和延迟时间是与信息在磁盘上的位置有关。

为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上。而是按柱面存放,同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以各磁盘的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。

四:算法实现

1.先来先服务算法(FCFS)

先来先服务(FCFS)调度:按先来后到次序服务,未作优化。最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。例如,如果现在读写磁头正在50号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99,那么,当50号柱面上的操作结束后,移动臂将按请求的先后次序先移到130号柱面,最后到达99号柱面。采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。

2.短寻道时间优先算法(SSTF)

最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。现在仍利用同一个例子来讨论,现在当50号柱面的操作结束后,应该先处理61号柱面的请求,然后到达32号柱面执行操作,随后处理15号柱面请求,后继操作的次序应该是99、130、148、159、199。

采用最短寻找时间优先算法决定等待访问者执行操作的次序时,读写磁头总共移动了200多个柱面的距离,与先来先服务、算法比较,大幅度地减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率。但最短查找时间优先(SSTF)调度,FCFS会引起读写头在盘面上的大范围移动,SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,甚至引起无限拖延(又称饥饿)。

3.扫描算法(SCAN)

SCAN 算法又称电梯调度算法。SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。

“电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。这好比乘电梯,如果电梯已向上运动到4层时,依次有3位乘客陈生、伍生、张生在等候乘电梯。他们的要求是:陈生在2层等待去10层;伍生在5层等待去底层;张生在8层等待15层。由于电梯目前运动方向是向上,所以电梯的形成是先把乘客张生从8层带到15层,然后电梯换成下行方向,把乘客伍生从5层带到底层,电梯最后再调换方向,把乘客陈生从2层送到10层。

我们仍用前述的同一例子来讨论采用“电梯调度”算法的情况。由于磁盘移动臂的初始方向有两个,而该算法是与移动臂方向有关,所以分成两种情况来讨论。

〈1〉.移动臂由里向外移动

开始时,在50号柱面执行操作的读写磁头的移动臂方向是由里向外,趋向32号柱面的位置,因此,当访问50号柱面的操作结束后,沿臂移动方向最近的柱面是32号柱面。所以应先为32号柱面的访问者服务,然后是为15号柱面的访问者服务。之后,由于在向外移方向已无访问等待者,故改变移动臂的方向,由外向里依次为各访问者服务。在这种情况下为等待访问者服务的次序是61、99、130、148、159、199。

〈2〉.移动臂由外向里移动

开始时,正在50号柱面执行操作的读写磁头的移动臂是由外向里(即向柱面号增大的内圈方向)趋向61号柱面的位置,因此,当访问50号柱面的操作结束后,沿臂移动方向最近的柱面是61号柱面。所以,应先为61号柱面服务,然后按移动臂由外向里移动的方向,依次为99、130、148、159、199柱面的访问者服务。当201号柱面的操作结束后,向里移动的方向已经无访问等待者,所以改变移动臂的前进方向,由里向外依次为32、15柱面的访问者服务。

“电梯调度”与“最短寻找时间优先”都是要尽量减少移动臂时所花的时间。所不同的是:“最短寻找时间优先”不考虑臂的移动方向,总是选择离当前读写磁头最近的那个柱面,这种选择可能导致移动臂来回改变移动方向;“电梯调度”是沿着臂的移动方向去选择离当前读写词头最近的哪个柱面的访问者,仅当沿移动臂的前进移动方向无访问等待者时,才改变移动臂的前进方向。由于移动臂改变方向是机械动作,速度相对较慢,所以,电梯调度算法是一种简单、使用且高效的调度算法。

但是,“电梯调度”算法在实现时,不仅要记住读写磁头的当前位置,还必须记住移动臂的当前前进方向。

4.循环扫描算法(CSCAN)

单项扫描调度算法的基本思想是,不考虑访问者等待的先后次序,总是从0号柱面开始向里道扫描,按照各自所要访问的柱面位置的次序去选择访问者。在移动臂到达最后一个柱面后,立即快速返回到0号柱面,返回时不为任何的访问者等待服务。在返回到0号柱面后,再次进行扫描。

由于该例中已假定读写的当前位置在50号柱面,所以,指示了从50号柱面继续向里扫描,依次为61、99、130、148、159、199各柱面的访问者服务,此时移动臂已经是最内的柱面,于是立即返回到0号柱面,重新扫描,依次为15、32号柱面的访问者服务。

除了“先来先服务”调度算法外,其余三种调度算法都是根据欲访问的柱面位置来继续调度的。在调度过程中可能有新的请求访问者加入。在这些新的请求访问者加入时,如果读写已经超过了它们所要访问的柱面位置,则只能在以后的调度中被选择执行。在多道程序设计系统中,在等待访问磁盘的若干访问者请求中,可能要求访问的柱面号相同,但在同一柱面上的不同磁道,或访问同一柱面中同一磁道上的不同扇区。所以,在进行移动调度时,在按照某种短法把移动臂定位到某个柱面后,应该在等待访问这个柱面的各个访问者的输入输出操作都完成之后,再改变移动臂的位置。

五:实现代码

#include #include void FCFS(int b[],int n,int init)//先来先服务 { int i,s,sum;int a[20];for(i=0;i

printf(“第%d次访问的磁道:%dn”,i+1,a[i]);

sum+=abs(s-a[i]);

s=a[i];} printf(“平均寻道长度:%fn”,sum*1.0/n);} void SSTF(int b[],int n,int k)//最短寻道法 { int i,j,s,sum=0,p;int a[20];for(i=0;i=0;i--){

s=a[0];

p=0;

for(j=0;j<=i;j++)

if(abs(a[j]-k)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf(“第%d次访问的磁道:%dn”,n-i,s);

sum+=abs(s-k);

k=s;} printf(“平均寻道长度:%fn”,sum*1.0/n);}

void SCAN1(int b[],int n,int k)//扫描算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

biaoji=0;

for(j=0;j<=i;j++)

if(a[j]-k<0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=a[p];

for(j=0;j<=i;j++)

if(a[j]

{

s=a[j];

p=j;

}

a[p]=a[i];

printf(“第%d次访问的磁道:%dn”,n-i,s);

sum+=k-s;

k=s;

}

else

{

s=a[0];

for(j=0;j<=i;j++)

if(a[j]-k<=s-k)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf(“第%d次访问的磁道:%dn”,n-i,s);

sum+=abs(k-s);

k=s;

} } printf(“平均寻道长度:%fn”,sum*1.0/n);}

void SCAN2(int b[],int n,int k)//循环算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

biaoji=0;

for(j=0;j<=i;j++)

if(a[j]-k>0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

{

s=a[p];

for(j=0;j<=i;j++)

if(a[j]>k&&a[j]-k

{

s=a[j];

p=j;

}

a[p]=a[i];

printf(“第%d次访问的磁道:%dn”,n-i,s);

sum+=s-k;

k=s;

}

else

{

s=a[0];

for(j=0;j<=i;j++)

if(k-a[j]<=k-s)

{

s=a[j];

p=j;

}

a[p]=a[i];

printf(“第%d次访问的磁道:%dn”,n-i,s);

sum+=abs(k-s);

k=s;

} } printf(“平均寻道长度:%fn”,sum*1.0/n);}

void C_SCAN(int b[],int n,int k)//循环算法 { int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i=0;i--){

biaoji=0;

for(j=0;j<=i;j++)

if(a[j]-k>0)

{

biaoji=1;

p=j;

break;

}

if(biaoji==1)

} { s=a[p];for(j=0;j<=i;j++)if(a[j]>k&&a[j]-k

for(;i>=0;i--){ s=a[0];for(j=0;j<=i;j++)if(a[j]-k

{

s=a[j];

p=j;

} a[p]=a[i];printf(“第%d次访问的磁道:%dn”,n-i,s);sum+=s-k;k=s;} printf(“平均寻道长度:%fn”,sum*1.0/n);

void main(){ int a[20];int i,n,k,k1,init;printf(“请输入需要访问的磁道总数:”);scanf(“%d”,&n);for(i=0;i

printf(“需要访问的磁道%d:”,i+1);

scanf(“%d”,&a[i]);} printf(“请输入指针所在磁道:”);scanf(“%d”,&init);k=1;while(k){

printf(“**********************************n”);

printf(“$$$$$$$$$$刘清元——磁盘调度$$$$$$$$$n”);

printf(“** 1.先来先服务(FCFS)**n”);

printf(“** 2.最短寻道时间优先(SSTF)**n”);

printf(“** 3.扫描算法(SCAN)**n”);

printf(“** 4.循环算法(C-SCAN)**n”);

printf(“** 0.退出 **n”);

printf(“**********************************n”);

printf(“&&&&&&&&&&&&谢谢使用&&&&&&&&&&&&&&n”);

printf(“请在下面输入您的选择:”);

scanf(“%d”,&k);

switch(k)

{

case 1:FCFS(a,n,init);break;

case 2:SSTF(a,n,init);break;

case 3:k1=1;

while(k1)

{

printf(“*********************************n”);

printf(“

#刘清元——磁盘调度

###n”);

printf(“**** 1.移动臂由里向外 **n”);

printf(“**** 2.移动臂由外向里 **n”);

printf(“**** 0.返回上一层 **n”);

printf(“*********************************n”);

printf(“

######谢谢使用

#####n”);

printf(“请在下面输入您的选择:”);

}

}

} scanf(“%d”,&k1);switch(k1){ case 1:SCAN1(a,n,init);break;case 2:SCAN2(a,n,init);break;} } break;case 4:C_SCAN(a,n,init);break;六:运行结果

1.输入数据,选择调度方法

2.先来先服务

3最短寻道时间优先

4循环算法

5.循环算法

(1)磁头由里向外移动

(2)磁头由外向里移动

七:心得体会

通过此次课程设计,我明白了实践的意义,要把书本上的知识转换为现实中的成果,创新与不懈的努力也是成功的重要因素。如果没有一定的耐心,这次的课程设计也不能成功。

“磁盘调度”是我本学期操作系统课程设计的题目。在设计此程序的过程中,我遇到过许多问题,也学到了很多东西。

本程序的设计实现主要是用C++语言实现,通过对程序算法的设计优化、输出显示的格式设计、输入过程中的异常处理等一些设计过程中的问题的考虑解决,在C++学习上也有了很大的进步。

在程序设计中先后参考了很多网络资料,也参考了一些别人写的的程序,综合这些算法思想和自己的思路对程序做了很好的设计方式,对一些算法的优越性等也作了一些考虑。此外考虑最多的就是异常错误处理的设计。在设置程序的显示优化时,发现暂停函数在不同的情况下执行顺序不同,如此等等

第二篇:电子政务试验报告

电子政务试验报告

一.试验时间:第十周二.试验地点:05612

三.试验目的和要求:

1、本次模拟实习选择的电子政务实践平台是奥派电子政务实践平台,通过在这个相对完整的电子政务系统上进行模拟操作,让同学们在模拟实践中体会电子政务给政府传统办公带来的巨大变革,掌握大量电子政务系统的操作技巧。

2、通过实践操作体验电子政务的基本功能,将电子政务和实际教学结合起来,让同学们能够运用所学知识快速全面的理解和掌握政府机关办公单位的办公流程,并能初步掌握实施电子政务的基本方法和策略。

3、实践教学中了解政府内部办公和为公众服务方面等学习,提高实际动手能力,通过模拟政府内部办公的流程和实际业务,从而真正理解和领悟电子政务实施和应用的重要性和便民性。

四.实验内容:奥派电子政务教学实践平台包括政府信息门户、行政审批系统、政府办公系统、公文传输平台、招标采购平台等模块。

五.试验总结

奥派政府办公自动化系统采用先进的技术和管理理念,基于B/S 结构,构建的功能完善、安全可靠的政府行政办公管理软件。系统以领导、公务员为服务对象,紧密结合政府办公业务的特点,实现网上公文流转及协同工作,使不同部门的工作人员可以方便、有序地参加协同工作,提高工作效率。通过实验学习,同学们基本掌握了电子政务实践操作和运用,对电子政务运用的重要性有一个更深层次的理解,电子政务能够打破时空限制,提高办事效率,提高行政的透明度,拓展社会服务功能,提供与公众便利的交流渠道。通过试验我们也获得一些收获,一 是本课程追求全而务实,因此在实践教学中了解了政府内部办公和为公众服务方面等的学习;二是提高学生的实际动手能力,可以通过把政府搬进课堂,让学生模拟政府的内部办公流程和实际业务,从而真正地了解和领悟电子政务应用的重要性;三是丰富电子政务的实践教学案例的内容,电子政务实践教学通过大量的教学案例和多媒体教学课件,使我们学习电子政务时更加直观和易懂。

第三篇:电子商务试验报告

四、实验思考

1、请描述你在该小组实验中都完成了哪些任务?

答:查看商城用户订单详细信息,生成已确认付款订单,生成已确认缺货采购单,生成已确认预警商品采购单,生成已确认正常商品采购单,银行进出帐管理(存),银行进出帐管理(取),销售收入报表查询,采购支付报表查询,银行进出报表查询。

2、说说你对B to C电子商务运作流程的认识。

答:B to C模式是一种电子化零售,主要采取在线销售形式,以网络手段实现公众消费或向公众提供服务,并保证与其相关的付款方式的电子化。其主要的流程有:A.初始信息设置

商城管理员(添加商城信息、添加商品种类、添加商品信息、开通物流公司)物流用户(物流公司申报)

B.购买流程

商城用户(注册、登录、采购)———销售部———财务部(受理订单、进EDI填开发票)———销售部(确认单据、生成发货单)———储运部(发货)———物流业务部(配送)———商城用户(收货)

2.退货流程

商城用户(登录、查看订单、退货)———销售部(同意/不同意退货)———商城用户(查看订单处理情况)

3.正常采购

采购部(提交正常采购单)———财务部(审核)———采购部(确认采购单)———物流业务部(配送)———储运部(产品入库)

4.预警采购

采购部(提交预警采购单)———财务部(审核)———采购部(确认采购)———物流业务部(配送)———储运部(产品入库)

5.缺货采购

商城用户(注册、登录、采购)———销售部(受理生成缺货单)———采购部(生成缺货采购单)———财务部(通过缺货采购单)———采购部(确认缺货采购)———物流部(缺货商品配送)———储运部(缺货单入库)———销售部(生成财务单)———财务部(确认付款单)———销售部(生成出运单)———储运部(配送产品)———商城用户(收货)

第四篇:机械设计试验报告

请分别用三张实验报告纸抄写!第10周周五交到各班学习委员,过期不侯!另将轴系结构图一并交上,每人一份,图

上要标明尺寸!

请学习委员将实验报告按学号排好交给我!

实验一机械零件认识实验

一、实验目的1.初步了解《机械设计》课程所研究的各种常用零件的结构、类型、特点及应用。

2.了解各种标准零件的结构形式及相关的国家标准。

3.了解各种传动的特点及应用。

4.了解各种常用的润滑剂及相关的国家标准。

5.增强对各种零部的结构及机器的感性认识。

二、实验方法

通过对实验指导书的学习及机械零件模型的展示,实验教学人员的介绍,答疑及同学的观察去认识机器常用的基本零件,使理论与实际对应起来,从而增强同学对机械零件的感性认识。并通过展示的机械设备、机器模型等,使学生们清楚知道机器的基本组成要素—机械零件。

三、实验内容

(一)螺纹联接

螺纹联接是利用螺纹零件工作的,主要用作紧固零件。基本要求是保证联接强度及联接可靠性,同学们应了解如下内容:

1.螺纹的种类; 2.螺纹联接的基本类型;

3.螺纹联接的防松;4.提高螺纹联接强度的措施。

在掌握上述内容,通过参观螺纹联接模型,同学应区分出:①什么是普通螺纹、管螺纹、梯形螺纹和锯齿螺纹;②能认识什么是普通螺纹、双头螺纹、螺钉及紧定螺钉联接;③能认识摩擦防松与机械防松的零件;④了解联接螺栓的光杆部分做得比较细的原因是什么等问题。

(二)标准联接零件

标准联接零件一般是由专业企业按国标(GB)成批生产,供应市场的零件。这类零件的结构形式和尺寸都已标准化,设计时可根据有关标准选用。通过实验学生们要能区分螺栓与螺钉;能了解各种标准化零件的结构特点,使用情况;了解各类零件有那些标准代号,以提高学生们对标准化意识。

1.螺栓; 2.螺钉;3.螺母;4.垫圈;5.挡圈。

(三)键、花键及销联接

1.键联接;2.花键联接;3.销联接

以上几种联接,通过展柜的参观同学们要仔细观察其结构,使用场合,并能

分清和认识以上各类零件。

(四)机械传动

机械传动有螺旋传动、带传动、链传动、齿传动及蜗杆传动等。各种传动都有不同的特点和使用范围,这些传动知识同学们在学习“机械设计”课程中都有要详细讲授。在这里主要通过实物观察,增加同学们对各种机械传动知识的感性认识,为今后理论学习及课程设计打下良好基础。

1.螺旋传动;2.带传动; 3.链传动; 4.齿轮传动; 5.蜗杆传动。

(五)轴系零、部件

1.轴承;2.轴

(六)弹簧

(七)润滑剂及密封

实验二轴系结构分析

一、实验目的1.熟悉并掌握轴与轴上零件的结构形状及功用、工艺要求和装配关系;

2.熟悉并掌握轴及轴上零件的定位与固定方法;

3.了解轴承的类型、布置、安装及调整方法,以及润滑和密封方式。

二、实验设备及工具

1. 组合式轴系结构设计分析实验箱

该实验箱按照组合设计法,采用较少的零件,可以组合出尽可能多的轴系部件,以满足实验的要求。实验箱内有齿轮类、轴类、套筒类、端盖类、支座类、轴承类及联接件类等8类50多种零件,提供了可组成圆柱齿轮轴系、小圆锥齿轮轴系和蜗杆轴系三类轴系结构模型的成套零件。

2. 测量及绘图工具

300mm钢板尺、游标卡尺、铅笔、三角板等。

三、实验内容及要求

1.依据指导教师给每组指定实验内容(圆柱齿轮轴系、小圆锥齿轮轴系或蜗杆轴系)观察组装后的轴系结构,绘制轴系部件的装配草图。

2.测量轴系的主要装配尺寸,分析并测绘轴系零件,绘制主要零件的结构草图。

四、实验步骤

1.提前预习,明确实验内容,复习轴的结构设计及轴承组合设计等与实验相关的教学内容;

2.观察与分析轴系结构的特点,绘制轴系装配示意图或结构草图;

3. 测量轴系主要装配尺寸(如支承跨距);

4. 对轴系部件进行拆解,观察和分析轴系各零件的结构,对其主要的结构尺寸进行测量(支座不用测量)。

5. 根据装配草图和测量数据,绘制轴系部件装配图。

6.装配轴系部件使其恢复原状。

实验三轴系结构设计

一、实验目的熟悉并掌握轴系结构设计中有关轴的结构设计、滚动轴承组合设计的基本方法。

二、实验设备及工具

1. 组合式轴系结构设计分析实验箱

实验箱提供了可组成减速器圆柱齿轮轴系、小圆锥齿轮轴系和蜗杆轴系三类轴系结构模型的成套零件(详见实验中的设备介绍)。

2.测量及绘图工具

300mm钢板尺、游标卡尺、铅笔、三角板等。

三、实验内容及要求

1、进行轴的结构设计与滚动轴承组合设计

每组学生进行轴系结构设计,解决轴承类型选择,轴上零件定位、固定,轴承安装与调节、润滑及密封等问题。

2.绘制轴系结构装配图。

3.每人编写实验报告一份。

四、实验步骤

1.明确实验内容,理解设计要求;

2.复习有关轴的结构设计与轴承组合设计的内容与方法;

3.构思轴系结构方案

1)根据齿轮类型选择滚动轴承型号;

2)确定支承轴向固定方式(两端固定:一端固定、一端游动);

3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑);

4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟);

5)考虑轴上零件的定位与固定,轴承间隙调整等问题;

6)绘制轴系结构方案示意图

4.组装轴系部件

根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件,检查所设计组装的轴系结构是否正确。

5.绘制轴系结构草图。

6.测量零件结构尺寸(支座不用测量),并作好记录。

7.将所有零件放人实验箱内的规定位置,交还所借工具

8.根据结构草图及测量数据,在3号图纸上用1:l比例绘制轴系结构装配图,要求装配关系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。

9.写出实验报告。

第五篇:数据结构试验报告

实验一:ADT的类C描述向C程序的转换实验(2学时)

实验目的:

(1)复习C语言的基本用法;

(2)学会用类C的语言对算法进行描述的方法,将类C算法转换成C源程序的方法和过程;

(3)抽象数据类型的定义和表示、实现;

(4)加深对数据的逻辑结构和物理结构之间关系的理解;(5)初步建立起时间复杂度和空间复杂度的概念。实验内容:(类C算法的程序实现)(1)输入一组数据存入数组中,并将数据元素的个数动态地由输入函数完成。求输入数据的最大值、最小值,并通过函数参数返回所求结果; 实验准备:

1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。实验步骤:

1.安装TC并设置好环境,如果已安装好,可以跳过此步; 2.录入程序代码并进行调试和算法分析;

对实验内容(1)的操作步骤:1)用类C语言描述算法过程;2)用C语言环境实现该算法。

对实验内容(2)的操作步骤:1)完成算法的C实现;2)分析其时间复杂度和空间复杂度。

3.编写实验报告。

实验结果:// 动态分配数组空间 #include #include

int size,i;int *pArray;int *p;void malloc_size(){ pArray=(int *)malloc(size*(sizeof(int)));}

int input_size(){ printf(“please input the size:n”);printf(“size= ”);scanf(“%d”,&size);return 0;}

int input_data(){ printf(“please input the value:n”);for(i=0;i

printf(“pArray[%d]= ”,i);

scanf(“%d”,&pArray[i]);} return *pArray;}

int Compare(){ int x,y,i;x=y=p[0];for(i=0;i

if(x>=p[i])x=p[i];

if(y<=p[i])y=p[i];} printf(“min= %dt

max=%dn”,x,y);return 0;}

int Output_data(){ p=pArray;printf(“before ofpaixu :n”);for(i=0;i

printf(“%dt”,*pArray);

pArray++;} printf(“n”);return *pArray;}

void paixu(){ int x=0;int i,j;printf(“later of paixu:n”);for(i=0;i

for(j=i+1;j

{

if(p[i]>=p[j])

{

x=p[i];p[i]=p[j];p[j]=x;

}

}

printf(“%dt”,p[i]);} printf(“n”);}

void main(){ clrscr();input_size();malloc_size();input_data();Output_data();Compare();paixu();}

实验结果:

实验二

线性表及其基本操作实验(2学时)实验目的:

(1)熟练掌握线性表ADT和相关算法描述、基本程序实现结构;(2)以线性表的基本操作为基础实现相应的程序;

(3)掌握线性表的顺序存储结构和动态存储结构之区分。

实验内容:(类C算法的程序实现,任选其一。具体要求参见教学实验大纲)(1)一元多项式运算的C语言程序实现(加法必做,其它选做);(2)有序表的合并;(3)集合的并、交、补运算; 实验准备:

1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。实验步骤:

1.录入程序代码并进行调试和算法分析; 2.编写实验报告。实验结果://线性链表

#include #include #define M 6

typedef struct node { int data;struct node *next;}*Sqlist;

void Initlialize(Sqlist &L){ L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;}

int Getlength(Sqlist L){ int i=0;Sqlist p=L->next;while(p!=NULL){

i++;

p=p->next;}

return i;}

int Getelem(Sqlist L,int i){

int j=1,e;Sqlist p=L->next;while(j

p=p->next;

j++;}

e=p->data;printf(“第 %d 个元素是:%dn”,i,e);return 1;}

int Locatelem(Sqlist L,int x){

int i=0;Sqlist p=L->next;while(p!=NULL&&p->data!=x){

p=p->next;

i++;} if(p==NULL)

return 0;else

{

printf(“%d 是第 %d 个元素n”,x,i);return i;} }

void CreatlistF(Sqlist &L,int a[ ],int n){ Sqlist s;int i;L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;for(i=0;i

s=(Sqlist)malloc(sizeof(Sqlist));

} }

void CreatlistR(Sqlist &L,int a[],int n){

Sqlist s,r;int i;L=(Sqlist)malloc(sizeof(Sqlist));L->next =NULL;r=L;for(i=0;i

s=(Sqlist)malloc(sizeof(Sqlist));

s->data =a[i];

s->next=NULL;

r->next =s;r =s;} }

int Inselem(Sqlist &L,int i,int x){ int j=1;Sqlist s,p=L->next;s=(Sqlist)malloc(sizeof(Sqlist));s->data =x;s->next =NULL;if(i<1||i>Getlength(L))

return 0;while(j

p=p->next;j++;} printf(“在第 %d 个位置插入数据:%dn”,i,x);s->next =p->next;

p->next =s;return 1;}

int Delelem(Sqlist &L,int i){

int j=1;

Sqlist p,q;

p=L;

if(i<1||i>Getlength(L))

return 0;s->data =a[i];

s->next =L->next;L->next =s;

while(j

{

p=p->next;

j++;

}

q=p->next;

p->next =q->next;

free(q);

return 1;}

void Displist(Sqlist L){ Sqlist p=L->next;

while(p!=NULL)

{

printf(“%dt”,p->data);

p=p->next;

}

printf(“n”);}

void input(int *pArray,int n){

printf(“请输入数组数据(共含 %d 个元):n”,n);

for(int i=0;i

Scanf(“%d”,&pArray[i]);

}

int main(int argc, char* argv[]){ Sqlist L;

int Array[M],Select;initlialize(L);do{

printf(“请输入选择方法(1表示头插法,2表示尾插法,0表示结束):n”);

scanf(“%d”,&Select);

switch(Select)

{

case 1: printf(“按头插法建立线性表:n”);

input(Array,M);

creatlistF(L,Array,M);

break;case 2: printf(“按尾插法建立线性表:n”);

input(Array,M);

creatlistR(L,Array,M);

break;

}

printf(“原线性表数据为:n”);Displist(L);

Getelem(L,3);

Locatelem(L,2);

Inselem(L,5,5);

printf(“修改后的线性表数据为:n”);

Delelem(L,4);

Displist(L);}while(Select!=0);return 0;} 运行结果:

实验三

栈和队列实验(6学时)实验目的:

(1)熟练掌握栈和队列的抽象数据类型及其结构特点;(2)实现基本的栈和队列的基本操作算法程序。实验内容:(类C算法的程序实现,任选其一)(1)设计与实现基本的堆栈和队列结构下的各种操作(如堆栈的PUSH、POP等操作)(必做);

(2)以表达式计算为例,完成一个可以进行算术表达式计算功能的算法设计与实现(选做); 实验准备:

1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。实验步骤:

1.录入程序代码并进行调试和算法分析; 2.编写实验报告。实验结果://队列存储 #include #define QueueSize 10 typedef int status;

typedef struct sqqueue { char data[QueueSize];int front,rear;}SqQueue;

void InitQueue(SqQueue &qu){ qu.front =qu.rear =0;}

status EnQueue(SqQueue &qu,char x){

if((qu.rear +1)%QueueSize==qu.front)

return 0;qu.rear =(qu.rear+1)%QueueSize;qu.data[qu.rear]=x;return 1;}

status DeQueue(SqQueue &qu,char &x){ if(qu.rear==qu.front)

return 0;qu.front =(qu.front +1)%QueueSize;x=qu.data[qu.front];return 1;}

status GetHead(SqQueue qu,char &x){ if(qu.rear ==qu.front)

return 0;x=qu.data[(qu.front+1)%QueueSize];return 1;}

status QueueEmpty(SqQueue qu){ if(qu.rear==qu.front)

return 1;else

return 0;}

void main(){ SqQueue qu;char e;InitQueue(qu);printf(“Queue %sn”,(QueueEmpty(qu)==1?“Empty”:“Not Empty”));

printf(“inser an”);

EnQueue(qu,'a');

printf(“inser bn”);

EnQueue(qu,'b');

printf(“inser cn”);

EnQueue(qu,'c');

printf(“inser dn”);

EnQueue(qu,'d');

printf(“Queue %sn”,(QueueEmpty(qu)==1?“Empty”:“Not Empty”));

GetHead(qu,e);

printf(“Queue of top elem is: %cn”,e);

printf(“show of Queue:n”);

while(!QueueEmpty(qu)){

DeQueue(qu,e);

printf(“%ct”,e);}

printf(“n”);} 实验结果:

(2)//用栈实现对表达式的求值运算

#include #include #include

#define TRUE 1 #define FALSE 0 #define OK #define ERROR 0 #define INFEASIBLE-1 #define OVERFLOW-2 #define STACK_INIT_SIZE

#define STACKINCREMENT 10

typedef int Status;typedef char ElemType;

typedef ElemType OperandType;

typedef char OperatorType;

typedef struct {

ElemType *base;

ElemType *top;

int stacksize;}SqStack;

Status InitStack(SqStack &S){

S.base =(ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));

if(!S.base)exit(OVERFLOW);

S.top = S.base;

S.stacksize = STACK_INIT_SIZE;

return OK;}

Status GetTop(SqStack S){

ElemType e;

if(S.top == S.base)return ERROR;

e = *(S.top-1);

return e;}

Status Push(SqStack &S,ElemType e)

{

if(S.top1 < n){

merge(r, r1, i, i+length-1, i + 2*length1 < n-1)

merge(r, r1, i, i+length-1, n-1);

else

for(j = i;j < n;j++)r1[j] = r[j];}

void MergeSort(SortObject * pvector){

RecordNode record[MAXNUM];

int length = 1;

while(length < pvector->n){

mergePass(pvector->record, record, pvector->n, length);

length *= 2;

mergePass(record, pvector->record, pvector->n, length);

length *= 2;

} }

SortObject vector = {8, 49,38,65,97,76,13,27,49};

int main(){

int i;printf(“排序前序列为:”);

for(i = 0;i < 8;i++)

printf(“%d ”, vector.record[i]);printf(“n”);

MergeSort(&vector);printf(“采用归并排序为:”);

for(i = 0;i < 8;i++)

printf(“%d ”, vector.record[i]);

getchar();

return 0;}

实验结果:

实验十

查找实验(2学时)* 实验目的:

(1)熟练掌握各种静态查找表方法(顺序查找、折半查找、索引顺序表等);(2)熟练掌握二叉排序树的构造方法和查找算法;

(3)了解和掌握其它查找方法。

实验内容:(类C算法的程序实现,除顺序查找算法之外,任选一个)(1)顺序查找算法的实现(必做);(2)折半查找算法的实现(选做); 实验结果://查找实验

1、顺序查找:

#include #define LENGTH 20

void SequenceSearch(int *fp,int Length){

int data;

printf(“开始使用顺序查询.请输入你想要查找的数据: ”);

scanf(“%d”,&data);

for(int i=0;i

if(fp[i]==data)

{

printf(“数据%d 是第 %d 个数据n”,data,i+1);

return;

}

printf(“未能查找到数据%d.n”,i,data);}

void main(){

int count;

int arr[LENGTH];

printf(“请输入你的数据的个数:”);

scanf(“%d”,&count);

printf(“请输入 %d 个数据:”,count);

for(int i=0;i

scanf(“%d”,&arr[i]);

SequenceSearch(arr,count);}

实验结果:

2、折半查找:

#include #include #define M 10

typedef struct { char *elem;

int length;

}SStable;

void Create(char **t)

{ int i;static char a[M+1];*t=a;for(i=1;i<=M;i++){

printf(“A[%d] is:”,i);

scanf(“%c”,&a[i]);

if(a[i]!= 'n')getchar();} }

int Searth(char *t,char k){ int i;for(i=M;i>=0 && t[i]!=k;i--);

Return i;}

void output(char *t){ int i;for(i=1;i<=M;i++)

printf(“n

A[%d] is %c”,i,t[i]);}

void px(char *t)

{ char s;int i,j;for(i=1;i<=M;i++)

for(j=i+1;j<=M;j++)

{

if(t[i]>t[j]){s=t[i];t[i]=t[j];t[j]=s;}

} }

int Search_bin(char *t,char k){ int low=1,high=M,mid;while(low<=high){

mid=(low+high)/2;

if(k==t[mid])return mid;

else if(k

else low=mid+1;} return 0;}

void main(){ char *t,k;int s;Create(&t);output(t);printf(“nplease input you search char:”);k=getchar();s=Searth(t,k);if(s>=0)printf(“1: use search find is A[%d]n”,s);else printf(“1:can not find itn”);px(t);output(t);s=Search_bin(t,k);if(s==0)printf(“n1:can not find it n”);else printf(“n2:use Search_bin find is A[%d]n”,s);getchar();}

实验结果:

下载操作系统试验报告word格式文档
下载操作系统试验报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    软件工程试验报告

    实验项目名称:需求分析 (所属课程:软件工程概论) 1.实验目的 1.选择要设计的系统,使用UML进行需求分析,了解所要完成系统的功能需求,性能需求,接口需求等。 2.学习实使用Rational Ros......

    工艺试验报告

    湘潭大学 材料与光电物理学院 IC 工 艺 实 验 报 告 学生姓名: 学生学号: 专业年级: 实习单位: 实习时间:辅导老师: 2014年8月28日 本次实习在长沙韶光半导体公司开展,长沙韶光半......

    操作系统比较

    常见操作系统比较一、三种操作系统简介 (一)Windows操作系统简介 Windows是Microsoft公司在1985年11月发布的第一代窗口式多任务系统,它使PC机开始进入了所谓的图形用户界面时......

    盐碱地改良试验报告

    禾康盐碱清除剂效果试验报告 土壤盐碱化是制约农作物产量增加的重要因素。长期以来,改良盐碱地大多是以挖排水渠、泡田洗盐等常规农业措施清除土壤盐碱,但常常出现改良周期......

    材料力学试验报告大题

    材料力学试验报告大题 1,为何在拉伸试验中必须采用标准试件或比例试件,材料相同而长短不同的试件延伸率是否相同? 答:拉伸实验中延伸率的大小与材料有关,同时与试件的标距长......

    电子商务B2C试验报告

    电子商务B2C 实验报告 姓名: 龚 超 凡 班级: 0301007班 学号: 2010211415 时间:2011年12月4日一、实验目的: B2C是在企业与消费者之间通过Internet网进行商务活动的电子商务模式,......

    医疗器械临床试验报告

    医疗器械临床试验报告 试验用医疗器械名称: 型号规格: 临床试验较高风险医疗器械目录 是□否□ 中国境内同类产品 有□无□ 临床试验机构: 临床试验开始时间: 临床试验结束时间:......

    试验报告常用法语词汇

    试验报告常用的词汇 Arase de terrassement 土方工程的整平层corps de remblai 回填顶面层 couche de forme 垫层 couche de remblai 回填层remblai de contigu 台背回填......