编程实现可靠数据传输原理GO-BAN-N实验报告

编程实现可靠数据传输原理GO-BAN-N实验报告
编程实现可靠数据传输原理GO-BAN-N实验报告

编程实现可靠数据传输原理GO-BACK-N实验

姓名:吴杰学号:13281144班级:计科1306

一.实验目的

运用各种变成语言实现基于Go-Back-N的可靠数据传输软件

二.实验意义

通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。

三.实验步骤

1.利用java编程实现基于Go-Back-N的可靠数据传输软件。

2.运行程序,程序将模拟实际网络中的可靠数据传输

四.结果分析

通过本次实验,了解了GBN传输协议的相关知识。实验代码通过查阅资料很容易理解,但是怎么实现这个程序对我来说是个问题。

五.附件

JAVA语言代码

(1)Sender类

package GBN;

import java.util.Timer;

publicclass Sender extends Thread{

publicint windowsize=3; //发送方窗口长度设为3

public String[] data={"data1","data2","data3",

"data4","data5","data6","data7"}; //模拟七个数据包publicint sign[]={0,1,2,3,4,5,6}; //为7个数据包标号

publicint localack=-1; //保存最近收到的ACK

public Timers litime=null; //定时器(这里定为2秒)

publicint switches=0; //超时标志,1为超时

publicint windowsign[]; //当前窗口内待发的数据分组的序号

publicint acksign=0; //为0表示收到正确ACK,为1表示收到错

误的ACK,必须重发!

public Sender(){

windowsign=newint[windowsize]; //给窗口分配指定大小的空间

for(int i=0;i<3;i++)

windowsign[i]=sign[i]; //窗口初始化时存放前3个序号

}

publicvoid run(){

System.out.println("发送方开始发送分组数据!");

}

publicvoid getack(int ack){

System.out.println("发送方收到了ACK,序号为"+ack+"并且开始加以

确认!");

if(ack!=localack+1){

System.out.println("经验证,这不是发送方正期待的ACK,立刻重

发序号为"+(localack+1)+"的数据分组!");

acksign=1;

}

else{

localack=ack; //表示正确确认了ACK

acksign=0;

}

}

publicvoid time(){

switches=0; //标志初始化为0

litime=new Timers();

Timer limit=new Timer();

limit.schedule(litime, 0,100);

}

}

(2)Receiver类

package GBN;

publicclass Receiver extends Thread{

publicint lastdata;

public Sender sender;

publicvoid run(Sender s){

sender=s;

System.out.println("接收方开始接收分组数据!");

}

void receive(int data, Sender s){

sender=s; //发送方的参数传递

System.out.println("接收方收到了序号为"+data+"的分组!");

if(data!=0){

if(data==lastdata+1){ //数据包序号校验,若连续则是正确/所期待的

System.out.println("该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!");

lastdata=data; //更新本地保存的数据包序号变量

respond(lastdata); //回送该正确接收的数据包对应的ACK }

else{

System.out.println("该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ACK!");

respond(lastdata);

//若不是所期待的数据包则丢弃并且重发上一次的ACK

}

}

else{

System.out.println("该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!");

lastdata=data;

respond(lastdata); //首次接收数据包并且回送ACK

}

}

void respond(int ack){ //回送指定序号的ACK

if(sender.litime.limit<20){ //判断是否超时(2秒)

ack=lastdata; //获取本场保存的数据包序号

sender.getack(ack);

}

else{

System.out.println("计时超时!!(未丢包但是时间超过2秒)发送方准备重发序号为"+ack+"的数据分组!");

sender.switches=1; //如果超时,设置超时状态并显示警告

}

}

}

(3)Timers类

package GBN;

import java.util.TimerTask;

publicclass Timers extends TimerTask {

publicint switches;

publicint limit;

publicvoid run(){

if(limit<20) limit++; //计时2秒

else {

switches=-1;

this.cancel();

} //开关为-1表示超时,并且停止计时器}

public Timers(){

switches=0; //启动计时器时全部初始化

limit=0;

}

}

(4)GBN类

package GBN;

import java.util.Random;

import java.io.*;

public class GBN extends Thread{

static void senddelay(int x) throws InterruptedException{

if(x==1) {

sleep(300);

System.out.println("发送数据分组时发生延迟:300毫秒!");

}

else if(x==2) {

sleep(750);

System.out.println("发送数据分组时发生延迟:750毫秒!");

}

else if(x==3) {

sleep(1200);

System.out.println("发送数据分组时发生延迟:1200毫秒!");

}

else if(x==4) {

sleep(3000);

System.out.println("发送数据分组时发生延迟:3000毫秒!");

}

}

public static void main(String[] args) throws IOException, InterruptedException { Sender s=new Sender();

Receiver re=new Receiver();

s.start(); //发送端启动

re.run(s); //接收端启动

sleep(1000); //延迟处理

int[] retimes=new int[7]; //计算每个分组被发送的次数

for(int i=0;i<7;i++)

retimes[i]=0; //数据包顺次发送

for(int i=0;i<=s.sign.length;i++){

while(i>s.localack+1){ //尚有未确认的数据包,重发!

System.out.println("发送方开始重新发送序号为"+(s.localack+1)+"的数据分组");

retimes[s.localack+1]++;

int ran=new Random().nextInt(3);

int randelay=new Random().nextInt(5);

s.time();

senddelay(randelay); //设置随机值,模拟数据传输延迟

if(ran!=1)

re.receive(s.localack+1,s);

//设置随机值,模拟数据丢包过程

else

System.out.println("序号为"+(s.localack+1)+"的分组在传给接收方途中

发生了丢包!");

}

if(i!=s.sign.length){

System.out.println();

System.out.println("发送方现在开始第一次发送序号为"+i+"的数据分组");

retimes[i]++;

if(i!=0){

for(int k=0;k<3;k++){

//表示至少成功发送并确认了一个数据分组

s.windowsign[k]++;

//这种情况下滑动窗口向前移动!

}

}

System.out.println();

System.out.println("当前窗口内的分组情况为:");

//显示当前窗口内数据包情况

for(int p=0;p<3;p++){

if(s.windowsign[p]<=6)

System.out.println("第"+p+"号窗口里面存放的是序号为"+s.windowsign[p]+"的马上待发送的数据分组!");

else

System.out.println("第"+p+"号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!");

}

System.out.println();

int ran=new Random().nextInt(3);

int randelay=new Random().nextInt(5);

s.time(); //计时开始(2秒时间)

senddelay(randelay); //设置随机值,模拟数据传输延迟

if(ran!=1) re.receive(s.sign[i],s);

//设置随机值,模拟数据丢包过程

else System.out.println("序号为"+i+"的分组在传给接收方途中发生了丢包!");

}

}

System.out.println();System.out.println("以下是每个数据分组被发送过的次数的统计结果");

for(int i=0;i<7;i++) //显示关于每个数据包发送次数的统计表

System.out.println("序号为"+i+"的数据分组被发送过的次数为:"+retimes[i]);

System.exit(0);

}

}

机械原理习题及解答

机构的结构分析 2-1填充题及简答题 (1)平面运动副的最大约束数为,最小约束数为。 (2)平面机构中若引入一高副将带入个约束,而引入一个低副将带入个约束。 (3)机构具有确定运动的条件是什么? (4)何谓复合铰链、局部自由度和虚约束? (5)杆组具有什么特点?如何确定机构的级别?选择不同的原动件对机构级别有无影响? 答案: (1)平面运动副的最大约束数为2,最小约束数为1 (2)平面机构中若引入一高副将带入1个约束,而引入一个低副将带入2个约束。 (3)机构具有确定运动的条件是:机构的自由度大于零,且自由度数等于原动件数。 (4)复合铰链:在同一点形成两个以上的转动副,这一点为复合铰链。 局部自由度:某个构件的局部运动对输出构件的运动没有影响,这个局部运动的自由度叫局部自由度。 虚约束:起不到真正的约束作用,所引起的约束是虚的、假的。 (5)杆组是自由度为零、不可再拆的运动链。机构的级别是所含杆组的最高级别。选择不 同的原动件使得机构中所含杆组发生变化,可能会导致机构的级别发生变化。 2-2 计算下图机构的自由度,若含有复合铰链,局部自由度,虚约束等情况时必须一一指出, 图中BC、ED、FG分别平行且相等。要使机构有确定运动,请在图上标出原动件。 2-2答案:B点为复合铰链,滚子绕B点的转动为局部自由度,ED及其两个转动副引入虚 约束,I、J两个移动副只能算一个。

11826323=-?-?=--=h L p p n F 根据机构具有确定运动的条件,自由度数等于原动件数,故给凸轮为原动件。 2-3 题图2-3所示为一内燃机的机构简图,试计算其自由度,以AB 为原动件分析组成此机 构的基本杆组。又如在该机构中改选EF 为原动件,试问组成此机构的基本杆组是否与前有所不同,机构的级别怎样? 2-3答案:110273=?-?=F 。注意其中的C 、F 、D 、H点并不是复合铰链。 以AB 为原动件时: 此时,机构由三个Ⅱ级基本杆组与原动件、机架构成,机构的级别为二级。 以EF 为原动件时: 机构由1个Ⅱ级基本杆组,1个Ⅲ级基本杆组和机架组成。机构的级别为三级。显然,取不同构件为原动件,机构中所含的杆组发生了变化,此题中,机构的级别也发生了变化。 2-4 图示为一机构的初拟设计方案。试分析:

数据库原理实验报告

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验一SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级:14软工5班 学号:14551204 14551206 姓名:花元凯罗文波 1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获得 所感兴趣的相关产品主题/技术文档。

(4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL查 询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。目前最新版本是SQL SERVER 2014。 1,SQL Server 2005学习版当保护和管理应用系统内外部的信息变得至关重要时,通过提供一套免费、易于使用和健壮的数据库,学习版帮助开发人员建立强健的和可靠的应用系统。

编译原理实验报告语法分析程序的设计

编译原理实验报告语法分析程序的设计 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

实验5语法分析程序的设计(2) 一、实验目的 通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中算法优先分析方法。 二、实验内容 设计一个文法的算法优先分析程序,判断特定表达式的正确性。 三、实验要求 1、给出文法如下: G[E] E->T|E+T; T->F|T*F; F->i|(E); +*()i + * ( ) i 21)直接存放,2)为优先关系建立优先函数,这里由学生自己选择一种方式; 1、给出算符优先分析算法如下: k:=1; S[k]:=‘#’; REPEAT 把下一个输入符号读进a中; IF S[k]∈V T THEN j:=k ELSE j:=k-1; WHILE S[j] a DO BEGIN

REPEAT Q:=S[j]; IF S[j-1]∈V T THEN j:=j-1 ELSE j:=j-2 UNTIL S[j] Q 把S[j+1]…S[k]归约为某个N; k:=j+1; S[k]:=N; END OF WHILE; IF S[j] a OR S[j] a THEN BEGIN k:=k+1;S[k]:=a END ELSE ERROR UNTIL a=‘#’ 1、根据给出算法,利用适当的数据结构实现算符优先分析程序; 2、利用算符优先分析程序完成下列功能: 1)手工将测试的表达式写入文本文件,每个表达式写一行,用“;”表示结束; 2)读入文本文件中的表达式; 3)调用实验2中的词法分析程序搜索单词; 4)把单词送入算法优先分析程序,判断表达式是否正确(是否是给出文法的语言),若错误,应给出错误信息; 5)完成上述功能,有余力的同学可以对正确的表达式计算出结果。四、实验环境 PC微机 DOS操作系统或 Windows 操作系统 Turbo C 程序集成环境或 Visual C++ 程序集成环境 五、实验步骤

数据库原理实验报告(1)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验一 SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获 得所感兴趣的相关产品主题/技术文档。 (4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL 查询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。

数据库原理实验报告(数据查询)

数据库原理实验报告 实验三数据查询 班级:××× 姓名:××× 学号:××× 数据查询 一、[实验目的] 1.掌握SQL的单表查询操作

2.掌握SQL的连接查询操作 3.掌握SQL的嵌套查询操作 4.掌握SQL的集合查询操作 二、[实验内容] 本实验的主要内容是: 1.简单查询操作。包括投影、选择条件表达,数据排序,使用临时表等。 2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 4.组合查询与统计查询。 (1)分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。 (2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 (3)组合查询实验。 (4)计算和分组计算查询的实验。 三、[实验方法] 1.将查询需求用Transact-SQL语言表示。 2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。 3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。 4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。 5 查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。 图5- 错误!未定义书签。SQL Server 2000查询分析器 查询分析器的界面如图5- 错误!未定义书签。所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查

机械原理实验

实验四机构运动简图测绘 一、实验目的 1.对运动副、零件、构件及机构等概念建立实感。 2.培养依照实物机械绘制其机构运动简图的能力。 3.熟悉机构自由度的计算方法。 二、实验设备及用具 1.牛头刨床模型,抛光机模型等各种机构模型 2.学生自备:圆规、分规、有刻度的三角板(或直尺)、铅笔、橡皮及草稿纸等。 三、实验要求 实验前必须认真预习实验指导书和阅读教材中的有关章节,熟悉绘制机构运动简图的基本要求,掌握机构自由度的计算方法。实验时根据给出的机构模型,仔细观察和分析后,正确绘制机构运动简图。要求每位同学画出3~4个机构运动简图,并计算机构自由度,把计算结果与实际机构进行比较,验证其有无错误。 四、基本原理 机构的运动与机构中构件的数目、运动副的类型、数目及运动副的相对位置有关,而与构件的外形、组成构件的零件数目及固联方式、运动副的具体结构等无关。因此,在绘制机构运动简图时,可以撇开构件的复杂外形和运动副的具体构造,而用简单的符号来代替构件和运动副,并按一定的比例尺表示各运动副的相对位置,即可表明机构中运动传递的情况。 五、绘制机构运动简图的方法 1.了解要绘制的机械的名称及功用,认清机械的原动件及工作构件(执行机构)。 2.缓慢转动原动件,细心观察运动在构件间的传递情况,了解活动构件,运动副的数目及其性质。 在了解活动构件及运动副数时,要注意到如下两种情况: 1.当两构件间的相对运动很小时,易误认作为一个构件; 2.由于制造的不精确,同一构件各部分之间有稍许松动时,易误认作为两个构件,碰到这种情况,要仔细分析,正确判断。 3.要选择最能表示机构特征的平面为视图平面;同时,要将原动件放在一适当的位置,以使机构运动简图最为清晰。

北京科技大学编译原理实验报告

编译原理实验报告 学院: 计算机与通信工程学院专业: 计算机科学与技术 班级: 学号: 姓名: 实验成绩:

词法分析 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 2.1 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 := + - * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。 2.2 各种单词符号对应的种别码: 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)…… 三、词法分析程序的算法思想: 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 3.1 主程序示意图:

3.2词法分析程序流程图: 四、词法分析程序的C++语言程序源代码: #include"stdio.h" #include"stdlib.h" #include"string.h" #define _KEY_WORD_END "waiting for your expanding" typedef struct 开始 变量初始化 是否文件结束? 返回 拼数 Syn=11 返回 拼字符串 是否是关键字? Syn 为对应关键字的单词种别码 Syn=10 给不同的符号相同的 Syn 值 报错 是 否 数字 字母 是 否 运算符, 界符等 其他

机械原理实验报告

机械原理实验指导 实验一 机构运动简图的测绘 一、 实验目的 1.掌握根据各种机构实物或模型绘制机构运动简图的方法; 2.验证机构自由度的计算公式; 3.分析某些四杆机构的演化过程。 二、 实验设备和工具 1.各类机构的模型和实物; 2.钢板尺、量角器、内外卡钳等; 3.三角尺、铅笔、橡皮、草稿纸等(自备)。 三、 实验原理 由于机构的运动仅与机构中构件的数目和构件所组成的运动副数目、类型和相对位置有关。因此,可以撇开构件的实际外形和运动副的具体构造,用简单的线条来表示构件,用规定的或惯用的符号来表示运动副,并按一定的比例画出运动副的相对位置,这种简单的图形即为机构运动简图。 四、 实验步骤 1.使被测机构缓慢运动,从原动件开始,循着传动路线观察机构的运动,分清各个运动单元,确定组成机构的构件数目; 2.根据直接相联接两构件的接触情况及相对运动性质,确定运动副的种类; 3.选择能清楚表达各构件相互关系的投影面,从原动件开始,按传动路线用规定的符号,以目测的比例画出机构运动示意图,再仔细测量与机构有关的尺寸,按确定的比例再画出机构运动简图,用数字1、2、3……分别标注各构件,用字母A 、B 、C ……分别标注各运动副; 比例尺) (构件在图纸上的长度 ) (构件实际长度mm AB cm L AB L = μ 4.分析机构运动的确定性,计算机构运动的自由度。

五、思考题 1.一张正确的机构运动简图应包括哪些内容? 2.绘制机构运动简图时,原动件的位置能否任意选择?是否会影响简图的正确性? 3.机构自由度的计算对测绘机构运动简图有何帮助? 六、实验报告

实验二 渐开线齿轮的范成原理 一、 实验目的 1.掌握用范成法加工渐开线齿轮齿廓曲线的原理; 2.了解齿廓产生根切现象的原因及避免根切的方法; 3.了解刀具径向变位对齿轮的齿形和几何尺寸的影响。 二、 实验设备和工具 1.齿轮范成仪; 2.剪刀、绘图仪; 3.圆规、三角尺、两种颜色的铅笔或圆珠笔(自备)。 三、 实验原理 范成法是利用齿轮啮合时其共轭齿廓互为包络线的原理来加工齿轮的一种方法。加工时,其中一轮为刀具,另一轮为轮坯。他们之间保持固定的角速度比传动,好象一对真正的齿轮啮合传动一样,同时刀具还沿轮坯的轴向作切削运动,这样制得的齿轮齿廓就是刀具的刀刃在各个位置的包络线。为了能清楚地看到包络线的形成,我们用范成仪来模拟实现齿轮轮坯与刀具间的传动“切削”过程。 齿轮范成仪构造如图2——1所示,半圆盘2绕固定于机架上的轴心转动,在圆盘的周缘刻有凹槽,凹槽内嵌有两条钢丝3,钢丝绕在凹槽内,其中心线形成的圆相当于被加工齿轮的分度圆。两条钢丝的一端固定在圆盘2上的B 、B ‘ 点,另一端固定在拖板4的A 、A ’ 点,拖板可水平方向移动,这与被加工齿轮相对齿条刀具的运动方向相同。 在拖板4上还装有带有刀具的小拖板5,转动螺钉7可以调节刀具中线至轮坯中心的距离。 齿轮范成仪中,已知基本参数为: 1. 齿条刀具:压力角0 20=α,模数mm m 25=, 齿顶高系数0.1* =a h ,径向间隙系数25.0* =C 2. 被加工齿轮:分度圆直径mm d 200= 四、 实验步骤 1.根据已知基本参数分别计算被加工齿轮的基圆直径d b 、最小变位系数x min ,标准齿轮和变位齿轮的齿顶圆直径d a1和d a2、齿根圆直径d f1和d f2,将上述六个圆

数据库原理实验报告

数据库原理 实验报告 系别电子信息系 专业计算机科学与技术班级学号4080522 姓名龚敏 指导教师李爱英

一.概要设计 1.教学数据库各表的关系模式:(加下线的属性为主键) 学生 (学号,姓名,性别, 出生日期,所在系) 英文缩写对照:student(s_no,s_name,s_sex,s_age,s_birthday,s_department) 课程 (课程号,课程名,学分) 英文缩写对照:course(c_no,c_name,c_score) 教师 (职工号,姓名,性别,职称) 英文缩写对照:teacher(t_no,t_name,t_sex,t_duty) 选课 (学号,课程号,成绩) 英文缩写对照:choice(s_no,c_no,score) 讲授 (职工号,课程号) 英文缩写对照:teaching(t_no,c_no) 2.教学数据库E-R 图: 实体:课程,学生,选课 联系:选课(学生同课程之间多对多的联系m:n),讲授(教师同课程之间多对多的联系m:n)。 二.逻辑设计 代码: use master go create database stu go use stu go n m m n 课程 教师 讲授 选课 学号 姓名 性别 出生日期 成绩 职工号 姓名 性别 职称 学分 课程号 课程名 学生

create table student (s_no char(8) not null primary key, s_name char(8) not null , s_sex varchar(8) not null, s_birthday smalldatetime not null, s_department varchar(13) not null) drop table student use stu go create table teacher (t_no char(8) not null primary key, t_name char(8) not null, t_sex varchar(8) not null, t_duty char(8) not null) create table course (c_no char(8) not null primary key, c_name char(8) not null, c_score varchar not null) create table choice( s_no char(8) not null primary key, c_no char(8) not null primary key, score varchar not null) create table teaching( t_no char(8) not null primary key, c_no char(8) not null primary key) insert student values('101','袁敏','女','1982-2-3','机电') insert student values('102','李志强','男','1983-4-5','计算机') insert student values('103','张亮','男','1984-10-9','建筑') insert student values('104','李平','女','1984-5-6','计算机') insert student values('105','王丽','女','1983-2-1','机电') insert student values('106','刘明耀','男','1982-4-16','计算机') select* from student insert course values('1011','C语言','6') insert course values('1012','数据结构','4') insert course values('1013','微机原理','6') insert course values('1014','数字电路','5') insert course values('1015','高等数学','6') select* from course insert teacher values('0511','张大维','男','副教授') insert teacher values('0512','林楠','女','讲师') insert teacher values('0513','韩晓颖','女','副教授') insert teacher values('0514','李辉','男','讲师') insert teacher values('0515','孙丽','女','助教') select* from teacher insert choice values('101','1011','82.5') insert choice values('101','1012','79') insert choice values('102','1012','92.5') insert choice

编译原理实验报告二

编译原理实验报告 题目构造识别字符串的自动机学院 专业 班级 学号 学生姓名 指导教师 西安思源学院教务处制 二〇一年

实验二构造识别符号串的自动机 一、实验目的 1 掌握形式语言与自动机的概念 2 了解正规集及有穷自动机的关系 3 能构造识别相应符号串的自动机 4 能构造词法分析程序所识别的各类单词的自动机 二、实验环境 Microsoft Visual C++ 6.0 三、实验内容 1 用高级语言编写程序:该程序能接受C++所有的标识符。 2 用高级语言编写程序:该程序能接受C++所有的常数(整数和定点小数)。 3 用高级语言编写程序:该程序能接受C++的所有保留字。 4 用高级语言编写程序:该程序能接受C++的所有界符、运算符。 四、设计说明 void main() { void find_word(); void show_all(); void Input(); Input(); cout<<"运行结果如下"<'||ch[i]=='('||ch[i]==')') { c[t]=ch[i]; t++; k++; j++; } else if(ch[i]==' '||ch[i]=='\t') { b[k]=' ';

数据库原理实验报告分析

2013级数据库原理实验报告 专业:_______计算机___ 班级:________________ 学号:______________ 姓名:_______________ 2015年5月

实验一 SQL Server 2005基本操作 一、实验目的 了解SQL Server 2005组件; 了解SQL Server数据库组成; 掌握SQL Server 2005界面基本操作。 二、实验内容 (1)开始->程序->Microsoft SQL Server 2005-> SQL Server Management Studio,打开后进入到SQL Server 2005主体界面 (2)点击?数据库?前面的?+?,可以展开查看数据库,并且可以继续展开下级目录,查看数据库中的表、视图等。 (3)了解SQL Server 2005菜单栏的一些主要工具的使用。 (4)学生动手操作SQL Server 2005,打开数据库,打开表,打开查询界面;查看数据库的属性、表的属性等。 三、实验总结 进行这次实验有遇到什么问题?怎么解决的? 答:此次实验我们一步一步按照实验内容操作的,基本上没有遇到问题。

实验二数据定义 一、实验目的 掌握SQL Server 2005的数据库创建; 掌握SQL Server数据定义语言; 掌握SQL Server 2005数据定义的SQL语言定义与管理器定义两种方式。 二、实验内容 (1)创建、修改、删除数据库。 创建要求:数据库Employee中包含一个数据库文件Empdat1.mdf和一个日志文件Emplog.ldf。其中,数据文件大小为10MB,最大为50MB,以5MB速度增长;日志文件大小为5MB,最大为25MB,以5%速度增长。 修改要求:增加第二个数据库文件Empdat2.ndf,其中,数据文件大小为5MB,最 大为25MB,以2MB速度增长。 (2)利用SQL创建人员表person、月薪表salary及部门表dept。 见上页图 要求:按表2-1、表2-2及表2-3中的字段说明创建。

机械原理实验报告-齿轮传动

机械原理实验报告-齿轮传动 机械原理实验 ——齿轮传动机构 groups, Wujiang County. In September, the chapter in the Tomb occupied formally established the village of KMT: Wu Jiang County Government (known as "guerrilla Government") and against self-defence groups. Begins to flow from jiaxing railway Lili, Tan Hills area. In November, the County Government is based on the tomb of Lu Xiyan, mine-and from the pier at Dang, under Jin bang. County Government operates three Civil Affairs, finance, education 一( 实验目的 1. 掌握齿轮的相关几何参数的定义及其意义。 2. 了解齿轮传动的构成,认识其组成原件。 3. 掌握齿轮传动比的计算方法。 4. 掌握齿轮的相关几何参数的计算。 5. 训练动手能力,培养综合设计的能力。二( 实验仪器 序号名称数量备注 1 1 试验台机架 2 1 主动轴带轮 3 1 电机轴带轮 4 2 主轴

5 3 端盖 6 2 卡环 三( 实验原理 (一)齿轮参数 groups, Wujiang County. In September, the chapter in the Tomb occupied formally established the village of KMT: Wu Jiang County Government (known as "guerrilla Government") and against self-defence groups. Begins to flow from jiaxing railway Lili, Tan Hills area. In

编译原理词法分析实验报告

词法分析器实验报告 一、实验目的 选择一种编程语言实现简单的词法分析程序,设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 : = + - * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。 各种单词符号对应的种别码: 表各种单词符号对应的种别码 词法分析程序的功能: 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)…… 三、词法分析程序的算法思想: 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根

据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 主程序示意图: 主程序示意图如图3-1所示。其中初始包括以下两个方面: ⑴关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: Char *rwtab[6] = {“begin”, “if”, “then”, “while”, “do”, “end”,}; 图3-1 (2)程序中需要用到的主要变量为syn,token和sum 扫描子程序的算法思想: 首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn 用来存放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。

机械原理实验思考题参考

《机构测绘、分析及设计》实验思考题参考答案 1.一个正确的“机构运动简图”应能说明哪些内容? 机构运动简图应着重表达机构各构件间的相对运动关系,应包括原动件的运动规律、机构中所有构件和运动副的类型、数目及其相对位置(即转动副的中心位置、移动副的中心线位置和高副接触点的位置),而与构件的外形、断面尺寸、组成构件的零件数目及其固联方式和运动副的具体结构无关。因此绘制机构运动简图可以撇开构件的复杂外形和运动副的具体构造,用简单的线条和规定的符号代表构件和运动副,并按比例定出各运动副的相对位置。 2.根据所装配的曲柄滑块机构,分析此机构中曲柄存在条件是什么?连杆长度与机构传力性能之间有什么关联? 曲柄滑块机构中曲柄存在条件是: L AB +e<=L BC 连杆长度越长则机构传力性能越好,因为连杆越长则压力角越小。 3.牛头刨六杆机构中滑杆的行程长度如何调整?调整曲柄长度 4.曲柄滑块机构、曲柄摇块机构、摆动导杆机构之间的演化关系如何?举例说明机构演化的方法有哪些? 铰链四杆机构可以通过四种方式演化出其它形式的四杆机构。即①取不同构件为机架;②转动副变移动副;③杆状构件与块状构件互换;④销钉扩大。 曲柄滑块机构曲柄摇块机构摆动导杆机构

曲柄滑块机构、曲柄摇块机构、摆动导杆机构之间通过取不同构件为机架来演化。 对心曲柄滑块机构偏心轮滑块机构 牛头刨六杆机构正弦机 构曲柄摇杆机构 《平面机构特性分析》实验思考题参考答案 1、铰链四杆机构(L1=50 mm,L2=100 mm,L3=80 mm)中,通过改变机架长度可得到何种机构? 设四杆机构中机架L4<=50,L4=L min,则由曲柄存在条件:最短杆与最长杆的长度之和必须小于或等于其余二杆的长度之和(L max+L min<=L2+L3)可得: 100+L4<=50+80 即0=100,L4=L max,则由曲柄存在条件:最短杆与最长杆的长度之和必须小于或等于其余二杆的长度之和(L max+L min<=L2+L3)可得:

机械原理实验报告

机械原理实验报告 姓名: 班级: 学号: 日期: 现代机械设计教研室 河南机电高等专科学校

机构现场认识实验报告 一、平面连杆机构 1.根据机构中移动副数目的不同,平面四杆机构可分为、、三种类型。 2.根据连架杆是否能整周转动,平面铰链四杆机可分为、 、。 3.在平面四杆机构中,由主动件的转动转换为从动件的移动的机构有、。 二、凸轮机构 1.凸轮机构是由、、三个基本构件组成的高副机构。 2.凸轮机构按其从动件的基本形式可分为、、 。 3.凸轮机构按凸轮外形可分为、、 、。 4.凸轮机构按凸轮与从动件保持高副接触的方式可分为、。 三、齿轮机构 1.在平面齿轮机构中,传递两平行轴间回转运动的齿轮机构有、 、。 2.在平面齿轮机构中,由转动转换为移动的齿轮机构是。 3.在空间齿轮机构中,传递两相交轴间回转运动的齿轮机构有、 。 4.在空间齿轮机构中,传动两交错轴间回转运动的齿轮机构有、。 四、轮系 1.你所观察到的轮系的功用有哪些? 五、间歇运动机构 1.常用的间歇机构、、、。 2.能实现由连续转动转换为单向间歇回转的间歇机构有哪几类?

六、进行了这次机构现场认识实验后,你有何收获、体会和建议?

机构运动简图实验报告 一、绘制机构运动简图的要求 1.用圆规和三角板,按选定的比例尺绘制机构运动简图。 2.在机构运动简图上,用箭头标示原动件,用阿拉伯数字依次标示各构件,用大写英文字母标示各运动副,并列表说明构件的运动学尺寸。 3.计算机构的自由度。 二、绘制机构运动简图 μ= 机构名称 l 机构运动简图运动学尺寸 原动件数目 机构自由度 该机构是否具有确定的运动规律 μ= 机构名称 l 机构运动简图运动学尺寸 原动件数目 机构自由度 该机构是否具有确定的运动规律

数据库原理实验报告_实验三_数据完整性与安全性控制

实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1) 非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2) 主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择修改命令-->对话框中右击sno-->选择设置主键'>修改主键名为pk_sno '-->保存

(3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname 。 唯一约束:单击数据库Student-->单击表--> 单击S-->右击sname-->选择修改’ 命令T右击 sname-->选择索引和键命令--> 打开索引和键框图--> 添加--> 是否唯一改为是--> 名称改为us sname '-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为男 设默认约束:单击数据库Student宀单击表宀单击右击sno^选择修改命令宀单击cno-->在默认值栏输入男’保存

D62.s1udent - Diagram_0* D62.sludent - dbo.S* SQLQuery5.sql - D... (D62\A^m i n (52J)* 列容 埶据类型 允祥值 Q 5TI0 Ctiar(lO) n sname nvarchar (20) a 卜:S5SX nchai ■⑵ 團 sbirtti date □ adept nv ar char (20) sPhoneNo ctiar(LQ) @] 数捐类型 允傑Mdl 值 曰表设计器 RowGuid E 标识魁 不用于复制 大小 (5) CHECK 约束:为SC 表的成绩(grade)添加CHECK 约束,约束名为ck grade ,其 检查条件为:成绩应该在0-100之间。 ffin har 妊 2 Nnrh 昙否否否二

机械原理实验报告大全

机械原理实验项目 机械原理课程实验(一) 机械传动性能测试实验 一、实验目的 (1) 通过测试常见机械传动装置(如带传动、链传动、齿轮传动、蜗杆传动等)在传递运动与动力过程中的速度、转矩、传动比、功率及机械效率等,加深对常见机械传动性能的认识与理解。 (2) 通过测试由常见机械传动组成的不同传动系统的机械参数,掌握机械传动合理布置的基本要求。 (3) 通过实验认识机械传动性能综合实验台的工作原理、提高计算机辅助实验能力。 二、实验设备 机械传动性能测试综合实验台。 三、实验内容 机械传动性能测试是一项基于基本传动单元自由组装、利用传感器获取相关信息、采用工控机控制实验对象的综合性实验。它可以测量用户自行组装的机械传动装置中的速度、转矩、传动比、功率与机械效率,具有数据采集与处理、输出结果数据与曲线等功能。 机械传动性能测试实验台的逻辑框图 变频 电机 ZJ 扭矩 传感器 ZJ 扭矩 传感器 工作载荷 扭矩测量卡 转速调节 机械传动装置 负载调节 工控机 扭矩测量卡

机械原理课程实验(二) 慧鱼机器人设计实验 一、实验目的 1)通过对慧鱼机器人、机电产品的系统运动方案的组装设计,培养学生独立确定系统运动方案设计与选型的能力。 2)利用“慧鱼模型”组装机器人模型,探索机器人各个功能的实现方法,进行机电一体化方面的训练。 二、实验设备 1)慧鱼创意组合模型包; 2)计算机一台; 3)可编程控制器、智能接口板; 4)控制软件。 三、实验内容 “慧鱼创意组合模型”是工程技术型模型,能够实现对工程技术以及机器人技术等的模拟仿真。模型是由各种可以相互拼接的零件所组成,由于模型充分体现了各种结构、动力、控制的组成因素,并设计了相应的模块,因此,可以拼装成各种各样的机器人模型,可以用于检验学生的机械结构和机械创新设计与控制的合理可行性。 慧鱼机器人实验二室 自动步行车 学生创新实验

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

相关文档
最新文档