文档库 最新最全的文档下载
当前位置:文档库 › 关于数据流文件的一些信息

关于数据流文件的一些信息

关于数据流文件的一些信息
关于数据流文件的一些信息

关于数据流文件的一些信息

又是一篇关于Windows,NTFS和cmd的帖子哈~貌似本板块可以改名为中国cmd联盟了~嘻嘻~废话不多说,进入正题你用过卡巴斯基么?是不是每次复制文

件都会显示这个:screen.width*0.7){this.resized=true;

this.width=screen.width*0.7;this.alt='Click here to open new

window';}"哈哈,这个就是今天我们要讨论的话题:NTFS数据流。NTFS分区

的数据流是一个子文件系统允许额外的数据连接到一个特别的文件中,现在的FAT文件系统格式是不支持数据流格式的。简单点说就是给在NTFS分区格式的

文件添加了一个标记。除了上面举的卡巴斯基的例子,在WinRAR添加压缩文件时,在高级选项中就有"保存文件数据流"的选项。再看看卡巴斯基对NTFS数据流干了些什么,Kaspersky把文件的验证指纹信息保存到NTFS数据流里面,如

果病毒/木马修改了这个文件,Kaspersky就会很快发现文件校检有误,这就是

为什么Kaspersky安装完毕要必须"全盘检查"一次,这样可以大幅度加快以后

的病毒检查速度!那么,怎样添加NTFS数据流呢?这就和cmd有关了CODE:[Copy to clipboard]dir C:1.txt看看1.txt里的内容,记住哦~然后CODE:[Copy to clipboard]dir c:2.txt:stream.txt怎么样,糊涂了吧~先看看

2.txt的属性:0 Bytes,打开2.txt看看有什么?什么都没了~然后在输入:CODE:[Copy to clipboard]notepad 2.txt:stream.txt看看,出来什么了?

惊讶吧~其实每个文件都可以有多个流的,用这个NTFS的特性我们可以隐藏文

件哦~而且,还可以,隐藏木马^_^实际上,流还可以不依赖于文件,下面的命令

也是合法的(先不要试,否则可能会有点麻烦):CODE:[Copy to clipboard]dir e::stream.txt这是把流绑到了文件夹上,这种流就更隐蔽了,一般情况下

要想删除流只有将其宿主删除,如果你执行了刚才的命令,并且是在根文件夹

上执行的,如果你想删除它,那就恭喜你要格盘了:),不过有现成的工具可以

使用的,这个就是:Streams v1.53 Reveal NTFS alternate streams这么样,又是sysinternal的作品哦~我要说的就说完了,下面是网上收集的关于NTFS

流的资料了Quote:NTFS上的交换数据流NTFS上的交换数据流转载:来源不详--目录--1、前言2、概念3、性质和应用-3.1创建-3.2删除-3.3检测与提取-3.4保存与传输-3.5文件隐藏-3.6运行-3.7与IIS相关4、附言5、参考文章--1、前言交换数据流(alternate data streams,以下简称ADS)也不是什么新

东西,但用户和管理员对它的认识知之甚少,本文将结合前人的资料对ADS做

一番探讨。如有错误,还望高手赐教。2、概念先来看看微软对多文件流的解释:在NTFS文件系统下,每个文件都可以有多个数据流。值得一提的是,流不是NTFS 2000的功能,但是从Windows NT 3.1开始流已存在。当在非NTFS卷(如Windows 98计算机的磁盘分区)下读取文件内容时,只能访问一个数据流。因此,您会觉得它是该文件真正的且"唯一"的内容。这样的主流没有名称,并且

是非NTFS文件系统可以处理的唯一一个流。但是当在NTFS卷上创建文件时,

事情可能不一样。参看图1了解此重要概念。ADS是NTFS文件系统特有的性质,也就是前面说的多数据流文件除了主流之外的流,但基于API的Win32却不能

很好的支持ADS。例如我们可以把一个文件以流的形式附加到另一个文件(载体)中,但是对于Windows资源管理器来说载体文件没有发生任何变化(包括其大小、修改时间等)。由此将会产生一系列问题。下面就让我们来看看ADS的一些性质及应用吧。3、性质和应用3.1创建创建ADS很简单,语法是载体文件名:看个命令行下面的例子:echo This is lake2's stream a.txt:stream.txt通过

上面的例子我们就很简单的创建了一个ADS,它在windows下并不可见,不信

你可以用资源管理器或者dir命令看看a.txt文件的大小是不是0。打开a.txt,可是里面什么内容都没有。当然没有内容,这里ADS是a.txt:stream.txt,

内容应该在这个文件里。注意,这里用type命令并不能显示文件a.txt:stream.txt,但是记事本却可以。还是在命令行下输入notepad a.txt:stream.txt,呵呵,看到"This is lake2's stream"了吧。现在我们用记事本

打开a.txt随便修改内容,这并不会影响到流的内容;同样,对a.txt:stream.txt的修改也不会影响到载体文件a.txt。3.2删除删除ADS最为简单,直接删载体文件就是;但是如果只想删ADS而保留载体文件的话最简单的办法

就是把载体文件拉到非NTFS分区去走一趟。因为ADS是NTFS的"专利",离开

了NTFS文件系统ADS也就烟消云散了。如果你只想在NTFS分区删除ADS的话,可以用下面这个批处理:type a.txt a.txt.bak rem type不能支持ADS,所以拿它来备份载体del a.txt rem删除载体及ADS ren a.txt.bak a.txt rem恢

复载体文件3.3检测与提取关于ADS的检测涉及到API编程了,呵呵,这方面

我还在努力学习,这里就抄微软的话:"Win32备份API函数(BackupRead、BackupWrite等)可用于枚举文件中的流"。不过好在已经有检测ADS的软件了,下面几个软件都可以检测:LADS(List Alternate Data Streams)-Streams

v1.1(Sysinternals)-NT Objectives Forensic Toolkit(sfind.exe)-(要提取

ADS必须要第三方工具,NTRootKit工具包里的cp可以做到(cp也可以用于创

建流);NTRootKit工具包我一直没有找到,google上一搜全是那个NTRootKit

后门,只好自己用C写了一个。这也不会要求你是编程高手,C语言里的文件

函数完全可以支持ADS的创建、删除、提取,只需把ADS当成一个文件来处理

就是了。3.4保存与传输前面说了,ADS在非NTFS分区就会丢失,那么说来在

非NTFS分区就无法保存ADS了吗?直接保存没有办法,我们可以间接保存啊。

呵呵,这样需要借助一个软件,你也应该有的,它就是WinRAR。对含有ADS的

文件加压时,找到高级选项,那里有一个"保存文件流数据",打上勾(图2),

呵呵,你就可以把ADS压缩到rar文件里了。这个rar文件可以保存到非NTFS

分区的--注意啊,是保存,不能解压出来的。【图2】如果要传输ADS,最好是用资源管理器打开对方的共享再复制粘贴;如果你想用其他方式传输的话大概

就只能传输包含ADS的rar文件了。3.5信息隐藏要保密信息,传统的做法是

加密。虽然加密后信息内容变成了无法直接读出的密文,不过也等于告诉人家

这是秘密,就不安全了;但是如果我把信息藏起来让你找不着不就ok了吗,所以一种叫做"信息隐藏"的技术就被提出来了。古装戏里常常有隐写术,就是一

张白纸在平时就是一张普通的白纸,但在特殊的作用下预先写好的字就会显示

出来。用这个来比喻信息隐藏是最为恰当的了。信息隐藏是目前信息安全研究

的热门领域,实现方法也很多,最流行的大概就是以bmp图像文件为载体,通

过替换文件每个字节无关紧要的最低的一位来实现的。呵呵,不过有一种实现

简单的信息隐藏技术就在我们眼前。对,就是利用ADS!既然Windows不能很

好的察觉ADS,那么我们就可以把要保密的文件以ADS方式保存。不过这里提

醒一下,利用ADS实现信息隐藏的安全性不是很高,不过也不是很低--我想应

该没有人没事就花大量时间用lads.exe检测着玩吧。另外,大多数杀毒软件并不能检测ADS,所以我们可以利用流让杀毒软件pass后门。例:type nc.exe a.txt:nc.exe原文件nc.exe会被金山毒霸查出来,处理之后尽管a.txt:

nc.exe内容与nc.exe完全一样,但并不会被金山毒霸发现。3.6运行前面说了可利用ADS让后门躲避杀毒软件,但如果不能运行的话还不是没用。那怎么运

行呢?命令行下面直接运行a.txt:nc.exe是不行的,应该用start命令。关于这个命令的详细用法你自己打help start看看吧。start命令运行可执行的ADS时要用绝对路径或者当前路径用./加文件名。看例子:start./a.txt:

nc.exeorstart c:\a.txt:nc.exe在Win2000下查看进程只能看到载体文件,而XP下则可以发现整个ADS。图3是在XP下用tlist的截图。3.7与IIS相关

在IIS中访问ADS会有一些有趣的事情发生,这个参见我的另一篇Blog《交换数据流(ADS)与IIS的前世与今生》()。4.附言谢谢你看完我的文章:)5.参考文章bigworm翻译,《NTFS不利的一面》()xundi,《关于NTFS文件系统中的数据流问题》()H.Carvey,《The Dark Side of NTFS》

(_side.html"rel=nofollow)Damon Martin,《Windows,NTFS and Alternate Data Streams》(_Martin_GSEC.pdf"rel=nofollow)《NTFS Streams-Everything you need to know》()Quote:NTFS不利的一面翻译+整理:By Bigworm不当之处请指正这篇文章是根据H.Carvey的The Dark Side of

NTFS(Microsoft's Scarlet Letter)翻译的,可以自由转载,但请保持译者和来源以及文章的完整性.简介:微软的平台不断在增加.公司用的服务器和桌面操作系统运行的一般是winNT和win2000,而家庭用户和学生用的系统一般是winXP.这些平台是很受欢迎的并且被大范围的使用.可是使用这些操作系统的用户和管理员却对NTFS文件系统的某个特性知道的很少,那就是"交换数据流"(alternate data streams).NTFS因为它的稳定性强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流(ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,它使用资源派生(resource forks)来维持与文件相关的信息,比如说图标及其他的东西.而微软提供了一种方法通过Windows explorer来创建特殊的ADSs,检测这种特殊的ADSs的必要工具和功能相当缺乏.说来也奇怪,系统一直以来都有允许用户创建ADSs以及在这种流文件中执行隐藏代码的功能和工具.Microsoft KnowledgeBase中Q 101353号文章

承认了基于API的win32不能很好的支持ADSs.这篇文章的目的是详细的介绍ADSs是怎么被创建和利用的,以及隐藏在ADSs中的代码是怎么被执行的.基于

不同的系统(NT 2K XP)处理ADSs也是很不同的.创建ADSs创建ADSs的语法相对比较简单和直接.比如说创建和文件myfil e.txt相关联的ADSs,只需简单的用冒号把文件名和ADSs名分开即可.D:\ads echo This is an ADS

myfile.txt:hidden此外,ADSs还可用另外一个文件的内容来创建.D:\ads echo This is atest file test.txt D:\ads type test.txt myfile.txt:hidden然后你可以用记事本去检验一下看看,命令如下:d:\ads notepad myfile.txt:hidden可是,用dir命令去看不出任何变化,Windows Explorer也没有任何可用的转换和设置来检测这种新建的ADSs的存在.此外,ADSs可以被

创建以及与目录列表相关联,而不是与一个文件关联.这种特性在文章的后面将会显示出他的重要性,但现在我们介绍怎么创建ADSs以及足够了.D:\ads echo

This ADS is tied to the directory listing:hidden这种类型的ADSs也可

以通过type和notepad命令来创建.ADSs文件的内容并不只限于text(文本)数据,任何二进制信息的流都可以组成一个文件,而且ADS也就是一个文件而已.可执行的东西也能够相当容易的隐藏在ADSs中,看下面的例子:D:\ads type c:\winnt\notepad.exe myfile.txt:np.exe D:\ads type c:

\winnt\system32\sol.exe myfile.txt:sol2.exe同样,像图片文件,声音文件

或任何其他的数据流都可以隐藏在ADSs中.最后,Windows Explorer提供了一

种方法来创建特殊的ADSs(RUSS00)看下图:我们在值那一栏可以填入很多东西

图一如果某个用户没有写文件的权限,那么他就不能在该文件上添加ADS.此

外,windows文件保护功能可以防止系统文件被替换,但是他不能阻止有适当权

限的用户在这些系统文件上添加ADSs,有个工具System File Checker(sfc.exe)可以检查受保护系统文件是否被覆盖,可是它不能检测ADSs.检测,查看,利用ADSs如前所述,微软并没有提供工具来检测ADSs的存在.现在检测ADSs最好的

工具是由Fra nk Heyne写了Lads.exe.这个工具现在的版本是3.10,它是一个

命令行工具看下图:图二从上图我们可以看出lad.exe多有用了,不仅可以显示ADSs的存在,还可以显示ADSs的路径和大小.我们仔细注意和myfile.txt相关

联的四个文件,其中三个是以很像扑克里黑桃形状的ASCII开头的,另外一个就

是在花括号中有一大串数字和字母的那个文件,这四个文件就是我们用图一所示方法创建的.既然找到了这些文件,我们应该怎么看文件的内容那?其实notepad

就是一个很好的工具,但是这中间还有个陷阱.比如,以下命令就出现我们不希望的结果d:\ads notepad myfile.txt:hidden执行这个命令时notepad就会问是否创建一个新文件,这个就很奇怪了,因为myfle.txt:hidden我们早就创建了.为了执行的结果是我们所希望的,应该输入下面的命令:d:\ads echo This is another ADS myfile.txt:hidden.txt d:\ads notepad myfile.txt:hidden.txt这样就出现了我们所希望的结果,文件名后增加的扩展名允许用notepad打开ADSs,这种方法也同样适用于其他的ADSs,比如:d:\ads

notepad myfile.txt:np.exe ADSs是NTFS文件系统的特征,所以带有ADS的

文件如果被移动到其他的文件系统,比如FAT,FAT32或者ext2上,ADS就会被删掉,因为这些文件系统都不支持ADS,如果是在NTFS分区之间移动,ADSs就会被

保留下来.删除ADSs相对简单,用下面的命令即可d:\ads type myfile.txt myfile.bat d:\ads del myfile.txt d:\ads ren myfile.bat myfile.txt

现在用lads.exe看一下,可以看到所有的ADSs都不见了.执行ADSs前面的例子

中,我们已经把可执行的代码藏在ADSs中,这个看起来好像没什么用处,除非代

码可以自动执行.其实,start命令就可以用来执行这些代码,现在我们再来创建ADSs d:\ads type d:\winnt\notepad.exe myfile.txt:np.exe但是在2000上执行时会出现错误,这时因为我们提供的路径信息不够所以,我们应该指明路径,不管时绝对路径还是相对路径.比如,下面的任何一个命令都可以:d:\ads start d:\ads\myfile.txt:np.exe d:\ads start.\myfile.txt:np.exe是

不是出现了记事本?当命令执行时进程会出现比较有意思的现象.例如,运行pslist.exe会出现下图情况图三出现的进程名是myfile.txt:看看任务管理器中的情况:图四再看看下图:图五我们来看看在xp的管理器中进程的情况:图六还有一种可选择的用来执行隐藏文件流的方法,我们来示范一下,先在桌面上

创建一个快捷方式,项目位置填入d:\ads\myfile.txt.假设你创建的流文件是sol2.exe(也就是用这个命令type d:\winnt\system32\sol.exe myfile.txt:sol2.exe),现在我们到创建的快捷方式的属性里修改,让快捷方式指向d:

\ads\myfile.txt:sol2.exe,观察一下快捷方式的图标,是不是起了变化?现在

我们双击这个图标,就可以执行这个文件了.看执行后的结果:图七还有一种比

较简便的方法是直接在注册表中的run键下添加数据流文件的完整路径:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,下次系统启动时就会自动运行该隐藏文件在开始的运行框中也可以执行ADSs比如:file:///d:/ads/myfile.txt:sol2.exe对于使用perl的管理员可用下面的

代码执行ADSs my$file='d:\ads\myfile.txt:sol2.exe';`$file`;把文件

存为ads.pl,用下面的命令即可执行d:\perl ads.pl其实用windows的WSH

也可以执行ADSs:d:\ads echo MsgBox"VBS file to test ADSs"ads.vbs d:\ads wScript ads.vbs d:\ads type ads.vbs myfile.txt:ads.vbs d:\ads wScript myfile.txt:ads.vbs或者:D:\ads start.\myfile.txt:ads.vbs

总结:ADSs是NTFS的一个特征,它是为了和HFS兼容而设计的.可是由于比较

难于被发觉,所以对于管理员来说是一种危险,现在29A这个组织的Bennie和Ratter已经发布了一种叫做W2K.Stream病毒,这个病毒就是利用ADSs的.我们

并不能以不使用NTFS来作为解决这个问题的办法,因为NTFS在安全性和可靠性方面是有很大作用的.其实,管理员应该对文件和目录正确的使用

DACLs(discretionary access control lists),并且经常使用工具比如说

lads.exe来扫描他们自己的系统.文章中有些地方经过我自己的整理,删除了有

些无关紧要的内容如果想看原文可以参上面提到的工具链接如下:lads

pslists:又是一篇关于Windows,NTFS和cmd的帖子哈~貌似本板块可以改名

为中国cmd联盟了~嘻嘻~废话不多说,进入正题你用过卡巴斯基么?是不是每次复制文件都会显示这个:screen.width*0.7){this.resized=true;

this.width=screen.width*0.7;this.alt='Click here to open new

window';}"哈哈,这个就是今天我们要讨论的话题:NTFS数据流。NTFS分区

的数据流是一个子文件系统允许额外的数据连接到一个特别的文件中,现在的FAT文件系统格式是不支持数据流格式的。简单点说就是给在NTFS分区格式的

文件添加了一个标记。除了上面举的卡巴斯基的例子,在WinRAR添加压缩文件时,在高级选项中就有"保存文件数据流"的选项。再看看卡巴斯基对NTFS数据流干了些什么,Kaspersky把文件的验证指纹信息保存到NTFS数据流里面,如

果病毒/木马修改了这个文件,Kaspersky就会很快发现文件校检有误,这就是

为什么Kaspersky安装完毕要必须"全盘检查"一次,这样可以大幅度加快以后

的病毒检查速度!那么,怎样添加NTFS数据流呢?这就和cmd有关了CODE:[Copy to clipboard]dir C:1.txt看看1.txt里的内容,记住哦~然后CODE:[Copy to clipboard]dir c:2.txt:stream.txt怎么样,糊涂了吧~先看看

2.txt的属性:0 Bytes,打开2.txt看看有什么?什么都没了~然后在输入:CODE:[Copy to clipboard]notepad 2.txt:stream.txt看看,出来什么了?

惊讶吧~其实每个文件都可以有多个流的,用这个NTFS的特性我们可以隐藏文

件哦~而且,还可以,隐藏木马^_^实际上,流还可以不依赖于文件,下面的命令

也是合法的(先不要试,否则可能会有点麻烦):CODE:[Copy to clipboard]dir e::stream.txt这是把流绑到了文件夹上,这种流就更隐蔽了,一般情况下

要想删除流只有将其宿主删除,如果你执行了刚才的命令,并且是在根文件夹

上执行的,如果你想删除它,那就恭喜你要格盘了:),不过有现成的工具可以

使用的,这个就是:Streams v1.53 Reveal NTFS alternate streams这么样,又是sysinternal的作品哦~我要说的就说完了,下面是网上收集的关于NTFS

流的资料了Quote:NTFS上的交换数据流NTFS上的交换数据流转载:来源不详--目录--1、前言2、概念3、性质和应用-3.1创建-3.2删除-3.3检测与提取-3.4保存与传输-3.5文件隐藏-3.6运行-3.7与IIS相关4、附言5、参考文章--1、前言交换数据流(alternate data streams,以下简称ADS)也不是什么新

东西,但用户和管理员对它的认识知之甚少,本文将结合前人的资料对ADS做

一番探讨。如有错误,还望高手赐教。2、概念先来看看微软对多文件流的解释:在NTFS文件系统下,每个文件都可以有多个数据流。值得一提的是,流不是

NTFS 2000的功能,但是从Windows NT 3.1开始流已存在。当在非NTFS卷(如Windows 98计算机的磁盘分区)下读取文件内容时,只能访问一个数据流。因此,您会觉得它是该文件真正的且"唯一"的内容。这样的主流没有名称,并且

是非NTFS文件系统可以处理的唯一一个流。但是当在NTFS卷上创建文件时,

事情可能不一样。参看图1了解此重要概念。ADS是NTFS文件系统特有的性质,也就是前面说的多数据流文件除了主流之外的流,但基于API的Win32却不能

很好的支持ADS。例如我们可以把一个文件以流的形式附加到另一个文件(载体)中,但是对于Windows资源管理器来说载体文件没有发生任何变化(包括其大小、修改时间等)。由此将会产生一系列问题。下面就让我们来看看ADS的一些性质及应用吧。3、性质和应用3.1创建创建ADS很简单,语法是载体文件名:看个命令行下面的例子:echo This is lake2's stream a.txt:stream.txt通过

上面的例子我们就很简单的创建了一个ADS,它在windows下并不可见,不信

你可以用资源管理器或者dir命令看看a.txt文件的大小是不是0。打开a.txt,可是里面什么内容都没有。当然没有内容,这里ADS是a.txt:stream.txt,

内容应该在这个文件里。注意,这里用type命令并不能显示文件a.txt:stream.txt,但是记事本却可以。还是在命令行下输入notepad a.txt:stream.txt,呵呵,看到"This is lake2's stream"了吧。现在我们用记事本

打开a.txt随便修改内容,这并不会影响到流的内容;同样,对a.txt:stream.txt的修改也不会影响到载体文件a.txt。3.2删除删除ADS最为简单,直接删载体文件就是;但是如果只想删ADS而保留载体文件的话最简单的办法

就是把载体文件拉到非NTFS分区去走一趟。因为ADS是NTFS的"专利",离开

了NTFS文件系统ADS也就烟消云散了。如果你只想在NTFS分区删除ADS的话,可以用下面这个批处理:type a.txt a.txt.bak rem type不能支持ADS,所以拿它来备份载体del a.txt rem删除载体及ADS ren a.txt.bak a.txt rem恢

复载体文件3.3检测与提取关于ADS的检测涉及到API编程了,呵呵,这方面

我还在努力学习,这里就抄微软的话:"Win32备份API函数(BackupRead、BackupWrite等)可用于枚举文件中的流"。不过好在已经有检测ADS的软件了,下面几个软件都可以检测:LADS(List Alternate Data Streams)-Streams

v1.1(Sysinternals)-NT Objectives Forensic Toolkit(sfind.exe)-(要提取ADS必须要第三方工具,NTRootKit工具包里的cp可以做到(cp也可以用于创

建流);NTRootKit工具包我一直没有找到,google上一搜全是那个NTRootKit

后门,只好自己用C写了一个。这也不会要求你是编程高手,C语言里的文件

函数完全可以支持ADS的创建、删除、提取,只需把ADS当成一个文件来处理

就是了。3.4保存与传输前面说了,ADS在非NTFS分区就会丢失,那么说来在

非NTFS分区就无法保存ADS了吗?直接保存没有办法,我们可以间接保存啊。

呵呵,这样需要借助一个软件,你也应该有的,它就是WinRAR。对含有ADS的

文件加压时,找到高级选项,那里有一个"保存文件流数据",打上勾(图2),

呵呵,你就可以把ADS压缩到rar文件里了。这个rar文件可以保存到非NTFS

分区的--注意啊,是保存,不能解压出来的。【图2】如果要传输ADS,最好是用资源管理器打开对方的共享再复制粘贴;如果你想用其他方式传输的话大概

就只能传输包含ADS的rar文件了。3.5信息隐藏要保密信息,传统的做法是

加密。虽然加密后信息内容变成了无法直接读出的密文,不过也等于告诉人家

这是秘密,就不安全了;但是如果我把信息藏起来让你找不着不就ok了吗,所以一种叫做"信息隐藏"的技术就被提出来了。古装戏里常常有隐写术,就是一

张白纸在平时就是一张普通的白纸,但在特殊的作用下预先写好的字就会显示

出来。用这个来比喻信息隐藏是最为恰当的了。信息隐藏是目前信息安全研究

的热门领域,实现方法也很多,最流行的大概就是以bmp图像文件为载体,通

过替换文件每个字节无关紧要的最低的一位来实现的。呵呵,不过有一种实现

简单的信息隐藏技术就在我们眼前。对,就是利用ADS!既然Windows不能很

好的察觉ADS,那么我们就可以把要保密的文件以ADS方式保存。不过这里提

醒一下,利用ADS实现信息隐藏的安全性不是很高,不过也不是很低--我想应

该没有人没事就花大量时间用lads.exe检测着玩吧。另外,大多数杀毒软件并不能检测ADS,所以我们可以利用流让杀毒软件pass后门。例:type nc.exe a.txt:nc.exe原文件nc.exe会被金山毒霸查出来,处理之后尽管a.txt:

nc.exe内容与nc.exe完全一样,但并不会被金山毒霸发现。3.6运行前面说了可利用ADS让后门躲避杀毒软件,但如果不能运行的话还不是没用。那怎么运

行呢?命令行下面直接运行a.txt:nc.exe是不行的,应该用start命令。关于这个命令的详细用法你自己打help start看看吧。start命令运行可执行的ADS时要用绝对路径或者当前路径用./加文件名。看例子:start./a.txt:

nc.exeorstart c:\a.txt:nc.exe在Win2000下查看进程只能看到载体文件,而XP下则可以发现整个ADS。图3是在XP下用tlist的截图。3.7与IIS相关在IIS中访问ADS会有一些有趣的事情发生,这个参见我的另一篇Blog《交换

数据流(ADS)与IIS的前世与今生》()。4.附言谢谢你看完我的文章:)5.参考

文章bigworm翻译,《NTFS不利的一面》()xundi,《关于NTFS文件系统中的

数据流问题》()H.Carvey,《The Dark Side of NTFS》

(_side.html"rel=nofollow)Damon Martin,《Windows,NTFS and Alternate Data Streams》(_Martin_GSEC.pdf"rel=nofollow)《NTFS Streams-Everything you need to know》()Quote:NTFS不利的一面翻译+整理:By Bigworm不当之处请指正这篇文章是根据H.Carvey的The Dark Side of

NTFS(Microsoft's Scarlet Letter)翻译的,可以自由转载,但请保持译者和来源以及文章的完整性.简介:微软的平台不断在增加.公司用的服务器和桌面操作系统运行的一般是winNT和win2000,而家庭用户和学生用的系统一般是winXP.这些平台是很受欢迎的并且被大范围的使用.可是使用这些操作系统的用户和管理员却对NTFS文件系统的某个特性知道的很少,那就是"交换数据流"(alternate data streams).NTFS因为它的稳定性强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流(ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,它使用资源派生(resource forks)来维持与文件相关的信息,比如说图标及其他的东西.而微软提供了一种方法通过Windows explorer来创建特殊的ADSs,检测这种特殊的ADSs的必要工具和功能相当缺乏.说来也奇怪,系统一直以来都有允许用户创建ADSs以及在这种流文件中执行隐藏代码的功能和工具.Microsoft KnowledgeBase中Q 101353号文章

承认了基于API的win32不能很好的支持ADSs.这篇文章的目的是详细的介绍ADSs是怎么被创建和利用的,以及隐藏在ADSs中的代码是怎么被执行的.基于

不同的系统(NT 2K XP)处理ADSs也是很不同的.创建ADSs创建ADSs的语法相对比较简单和直接.比如说创建和文件myfi le.txt相关联的ADSs,只需简单的用冒号把文件名和ADSs名分开即可.D:\ads echo This is an ADS

myfile.txt:hidden此外,ADSs还可用另外一个文件的内容来创建.D:\ads echo This is atest file test.txt D:\ads type test.txt myfile.txt:hidden然后你可以用记事本去检验一下看看,命令如下:d:\ads notepad myfile.txt:hidden可是,用dir命令去看不出任何变化,Windows Explorer也没有任何可用的转换和设置来检测这种新建的ADSs的存在.此外,ADSs可以被

创建以及与目录列表相关联,而不是与一个文件关联.这种特性在文章的后面将会显示出他的重要性,但现在我们介绍怎么创建ADSs以及足够了.D:\ads echo This ADS is tied to the directory listing:hidden这种类型的ADSs也可以通过type和notepad命令来创建.ADSs文件的内容并不只限于text(文本)数据,任何二进制信息的流都可以组成一个文件,而且ADS也就是一个文件而已.可

执行的东西也能够相当容易的隐藏在ADSs中,看下面的例子:D:\ads type c:\winnt\notepad.exe myfile.txt:np.exe D:\ads type c:

\winnt\system32\sol.exe myfile.txt:sol2.exe同样,像图片文件,声音文件

或任何其他的数据流都可以隐藏在ADSs中.最后,Windows Explorer提供了一

种方法来创建特殊的ADSs(RUSS00)看下图:我们在值那一栏可以填入很多东西

图一如果某个用户没有写文件的权限,那么他就不能在该文件上添加ADS.此

外,windows文件保护功能可以防止系统文件被替换,但是他不能阻止有适当权

限的用户在这些系统文件上添加ADSs,有个工具System File Checker(sfc.exe)可以检查受保护系统文件是否被覆盖,可是它不能检测ADSs.检测,查看,利用ADSs如前所述,微软并没有提供工具来检测ADSs的存在.现在检测ADSs最好的

工具是由Fr ank Heyne写了Lads.exe.这个工具现在的版本是3.10,它是一个

命令行工具看下图:图二从上图我们可以看出lad.exe多有用了,不仅可以显示ADSs的存在,还可以显示ADSs的路径和大小.我们仔细注意和myfile.txt相关

联的四个文件,其中三个是以很像扑克里黑桃形状的ASCII开头的,另外一个就

是在花括号中有一大串数字和字母的那个文件,这四个文件就是我们用图一所示方法创建的.既然找到了这些文件,我们应该怎么看文件的内容那?其实notepad

就是一个很好的工具,但是这中间还有个陷阱.比如,以下命令就出现我们不希望的结果d:\ads notepad myfile.txt:hidden执行这个命令时notepad就会问是否创建一个新文件,这个就很奇怪了,因为myfle.txt:hidden我们早就创建了.为了执行的结果是我们所希望的,应该输入下面的命令:d:\ads echo This is another ADS myfile.txt:hidden.txt d:\ads notepad myfile.txt:hidden.txt这样就出现了我们所希望的结果,文件名后增加的扩展名允许用notepad打开ADSs,这种方法也同样适用于其他的ADSs,比如:d:\ads

notepad myfile.txt:np.exe ADSs是NTFS文件系统的特征,所以带有ADS的

文件如果被移动到其他的文件系统,比如FAT,FAT32或者ext2上,ADS就会被删掉,因为这些文件系统都不支持ADS,如果是在NTFS分区之间移动,ADSs就会被

保留下来.删除ADSs相对简单,用下面的命令即可d:\ads type myfile.txt myfile.bat d:\ads del myfile.txt d:\ads ren myfile.bat myfile.txt

现在用lads.exe看一下,可以看到所有的ADSs都不见了.执行ADSs前面的例子中,我们已经把可执行的代码藏在ADSs中,这个看起来好像没什么用处,除非代

码可以自动执行.其实,start命令就可以用来执行这些代码,现在我们再来创建ADSs d:\ads type d:\winnt\notepad.exe myfile.txt:np.exe但是在2000

上执行时会出现错误,这时因为我们提供的路径信息不够所以,我们应该指明路径,不管时绝对路径还是相对路径.比如,下面的任何一个命令都可以:d:\ads start d:\ads\myfile.txt:np.exe d:\ads start.\myfile.txt:np.exe是

不是出现了记事本?当命令执行时进程会出现比较有意思的现象.例如,运行pslist.exe会出现下图情况图三出现的进程名是myfile.txt:看看任务管理器中的情况:图四再看看下图:图五我们来看看在xp的管理器中进程的情况:图六还有一种可选择的用来执行隐藏文件流的方法,我们来示范一下,先在桌面上

创建一个快捷方式,项目位置填入d:\ads\myfile.txt.假设你创建的流文件是sol2.exe(也就是用这个命令type d:\winnt\system32\sol.exe myfile.txt:sol2.exe),现在我们到创建的快捷方式的属性里修改,让快捷方式指向d:

\ads\myfile.txt:sol2.exe,观察一下快捷方式的图标,是不是起了变化?现在

我们双击这个图标,就可以执行这个文件了.看执行后的结果:图七还有一种比

较简便的方法是直接在注册表中的run键下添加数据流文件的完整路径:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,下次系统启动时就会自动运行该隐藏文件在开始的运行框中也可以执行ADSs比如:file:///d:/ads/myfile.txt:sol2.exe对于使用perl的管理员可用下面的

代码执行ADSs my$file='d:\ads\myfile.txt:sol2.exe';`$file`;把文件

存为ads.pl,用下面的命令即可执行d:\perl ads.pl其实用windows的WSH

也可以执行ADSs:d:\ads echo MsgBox"VBS file to test ADSs"ads.vbs d:\ads wScript ads.vbs d:\ads type ads.vbs myfile.txt:ads.vbs d:\ads wScript myfile.txt:ads.vbs或者:D:\ads start.\myfile.txt:ads.vbs

总结:ADSs是NTFS的一个特征,它是为了和HFS兼容而设计的.可是由于比较

难于被发觉,所以对于管理员来说是一种危险,现在29A这个组织的Bennie和Ratter已经发布了一种叫做W2K.Stream病毒,这个病毒就是利用ADSs的.我们

并不能以不使用NTFS来作为解决这个问题的办法,因为NTFS在安全性和可靠性方面是有很大作用的.其实,管理员应该对文件和目录正确的使用

DACLs(discretionary access control lists),并且经常使用工具比如说

lads.exe来扫描他们自己的系统.文章中有些地方经过我自己的整理,删除了有

些无关紧要的内容如果想看原文可以参上面提到的工具链接如下:lads pslists:

特别声明:

1:资料来源于互联网,版权归属原作者

2:资料内容属于网络意见,与本账号立场无关3:如有侵权,请告知,立即删除。

数据流图试题(卷)与答案解析

【问题1】(1)费用单 (2)待租赁房屋列表 (3)看房请求 (4)变更房屋状态请求 【问题2】(5)房主信息文件 (6)租赁者信息文件 (7)房屋信息文件 (8)看房记录文件 【问题3】(1)起点:房主终点:变更房屋状态数据流名称:变更房屋状态请求 (2)起点:租赁者终点:登记租赁者信息数据流名称:租赁者信息 (3)起点:租赁者终点:安排租赁者看房数据流名称:看房请求 试题一(共15分) 阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下: 1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。 2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。

3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。 4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。 5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。 6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。 7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。 现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。 图1-1 顶层数据流图

数据流图例题解析

数据流图例题解析 例题:请根据以下描述画出系统的数据流图。该子系统共有三个加工:(1)首先是“建立订货合同台帐”:从订货合同、材料检验单和客户文件输入数据、输出形成合同台帐文件;(2)然后是“分类合并”:从合同台帐文件输入数据,排序合并后形成合同分类文件,最后“打印”加工单元从合同分类文件打印出合同分类表。 所谓数据流图(Data Flow Diagram,简称DFD)是一种分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。一般由数据流、加工、文件和数据源或终点四项组成 那么如何绘制数据流图呢?以本题为例进行说明: 首先我们可根据例题中的描述在纸上画出第一个加工“建立订货合同台帐”,如图1所示: 图1 其次,分析这个加工的输出、输入数据流。根据题意可知,该加工的输出是合同台帐文件、而为完成该项输出,必须有三项输入,即订货合同、材料检验单、客户文件。据此可绘制出如图2所示的图形: 图2 此时应注意两点:第一要对加工进行编号。本例中,我们将加工“建立订货合同台帐”编号为P1;第二要判断输入、输出项是一般的数据流、还是文件存储。

如果是文件存储(比如客户文件、合同台帐文件)则需要用右边开口的方框表示,同时表示数据流的箭头上的文字可省略。 第三、将加工“分类合并”画在纸上,如图3所示 图3 第四、找出加工“分类合并”的输入和输出项,并用箭头在纸上标注出来。本例中,该加工的输入数据流是合同台帐文件,输出数据流是合同分类文件,由于“合同台帐文件”已被绘制在纸张上,因此只需用箭头将它与加工联接起来即可。如图4所示: 图4 第五、按上述方法,将加工“打印”绘制在图纸上。如图5所示

数据流图(DFD)专题讲解

软件设计师考试的下午题的第一道题,数据库系统工程师考试的下午题的第一道题都是数据流图题,而能够将这道题全部做对的考生是非常少的。根据历年的辅导和阅卷经验,发现很多考生不是因为这方面的解题能力不够,而是缺乏解这种题的方法与技巧。本文介绍一些解这种类型题的方法和技巧,希望起来抛砖引玉的效果。 一.解题当中考生表现出的特点 由于这是下午考试的第一道题,所以很多考生从考前的紧张氛围当中逐渐平静下来开始答题,头脑还比较清醒,阅读起来比较流畅,速度还可以,自我感觉不错。可偏偏这道题有很多人不能全取15分,纠其原因有以下一些特点: 1.拿卷就做,不全面了解试卷,做到心中有数。这样会导致在解题过程当中缺少一种整体概念,不能明确自己在哪些题上必需拿分(多花时间),哪些题上自己拿不了分(少花时间)。这样,在解题时目标就会明确很多。 2.速度快,读一遍题就开始动手做。 3.速度慢,用手指逐个字的去看,心想看一遍就能做出题来。 4.在阅读题目时,不打记,不前后联系起来思考。 5.边做边怀疑边修改,浪费时间。

6.缺少的数据流找不准,可去掉的文件找不出来。 7.由于缺少项目开发经验,对一些事务分析不知如何去思考。 8.盲目乐观,却忽略了答题格式,丢了不应该丢的分。 二.解题的方法与技巧 1.首先要懂得数据流图设计要略。 有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。在绘制时应该注意以下要点: (1)自外向内,自顶向下,逐层细化,完善求精。 (2)保持父图与子图的平衡。 为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。

数据流图画法要求

数据流图(DFD)画法要求 一、数据流图(DFD) 1.数据流图的基本符号 数据流图由四种基本符号组成,见图5-4-1所示。 图5-4-1 数据流图的基本符号 例:图5-4-2是一个简单的数据流图,它表示数据X从源S流出,经P加工转换成Y,接着经P加工转换为Z,在加工过程中从F中读取数据。 图5-4-2数据流图举例 下面来详细讨论各基本符号的使用方法。 2.数据流

数据流由一组确定的数据组成。例如“发票”为一个数据流,它由品名、规格、单位、单价、数量等数据组成。数据流用带有名字的具有箭头的线段表示,名字称为数据流名,表示流经的数据,箭头表示流向。数据流可以从加工流向加工,也可以从加工流进、流出文件,还可以从源点流向加工或从加工流向终点。 对数据流的表示有以下约定: 对流进或流出文件的数据流不需标注名字,因为文件本身就足以说明数据流。而别的数据流则必须标出名字,名字应能反映数据流的含义。 数据流不允许同名。 两个数据流在结构上相同是允许的,但必须体现人们对数据流的不同理解。例如图5-4-3(a)中的合理领料单与领料单两个数据流,它们的结构相同,但前者增加了合理性这一信息。 两个加工之间可以有几股不同的数据流,这是由于它们的用途不同,或它们之间没有联系,或它们的流动时间不同,如图5-4-3(b)所示。 (a)(b)(c) 图5-4-3 简单数据流图举例 数据流图描述的是数据流而不是控制流。如图5-4-3 (c)中,“月末”只是为了激发加工“计算工资”,是一个控制流而不是数据流,所以应从图中删去。 3.加工处理 加工处理是对数据进行的操作,它把流入的数据流转换为流出的数据流。每个加工处理都应取一个名字表示它的含义,并规定一个编号用来标识该加工在层次分解中的位置。名字中必须包含一个动词,例如“计算”、“打

数据流图与数据字典的一个经典例子

系统的数据流图与数据字典实例 作为示例,为简单起见,我们只考虑人机分工。此处的数据流图是计算机化的帐务处理系统中涉及到计算机部分的数据流图,人工完成的部分将不做反应。例如:计算机没有能力审核原始凭证、填制记账凭证,这些工作必须由人来完成,因此进入系统(系统的自动化部分)的应该是记账凭证而不是原始凭证。银行对帐单仍然是系统的输入数据流,原有的输出数据流系统也必须提供。 图1 系统的顶层数据流图 图2 系统的第一层分解图 记账凭证进入计算机系统需要进行输入操作,而且由于记账凭证本身可能出错,或输入过程中可能发生错误,因此系统必须提供对已输入的记账凭证的修改功能和审核功能,审核通过的记账凭证才能够记账。据此,对“凭证处理”分解得到第二层分解图,该分解图由凭证输入、凭证修改和凭证审核三个处理构成。如果记账凭证是由操作人员直接根据原始凭证

用计算机填制,则凭证处理还应该包含一个打印记账凭证的处理。 图3 系统第二层分解图之一(图1)在系统中,登帐处理由计算机完成,其分解的流程图与原来一致。 图4 系统第二层分解图之二(图2)

图5系统第二层分解图之三(图3) 图6 系统第二层分解图之四(图4) 8.1.3 数据字典 数据字典的作用是对数据流图中的各种成分进行详细说明,作为数据流图的细节补充,和数据流图一起构成完整的系统需求模型。数据字典一般应包括对数据项,数据结构、数据存储和数据处理的说明。以下列出本系统的主要数据字典条目。 1. 数据项条目 数据项编号:D01-001 数据项名称:凭证编号 别名:凭证流水号 符号名:PZBH 数据类型:数值型 长度:4 取值范围:1~9999 其余略。 2. 数据结构条目

系统分析数据流图10例教学教材

数据流图10例 1.请根据以下描述画出某库存管理系统的数据流图。该系统的数据流程描述如下:(1)首先,根据计划部门转来的收货通知单,和已存在的物资编码文件,建立物资采购单流水账;(2)然后,根据技术部门的物资验收报告和物资采购单流水账,更新物资台账文件;(3)最后,对物资台账分类汇总,将结果存储于物资总账文件中。 答: 图.1 2.请根据以下描述画出系统的数据流图。该子系统共有三个加工,(1)首先,根据生产计划、库存台账文件编制采购计划,建立采购计划文件;(2)其次,根据订货合同、采购计划文件,建立合同台帐文件;(3)最后,根据合同分类文件打印合同分类表。 答:

3.请根据以下业务流程描述,画出某物资管理系统的数据流图。该系统的业务流程描述如下:(1)生产车间向物资部提出物资需用计划,物资部计划人员根据库存台帐,编制物资采购计划;(2)采购人员根据物资采购计划,以及供货商报价单,编制合同台帐;(3)采购的物资到货后,库存管理人员根据技术科提供的验收报告,以及合同台帐,进行物资入库处理,并更新库存台帐。 答: 4.请根据以下描述画出某设备管理系统的数据流图。该系统的数据流程描述如下: (1)首先,根据技术科的验收报告,建立设备台帐;(2)然后,根据技术科的设备检修记录,更新设备台帐;(3)最后,对设备台帐分类汇总,打印输出统计报告。 答: 图.3

5.请根据以下业务流程描述,画出某仓库管理系统的数据流图。该系统的业务流程描述如下:(1)仓库管理员依据物资到货通知单,建立物资台帐;(2)领料人员向仓库管理员提交物资领用申请,库管员查询库存台帐并打印领料单;(3)月末进行物资盘点,生成并打印“物资收支存报表”。 答: 图.5

文件流是以外存文件为输入输出对象的数据流

文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据读入。字符串流也称为内存流。 字符串流也有相应的缓冲区,开始时流缓冲区是空的。如果向字符数组存入数据,随着向流插入数据,流缓冲区中的数据不断增加,待缓冲区满了(或遇换行符),一起存入字符数组。如果是从字符数组读数据,先将字符数组中的数据送到流缓冲区,然后从缓冲区中提取数据赋给有关变量。 在字符数组中可以存放字符,也可以存放整数、浮点数以及其他类型的数据。在向字符数组存入数据之前,要先将数据从二进制形式转换为ASCII代码,然后存放在缓冲区,再从缓冲区送到字符数组。从字符数组读数据时,先将字符数组中的数据送到缓冲区,在赋给变量前要先将ASCII代码转换为二进制形式。总之,流缓冲区中的数据格式与字符数组相同。这种情况与以标准设备(键盘和显示器)为对象的输入输出是类似的,键盘和显示器都是按字符形式输入输出的设备,内存中的数据在输出到显示器之前,先要转换为ASCII码形式,并送到输出缓冲区中。从键盘输入的数据以ASCII码形式输入到输入缓冲区,在赋给变量前转换为相应变量类型的二进制形式,然后赋给变量。对于字符串流的输入输出的情况,如不清楚,可以从对标准设备的输入输出中得到启发。 文件流类有ifstream,ofstream和fstream,而字符串流类有istrstream,ostrstream和strstream。文件流类和字符串流类都是ostream,istream和iostream类的派生类,因此对它们的操作方法是基本相同的。向内存中的一个字符数组写数据就如同向文件写数据一样,但有3点不同: 1. 输出时数据不是流向外存文件,而是流向内存中的一个存储空间。输入时从内存中的存储空间读取数据。在严格的意义上 说,这不属于输入输出,称为读写比较合适。因为输入输出一般指的是在计算机内存与计算机外的文件(外部设备也视为文件)之间的数据传送。但由于C++的字符串流采用了C++的流输入输出机制,因此往往也用输入和输出来表述读写操作。 2. 字符串流对象关联的不是文件,而是内存中的一个字符数组,因此不需要打开和关闭文件。 3. 每个文件的最后都有一个文件结束符,表示文件的结束。而字符串流所关联的字符数组中没有相应的结束标志,用户要指定 一个特殊字符作为结束符,在向字符数组写入全部数据后要写入此字符。 字符串流类没有open成员函数,因此要在建立字符串流对象时通过给定参数来确立字符串流与字符数组的关联。即通过调用构造函数来解决此问题。建立字符串流对象的方法与含义如下。 建立输出字符串流对象 ostrstream类提供的构造函数的原型为: ostrstream::ostrstream(char *buffer,int n,int mode=ios::out); buffer是指向字符数组首元素的指针,n为指定的流缓冲区的大小(一般选与字符数组的大小相同,也可以不同),第3个参数是可选的,默认为ios::out方式。可以用以下语句建立输出字符串流对象并与字符数组建立关联: ostrstream strout(ch1,20); 作用是建立输出字符串流对象strout,并使strout与字符数组ch1关联(通过字符串流将数据输出到字符数组ch1),流缓冲区大小为20。 建立输入字符串流对象 istrstream类提供了两个带参的构造函数,原型为: istrstream::istrstream(char *buffer); istrstream::istrstream(char *buffer,int n); buffer是指向字符数组首元素的指针,用它来初始化流对象(使流对象与字符数组建立关联)。可以用以下语句建立输入字符串流对象: istrstream strin(ch2); 作用是建立输入字符串流对象strin,将字符数组ch2中的全部数据作为输入字符串流的内容。 istrstream strin(ch2,20); 流缓冲区大小为20,因此只将字符数组ch2中的,20个字符作为输入字符串流的内容。 建立输入输出字符串流对象 strstream类提供的构造函数的原型为: strstream::strstream(char *buffer,int n,int mode); 可以用以下语句建立输入输出字符串流对象:

软件开发中的数据流分析

软件开发中的数据流分析 数据流分析中,信息流是系统的一个需要考虑的关键因素,通常用数据流图来进行描绘。数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能。也就是说,数据流图的作用就是从数据传递和加工的角度,在需求分析阶段以图形的方式描述数据流从输入到输出的移动变换过程,为系统建立逻辑模型。 1 数据流图的标示 数据流图是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。DFD 有四种元素,其基本符号如图3-5所示。 1)外部实体 与系统进行交互,但系统不对其进行加工和处理的实体,用带标记的矩形表示。 2)数据的加工 加工是对数据进行变换而活处理的单元,它接收一定的数据输入,对齐进行处理,并产生输出。在数据流图中加工/处理用带标记的圆圈表示,在圆圈内写上加工名。一个处理框可以代表一系列程序、单个程序或者程序的一个模块。 3)数据流 在数据加工之间或数据存储和数据加工之间进行流动的数据,用带标记的箭头表示。数据流由一组固定的数据组成,用来指出数据在系统内传播的路径。如订票单由旅客姓名、身份证号、年龄、日期、单位和目的地等数据项组成。由于数据流是流动中的数据,在数据流图中数据流用带箭头的线表示,在其线旁标注数据流名(与数据存储之间的数据流不用命名)。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。数据流图中的箭头表示的是数据流,而程序流程图中的箭头表示的是控制流。

4)数据存储 表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等,用带标记的双实线表示。 在数据流图中,如果有两个以上数据流指向一个加工,或是从一个加工中引出两个以上的数据流,这些数据流之间往往存在一定的关系。为表达这些关系,可以对数据流的加工表上不同的几号。一般来说,数据流与加工之间可用星号“*”表示相邻的一对数据流同时出现,用“+”表示相邻的两数据流可取其一或者两者,用“☉表示相邻的两数据流只能取其一,具体情况如图3-6所示。 为了能够有效表达数据处理过程的数据加工情况,需要采用层次结构的数据流图,即按照系统的层次结构进行逐步分解,并以分分层的数据流图来反映这种结构关系,这样就能比较清楚地表达和理解整个系统。

第8章 数据流与文件的输入输出

第8章 C++的I/O系统 8.1 知识要点 1.C++语言的“流”是指信息从外部输入设备(如键盘、磁盘等)向计算机内部(内存)输入和从内存向外部输出设备(显示器、磁盘)输出的过程。这种输入输出过程被形象地比喻为“流”。 2.C++系统中的所有I/O类均包含在iostream.h 、fstream.h、strstream.h这三个系统头文件中。 3.C++系统编译预处理时,要对# include命令进行“文件包含”处理,把该命令中指定的文件中的全部内容嵌入到该命令的位置,再编译整个C++文件,生成相应的目标代码程序。“文件包含”命令可以节省程序设计人员的重复劳动,也可以共享一些相同的程序段。 C++语言不仅提供了现成的I/O类库供用户使用,而且还为用户进行标准I/O操作定义了4个类对象,它们分别是cin、cout、cerr、clong 4.用格式控制符进行格式化输入、输出 5.所谓“文件”一般是指:存储在外部介质上的数据的集合。文件可用于存入程序代码,也可用于存放数据。 6.C++语言的文件名也是由文件的主名和扩展名两部分组成,它们之间用“.”号分隔。文件的主名是由用户命名的一个有效的C++标识符,为了同其他软件系统兼容,一般不超过8个有效字符。 7.C++语言把文件看作是一个字符(字节)序列,即由一个一个字符的数据顺序组成。根据数据的组织形式可分为ASCII文件和二进制文件两种。ASCII文件又称为文本(text)文件或字符文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件又称为字节文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。 8.对文件的操作 要在程序中使用文件,就要在程序的开始包含预处理命令: #include 对一般文件(主要是磁盘文件)的操作过程是:打开,读/写,关闭。 用户对标准I/O文件不需要进行打开/关闭,标准I/O文件函数分为以下三种: (1)字符I/O函数字符输入函数getchar ( )和字符输出函数putchar ( )。 (2)字符串I/O函数字符串输入函数gets ( )和字符串输出函数puts ( )。 (3)格式化I/O函数格式化输入函数scanf ( )和格式化输出函数printf ( )。 9.对字符文件的操作 (1)字符文件 在字符文件中,以换行符‘\n’结束的一串字符称为记录;终端屏幕上输出的一行字符就相当于一条记录;交互输入时,用户通过键盘输入,以回车键结束的一串字符也是一条记录。 (2)向字符文件写入数据向字符文件写入数据有2种方法。 1)调用从ostream流类中继承来的插入操作重载函数。使用方法同交互输出过程,但这时插入操作符的第一个操作数应是某个定义过的文件对象而不是cout。 (3)从字符文件读取数据到内存变量从打开的字符文件中输入数据到内存变量有3种方法。 10.对字节文件(二进制文件)的操作 (1)字节文件 与字符文件不同的是,字节文件中存放的是可供机器直接读取的二进制代码,在打开方式中带有ios::binary选项 (2)建立二进制文件和write()成员函数一个文件被用户定义的一个文件流对象按字节方式打开后,通过文件流对象调用在ostream流类中定义的write()成员函数就能够向文件流对象所对应的文件中写入数据。 (3)访问二进制文件和read()成员函数 从字节文件读数据,就是把具有一定字节数的内容原原本本地复制到内存中由指定字符

文件与数据流

第8章文件与数据流 一、文件和流的概念 文件是指在各种驱动器上(硬盘、可移动磁盘等)永久或临时存储的数据的有序集合,是进行数据读/写操作的基本对象。文件通常具有文件名、路径、访问权限等属性。 流从概念上来说类似于单独的磁盘文件,它也是进行读/写操作的对象。流提供了连续的字节存储空间,通过流可以向后备的存储器写入数据,也可以从后备存储器读取数据。 与磁盘文件直接相关的流称为“文件流”。除此之外,还有网络流、内存流等其他类型的流。 流用于传输数据时,有两个传输方向: 读:将数据从外部数据源传输到程序中,这是读取流。 写:将数据从程序传输到外部数据源,这是写入流。

二、相关知识 1.流的创建 FileStream fs = new FileStream( "test1.dat", FileMode.Create, FileAccess.Write); 一般格式: FileStream fs = new FileStream( string path, FileMode mode, FileAccess access); 参数含义: path:指定当前FileStream对象将封装的文件的相 对路径或绝对路径。可以只是文件名(在程 序所在目录下创建或打开文件) mode:指定如何打开或创建文件,它的值必须是 FileMode枚举中的值。 access:指定如何访问文件,它的值必须是 FileAccess枚举中的值。 2)将数据写入流 fs.write(byte[] array,int offset,int count); 参数含义: array:要写入文件流的字节数组 offset:array数组中开始写入文件流的字节的下 标。 count:将要写入流的最大字节数 3)从流中读取数据 fs.ReadByte()从流中读取一个字节(返回已转换 为int的字节),并将流内的位置向前推进一个。 如果已经到达流的末尾,则返回-1。 在读之前,用canRead属性确定当前对象是否支持

顶层数据流图案例实例

网上作业提交与管理系统的顶层数据流图 其中: 数据流A:账号和密码 数据流B:作业申请 数据流C1:需要完成的作业 数据流C2:完成的作业 数据流D:作业成绩 存储E:作业成绩统计文件 决策表 行李 重量 W>30 W≤30是否 国内 乘客 头等舱 其他舱 国内 国外 免费 是否 头等 舱 (W-30)×4 (W-30)×6 头等舱 其他舱 是否 头等 舱 (W-30)×8 (W-30)×12

需求分析文档 超市进货管理系统的开发主要涉及到商品信息的管理、供应商信息的管理、订单信息的管理、库存信息的管理、商品分类信息的管理五大功能的数据管理。商品信息管理包括添加商品、删除商品、修改商品信息、浏览商品信息。供应商信息管理包括添加供应商、删除供应商、修改供应商信息、浏览供应商信息、浏览供应商与商品间关系。订单信息管理包括添加订单、删除订单、修改订单信息、浏览订单信息。库存信息管理包括添加商品库存、删除商品库存、修改商品库存信息、浏览商品库存信息。商品分类信息管理包括添加商品分类信息、删除商品分类信息、修改商品分类信息、浏览商品分类信息。 一、功能需求 (1) 商品管理---对所有商品信息进行管理。 (2) 供应商管理---对购物车和订单信息的维护。 (3) 订单管理---对订单和订单中书籍打印信息的更新与管理。 (4) 库存管理---对后台用户进行管理添加、删除以及修改信息。 (5) 商品分类管理---对数据库进行备份和恢复。 二、性能需求 (1) 系统中的软件不构成对人身健康的损害。 (2) 系统中的软件失效时不造成财产的损失。 (3) 系统中的软件失效时不造成环境的破坏。 (4) 系统中的软件可以每天使24小时,每年使用365天。 (5) 系统中的软件故障率小于等于5%。 (6) 用户输入错误信息时系统应提示不应崩溃。 (7) 软件适合12-70周岁的智力、视力、体力和肢体正常且具有图书借阅相关知识的人使用。 三、运行需求 (1) 系统在常温环境下使用。 (2) 系统在洁净的室内使用。 (3) 宽带网、1M以上宽带互联网。 (4) 任何有浏览器的设备打印功能需IE浏览器。 (5) 数据库管理系统SQL Server2008及以上。

数据流图试题及答案

数据流图试题及答案https://www.wendangku.net/doc/a59025785.html,work Information Technology Company.2020YEAR

【问题1】(1)费用单 (2)待租赁房屋列表 (3)看房请求 (4)变更房屋状态请求 【问题2】(5)房主信息文件 (6)租赁者信息文件 (7)房屋信息文件 (8)看房记录文件 【问题3】(1)起点:房主终点:变更房屋状态数据流名称:变更房屋状态请求 (2)起点:租赁者终点:登记租赁者信息数据流名称:租赁者信息 (3)起点:租赁者终点:安排租赁者看房数据流名称:看房请求 试题一(共15分) 阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】 某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下: 1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课 程的考试成绩。

2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。 3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。 4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。 5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。 6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。 7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。 现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。 图1-1 顶层数据流图

分析数据流图8

试题1 阅读下列说明与数据流图,回答问题1至问题4,将解答填入答题纸得对应栏内. [说明] 某基于微处理器得住宅安全系统,使用传感器(如红外探头、摄像头等)来检测各种意外情况,如非法进入、火警、水灾等. 房主可以在安装该系统时配置安全监控设备(如传感器、显示器、报警器等),也可以在系统运行时修改配置,通过录像机与电视机监控与系统连接得所有传感器,并通过控制面板上得键盘与系统进行信息交互。在安装过程中,系统给每个传感器赋予一个编号(即id)与类型,并设置房主密码以启动与关闭系统,设置传感器事件发生时应自动拨出电话号码。当系统检测到一个传感器事件时,就激活警报,拨出预置得电话号码,并报告关于位置与检测到事件得性质等信息。 [数据流图4—1] [问题1] 数据流图4-1(住宅安全系统顶层图)中得A与B分别就是什么?

[数据流图4—2] [问题2] 数据流图4-2(住宅安全系统第0层DFD图)中得数据存储“配置信息”会影响图中得哪些加工? [数据流图4-3] [问题3] 将数据流图4-3(加工4得细化图)中得数据流补充完整,并指明加工名称、数据流得方向(输入/输出)与数据流名称. 试题2

阅读以下说明与数据流图,回答问题1~问题3. 【说明】 学生住宿服务系统帮助学生在就学得缄市内找到所需得住房,系统对出租得房屋信息、房主信息、需要租房得学生信息以及学生与房主得会面信息进行管理与维护。 房主信息包括姓名、地址、电话号码以及系统分配得唯一身份标识(D)与密码;房屋信息包括房屋地址、类型(单间/套间)、适合住宿得人数、房租、房主得ID以及现在就是否可以出租(例如由于装修原因,需等到装修后才可出租或者房屋已被租出).每当房屋信息发生变化时,房主必须通知系统,系统将更新房屋文件以便学生能够获得准确得可租用房屋信息。房主向系统中加入可租用得房屋信息时,须交纳一定得费用,由系统自动给出费用信息。房主可随时更新房屋得各种属性。 学生可通过系统查询现有得可租用得房屋,但必须先在系统中注册。学生信息包括姓名、现住址、电话号码、出生日期、性别以及系统分配得唯一身份标识(1D)与密码。若学生希望租用某房屋,则需要发出租房请求,请求中包含房屋得详细信息,系统将安排学生与房主会面得时间与地点,并将会面信息通知学生与房主,会面信息包括会面时间、地点以及会面双方得基本信息,系统将记录会面信息。 学生住宿服务系统得顶层图如图1—1所示;学生住宿服务系统得第0层DFD图如图1—2所示,其中,加工3得细化图如图1-3所示。

数据流程图例题解析

数据流程图例题解析 例题:请根据以下描述画出系统的数据流程图。该子系统共有三个加工:(1)首先是“建立订货合同台帐”:从订货合同、材料检验单和客户文件输入数据、输出形成合同台帐文件;(2)然后是“分类合并”:从合同台帐文件输入数据,排序合并后形成合同分类文件,最后“打印”加工单元从合同分类文件打印出合同分类表。 所谓数据流程图(Data Flow Diagram,简称DFD)是一种分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。一般由数据流、加工、文件和数据源或终点四项组成。 那么如何绘制数据流程图呢?以本题为例进行说明: 首先我们可根据例题中的描述在纸上画出第一个加工“建立订货合同台帐”,如图1所示: 图1 其次,分析这个加工的输出、输入数据流。根据题意可知,该加工的输出是合同台帐文件、而为完成该项输出,必须有三项输入,即订货合同、材料检验单、客户文件。据此可绘制出如图2所示的图形: 图2 此时应注意两点:第一要对加工进行编号。本例中,我们将加工“建立订货合同台帐”编号为P1;第二要判断输入、输出项是一般的数据流、还是文件存储。如果是文件存储(比如客户文件、合同台帐文件)则需要用右边开口的方框表示,同时表示数据流的箭头上的文字可省略。 第三、将加工“分类合并”画在纸上,如图3所示。

图3 第四、找出加工“分类合并”的输入和输出项,并用箭头在纸上标注出来。本例中,该加工的输入数据流是合同台帐文件,输出数据流是合同分类文件,由于“合同台帐文件”已被绘制在纸张上,因此只需用箭头将它与加工联接起来即可。如图4所示: 图4 第五、按上述方法,将加工“打印”绘制在图纸上。如图5所示 图5

数据流程图实例

数据流程图案例 案例一: 阅读以下说明和流程图6-7,回答问题1至问题3,将解答写在答卷的对应栏内。 [说明] 本流程图描述了某仓库物品入出库管理的处理流程。每张入库单都由两们操作员分别录入,经处理1或处理3输入系统合作性检查,并将合法的入库单或出库单记入入库单文件或出库单文件。然后通过处理2或处理4实时更新库存文件。处理5每周执行一次,它依次检查库中的每一种物品,当某物品的库存小于该物品的最低库存量时,制订采购计划,输出订购单。处理6和处理7每月执行一次,处理6将入库单文件和出库单文件合并成月入库文件,并根据统计的要求对其进行排序。处理7进行统计,产生月报表,并把该月合并后的月入出库文件添加到月入出库后备文件中,以备日后查找。最后清除入库单文件、出库单文件和月入出库文件。 系统中某些文件和报表的格式如下: 库存文件记录。物品编号+名称+规格+库存量+最低库存量+最高库存量(其中"最高库存量"指该物品允许存放在库中的最大值。 入库单文件记录。日期+物品编号+数量 出库单文件记录。日期+物品编号+数量 月报表格式 物品编号日期入库数出库数 ×××××××××× ×××××××× ×××××× …… 当月小计×××××× ×××××××××× ×××××× ……

[问题1] 指出处理3能检查出库单中的哪些错误。 [问题2] 指出月入出库文件的记录格式。 [问题3] 指出处理6排序的第一和第二关键字。 案例二: 阅读以下说明和流程图6-17,回答问题1至问题4,将解答写在答卷的对应栏内。

[说明] 某公司将其生产的商品通过若干销售点进行销售。销售点在收到商品后的规定时间内把货款江给公司。 流程图描述了该公司发货、收款、催款的处理过程。其中部分文件和单据的格式如下。商品文件:商品代号、商品名称、单价 销售点文件:销售点代号、销售点名称、地址 发货单:发货日期、销售代号、商品代号、数量、金额 收款单:收款日期、销售代号、商品代号、数量、金额、该商品的发货日期 处理1~3把当天的发货单合并到发货文件。处理4~6把当天的收款单合并到收款文件。处理7在发货文件中当天已收款的记录确良加上已收款标记。处理8和处得9在月末执行一次,主要用于输出月发货报告、催款通知单、月收款报告。 [问题1]详细写出流程图中商品文件和销售点文件对处理1的作用。 [问题2]说明处理8为何要写发货文件。 [问题3]说明处理9除制作月收款报告外还对收款文件做什么操作。 [问题4]为了提高处理效率,流程图需作何改动。 案例三: 阅读以下说明和流程图,如图6-1所示,回答问题1和问题2,将解答写在答卷的对应栏内。

关于数据流文件的一些信息

关于数据流文件的一些信息 又是一篇关于Windows,NTFS和cmd的帖子哈~貌似本板块可以改名为中国cmd联盟了~嘻嘻~废话不多说,进入正题你用过卡巴斯基么?是不是每次复制文 件都会显示这个:screen.width*0.7){this.resized=true; this.width=screen.width*0.7;this.alt='Click here to open new window';}"哈哈,这个就是今天我们要讨论的话题:NTFS数据流。NTFS分区 的数据流是一个子文件系统允许额外的数据连接到一个特别的文件中,现在的FAT文件系统格式是不支持数据流格式的。简单点说就是给在NTFS分区格式的 文件添加了一个标记。除了上面举的卡巴斯基的例子,在WinRAR添加压缩文件时,在高级选项中就有"保存文件数据流"的选项。再看看卡巴斯基对NTFS数据流干了些什么,Kaspersky把文件的验证指纹信息保存到NTFS数据流里面,如 果病毒/木马修改了这个文件,Kaspersky就会很快发现文件校检有误,这就是 为什么Kaspersky安装完毕要必须"全盘检查"一次,这样可以大幅度加快以后 的病毒检查速度!那么,怎样添加NTFS数据流呢?这就和cmd有关了CODE:[Copy to clipboard]dir C:1.txt看看1.txt里的内容,记住哦~然后CODE:[Copy to clipboard]dir c:2.txt:stream.txt怎么样,糊涂了吧~先看看 2.txt的属性:0 Bytes,打开2.txt看看有什么?什么都没了~然后在输入:CODE:[Copy to clipboard]notepad 2.txt:stream.txt看看,出来什么了? 惊讶吧~其实每个文件都可以有多个流的,用这个NTFS的特性我们可以隐藏文 件哦~而且,还可以,隐藏木马^_^实际上,流还可以不依赖于文件,下面的命令 也是合法的(先不要试,否则可能会有点麻烦):CODE:[Copy to clipboard]dir e::stream.txt这是把流绑到了文件夹上,这种流就更隐蔽了,一般情况下 要想删除流只有将其宿主删除,如果你执行了刚才的命令,并且是在根文件夹 上执行的,如果你想删除它,那就恭喜你要格盘了:),不过有现成的工具可以 使用的,这个就是:Streams v1.53 Reveal NTFS alternate streams这么样,又是sysinternal的作品哦~我要说的就说完了,下面是网上收集的关于NTFS 流的资料了Quote:NTFS上的交换数据流NTFS上的交换数据流转载:来源不详--目录--1、前言2、概念3、性质和应用-3.1创建-3.2删除-3.3检测与提取-3.4保存与传输-3.5文件隐藏-3.6运行-3.7与IIS相关4、附言5、参考文章--1、前言交换数据流(alternate data streams,以下简称ADS)也不是什么新

数据流图深入讲解

软件设计师:数据流图深入讲解[1] https://www.wendangku.net/doc/a59025785.html,作者:佚名来源:考试吧2010年6月28日发表评论进入社区 软件设计师考试的下午题的第一道题,数据库系统工程师考试的下午题的第一道题都是数据流图题,而能够将这道题全部做对的考生是非常少的。根据历年的辅导和阅卷经验,发现很多考生不是因为这方面的解题能力不够,而是缺乏解这种题的方法与技巧。本文介绍一些解这种类型题的方法和技巧,希望起来抛砖引玉的效果。 一、解题当中考生表现出的特点 由于这是下午考试的第一道题,所以很多考生从考前的紧张氛围当中逐渐平静下来开始答题,头脑还比较清醒,阅读起来比较流畅,速度还可以,自我感觉不错。可偏偏这道题有很多人不能全取15分,纠其原因有以下一些特点: 1.拿卷就做,不全面了解试卷,做到心中有数。这样会导致在解题过程当中缺少一种整体概念,不能明确自己在哪些题上必需拿分(多花时间),哪些题上自己拿不了分(少花时间)。这样,在解题时目标就会明确很多。 2.速度快,读一遍题就开始动手做。 3.速度慢,用手指逐个字的去看,心想看一遍就能做出题来。 4.在阅读题目时,不打记,不前后联系起来思考。 5.边做边怀疑边修改,浪费时间。 6.缺少的数据流找不准,可去掉的文件找不出来。 7.由于缺少项目开发经验,对一些事务分析不知如何去思考。 8.盲目乐观,却忽略了答题格式,丢了不应该丢的分。 二、解题的方法与技巧

1.首先要懂得数据流图设计要略 有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。在绘制时应该注意以下要点: (1)自外向内,自顶向下,逐层细化,完善求精。 (2)保持父图与子图的平衡。 为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。 顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入 数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。 底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。 中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。中间层次的多少,一般视系统的复杂程度而定。 任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数 据流必须保持一致,此即父图与子图的平衡。父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。 在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但 是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图1 所示。

软件工程-数据流图(DFD)大题解析

1/4 杭州电子科技大学 计算机学院 软件与智能研究所 某公司为了给员工分配住房,开发了员工住房分配系统,功能如下: 计算原始分:根据员工信息(员工号、姓名、年龄、性别、学历、工龄、婚否、职务、职称、住房情况)计算原始分,并将员工信息存入员工信息文件中。 计算标准分:根据员工的原始分计算标准分,并将其存入员工分数文件(员工号、标准分)。 计算分房分:根据标准分、分房计划文件(员工号、住房请求)中的分房人数,计算分房分,并存入分房分数文件(员工号、分房分)中。 分房分查询:员工可以根据自己的员工号查询相应的分房分,若输入错误则返回出错信息。 试根据上面的系统功能描述: (1) 画出该系统的分层数据流图。(8分) (2) 写出相应的数据字典(要求至少写出三项)。(4分) (3) 将数据流图转换为软件的结构图。(8分) (1): 1) 2) 第一层数据流图 员工信息文件 员工分数文件夹 分房分数文件 2. 名称:员工信息 别名: 描述:员工的各种信息 定义:员工号+姓名+年龄+性别+学历+工龄+婚否+职务+职称+住房情况 位置:员工信息文件 名称:分房计划文件 别名: 描述:准备分房的计划 定义:员工号+住房请求 位置:公司系统 名称:分房分数文件 别名:

描述:计算出的每个员工分房分数的文件 定义:员工号+分房分 位置:公司系统 2阅读以下说明和图,回答问题1至问题5,将解答填入答题纸的对应栏内。(20分) 【说明】 某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下: 1)每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。 2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。 3)在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。 4)对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。 5)若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。 6)在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。 7)根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。 现采用结构化方法对这个系统进行分析与设计,得到如图2-1所示的顶层数据流图和图2-2所示的第1层数据流图。 【问题1】(4分) 使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。 E1:考试委员会 E2:主讲教师 E3:每个选课学生 E4:教务处 【问题2】(3分) 使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。 D1:课程信息文件 D2:课程单元信息文件 D3:学生信息文件 D4:课程成绩文件 D5:无效成绩文件 【问题3】(6分) 数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。

相关文档
相关文档 最新文档