课程设计报告-滑动窗口协议仿真之欧阳光明创编

滁州学院

欧阳光明(2021.03.07)

课程设计报告

课程名称:计算机网络

设计题目:滑动窗口协议仿真

系别:计算机与信息工程学院

专业:计算机科学与技术

组别:第五组

起止日期:2011年11月24日~2011年12月7日

指导教师:赵国柱

计算机与信息工程学院二○一一年制

课程设计任务书

一. 引言

二. 基本原理

2.1窗口机制

2.2 1bit滑动窗口协议

2.3 后退N协议

2.4 选择重传协议

2.5 流量控制

三. 需求分析

3.1 课程设计题目

3.2 开发环境

3.3运行环境

3.4 课程设计任务及要求

3.5 界面要求

3.6 网络接口要求

四. 详细设计4.1 结构体的定义

4.2 发送方的主要函数

4.3 接受方的主要函数

五.源代码

5.1 发送方的主要代码

5.2 接收方的主要代码

六. 调试与操作说明

致谢

[参考文献]

课程设计的主要内容

1.引言

早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协

议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ 协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。

2.基本原理

2.1 窗口机制

滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接受方为其窗口内的每一个序号保留了一个缓冲区。与每个缓

冲区相关联的还有一位,用来指明该缓冲区是满的还是空的。若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退N协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。2.21bit滑动窗口协议

当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。

2.3 后退N协议

由于停等协议要为每一个帧进行确认后才继续发送下一帧,

大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连

续发送若干个数据帧,即使在连续发送过程中收到了接收方发来

的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时

都要设置超时定时器。只要在所设置的超时时间内仍收到确认

帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若

发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则

该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及

其后的N帧。

从这里不难看出,后退n协议一方面因连续发送数据帧而提

高了效率,但另一方面,在重传时又必须把原来已正确传送过的

数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),

这种做法又使传送效率降低。由此可见,若传输信道的传输质量

很差因而误码率较大时,连续测协议不一定优于停止等待协议。

此协议中的发送窗口的大小为k,接收窗口仍是1。

2.4 选择重传协议

在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图所示。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

2.5 流量控制

TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收

方的处理能力。处理过程如下:

(1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据

缓存区;

(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;

(3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。

(4)滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。

3.需求分析

3.1 课程设计题目:滑动窗口协议仿真

3.2开发环境:Visual C++ 6.0

3.3运行环境:Windows 操作系统

3.4课程设计任务及要求:(1)程序按照滑动窗口协议实现端对端的数据传送。包括协议的各种策略,如包丢失、停等应答、超时等都应有所仿真实现。(2)显示数据传送过程中的各项具体数据。双方帧的个数变化,帧序号,发送和接受速度,暂停或重传提示等。

3.5 界面要求:

此次课程设计要求的所有功能应可视,我们组主要是用VC++编写的,运行在DOS环境下,观察发送方(sender)发送数据包到接收方(receive)时。界面应显示出双方帧个数的变化,帧序号,发送和接受速度,暂停或重传提示等,界面中必须动态显示数据帧的发送和接受情况,包括在相应的窗口详细显示相应的ACK和其他收发数据帧后发出的消息,以表明模拟协议的正确运作过程。在各种情况下,接受方和发送方窗口应实时显示帧的发送和接受情况,包括序号,时间戳,内容等。以及窗口的填充和清空情况。3.6 网络接口要求:

两台机器或是一台机器中两个独立的线程模拟发送方与接受方,接收数据的端口初始应为监听状态。发送方向接受方发起连接,成功后开始发送数据。

4.概要设计

4.1 结构体定义如下:

typedef enum {data = 1,ack,nak,tout} frame_kind; //帧类型

typedef struct frame_head

{

frame_kind kind; //帧类型

unsigned int seq; //序列号

unsigned int ack; //确认号

unsigned char data[MAX_LENGTH]; //数据}Head;

typedef struct frame

{

frame_head head; //帧头

unsigned int size; //数据的大小

} Frame;

typedef struct framenode //队列节点类型

{

frame head_data;

struct framenode *next;

} Framenode;

typedef struct

{

Framenode *front; //队头指针

Framenode *rear; //队尾指针

} LinkQueue;

4.2发送方的主要函数实现:

函数名:void InitLine(LinkQueue *q);

功能:初始化队列。

函数名:void GetFrameFromHost(LinkQueue *q);

功能:从主机取数据帧,由于实验需要,假设主机有足够多的数据帧要发送。

void DeLine(LinkQueue *q);

功能:数据帧发送完毕(收到确认帧)后,删除发送的数据帧(队头)。

函数名:int QueueEmpty(LinkQueue *q);

功能:判断队列是否为空。

函数名:frame QueueFront(LinkQueue *q);

功能:取队头,首帧是准备好待发送的帧。

函数名:int QueueLen(LinkQueue *q);

功能:计算队列长度。

函数名:DWORD WINAPI ReceiveFun(LPVOID pArg);

功能:发送线程调用的函数,pArg参数存接收帧指针。

函数名:void main();

功能:发送方主函数,首先和接收方(本机"127.0.0.1")建立socket连接并初始化发送队列。然后重复下面的步骤:

(1)从主机取数据帧;

(2)发送数据帧,含超时重发(接收方未收到或未收到接收方ack)和错误重发(收到接收方nak);

(3)设置超时计时器,这里是5秒;

(4)等待确认,调用CreateThread()函数创建一个线程,超时则调用TerminateThread()函数结束线程并再次发送数据帧。收到数据帧则做后续处理;

(5)收到否认帧nak则再次发送数据帧,收到确认帧ack则发送下一个数据帧;

(6)如果发送的测试时间达到20秒,则提示是否继续测试,按‘q’或‘Q’退出测试。

4.3接收方的主要函数实现:

函数名:void InitLine(LinkQueue *q);

功能:初始化队列。

函数名:void GetFrameFromHost(LinkQueue *q);

功能:准备好接收帧的缓冲池,首帧是待接收的帧,尾帧是已经接收的待提交主机的帧。由于实验需要,假设数据帧送往主机是足够快的。

int DeLine(LinkQueue *q, frame *pf, unsigned int curw)

功能:将帧数据保存供提交主机,curw是打开的待接收数据的窗口。

函数名:int QueueEmpty(LinkQueue *q);

功能:判断队列是否为空。

函数名:int QueueLen(LinkQueue *q);

功能:计算队列长度。

函数名:void main();

功能:接收方主函数,首先和发送方建立socket连接并初始化初始化接收窗口。然后重复下面的步骤:

(1)等待,接收数据帧;

(2)校验数据帧,假定产生随机结果,20%的概率校验错误或发送方发送数据帧超时;

(3)校验错误时,丢弃数据帧,并发送否认帧nak;

(4)如果出现接收超时(假定未收到发送方发送的数据帧),则不给发送发任何回应;

(5)如果校验正确,首先判断是否是上一帧的重发。是上一帧的重发,则丢弃数据帧,并发送确认帧ack;是新的数据帧,则保存数据帧到当前接收窗口,并发送确认帧ack。

(6)送数据帧至主机。

5.源代码

5.1 发送方的主要代码:

void InitLine(LinkQueue *q)

{

q->front = q->rear = NULL;

}

int QueueEmpty(LinkQueue *q)

{

return q->front == NULL && q->rear == NULL; }

frame QueueFront(LinkQueue *q)

{

if (QueueEmpty(q))

{

printf("队列为空!\n");

Sleep(SLEEPMS);

exit(0);

}

return q->front->head_data;

}

int QueueLen(LinkQueue *q)

{

if (QueueEmpty(q))

{

return 0;

}

int num = 0;

Framenode *p = q->front;

while(p != NULL)

{

num++;

p = p->next;

}

return num;

}

void GetFrameFromHost(LinkQueue *q)

{

if(QueueLen(q) >= MAXPOOL)

{

printf("data %d 已准备好\n", q->front->head_data.head.seq);

return;

}

Framenode *p=(Framenode *)malloc(sizeof(Framenode));

memset(p->head_data.head.data, 0, MAX_LENGTH);

srand((unsigned)time(NULL));

p->head_data.size = rand() % MAX_LENGTH; // 帧大小随机生成

memset(p->head_data.head.data, '1', p->head_data.size);

p->head_data.head.ack = -1;

p->head_data.head.kind = data;

p->head_data.head.seq = 0;

p->next =NULL;

if(QueueEmpty(q))

q->front = q->rear=p; // 首帧是待发送的帧

else

{

p->head_data.head.seq = (q->rear->head_data.head.seq + 1)%MAXPOOL;

q->rear->next =p;

q->rear =p;

}

printf("从主机得到:data %d,放入缓存\n", p->head_data.head.seq);

GetFrameFromHost(q); // 由于实验需要,假设主机有足够多的数据帧要发送

}

void DeLine(LinkQueue *q)

{

Framenode *p = NULL;

if(QueueEmpty(q))

{

printf("队列为空!\n");

}

else

{

p = q->front;

q->front = p->next;

if (q->rear == p)q->rear = NULL;

printf("发送data %d, %d 成功!从缓存中删除\n", p->head_data.head.seq, p->head_data.size);

free(p);

p = NULL;

}

}

void main()

{

printf("建立连接 ... \n");

Begin:

WORD wVersionRequested;

WSADATA wsaData; //初始化socket库

wVersionRequested=MAKEWORD(1,1); //两个byte型合并成一个WORD型

int err=WSAStartup(wVersionRequested,&wsaData);

if(err!=0)

{

Sleep(SLEEPMS);

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )

{

WSACleanup(); //中止Windows Sockets服务 WSAStartup()成对使用

Sleep(SLEEPMS);

return;

}

socketClient = socket(AF_INET,SOCK_STREAM,0);//监听的套接字

SOCKADDR_IN clientadd;

clientadd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

clientadd.sin_family = AF_INET;

clientadd.sin_port = htons(7001);//设置连接端的IP、端口

if(SOCKET_ERROR==

connect(socketClient,(SOCKADDR*)&clientadd,sizeof(SOCK ADDR)) ) //连接

{

WSACleanup();

Sleep(SLEEPMS);

goto Begin;

}

char getData[RECEIVE_MAX_LENGTH];

memset(getData, 0, RECEIVE_MAX_LENGTH); //清零

if(recv(socketClient,getData,RECEIVE_MAX_LENGTH,0) == SOCKET_ERROR) //接受

{

printf("接受连接提示信息出错!\n");

}

else

{

printf("%s\n",getData);

}

char sendData[SEND_MAX_LENGTH];

memset(sendData, 0, SEND_MAX_LENGTH);

strcpy(sendData, "你好接收方,我是发送方!");

if( SOCKET_ERROR == send(socketClient,sendData,strlen(sendData)+1,0) ) //发送

{

printf("发送连接提示信息出错!\n");

WSACleanup();

closesocket(socketClient);

Sleep(SLEEPMS);

return;

}

printf("按任意键继续!\n");

while (!kbhit()) {}; //等待开始

Sleep(SLEEPMS);

printf("1bit滑动窗口协议:发送方,发送窗口=1\n");

LinkQueue QueueQ;

InitLine(&QueueQ);

frame packetsend; //data

frame packetreceive; // ack,nak

unsigned long tick = GetTickCount();

int ret = 0;

HANDLE hThread;

while(1)

{

GetFrameFromHost(&QueueQ); //从主机取数据帧

课程设计报告滑动窗口协议仿真

课程设计报告滑动窗口 协议仿真 公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

滁州学院 课程设计报告课程名称:计算机网络 设计题目:滑动窗口协议仿真 系别:计算机与信息工程学院 专业:计算机科学与技术 组别:第五组 起止日期: 2011年11月24日~2011年12月7日 指导教师:赵国柱 计算机与信息工程学院二○一一年制

课程设计任务书 一. 引言 二. 基本原理 窗口机制 1bit滑动窗口协议

后退N协议 选择重传协议 流量控制 三. 需求分析 课程设计题目 开发环境 运行环境 课程设计任务及要求 界面要求 网络接口要求 四. 详细设计 结构体的定义 发送方的主要函数 接受方的主要函数 五. 源代码 发送方的主要代码 接收方的主要代码 六. 调试与操作说明 致谢 [参考文献] 课程设计的主要内容1.引言

早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送ack 确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。 2.基本原理 窗口机制

控制系统仿真课程设计报告.

控制系统仿真课程设计 (2011级) 题目控制系统仿真课程设计学院自动化 专业自动化 班级 学号 学生姓名 指导教师王永忠/刘伟峰 完成日期2014年6月

控制系统仿真课程设计一 ———交流异步电机动态仿真 一 设计目的 1.了解交流异步电机的原理,组成及各主要单元部件的原理。 2. 设计交流异步电机动态结构系统; 3.掌握交流异步电机调速系统的调试步骤,方法及参数的整定。 二 设计及Matlab 仿真过程 异步电机工作在额定电压和额定频率下,仿真异步电机在空载启动和加载过程中的转速和电流变化过程。仿真电动机参数如下: 1.85, 2.658,0.2941,0.2898,0.2838s r s r m R R L H L H L H =Ω=Ω===, 20.1284Nm s ,2,380,50Hz p N N J n U V f =?===,此外,中间需要计算的参数如下: 21m s r L L L σ=-,r r r L T R =,22 2 s r r m t r R L R L R L +=,10N m TL =?。αβ坐标系状态方程: 其中,状态变量: 输入变量: 电磁转矩: 2p m p s r s L r d ()d n L n i i T t JL J βααωψψβ=--r m r r s r r d 1d L i t T T ααβαψψωψ=--+r m r r s r r d 1d L i t T T ββαβψψωψ=-++22s s r r m m m s r r s s 2r r r r d d i R L R L L L L i u t L T L L ααβαα σψωψ+=+-+22 s s r r m m m s r r s s 2 r r r r d d i R L R L L L L i u t L T L L ββαββ σψωψ+=--+[ ] T r r s s X i i αβαβωψψ=[ ] T s s L U u u T αβ=()p m e s s s s r n L T i i L βααβ ψψ=-

课程设计报告-滑动窗口协议仿真

滁州学院 课程设计报告 课程名称:计算机网络 设计题目:滑动窗口协议仿真 系别:计算机与信息工程学院 专业:计算机科学与技术 组别:第五组 起止日期: 2011年11月24日~2011年12月7日指导教师:赵国柱 计算机与信息工程学院二○一一年制

课程设计任务书

一. 引言 二. 基本原理 2.1 窗口机制 2.2 1bit滑动窗口协议 2.3 后退N协议 2.4 选择重传协议 2.5 流量控制 三. 需求分析 3.1 课程设计题目 3.2 开发环境 3.3 运行环境 3.4 课程设计任务及要求 3.5 界面要求 3.6 网络接口要求 四. 详细设计 4.1 结构体的定义 4.2 发送方的主要函数 4.3 接受方的主要函数 五.源代码 5.1 发送方的主要代码 5.2 接收方的主要代码 六. 调试与操作说明 致谢 [参考文献] 课程设计的主要内容

1.引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家 不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在 数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快, 接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些 问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认 才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ 协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一 个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack 对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第 3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落, 只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重 传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们, 存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后, 就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。 2.基本原理 2.1 窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接受方为其窗口内的每一个序号保留了一个缓冲区。与每个缓冲区相关联的还有一位,用来指明该缓冲区是满的还是空的。 若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退N协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。 2.2 1bit滑动窗口协议 当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。

JAVA简单画板程序设计实验报告

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 新建一个Jframe容器,然后定义一个panel(Panel convas2),convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,BorderLayout.NORTH); Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除"); Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); canvas2.add(choice); canvas2.add(choice1);

canvas2.add(btn1); canvas2.add(btn2); canvas2.add(btn3); canvas2.add(btn4); canvas2.add(btn5); canvas2.add(btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。1.画笔的大小: choice1.add("1"); choice1.add("3"); choice1.add("5"); choice1.add("7"); choice1.add("9"); 2.画笔颜色 choice.add("黑色"); choice.add("蓝色"); choice.add("红色"); choice.add("黄色"); choice.add("绿色"); 3展示画板

计算机仿真课程设计报告

、 北京理工大学珠海学院 课程设计任务书 2010 ~2011 学年第 2学期 学生姓名:林泽佳专业班级:08自动化1班指导教师:钟秋海工作部门:信息学院一、课程设计题目 : 《控制系统建模、分析、设计和仿真》 本课程设计共列出10个同等难度的设计题目,编号为:[0号题]、[1号题]、[2号题]、[3号题]、[4号题]、[5号题]、[6号题]、[7号题]、[8号题]、[9号题]。 学生必须选择与学号尾数相同的题目完成课程设计。例如,学号为8xxxxxxxxx2的学生必须选做[2号题]。 二、课程设计内容 (一)《控制系统建模、分析、设计和仿真》课题设计内容|

! " [2 有波纹控制器Dy(z)和一单位速度信号输入时的最少拍无波纹控制器Dw(z)。具体要求见(二)。 (二)《控制系统建模、分析、设计和仿真》课题设计要求及评分标准【共100分】 , 1、求被控对象传递函数G(s)的MATLAB描述。(2分) 2、求被控对象脉冲传递函数G(z)。(4分) 3、转换G(z)为零极点增益模型并按z-1形式排列。(2分) 4、确定误差脉冲传递函数Ge(z)形式,满足单位加速度信号输入时闭环稳态误差为零和实际 闭环系统稳定的要求。(6分) 5、确定闭环脉冲传递函数Gc(z)形式,满足控制器Dy(z)可实现、最少拍和实际闭环系统稳 定的要求。(8分)

6、根据4、5、列写方程组,求解Gc(z)和Ge(z)中的待定系数并最终求解Gc(z)和Ge(z) 。 (12分) 7、求针对单位加速度信号输入的最少拍有波纹控制器Dy(z)并说明Dy(z)的可实现性。 (3分) ! 8、用程序仿真方法分析加速度信号输入时闭环系统动态性能和稳态性能。(7分) 9、用图形仿真方法(Simulink)分析单位加速度信号输入时闭环系统动态性能和稳态性能。 (8分) 10、确定误差脉冲传递函数Ge(z)形式,满足单位速度信号输入时闭环稳态误差为零和实际 闭环系统稳定的要求。(6分) 11、确定闭环脉冲传递函数Gc(z)形式,满足控制器Dw(z)可实现、无波纹、最少拍和实际 闭环系统稳定的要求。(8分) 12、根据10、11、列写方程组,求解Gc(z)和Ge(z)中的待定系数并最终求解Gc(z)和Ge(z) 。 (12分) 13、求针对单位速度信号输入的最少拍无波纹控制器Dw(z)并说明Dw(z)的可实现性。(3分) 14、用程序仿真方法分析单位速度信号输入时闭环系统动态性能和稳态性能。(7分) 15、用图形仿真方法(Simulink)分析单位速度信号输入时闭环系统动态性能和稳态性能。 & (8分) 16、根据8、9、14、15、的分析,说明有波纹和无波纹的差别和物理意义。(4分) 三、进度安排 6月13至6月14:下达课程设计任务书;复习控制理论和计算机仿真知识,收集资料、熟悉仿真工具;确定设计方案和步骤。 6月14至6月16:编程练习,程序设计;仿真调试,图形仿真参数整定;总结整理设计、 仿真结果,撰写课程设计说明书。 6月16至6月17:完成程序仿真调试和图形仿真调试;完成课程设计说明书;课程设计答 辩总结。 [ 四、基本要求

java画板课程设计报告

画板 一、需求分析 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。 功能:1.利用graphics 类来向界面上画上相应内容 2.能够画出直线,矩形,多边形,椭圆形,圆矩形等 3.能够实现橡皮,刷子,喷枪等工具。 4.能够实验颜色的设置 5.能够保存图片和打开图片(当保存名一致时需提示) 6.界面尽量合理,可以仿照windows画板界面。 二、概要设计

流程图 画板软件类图 1.工具接口Tool: 从图中可以看到,工具接口Tool 定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下

mousePressed()、点击mouseClicked()五个动作,并用String 类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类 都是去扩展AbstractTool 类,在图中表现为Tool1、Tool2…….ToolN。 2.Tool的实现类AbstractTool AbstractTool 是Tool 的实现类,也是一个抽像类,所以并不能被创建,只能被继承。此类实现Tool 中定义的所有方法,并扩展了其它方法,让其子类继承或者重写。该类中为其他的工具类提供了大部分的实现,那么它的子类就可以不必再做重复的实现,只关心与本类相关的逻辑, 3.AbstractTool的子类 AbstractTool 一共有ArrowTool(箭头)、PencilTool(铅笔)、BrushTool(刷子)、EraserTool(橡皮擦)、LineTool (直线)、RectTool (矩形)、PolygonTool (多边形)、RoundTool (椭圆形)、RoundRectTool(圆矩形)、AtomizerTool (喷墨)、ColorPickedTool(颜色选择)11 个子类, 4. 界面类ImageFrame 这个画图工具的界面的主要放在这个类中实现 5. 业务逻辑类ImageService 除鼠标的画图功能外(画图功能由Tool 的实现类完成),初始化画板、图片的新建打开与保存、各种面板的显示与隐藏、颜色的编辑、整个界面的刷新、菜单等业务逻辑都放在这个类中实现, 对象,它并没有保存一些状态属性。 6 .文件选择类ImageFileChooser ImageFileChooser 类继承了JFleChooser 类,JFleChooser 是Java 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。 三、运行环境、开发语言 Window xp 和elipse Java语言

课程设计报告滑动窗口协议仿真

滁州学院 课程设计报告 课程名称: 计算机网络 第五组 起止日期:2011年n 月24 口~2011年12月7 n 指导教师: 设计题目: 滑动窗口协议仿贞 别: 计算机与信息工程学院 业: 计算机科学与技术 计算机与信息工程学院二O —一年制 别: 赵国柱

课程设计任务书 一.引言二-基本原理 窗口机制 Ibit滑动窗口协议后退N协议选择重传协议流量控制三.需求分析 课程设计题目开发环境

运行环境 课程设计任务及要求 界面要求 网络接口要求 0. 详细设计 结构体的定义 发送方的主要函数 接受方的主要函数 五. 源代码 发送方的主要代码 接收方的主要代码 调试与操作说明 致谢 [参考文献] 课程设计的主要内容 L引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能來不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是Ibit滑动窗口协议,一次只发送一个帧, 等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送 ack确认,而是收到儿个帧后,对按序到达的最后一个帧发送ack确认。 同Ibit滑动窗口协议相比,大大减少了 ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了 5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,乂提出了

课程设计之matlab仿真报告

西安邮电大学 专业课程设计报告书 院系名称:电子工程学院学生姓名:李群学号05113096 专业名称:光信息科学与技术班级:光信1103 实习时间:2014年4月8日至2014年4月 18日

一、课程设计题目: 用matlab 仿真光束的传输特性。 二、任务和要求 1、用matlab 仿真光束通过光学元件的变换。 ① 设透镜材料为k9玻璃,对1064nm 波长的折射率为1.5062,镜片中心厚度为3mm ,凸面曲 率半径,设为100mm ,初始光线距离透镜平面20mm 。用matlab 仿真近轴光线(至少10条)经过平凸透镜的焦距,与理论焦距值进行对比,得出误差大小。 ② 已知透镜的结构参数为101=r ,0.11=n ,51=d ,5163.121==' n n (K9玻璃), 502-=r ,0.12=' n ,物点A 距第一面顶点的距离为100,由A 点计算三条沿光轴夹角分别为10、20、 30的光线的成像。试用Matlab 对以上三条光线光路和近轴光线光路进行仿真,并得出实际光线的球差大小。 ③ 设半径为1mm 的平面波经凸面曲率半径为25mm ,中心厚度3mm 的平凸透镜。用matlab 仿 真平面波在透镜几何焦平面上的聚焦光斑强度分布,计算光斑半径。并与理论光斑半径值进行对比,得出误差大小。(方法:采用波动理论,利用基尔霍夫—菲涅尔衍射积分公式。) 2、用MATLAB 仿真平行光束的衍射强度分布图样。(夫朗和费矩形孔衍射、夫朗和费圆孔衍射、夫朗和费单缝和多缝衍射。) 3、用MATLAB 仿真厄米—高斯光束在真空中的传输过程。(包括三维强度分布和平面的灰度图。) 4、(补充题)查找文献,掌握各类空心光束的表达式,采用费更斯-菲涅尔原理推导各类空心光束在真空中传输的光强表达式。用matlab 对不同传输距离处的光强进行仿真。 三、理论推导部分 第一大题 (1)十条近轴光线透过透镜时,理想情况下光线汇聚透镜的焦点上,焦点到像方主平面的距离为途径的焦距F ,但由于透镜的折射率和厚度会影响光在传输过程中所走的路径(即光程差Δ)。在用MATLAB 仿真以前先计算平行光线的传输路径。,R 为透镜凸面的曲率半径,h 为入射光线的高度,θ1为入射光线与出射面法线的夹角,θ2为出射光线与法线的夹角,n 为透镜材料的折射率。设透镜的中心厚度为d ,则入射光线经过透镜的实际厚度为:L=(R-d) 光线的入射角为:sinq1=h/R 折射角度满足:sinq2=nsinq1 而实际的光束偏折角度为:θ2-θ1。 由此可以看出,当平行光线照射透镜时,在凸面之前光线平行于光轴,在凸面之后发生了偏折,于光轴交汇一点,这一点成为焦点f ,折线的斜率为(-tan(θ2-θ1))。 (2)根据题意可得,本题所讨论的是与光轴夹角不同的三条光线,经过透镜的两次反射后的成像问题。利用转面公式计算。

软件工程JAVA课程设计报告

西安科技大学 软件工程课程设计报告 题目:画图板应用程序开发 班级 学号: 姓名: 2010年12月

目录 1 绪论 (3) 2 可行性研究报告 (3) 3 需求分析报告 (4) 4 总体设计报告 (7) 5 详细设计报告 (8) 6 系统实现报告 (12) 7软件测试报告 (32) 参考文献

1、绪论 1.1 目的和意义 用过微软Windows操作系统的人一定都对Windows自带的画图板非常熟悉了。同图像处理软件界的老大Photoshop比起来,它虽然不及Photoshop的功能强大,内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑,简单实用等其他绘图软件所不具备的优点。同时它的风格也被许多其他的绘图软件所仿效。 作为一个软件工程专业的学生自己也想亲自动手编写一个属于自己的,简单实用的绘图程序。通过本次课程设计可以增加对整个流程的熟悉以及对程序组织结构和框架的理解,对以后开发和设计更大更复杂的程序无疑有更大的帮助。 任务 书写开发文档,分析和制定整个开发过程,然后开发一个自己的画图板应用程序。 2、可行性研究报告 进行可行性研究的方法 本应用程序可行性研究是通过对比windows自带的画板程序的方式进行的,对Windows 里面的画板进行分析研究,分析得出本应用软件应该实现的基本功能,并根据自己的能力进行了功能上的增加。 评价尺度 本软件在评价时应从以下几个方面进行分析: 开发时间应尽量短; 功能实现的代码应尽量少; 代码执行效率要高; 有较强的容错能力; 技术方面的可行性 系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以画图板应用程序在技术上是完全可行的。 a.在当前的限制条件下,该程序的功能目标能达到; b.利用现有的技术,该程序的功能可以实现; c.由于能力的不足,现阶段的功能不够完美,还可以在日后完善; d.在规定的限期内,本程序能够完成; 法律方面的可行性 本程序不会在后台扫描用户的磁盘文件; 本程序为完全免费,没有任何盈利行为,而且仅在内部流通,不予推广,所以不涉及浸犯微软版权的行为,所以本软件完全合法。 软件服务条款要与中华人民共和国的法律解释相一致,一致同意服从高等法院所有管辖。如发生软件服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户产生法律效力和影响。 经济可行行

基于Simulink仿真双闭环系统综合课程设计报告书

课程设计 双闭环直流调速系统设计及仿真验证 学院年级:工程学院08级 组长:陈春明学号200830460102 08自动化1班成员一:陈木生学号 200830460103 08自动化1班 指导老师: 日期: 2012-2-28 华南农业大学工程学院

摘要 转速、电流双闭环调速系统是应用最广的直流调速系统,由于其静态性能良好,动态响应快,抗干扰能力强,因而在工程设计中被广泛地采用。现在直流调速理论发展得比较成熟,但要真正设计好一个双闭环调速系统并应用于工程设计却有一定的难度。 Matlab是一高性能的技术计算语言,具有强大的科学数据可视化能力,其中Simulink具有模块组态简单、性能分析直观的优点,方便了系统的动态模型分析。应用Simulink来研究双闭环调速系统,可以清楚地观察每个时刻的响应曲线,所以可以通过调整系统的参数来得出较为满意的波形,即良好的性能指标,这给分析双闭环调速系统的动态模型带来很大的方便。 本研究采用工程设计方法,并利用Matlab协助分析双闭环调速系统,依据自动控制系统快、准、稳的设计要求,重点分析系统的起动过程。 关键词:双闭环直流调速 Simulink 自动控制

目录 1、直流电机双闭环调速系统的结构分析....................... 1.1 双闭环调速系统的组成............................... 1.2 双闭环调速系统的结构.................................... 2 、建立直流电机双闭环调速系统的模型............................ 2.1 小型直流调速系统的指标及参数......................... 2.2 电流环设计............................................... 2.3 转速环设计................................................ 3、直流电动机双闭环调速系统的MATLAB仿真.................... 3.1 系统框图的搭建............................................. 3.2 PI控制器参数的设置...................................... 3.3 仿真结果.................................................... 4、结论与总结....................................................... 5、参考资料.......................................................

滑动窗口协议模拟程序的设计与实现

长沙理工大学 《网络协议编程》课程设计报告 梁碧莹 学院计算机与通信工程专业网络工程 班级网络08-02 学号200858080205 学生姓名梁碧莹指导教师王静 课程成绩完成日期2011年7 月 2 日

课程设计任务书 计算机与通信工程学院网络工程专业

课程设计成绩评定 学院计算机通信工程专业网络工程 班级网络08-02 班学号200858080205 学生姓名梁碧莹指导教师王静 课程成绩完成日期2011年7 月2 日指导教师对学生在课程设计中的评价 指导教师对课程设计的评定意见

滑动窗口协议模拟程序的设计与实现 学生:梁碧莹指导老师:王静 摘要:本文主要介绍如何根据滑动窗口协议的原理,在Visual C++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。本次程序设计分两部分:第一部分是发送方,第二部分是接收方。通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作机制。 关键词:滑动窗口协议流量控制工作机制模拟程序 Design and Implementation of Sliding Window Protocol Procedures Student: Liang Biying Instructor: Wang Jing Abstract: This paper describes the principle of Sliding Window Protocol and how to design and implement a procedure about the Sliding Window Protocol. The program design in two parts, one is the sender, the other is the receiver. After all, studying the principle and method of how the Sliding Window Protocol control the flow, and how the Sliding Window Protocol works through the transmission of data between the sender and the receiver. Keywords: Sliding window protocol Flow control Working mechanism Simulation program

滑动窗口的仿真协议书范本

计算机网络课程设计书

计算机网络课程设计说明书 (封面) 学院名称:计算机与信息工程学院班级名称:网络工程一班 学生: 学号: 201321 题目:滑动窗口协议仿真指导教师 姓名:邵雪梅 起止日期: 2015.6.23-2015.6.29

第一部分:正文部分 一,选题背景 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。 同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。本文主要介绍如何根据滑动窗口协议的原理,在Visual C++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。本次程序设计分两部分:第一部分是发送方,第二部分是接收方。通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作机制。

MATLAB仿真课程设计报告

北华大学 《MATLAB仿真》课程设计 姓名: 班级学号: 实习日期: 辅导教师:

前言 科学技术的发展使的各种系统的建模与仿真变得日益复杂起来。如何快速有效的构建系统并进行系统仿真,已经成为各领域学者急需解决的核心问题。特别是近几十年来随着计算机技术的迅猛发展,数字仿真技术在各个领域都得到了广泛的应用与发展。而MATLAB作为当前国际控制界最流行的面向工程和科学计算的高级语言,能够设计出功能强大、界面优美、稳定可靠的高质量程序,而且编程效率和计算效率极高。MATLAB环境下的Simulink是当前众多仿真软件中功能最强大、最优秀、最容易使用的一个系统建模、仿真和分析的动态仿真环境集成工具箱,并且在各个领域都得到了广泛的应用。 本次课程设计主要是对磁盘驱动读取系统校正部分的设计,运用自动控制理论中的分析方法,利用MATLAB对未校正的系统进行时域和频域的分析,分析各项指标是否符合设计目标,若有不符合的,根据自动控制理论中的校正方法,对系统进行校正,直到校正后系统满足设计目标为止。我组课程设计题目磁盘驱动读取系统的开环传递函数为是设计一个校正装置,使校正后系统的动态过程超调量δ%≤7%,调节时间ts≤1s。 电锅炉的温度控制系统由于存在非线性、滞后性以及时变性等特点,常规的PID控制器很难达到较好的控制效果。考虑到模糊控制能对复杂的非线性、时变系统进行很好的控制, 但无法消除静态误差的特点, 本设计将模糊控制和常规的PI D控制相结合, 提出一种模糊自适应PID控制器的新方法。并对电锅炉温度控制系统进行了抗扰动的仿真试验, 结果表明, 和常规的PI D控制器及模糊PI D复合控制器相比,模糊自适应PI D控制改善了系统的动态性能和鲁棒性, 达到了较好的控制效果。

用c++编画板的实训报告

一实训目的 (1)培养分析问题、解决问题的能力 (2)培养考虑问题的周密性和逻辑思维能力 (3)培养实际动手能力 (4)培养C++知识的综合运用能力 二实训任务和要求 1.图形: 带颜色的图形。(增加选色功能) 线粗不同的图形。(修改线粗的功能) 块状图。(图形的填充色和边线颜色可以不同,由用户选择) 等等。。 2. 界面 工具栏,状态栏,改变鼠标,查看窗口等等 3. 编辑 在重新打开时和在正常情况下一样画图或者选中图形进行图形编辑。 4. 文件保存 EMF文件,导入位图文件成为一个(由位图填充的)矢量矩形等等。 5. 编辑 单个图像拖动,改变图形节点位置 能够进行基本的图形绘制功能:直线,圆、矩形和多边形; 数据保存功能,能够把图形数据保存到文件中; 简单的编辑功能:改变线条和填充颜色以及线宽; 三实训过程和内容 3.1需求分析 (1)认识C++编程软件 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序

设计、制作图标等等泛型程序设计等多种程序设计风格。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别;C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言;C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。STL(C++标准模板库,Standard Template Library);随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。 (2)计算机图形的认识 在计算机科学中,图形和图像这两个概念是有区别的:图形一般指用计算机绘制的画面,如直线、圆、圆弧、任意曲线和图表等;图像则是指由输入设备捕捉的实际场景画面或以数字化形式存储的任意画面。图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点,而与图像不同,在图形文件中只记录生成图的算法和图上的某些特点,也称矢量图。在计算机还原时,相邻的特点之间用特定的很多段小直线连接就形成曲线,若曲线是一条封闭的图形,也可靠着色算法来填充颜色。它最大的优点就是容易进行移动、压缩、旋转和扭曲等变换。 3.2 设计 (1)C++程序中的应用程序对象 (a)基于窗口的应用程序还是使用MFC比较多,所以主要介绍一下MFC。 CWnd窗口:它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。 CDC设备文本:无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog:对话框 CWinApp应用程序类:似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。 CGdiObject及子类:用于向设备文本画图。它们都需要在使用前选进DC。 CPen笔:画线 CBrush刷子:填充 CFont字体:控制文字输出的字体 CBitmap:位图

仿真课设报告

仿真课程设计报告 题目: 柔性生产线仿真案例 班级:物流 姓名: 学号: 指导教师: 2015年9月23日

目录 一、课程设计目的 (3) 二、课程设计内容 (3) 三、设计步骤 (3) 3.1案例分析 (3) 3.1.1案例说明 (3) 3.1.2建模步骤 (5) 3.1.3主要技术设计 (5) 3.2模型搭建 (6) 3.2.1基础空间总体布局 (6) 3.2.2Track设计 (6) 3.2.3加工设备的设计 (7) 3.2.4工件和AGV的属性设计 (9) 3.2.5表的设计 (10) 3.2.6工件生成器和消灭器的设计 (12) 3.2.7Method和Variable的设计 (12) 3.3仿真实现 (13) 3.3.1工件加工流程及时间设计 (13) 3.3.2任务队列设计 (13) 3.3.3小车的运行规则设计 (14) 3.3.4其它控制方法 (17) 四、仿真分析 (20) 4.1设备利用率 (20) 4.2轨道利用率 (21) 4.3加工总时间 (22) 五、模型优化 (22) 5.1订单投产优化 (22) 5.2小车优化 (23) 5.3其它优化 (26) 六、课设总结 (29)

一、课程设计目的 本课程设计是与物流工程专业教学配套的实践环节之一,结合《现代生产管理》、《设施布置与规划》、《离散系统建模与仿真》等课程的具体教学知识点开展。在完成以上课堂教学的基础上,进行一次全面的实操性锻炼。设计采用企业的实际案例数据,要求完成生产线物流仿真建模和生产线物流优化方案设计两大方面的实际设计内容。 通过本环节的设计锻炼,我们可以加深对本课程理论与方法的掌握,同时具备分析和解决生产运作系统问题的能力,改变传统的理论教学与生产实际脱节的现象。 二、课程设计内容 以某企业柔性制造系统(FMS)为对象,按该企业的生产实际资料为设计依据。对该柔性制造系统进行建模和仿真,通过模拟该制造系统的物流状况,寻找优化的物流方案进行产能平衡,并针对优化后的方案再次进行仿真,对比两个仿真结果在交货期要求,设备利用率等方面的不同,并制定该柔性制造系统生产作业计划。 三、设计步骤 3.1案例分析 3.1.1案例说明 1.柔性制造系统状况: 某企业柔性制造系统共有5台加工中心,定义加工中心名称分别为CNC_1、CNC_2、CNC_3、CNC_4、CNC_5。该制造系统内有一辆AGV小车,运行速度为1米/秒,可控制其实现不同的运送策略。每台设备入口和出口前有容量为4的缓冲,工件在由设备完成加工前后必须经过入口缓冲和出口缓冲,每台设备由一工人负

java简易画图板

华北科技学院 课程设计说明书 班级: 网络B101 设计题目: 画图板软件开发和设计 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____ 目录 1 引言 (1)

1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 4 详细设计与实现 (6) 4.1 菜单栏模块 (6) 4.2 文字字型工具栏模块 (7) 4.3 工具栏模块 (8) 4.4 颜色选择面板模块 (10) 4.5 鼠标状态栏模块 (12) 4.6 画图区域以及整体布局模块 (13) 5 小结和展望 (15) 参考文献 (17) 附录 (17) 使用说明书 (17)

1引言 1.1课程设计选题 《画图板软件开发和设计》 1.2课程设计的目的 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。所以这次课程设计我做的就是一个仿照Windows画板的程序。 通过画图板软件开发与设计,更深刻地体会java语言较之其他语言在图形用户界面的优势。熟悉java语言中常用的关于画图的各个类的功能和常用的方法(java图形用户界面中的众多函数与类的关系),并在实验过程中加深对java语言的理解与运用。 2需求分析 2.1 功能需求 对于绘图软件,应具备最基本的绘制直线,矩形框,圆形框,椭圆框等最基本功能,此外,要可以对绘制的图形进行修改;将绘制好的图形进行保存,打开以前保存的图形;在需要的时候,可以绘制实心矩形,实心圆形,实心椭圆等常见的几何图形。可

相关文档
最新文档