当前位置:文档之家› 文件传输系统的设计与实现.

文件传输系统的设计与实现.

文件传输系统的设计与实现.
文件传输系统的设计与实现.

JISHOU UNIVERSITY 专业课课程论文

文件传输系统的设计与实现题目:

作者:

学号:

所属学院:信息科学与工程学院

专业年级:计算机科学与技术

总评分:

完成时间:

文件传输系统的设计与实现

摘要

互联网的一大特点是实现信息共享,文件传输是信息共享的十分重要的内容之一。随之出现了许多FTP服务器来共享一些信息资源,编写一个操作简单,方便的FTP客户端来下载这些资源受到了人们的极大的欢迎。

FTP是一种用于在网上传输文件的协议,从原理上说,FTP是一个客户/服务器模式的应用协议。它用两个连接来实现:一个是控制连接,用来连接服务器和实现文件操作;一个是数据连接,用来实现数据传输。FTP的实现核心是命令/应答模式,FTP客户端将用户的所有FTP相关请求都转化为FTP服务器可识别的命令,然后发送到服务器,并接收和处理执行完毕后服务器传回的应答。

本程序是一个小型FTP服务器系统,实现了FTP服务器所应该具备的大多数功能,包括用户的登录,文件的上传、下载、删除,选择数据传输模式、目录选择等,并给出相应的提示。通过该程序的开发,基本上实现了一个FTP服务器所应该具有的功能,能够解释一般的FTP命令,并且符合RFC59规范。

本程序采用VC++6.0作为开发工具,设计步骤采用自顶向下的方法。

关键词:客户端;服务器;下载;上传;FTP

目录

第一章引言 (1)

1.1课题背景及意义 (1)

1.2课题研究现状 (1)

1.3研究内容 (2)

第二章FTP协议与原理 (3)

2.1 FTP简介 (3)

2.2 FTP的工作原理 (3)

2.3 FTP运行原理 (4)

2.4 FTP文件传输连接类型 (4)

第三章开发环境及工具介绍 (6)

3.1 C语言概述 (6)

3.2 VC++介绍 (6)

3.3 VC++6.0集成环境介绍 (6)

第四章FTP服务器需求分析 (8)

4.1 FTP文件传输的需求 (8)

4.2应解决的问题 (9)

4.3功能分析 (9)

第五章系统设计与实现 (10)

5.1功能要求 (10)

5.2开发工具 (10)

5.3主要功能与实现 (11)

5.4 菜单栏功能模块 (11)

5.5 查看功能模块 (13)

第六章系统测试 (18)

6.1系统可能出现的问题与不足 (18)

6.2 采用的测试类型 (18)

6.3 测试的过程与结果分析 (18)

总结 (20)

参考文献 (21)

第一章引言

1.1课题背景及意义

现代科技给我们带了翻天覆地的变化,互联网就是这诸多变化之一,而且它无时不刻包围着你。可以这样说,21世纪是互联网的世纪。互联网是人类科技发展史中成长最快的新鲜事物,从诞生到高度发展仅仅用了二十几年,而未来的发展前景更是一片光明。每个人可能已经感觉到了它的发展,从大大小小的网络公司到各种各样的网上商店、书店、网吧、网上银行等,就连电影院也都搬到了网上,你可以足不出户的欣赏美国大片。

早在20世纪90年代初,internet和world wide web(简称WWW)已经被大家熟知。最近几年internet的发展更是神速,它已经深深触及到我们的生活和工作的方方面面。随着许多新兴技术在internet中的推广应用,使用它的自身发展更日趋完善,它为用户也带来了越来多的实惠和便利。毫不夸张地说,无论你在世界上的哪个角落,只要通过互联网,你就可以同亲人朋友、甚至是陌生人相互交流,而且形式多样。互发邮件、交换文件、彼此聊天这已经很平常了,而现在随着网络、通信技术的相结合,已经出现了可视电话、网络家电、电子商务等。网络用户可以通过大大小小的各类网站或主页。他们已经越来越离不开网络,而且已经把企业网络建设纳入了未来企业发展最重要的环节。是互联网最大的凝聚力所在,它是一个巴罗万象的信息服务系统。

在生活中,以国际互联网(internet)为主要特征的信息基础设施正在改变人们的生活方式,自选共享已经成为人们生活的迫切需要。尽管远程登录(telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机的文件方便。如果用户想使用其它计算上的文件,最理想的方法就是把它copy 到自己的计算机中,以便在本地计算机上操作。ftp正是完成这项工作的工具,你可以在任意文件传输协议(ftp)访问的公共有效的联机数据库或文档中找到你想要的任何东西。

1.2课题研究现状

1971年,第一个FT的RFC (RFC114 ) 由A. K. Bhushan在1971年提出, 同时由 MIT与Harvard实验实现;1972 年,RFC172提供了主机间文件传输的一个用户级协议;1973年2月,在长期讨论(RFC265,RFC294,RFC354,RFC385 ,

RFC4 30)后,出现了一个官方文档 RFC454 ;1973年8月,出现了一个修订后的新官方文档 RFC542 。确立了FTP的功能、目标和基本模型。当时数据传输协议采用 NCP;1980年,由于底层协议从NCP 改变为 TCP,RFC765 定义了采用 TCP 的 FTP;1985 年,一个作用持续至今的官方文档 RFC959(STD9)出台。用FTP传输文件,本来用户事先应在远方系统注册,但后来为了便于大家获取资源,FTP 在互联网上有一种特殊的也是非常广泛的应用是匿名FTP(anonymous FTP).通过Internet,任何用户可以使用FTP和一个公用账号去获得一些公用资源。在Internet上目前有许许多多的这种公用计算机,我们把这种用来做匿名FTP服务的计算机称作FTP服务器,对每一个连入Internet的用户,只要知道这些FTP服务器的地址,就可以与它们连接并获取上面各种资源。由于FTP操作简单实用,开放性强,且能充分利用Internet来进行信息传递与交流,所以目前越来越多的FTP服务器连入Internet,这样越来越多的资源就可以通过匿名FTP 来获得。

1.3研究内容

文件传输系统是为了满足庞大的计算机网络系统实现文件共享和数据

传输的需要而设计的。本文在VC + + 语言平台上,依据应用层的文件传输

协议的基本原理,从切身实际出发,开发了一款文件传输系统。该系统能

登录服务器, 实现文件的下载和上传, 以及文件的添加和删除的相关操作。在此过程中, 首先ftp客户端将用户名、密码和链接端口发送到指定

ip地址,尝试与ftp服务端建立连接;其次 ,登录成功后 ,用户将要传输文

件的进行编码,发送到ftp 服务器;最后 ,待数据传输结束, ftp客户端发出QUIT指令,结束ftp连接。通过前期规划,中期编写代码,后期调试和测试程序, 这款模拟器能实现基本功能 ,但如果为了满足商业化需求,就得我们

后期进一步优化。

第二章FTP协议与原理

2.1 FTP简介

FTP是tcp/ip协议中的协议之一,是英文File Transfer Protocol的缩写。该协议是Inernet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称为“下载”文件。若将文件从自己计算机中国拷贝至远程计算机上,则称之为“上传”文件。在Tcp/Ip协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.

从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户机/服务器模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给与响应,并执行正确的命令。但是FTP有一个根本的限制,那就是如果用户在某个主机上没有注册获得授权,既没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名就可有限制的访问远程主机上公开的文件。限制许多系统要求用户将邮件地址作为口令,以便更好的对访问者进行跟踪。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上传文件。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以匿名FTP登录。

2.2 FTP的工作原理

FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的“三次握手”的过程,它带来的意义在于客户与服务器直接的连接是可靠的,而且是面向连接,为数据的传输提供了可

靠的保证。采用FTP协议可使Internet用户高效的从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供下载服务器。Internet成为了一个巨型的软件仓库。在文件传输中还支持断点续传功能,可以大幅度的减小和网络带宽的开销。

2.3 FTP运行原理

FTP的工作原理与其他许多网络实用程序一样,也是基于客户/服务器模式。互联网文件传输协议标准是FTC959在说明的。该协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。一般来说,要传输文件的用户需先经过认证以后才能登陆服务器,访问在远程服务器的文件。大多数的FTP服务器往往提供一个guest的公共账户来允许没有FTP服务器账户用户可以访问该FTP服务器。一个FTP会话通常包括五个软件元素的交互。就模型而言,从1973年以来并没有什么变化.

FTP协议模型

2.4 FTP文件传输连接类型

一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。

1·控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的端口发起一个建立连接的请求,FTP服务器接收来自客户端的请求,完成连接的建立过程,这样的;连接就称为FTP控制连接。

2·数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式和被动传输模式,如图所示。

主动传输模式和被动传输模式

第三章开发环境及工具介绍

3.1 C语言概述

C语言是在70年代初创建的一种计算机语言,它既有汇编语言可以直接访问机器硬件的功能,又具有高级语言面向用户、可读行好和易于记忆的优点,因此受到广大程序员的欢迎。C是一种结构化的程序设计语言。它由顺序、选择和循环三种基本结构组成,便于实现有上到下、逐步细化的结构化程序设计。因此,用C编写的程序具有容易理解和便于维护的优点。C语言的函数结构有利于程序分割为相对独立的功能模块,为大型软件实现模块化的程序设计创作了条件。C没有依赖于硬件的输入和主、输出语句,因此用它编制的程序有较好的可移植性。C语言首先在Unix操作系统中得到了应用,由于它的这些优点很快成为当前应用最为广泛的计算机语言。

3.2 VC++介绍

Visual C++6.0是微软公司推出的开发应用程序

(Windows95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大的优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC 的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。

3.3 VC++6.0集成环境介绍

Visual C++提供可一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率。开发环境是程序员同Visual C++的交互界面,通过它程序员可以访问C++源代码编辑器、资源编辑器,使用内部调试器,并且可以创建工程文件。Microsoft Visual C++有两个版本,对于每一个版本,都有对应的文档。

1)专业版本,它包括一个更高级的优化变压器,更广泛的文档,并能设计基于DOS的应用程序。

2)标准版本,其费用较低,没有那么高级的编译器,文档较少,且不能设计基于DOS的应用程序。

第四章FTP服务器需求分析

4.1 FTP文件传输的需求

Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会相应这条命令,将指定文件送至用户的机器。FTP(File Transfer Protocol文件传输协议)是Internet上用来传送文件的协议。在Internet上通过FTP服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登陆到作为服务器一方的计算机上,用户登陆后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录、列文件目录、设置传输参数及传送文件等。使用FTP可以传送所有类型的文件。FTP服务器的使用十分广泛,在网络上随处可见到FTP服务器。主要用于存放文件,让网络中的计算机可以共享这些文件。因此,FTP服务器要有很大的存贮空间,免费的FTP空间总是有限的,所以我们想,能不能将FTP服务器建在自己的计算机上呢?随着网络技术的不断成熟,宽带业务的不断推进,我们用动态IP将Web主机、FTP服务器和MAIL服务器搬回家,已经不再是梦想。通常服务器端是远程端点,用户可以通过Internet 网络连接到远程的FTP服务器站点。

在设计程序之前,我们首先要进行一个重要的步骤—需求分析。所谓需求分析,就是分析软件用户的需求是什么。如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的

精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的。而我们现在就很明确的知道,我们的程序是用来进行局域网文件传输的,知道了这一点,我们的程序至不会全部返工,因为我们已经知道我们软件所要完成的功能是什么。明确了程序的功能我们要进一步的分析。

4.2应解决的问题

选择好开发工具,设想好程序将要实现的大体功能后,我们就要分析该程序所需的条件,对该程序中将要遇到的问题做一下准备工作,以便于以后设计的顺利进行。

根据我们想要在局域网内进行文件传输的要求,首先,要选择在局域网内通讯;其次,因为本程序要实现的是FTP服务器功能,所以我们要建立服务器但是为了测试服务器是否能够有效运行,我又配置了一个客户端。

4.3功能分析

在做程序之前,我们要先确定本程序的功能,只有确定了功能,才能确定程序中使用什么函数来实现。

如果想在局域网内进行文件传输,首先要有服务器和客户端,两者配合使用。先打开客户端和服务器,然后让客户登陆一下服务器,服务器端设制一下服务器所完成的功能,然后客户端在向服务器发送请求。

第五章系统设计与实现

5.1功能要求

本程序是一个在局域网内实现的小型FTP文件传输。主要实现的是FTP服务器端功能,包括:FTP服务日志,在线用户的管理,统计客户端信息还有客户端上传、下载、选择数据传输模式、改变目录等,并给出相应提示。

5.2开发工具

本系统的实现采用的工具为VisualC++6.0.开发平台为Windows2000,WindowsXP。

程序界面主要包括服务器日志、在线用户。统计信息、安全管理、菜单栏。工具栏、状态栏。如图所示。

服务器用户界面

5.3主要功能与实现

用CSocket类编制的服务器端的程序,其过程如下,其过程主要是:1)创建CSocket对象。

2)创建底层套接字Socket.

3)调用Listen,开始监听从客户发来的访问请求。

4)如果收到请求,调用CAsyncSocket::Accept()函数进行接收处理。

5)建立CSocketFile对象,并且使该对象与CSocket对象具备一定得联系。

6)建立Carchive对象,以便实现卸装(接收)数据和存储(发送)数据的目的地址。当然,该Carchive对象应该与前面的CSocket对象建立联系。

7)使用Carchive对象在客户和服务器Socket之间传递数据,从而实现服务器Socket和客户机Socket之间的通信。值得注意的是,一个给定的Carchive 对象只能在单一的方向上传递数据:或者接受,或者发送。一般情况下,可能需要两个Carchive对象来实现数据的双向传递。

5.4 菜单栏功能模块

菜单栏包括:服务器,查看。

服务器菜单包括:开始,停止,用户账户向导,用户账户功能,

查看菜单包括:服务器日志,在线用户,配置,统计,安全等功能。

各项功能实现如下:

服务器功能:

1.账户向导:当你登录服务器时你需要一个有效的账户,用户账户向导将引导您通过必要的步骤,创造一个新的用户账户。并将其添加到用户账户对话框,创建用户名,如图所示。

用户账户向导窗口

通过这个窗口你可以创建自己的用户名以及密码用户用以登录FTP服务器,该部分功能实现代码如下:

CWizardPage1: : CWizardPage1() : CPropertyPageEx(CWizardPage1: : IDD, 0,

IDS_HEADERTITLE1, NULL)

{

m_strAccountName=_T('''');

m_psp.dwFlags &=~PSP_HASHELP;

}

CWizardPage1: : ~CWizardPage1()

{

}

void CWizardPage1: : DoDataExchange(CDataExchange*pDX)

{

CPropertyPageEx: : DODataExchange(pDX);

DDX_Text(pDX, IDC_ACCOUNTNAME, m_steAccountName);

}

BEGIN_MESSAGE_MAP(CWizardPage1, CPropertyPageEx)

END_MESSAGE_MAP()

2.用户帐户功能:这一功能主要是服务器端添加,修改和删除用户帐户,设置目录权限(使用添加按钮以添加一个新目录,其中选定的用户帐户已具有访问权限,每小组目录您可以设定不同的权限,例如你可以给所有权限到C: \下载,但限制的权限为C: \下载\申请时,没有权限指定的目录,在这个目录中它会自动阻止用户要求上传任何子目录)。目录属性,当您添加的编辑目录的用户帐户,目录属性对话框将显示物理目录(物理目录是真正的路径文件夹的名称)。虚拟目录(虚拟目录是一个物理文件夹的别名,当用户连接到您的FTP服务器,它将看到这个目录而不是真正的物理目录名称)。设置服务器端允许客户端的权限,例如允许客户端可以下载,上传,重命名哪些服务器端的文件内容。例如用户123将:E:盘设为许可目录,客户端就可以随时下载,上传E:\盘里面的内容,如图所示

用户账户窗口

这一功能实现,代码如下

V oid CUserAccountsDlg::OnDblclkDirlist

(NMHDR*pNMHDR,LRESULT*pResult)

{

OnEditDir();

*pResult=0;

}

5.5 查看功能模块

1.服务器日志模块的功能:在此屏幕,记录客户端与服务器端的连接信息以及传输信息,当客户端登录服务器时服务器日志会显示是否与服务器连接成功,当客户端要上传文件或是下载文件成功时会记录服务器和FTP客户端的详细资料,从而有助于您追踪服务器与客户端之间的所有的通讯讯息,数目之间的方括号[]是线程ID,如图所示。

该部分功能实现代码如下:

Friend CLogFile& setlevel(CLogFile& os, int level)

{

m_nCurrentLevel=level;

return os;

}

friend CLogFile& error_lvl(CLogFile& os)

{

os.m_nCurrentLevel=1;

return os;

}

friend CLogFile& warning_lvl(CLogFile& os)

{os.m_nCurrentLevel=2;

return os;

}

friend CLogFile& trace_lv(CLogFile& os)

{

os.m_nCurrentlevel=3;

return os;

}

服务器日志窗口

2.在线用户模块的功能:通过服务器来查看在线客户端的用户名,用户IP地址,用户登录时间等信息,如图所示。

在线用户窗口

该模块功能实现代码如下:

class COnlineUserPage : public CDialog

{DECLARE_DYNCREATE(COnlineUsersPage)

public:

void RemoveUser(DWORD nThreadID);

void AddUser(DWORD nThreadID,LPCTSTR lpszName,LPCTSTR lpszAddress);

COnlineUsersPage();

~COnlineUserPage();

enum { IDD = IDD_PROPPAGE_ONLINE};

CListCtrl m_OnlineUsers;

protected:

virtual void DoDataExchange(CDataExchange*pDX); //DDX/DDV suport protected:

afx_msg void OnSize(UINT nType, int cx, int cy);

virtual BOOL OnInitDialog();

afx_msg void OnContextMenu(CWnd*pWnd, CPoint point);

afx_msg void OnKickUser();

afx_msg void OnEditUserAccount();

afx_msg void OnBlockIp();

DECLARE_MESSAGE_MAP()

};

// Microsoft Visual C++ will insert additional declarations immediately before the previous line,

#endif

3.配置模块的功能:在这里,可以配置FTP服务器所以得设置。默认服务器端口为21,可以同时连接最多用户数,客户端与服务端连接时间(当客户端已闲置的具体时间,它会自动断开),欢迎信息(当客户端连接到服务器时将会显示该文本),再见讯息(文本显示当一个客户端从服务器断开时)其他设置。FTP服务器Windows下启动,启动最小化在系统盘,并在启动时自动激活服务器。用户还可以将用户各种信息都记录在服务器日志里,如图所示。

配置界面

可通过该图可以看出来,服务器的一些配置功能的实现代码如下:

CConfigurationPage::CConfigurationPage():CDialogResize(CConfigurationPa ge::IDD)

{ m_nPort=0;

m_nMaxUsers=0;

m_strGoodbyeMessage=_T(“”);

m_bStartIray=FALSE;

m_nTimeout=0;

m_strWelcomeMessage=_T(“”);

m_bLaunchOnStartup=FALSE;

m_bAutoActivate=FALSE;

m_nLogLevel=0;

m_strApplicationName=_T(“”);

m_bModified=FALSE;

}

CConfigurationPage: : ~CConfigurationPage()

{

}

BOOL CConfiguration Page: : OnInitDialog()

{

CDialogResize: : OnInitDialog();

InitResizing(FALSE, FALSE, WS_CLIPCHILDREN);

UpdateDialogControls(this,FALSE);

return TRUE;

}//nInitDialog

void CConfigurationPage: : OnVIew()

{

int ExecStatus=(UINT)ShelExecute(m_hWnd, “open”, “NOTEPAD.EXE”, (LPCTSTR)theApp.m_LogFile.m_FileName, 0, SW_SHOW);

Switch(ExecStatus)

{

Case 0:

MessageBox(“Systeem is out Memory”,”ShellExecute Error”,MB_OK

MB_ICONEXCLAMATION);

break;

case2:

MessageBox(“NOTEPAD.EXE is not found!”,”ShellExecute Error”,MB_OKIMB_ICONEXCLAMATION);

break;

default:

If(ExecStatus<=32)

MessageBox(“Problem with executing of

NOTEPAD.EXE”,ShellExecute

Error”,MB_OKIMB_ICONEXCLAMATION);

break;

}

}//查看日志内容

V oid CConfigurationPage::OnClear()

{

theApp.m_LogFile.Clear();

}//清除日志文件内容

到这里该系统的主要模块的功能的实现以基本完成。

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

电子课程设计论文-激光无弦琴柱

电子课程设计实验报告 项目:激光无弦琴 目录 摘要 (1) 关键词 (1) Abstract (1) Keywords (1) 一、引言 (1) 二、激光琴简介 (1) 三、激光琴原理 (2) 1、基本原理 (2) 2、功能结构原理 (2) 3、系统组成部分 (2) 4、工作原理 (2) 四、单片机原理说明 (3) 五、电路原理图 (4) 1、感光部分电路 (4) 2、发音电路 (4) 六、流程图 (5) 七、实验所需器材 (5)

八、电路实物图 (6) 九、改进方案设计 (6) 十、激光琴未来发展之路 (6) 十一、结束语 (6) 参考文献 (7) 附录 (7) 项目课题:无弦激光琴 摘要:伴随着激光技术的发展和广泛应用,激光已不仅在农业、工业、医疗 上得到广泛应用而且激光在与电子技术结合也得到了很好的体现。利用5个激光管发出的光束作为琴弦,利用单片机控制拨动激光琴弦时发出不同音调的声音,当在激光照射时单片机读取光敏电阻的电压为低电平,令它的逻辑电平为0;当无激光照射时单片机读取光敏电阻的电压为高电平,令它的逻辑电平为1。因此当遮挡激光的光线时它就能在电路中产生开关的效果。因而,当我们用手遮挡激光的时候对应的光敏电阻的电压为高电平,此时激光琴就会发出声音,连续遮挡不同的激光管就能演奏出动听的音乐。 关键词:激光管,激光技术,激光琴,光敏电阻 Project: The laser harp Abstract:Along with the development and wide application of laser technology, the laser has not only been widely used in the agricultural industrial medical and laser in combination with electronic technology has also been well represented. We make the five beam emitted from the laser tube as the strings use of single-issue and produce different tones of voice. SCM detect photosensitive resistor at both ends is low when the laser irradiated, so it's logical level 0 and the photosensitive resistor voltage read by the microcontroller when the laser irradiation is high so it logic level 1. Therefore, when the laser light was covered, it make an efficiency of the switch . Thus, when we block the laser by hands the resistance of the photosensitive resistor corresponding voltage is high, the laser piano will sound, and the laser tube will be able to play a fantastic music while covering different laser light.

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write写入文件 Delete 删除文件 Mkdir 建立目录

Cd 切换目录 Logout 退出登录 2.2系统模块功能结构 2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

光电子技术课程设计-2014

光电子技术课程设计-2014

《光电子技术》课程设计 指导书

湖北汽车工业学院理学部光信息教研室 2009年5月

设计一、红外报警器 一、概述 红外报警器是利用在红外波段的光电探测器制 作的一种光电探测系统,它可以代替人看守或监视一定范围的场所,当有人或异物进入时,可发出声、光 或以其它方式进行报警,告诉它的主人出现了意外情况,以便采取应急措施。 常用的红外报警器,按其工作方式可分为主动式和被动式两种。 驱 动电 路 红 外 发 射 光 源 红外 探测 器及 偏置 放 大 及 处 理 报 警 电 路发射部分接收部分 图1-1 主动式红外报警器的原理框图图1-1是主动式红外报警器的原理框图。由红外光源发出的红外辐射被红外探测器接收,红外辐射信号变为电信号,经信号放大和处理电路后送报警电路。这种报警器实际上分成发送和接收两部分,分开放置。当没有人和物进入这两部分之间时,红外辐射没有被阻断,报警器处于一种状态,不报警;当有人或物进入这两部分之间时,红外辐射被阻挡,报警器立即翻转到另一种状态,即可发出报警信号。 报警电路放 大 及 处 理 红外 探测 器及 偏置 图1-2 被动式红外报警器的原理框图

被动式红外报警器的原理框图如图1-2所示,这种报警器实际上只有接收部分,当有人和物进入其监视范围内时,人或物体发出的红外辐射被相应的红外 探测器接收后,经过信号放大和处理,就会发出报警。 因此,在设计和选用红外报警器时,必须根据不同的应用场合,作出合理的选择。这种选择是多种因素综合考虑的结果,答案不是唯一的。 二、设计任务 设计一个主动式红外报警器,要求: 1、发射部分与接收部分之间距离为1米,当有人或物进入两者之间时,红外报警器发出报警信号(LED闪烁); 2、使用交流市电,但在停电时,报警器应能正常工作,即应有备用电源; 3、设计方案经济、实用、可靠。 三、设计步骤 1、查阅资料,进行调查。 2、复习有关课程内容,如光电子技术、电子技术基础等。 3、选择红外发光元件及接收元件。 4、设计发射部分电路。 5、设计接收部分电路。 6、在面包板上进行安装调试,应根据电路原理图画出元件布线图,再按图施工。 7、测试关键节点的电压波形,并作记录。 四、设计示例框图 要设计一个主动红外报警器,必须选择合适的红外发射二极管和光电二极管(或光电三极管),主要是使它们的发光波段与接收波段能够相互对应。 首先查阅光电器件手册,经多种因素考虑选择红外发射二极管SE301A,其发光波段在940nm附近,相应的接收器件选择PH302,其光谱响应曲线的峰值也在940nm附近,这样,发射与接收的光波是相对应的。

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

【精选】操作系统课程设计(文件系统管理)文件

评定等级 操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看, 加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了 解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录 UFD (User File Directory )。这些文件目录可以具有相似的结构,它由用户所有文件的文件 控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目 录的指针。

非对称双环_光电子课程设计

课程设计任务书 学生姓名:胡康哲专业班级:电子1103 指导教师:旷海兰工作单位:信息工程学院 题目:非对称双环微环谐振滤波器的滤波特性分析 初始条件: 具有光电子技术的基本理论知识及较强的实践能力;对光纤技术有一定的了解;计算机;beamprop软件或Fullwave软件。 要求完成的主要任务: 1.学习beamprop或Fullwave软件; 2.对非对称双环微环谐振滤波器进行理论学习并分析其滤波特性; 3.用beamprop或Fullwave软件对非对称双环微环谐振滤波器进行仿真; 4.查阅篇参考文献,按《武汉理工大学课程设计工作规范》要求完成课程设计报告,正文10-15页,用A4纸打印。 时间安排: 1.2014年12月15日布置课程设计任务,完成选题; 2.2014年12月16日至2014年12月19日学习beamprop或Fullwave软件,完成资料查阅,复习与选题内容相关的基本理论知识; 3.2014年12月20日至2014年12月25日对非对称双环微环谐振滤波器进行仿真工作,完成课程设计报告撰写; 4. 2014年12月26日提交课程设计报告,进行课程设计验收和答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (3) 1 绪论 (4) 2 双环微环谐振器 (5) 3 软件简介 (6) 4 滤波特性仿真 (7) 4.1 新建一个电路图 (7) 4.2 定义参数和变量 (8) 4.3 滤波器设置 (9) 4.4 完整CAD图 (13) 4.5 折射率分布 (14) 4.6 仿真 (16) 4.7 改变折射率多次仿真 (19) 5 心得体会 (20) 参考文献 (21)

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构) 3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写) ~ 4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写) 二、系统设计 课程设计的系统设计: 本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文

件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 整体设计框架: 系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 三、系统实现 课程设计主要内容的实现程序代码: 《 #include <> #include <> #include <> typedef struct file{ char name[10]; struct file *next; }File; typedef struct content{ ! char name[10]; File *file;

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

光电子技术课程设计

摘要:经由过程制作小车可以加大深度对单片机控制的谙练程度,同时开端学习项目研发的过程。小车按照给定的线路行走,有定时,显示运行时间,计时,粗测行走距离等功能。 一、设计要求 (1)自己主动寻迹小车起头处于设置标准样式下,经由过程按键设置运行时间,完成设置时间后,按下起头键小车开始工作,同时显示当前运行的时间。 (2)小车按指定线路运行,自己主动区别直线轨道和弯路轨道,在指定弯路处拐弯,使成为事实灵活进步、转弯儿等功能。 (3)小车行走在预设的时间后,自己主动遏制,数码管显示行走的时间,3秒后显示行走距离。 (4)半途可以按右键强力压制遏制,提早结束,显示行走运间,距离。 二、小车循迹的道理 这搭的循迹是指小车在白色地板上循黑线行走,通常采纳的方法是红外探测法。 红外探测法,即哄骗红外线在差别颜色的物体外貌具备差别的反射性质的独特的地方,在小车行驶过程当中不停地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被接收,小车上的接收管接收不到红外光。单片机就是不是收到反射回来的红外光为依据来确定黑线的位置和小车的行走线路。红外探测器探测距离有限,一般最大不应跨越3cm。 三、方案论证: 根据设计要求,本系统主要由控制器板块、电源板块、寻迹传感器板块、直流电机及其驱动板块、电压比力板块等板块构成。 为较好的使成为事实各板块的功能,我别离设计了几种方案并别离进行了论证。 3.1车体设计 方案1:采办皮球电动车。采办的皮球电动车具备组装完备的车架车轮、电机及其驱动电路。但是一般的说来,皮球电动车具备如次错误谬误:首先,这种皮球电动车由于装配紧凑密切,使得各类所需传感器的安装十分不方便。其次,这种电动车一般都是前轮转向后轮驱动,不能适应该标题需要别人解答的题目的方格地图,不能方便迅速的使成为事实原地保持坐标转90度甚至180度的弯角。再次,皮球电动车的电机多为皮球直流电机,力矩小,空载转速快,负载性能差,不容易调速。并且这种电动车一般都价格价不低。因此我放弃了此方案。方案2:自己制作电动车。经过反复思量论证,我制定了左右两轮别离驱动,前万向轮转向的方案。即左右轮别离用两个转速和力矩基真不异的直流电机进行驱动,车体首部装1个万向轮。由此可以轻松的使成为事实小车坐标不变的90度转弯儿。 在安装时我包管两个驱动电机同轴。当小车进步时,左右两驱动轮与前万向轮形成为了三点结构。这种结构使得小车在进步时比力平顺,可以制止呈现后轮过低而使左右两驱动轮驱动力不敷的情况。为了防止小车重心的偏移,前万向轮起支撑作用。 对于车架材料的选择,我选择了铝合金。用有铝合金做的车架比分子化合物塑料车架越发牢固,比铁制小车更轻便,美不雅。 3.2控制器板块 方案:采用stc宏晶公司的stc89c52单片机作为主控制器。stc89c5是1个低功耗,高可靠性,超低价,无法解密,高性能的8位单片机,片里面含有32k空间的可反复擦写100,000次的Flash只读储存器,3二个IO口,且stc系列的单片机可以在线编程、调试,方便地使成为

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

光电子课程设计

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目:Bragg光纤光栅的光谱仿真 初始条件: 具有光电子技术的基本理论知识及较强的实践能力;计算机;beamprop软件或Fullwave软件。 要求完成的主要任务: 1.学习beamprop或Fullwave软件; 2.掌握Bragg光纤光栅的光谱特性; 3.设计并用beamprop或Fullwave软件对Bragg光纤光栅的光谱进行仿真; 4.查阅篇参考文献,按要求完成课程设计报告,正文10-15页,用A4纸打 印。 时间安排: 1.2014年12月15日布置课程设计任务,完成选题; 2.2014年12月16日至2014年12月19日学习beamprop软件,完成资料查阅,复习与选题内容相关的基本理论知识; 3.2014年12月20日至2014年12月25日对Bragg光纤光栅的光谱特性进行设计仿真工作,完成课程设计报告撰写; 4. 2014年12月26日提交课程设计报告,进行课程设计验收和答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要..................................................................................................................................... I Abract . (Ⅱ) 1绪论 (1) 2 RSOFT软件 (2) 3.1光纤Bragg光栅的发现与发展 (4) 3.2 光纤Bragg光栅的特点 (4) 3.3 光纤Bragg光栅的工作原理 (4) 3.4 Bragg光纤光栅的光谱图 (5) 4 Bragg光纤光栅的光谱仿真 (6) 4.1 定义波导和光栅 (6) 4.2光纤Bragg光栅的折射率分布 (7) 4.3 光纤Bragg光栅的光谱仿真 (9) 4.4 光栅光谱的分析 (10) 5 心得体会 (16) 参考文献 (16)

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

操作系统课程设计(文件系统)

操作系统课程设计 班级: 姓名: 学号: 使用语言:C++ 指导老师: 学院:

一、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 二、系统分析 1、设计思想 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200 每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为:

Allstruct.h 定义了每个分区的结构体; Mysys.h 声明了对系统操作的各种方法; Myuserfile.h 声明了对文件操作的各种方法; Mymain.cpp 整个系统的主函数,操作入口; Mysys.cpp 包含了mysys.h,实现了操作系统的各种方法;Myuserfile.cpp 包含了myuserfile.h,实现了操作文件的各种方法; 2、主要数据结构 Allstruct.h文件的内容: struct s_user //用户区结构体 { long isuse; //是否使用 char name[20]; //用户名 char psd[20]; //密码 long address; //目录地址 }; struct s_list //目录结构体 { long isuse; //是否使用 char name[20]; //文件名字 long myaddress; //本条目录地址 long pointaddress; //指向的文件的地址 long isfile; //是否锁定 long pointsize; //目标文件的大小 long nextaddress; //下条目录的地址 }; struct s_file //文件结构体 { long isuse; //是否使用 char content[256]; //文件内容 long next; //下个文件块地址 };

相关主题
文本预览
相关文档 最新文档