




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计4 磁盘文件操作一、 课程设计目的深人了解磁盘文件系统的实现。二、 预备知识文件的操作。文件的逻辑结构和物理结构。磁盘空间的管理。磁盘目录结构。三、 小组人员四、 课程设计内容设计一个简单的文件系统,用文件模拟磁盘。用数组模拟缓冲区,要求实现: 支持多级目录结构.支待文件的绝对读路径;文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;采用文件分配表;实现的命令包括建立目录、,列目录、删除空目、建立文件、删除文件、显示文件、打开文件、读文件、写文件(追加方式)、关闭文作、改变文件属性。最后编写主函数对所做工作进行测试。五、 提示与讲解 为了正确地实现文件的存取。文件系统设汁了一组与存取文件有关的功能模块。用户可以用“访管指令”调用这些功能模块.以实理文件的存取要求,把文件系统设计的这一组功能模块称为“文件操作”。文件操作不是独立的,和文件系统的其他部分密切相关。若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。因此,这个实验虽然是文件操作的模拟实现,但是还必须模拟一部分文件的组织结构、目录结构和磁盘空间管理的实现。 (1)文件的组织钻构 文件的逻辑结构有两种形式:流式文件和记录式文件。实脸中只支持流式文件,采用称为显示链接的物理文件结构,把磁盘中每一块的指针部分提出来组织在一起,形成文件分配表(FAT)。 磁盘有多少块,文件分配表就有多少项。若某文件的一个磁盘块号为i,则这个文件的下一个磁盘的块号应该记录在文件分配表第i项。例如,某系统文件分配表前几项值如表2-5-1所示:某个文件的起始盘块号为3,则该文件的磁盘块号依次为3、4、9、12、13。表2-5-1 某磁盘文件分配表部分内容第几项0123456789101112131415内容-1-1-149078-11211-113-1002)磁盘空间的管理首先要模拟一个磁盘。因为是实验,不使用真正的磁盘,所以实验中用一个文件模拟一个小磁盘。假设模拟磁盘有128个物理块,每个物理块大小为64B。盘块的块号从0编起,依次为0,1,2,3,127。 将前面所讲的文件分配表放在磁盘的开始处。因为盘块有128块,所以文件分配表有128项,每项占用一个字节。这样文件分配表占用了磁盘的0块和1块,这两块就不能作其他用处。若一个盘块是某个文件的最后一块。填写“-1”表示文件结束。 文件的建立和删除操作需要对磁盘的空间进行分配和回收,所以要建立一定的数据表格来记录磁盘的使用情况。用文件分配表的第i项表示第i个盘块的使用情况。磁盘的第0块一定会被系统数据占用。所以任何一个文件的某个盘块块号都不可能是“0”,因而还可以用“0”表示磁盘盘块空闲,若这个盘块已经分配出去,即是某个文件的一块,由上面已知知道文件分配表中对应记录的是文件下一块的块号或结束标志都不是“0”。这样非“0”值表示盘块已分。像前面图2-5-1那张文件分配表中。块号为5、14和15的盘块是空闲的,其余是已分配的。在文件分配表中可以用一个超过盘块号的正整数表示文件结束,在此实验中Y开始找到文件分配表第x项,i=x第i项值是否为0?分配第i块磁盘满,分配失败结束Y第i项是否为最后一项采用255代替“-1表示文件结束。如果磁盘中某些部分损坏,只要不是系统区(引导扇区、文件分配表或根目录等)。不分配那些坏的盘块、磁盘就可以继续使用。在文件分配表对应坏盘块的项不能是“0”,一般也需要特定的数值表示(这个数值应该是盘块i=i+1编号以外并且不是结N束标志的数值,例如实验中128254之间的数值)。假设试验中模拟磁盘的筑第13块和第49块已经损坏不能使用,则在文件分配表的第13项和第14项写入“254”表示该盘块损坏不能使用。由于磁盘分配,有时不能预订文件大小,例如建立文件时并不知道文件大小,因而磁盘的分配有时是一块一块申请的。.磁盘空间回收时,整个文件删除时回收很多块,但有时文件修改时可图2-5-1 分配一个磁盘块的流程图能会删除某些内容,造成归还磁盘块,这时是一块一块回收的。这里给出申请一块磁盘空间的流程图,若分配多块时,循环多次即可。分配一个盘块时,不应该从文件分配表第一项查起,因为磁盘中最开始的J几块为系统数据区(引导扇区,文件分配表、根目录等占用)。所以应该从这之后的可分配数据区开始查询.。假定系统区域占用了x个盘块,则分配一个磁盘盘块的流程如图2-5-1所示。回收一个磁盘块的流程图很简单,例如回收磁盘块的块号为x,只要找到文件分配表中第x顶,将第x项的值改为0即可。 (3)目录结构 文件目录是用于检索文件的,是文件系统实现按名存取的主要手段。文件目录由若干目录项组成,每一个目录记录一个文件的有关招息。一般地说,目录项应该包括如下内容: 有关文件的控制信息。例如,用户名、文件名、文件类型、文件属性。实验模拟个人计算机上的文件操作。这部分内容仅包括文件名、文件类型和属性。 有关文件结构的信息。例如,文件的逻辑结构、文件的物理结构、记录个数、文件在存储介质的位里等。实验中,仅仅支持流式文件,不支持记录式文件,所以这部分内容仅仅包括文件在存储介质的位置(分给文件第一个盘块的块号。即起始盘块号)、文件的长度。 有关文件管理的信息。例如,文件的建立日期、文件被修改的日期、文件保留期限和记帐信息等。实验中为了简单起见,这部分内容都不采用。 因此,实验中文件的目录项包括:文件名、文件类型,文件属性、文件的起始盘块号、文件的长度。每个目录项占用8个宁节。具体结构如下:文件名:3个字节(实验中合法文件名仅可以使用字母、数字和除$、.和/以外的字符,第一个字节的值为$时表示该目录为空目录项,文件们和类型名之间用.分隔,用/作为路径名中目录间分隔符);文件类型名:2个字节;1 文件属性:1字节;起始盘块号:1个字节;文件长度:1个字节(为了实验的简单,文件长度单位为盘块)。有了文件目录后,当用户要求使用某个文件时,文件系统可以顺序查找目录项,并比较文件名。就可以找到指定文件的目录项.根据目录项中有关内容核对使用权限,井读比文件供用户使用。因此文件目录的组织和管理要便于检索和防止冲突。在操作系统中目录有根目录和子目录。因此文件除了需要登记形成目录外,还要登记子目录。实验中,根目录固定位置、固定大小(可以登记有限个文件或子目录项)、子目录像文件一样。可使用任何一个空闲磁盘块。为了实验简单,实验中根目录占用了一个盘块.子目录的长度也是采用可以任意长的方法,而是采用了定长的方法,每个子目录的长度也是一个盘块.只能放8个目录项。文件和目录的登记项是混在一起的,登记项的结构应该和文件目录一样。每个目录项占用8个字节,结构如下:目录名:3个字节(实验中合法文件名仅可以使用字母、数字和除$、.、/以外的字符。第一个字节的值为$时表示该目录为空目录);未使用2字节(在实验中填写空格);目录属性:1个字节;起始盘块号:1个字节;未使用1字节(在实验中填写“0”)。在目录登记项中,系统为目录名后两个字节(对应文件类名位置)填写空格,目录起始盘块号后1个字节(对应文件长度位置填)填写0。目录属性和文件属性占用同一个字节,为了区别目录和文件,该字节每一位代表不同的含义(为“1”表示“是”,为“0”表示“否”)。如图2-5-2所示,第0位表示文件为只读文件,第1位表示文件为系统文件,第2位表示文件为一般可读、可写的普通文件,第3位表示该登记项不是文件的登记顶,而是目录的登记项。其余几位闲置未用。如该字节为表示该目录是一个目录的登记项,该字节为表示该目录是一个只读系统文件的登记项。该字节为表示该目录是一个可读可写的普通文件。第7位第6位第5位第4位第3位第2位第1位第0位未使用未使用未使用未使用目录属性普通文件系统文件只读文件图2-5-2 属性字节各位作用示意图常用的目录检索的方法是顺序检索,根据绝对路径名查找文件的方法一般如下:先找到根目录的起始盘块,一般根目录位置是固定的,实验中就是模拟磁盘的第2块,将该盘块读出;取出路径名中根目录后的目录名或文件名与根目录中目录项依次比较,比较完一块。再根据文件分配表找到下一块,再读入比较。直到找到名字一致的目录项或根目录登记项均已查完为止;若没有找到,则查找失败,结束;若查找的是文件,结束;若查找的是目录,从找到的目录项中,取出目录的起始盘块号。读入此盘块,然后用上述相同的查找方法继续查找找。直到找到该文件(或目录)或查找失败结束。实验中,使用绝对路径查找文件(或目录)的流程如图2-5-3所示。开始查找绝对路径名namei=根目录的起始盘块号last=0pna=从name中分离出“/”后下一个目录名(或文件名):若是文件,分离出类型名type读出磁盘第i块,存在buffer2 若pna为目录名或文件名最后一部分,last=1是绝对路径的最后一部分且是文件名?j=0j=0NY第j项是该盘块一项?Y文件名为pna且类型名为type?Y查找成功j=j+1NN第j项是该盘块一项?NYlast=1?Y查找成功查找失败,该文件或目录不存在Y第j项是目录且名字等于pna?Yj=j+1Ni=该目录起始盘块号N结束图2-5-3 使用绝对路径查找文件(目录)的流程图查找文件除了使用绝对路径名外,还可以使用相对路径名。相对路径名是从当前目录出发到指定文件的路径。如果文件(或目录)在当前目录下,使用相对路径名查找速度比较快。和绝对路径的查找方法一样,只是查找的起点是当前目录,不是根目录。实验中只使用了绝对路径名。(4)文件操作 确定文件组织结构、目录结构和磁盘空间管理的方法后。就可以模拟文件操作的实现。实验中文件操作包括建立文件(create_file)、打开文件(open_file)、关闭文件(close_file)、读文件(read_file)、写文件(write_file)、删除文件(delete_file)、显示文件内容(typefile)和改变文件属性(change),目录命令包括建立目录(md)、显示目录内容(dir)和删除空目录(rd)。在实验中没有程序调用这些指令,为了看到它们的摸拟情况,从键盘输入选择指令来模拟用户程序的调用。表2-5-2 打开文件表结构首先要建立一个“已打开文件表”,该表用来记录打开或建立文件的相关内容、结构如表2一5一2所示。文件路径名文件属性起始盘块号文件长度操作类型读指针写指针块号块内地址块号块内地址用数组模拟已打开文件表,数据结构定义如下:#define n 5 /试验中系统允许打开文件的最大数量typedef structint dnum; /磁盘盘块号int bnum; /磁盘盘块内第几个字节pointer; /已打开文件表中读、写指针的结构typedef structchar name20; /文件绝对路径名char attribute; /文件的属性,用1个字节表示,所以采用char类型int number; /文件起始号int length; /文件长度,文件占用的字节数int flag; /操作类型,用“0”表示以读操作方式开文件,用“1”表/写操作方式打开文件pointer read; /读文件的位置,文件打开时dnum为文件起始盘块号,bnum/为“0”pointer write; /写文件的位置,文件刚建立时dnum为文件起始盘块号,bnum/为“0”, 打开文件时dnum和bnum为文件的末尾位置OFFILE; /已打开文件表项类型定义struct OFFICE filen; /已打开文件登记表int length; /已打开文件登记表中登记的文件数量openfiles; /已打开文件登记表定义无论上述哪种文件操作都会涉及到己打开文件表。对于已打开文件表主要是查找、删除和插入操作。下面给出这三种操作的流程图,在己打开文件表中查找某文件是否存在的流程如图2-5-4所示,将某文件从已打开文件表中删除的流程如图2-5-3所示,将某个文件登记在已打开文件表的流程图如图 2-5-6所示。开始插入路径名为name的文件在已打开文件表中查找路径名为name的登记项找到文件登记项i?N已打开文件表已满?Y文件登记表满,无法打开文件结束Y文件已经打开在openfile.filelength处填写该文件的各项内容:openfile.length=openfile.length+1N图2-5-6 将某文件插入已打开文件表的流程图开始查找路径名为pname的文件i=0i为已打开文件表一栏?文件路径名相符?查找成功结束查找失败i=i+1iNYYN图2-5-4 在已打开文件表中查找某文件的流程图开始删除路径名为name的文件在已打开文件表中查找路径名为name的登记项i找到该文件登记项i?NY删除第i项:Openfile.filei=openfile.fileopenfile.length-1 openfile.length=openfile.length-1结束文件没有打开,删除失败图2-5-5 将某文件从已打开文件表中删除的流程图(1) 建立文件(create_file) 用户要把一个新文件放到存储介质上前,首先调用文件系统的“建立”操作。 “建立文件”的主要工作就是检查文件目录,确认无重名文件后,寻找空闲登记项进行登记;寻拢空闲存储块(至少一块)以备存储文件信息或存放索引表,最后填写已打开文件表。 实验中需要的参数比较少,只要有文件名、文件属性即可。如cream_ file(文件名,文件属性)。 实验中,建立文件时给出文件名和文件属性,文件属性如果是只读性质则不能建立;文件建立时根据给定的文件路径名进行查找,如果父目录不存在。建立文件失败;如果存在,查看有无重名文件。如果有,则提示该文件已存在,建立文件失败;如无重名文件,则为该文件建立文件目录。并分配一个磁盘块;最后填写目录和已打开文件表。建立文件的流程如图2-5-7所示。(2) 打开文件(open_file) 用户要求使用一个已径存在的文件时,首先执行“打开文件”操作。 实验中,所需参数有文件名、操作类型(读或写), open_file (文件名、操作类型)。打开文件时,首先要检查该文件是否存在,不存在,打开失败。如果文件存在,还要检查打开方式。确保不能以写方式打开只读文件;最后填写已打开文件表,若文件已经打开则不需要填写已打开文件表,打开文件的流程如图2-5-8所示。开始路径名name,属性attribute是只读文件?不能建立只读文件,建立文件失败结束已打开文件表满?YN将name分离成建立文件的目录路径名pathname和文件名dname和文件类型名typeN不能建立文件,建立文件失败结束Y查找pathname找到该目录?d=该目录项起始盘块号第d块内容读入buffer2YN指定的文件已经存在,建立文件失败b=-1;t=0查buffer2中第t个目录项第t项是文件且名字是fname类型名是tname?第t项是空栏并且b=-1指定的文件已经存在,建立文件失败Y第t项是该盘块最后一项结束结束b=t;YN无空目录?Y申请一个磁盘块dd申请磁盘块成功?磁盘无空间,建立文件失败结束填目录和已打开文件表无目录项,建立文件失败NNYYt=t+1N图2-5-7 模拟建立文件的流程图结束在已打开文件表中插入该文件登记项操作不合法,无法打开文件文件属性与操作类型相符?NY文件不存在,无法打开文件找到该文件目录项?YN找到该文件的目录项打开路径名为pname的文件开始图2-5-8 打开文件的流程图 (3)读文件(read_file) 用户要求读文件信息时调用文件系统的读文件操作。 实验中,读文件的参数只需要文件名和读取长度。如read_file(文件名、读取长度)。因为采用的是流式文件结构,所以读的长度用字节表示。实验中,读文件操作的主要工作是查找已打开文件表中是否存在该文;如果不存在,不能读;然后检查是否以读方式打开文件,如果是以写方式打开文件。则不允许读;最后从已打开文件表中读出读指针,从这个位置上读出所需要长度,若所需长度没有读完已经遇到文件结束符。就终止读操作。实验中用“#”表示文件结束,读文件的流程如图2-5-9所示。(4)写文件(write_file)用户要求存取文件信息时调用文件系统的“写文件”操作。实验中,写文件的参数只需要文件名、存放准备写人磁盘信息的缓冲和写的长度,知write_ file(文件名,缓冲,写长度)。因为采用的是流式文件结构.所以写长度用字节表示。实验中,写文件操作的主要工作是查找已打开文件表中是否存在该文件,如果不存在,不能写;如果存在,还要检查是否以写方式打开文件:如果不是以写方式打开文件,则不能写;最后从已打开文件表中读出写指针。从这个位里上写入缓冲中的数据。开始读name文件length字节查找已打开文件表文件打开?文件以读方式打开?从已打开文件表得到读指针;将盘块dum读入缓冲buffer1t=0文件未结束t=length?显示读出内容;修改读指针的bnum;bnum=bnum+1t=t+1读完一个盘块?修改读指针:bnum=0;dnum=文件分配表第dnum项将盘块dnum读入缓冲buffer1NYY读文件结束结束N文件未打开,无法读文件结束文件不能读结束YNYN图2-5-9 读文件的流程图写文件有两种情况,一种情况是建立文件后的写人,这种写比较简单,一边写一边申请空间即可完成;一种情况是文件打开后的写入,这个比较复杂,存在着文件中间修改的问题。实验中,第二种情况只完成了从文件末尾向后追加的功能,写文件的流程如图2-5-10所示。(5)关闭文件(close_file)用户对文件读写完毕后需要调用文件系统的关闭文件操作。实验中,关闭文件的参数只需要文件名,如close_file(文件名)。在关闭文件时,首先要看该文件是否打开,如果没有打开,就不用关闭;如果已经打开,则检查打开方式,如果是以写方式打开的,要追加文件结束符,修改目录项;最后从已打开文件表中删除对应项,关闭文件的历程图如图2-5-11所示:开始将buff内容写入name文件length字节查找已打开文件表文件打开?文件以写方式打开?从已打开文件表得到写指针;盘块号dnum,字节位置bnumt=0结束tlength?将bufft写入文件缓冲buffer1修改写指针的bnum;bnum=bnum+1t=t+1文件长度增加1写完一个盘块?将buffer1写入磁盘申请一个磁盘块dd申请成功?磁盘满,不能继续写结束文件未打开,无法写文件NYY文件不能写结束N写文件结束结束NY修改写指针:bnum=1bnum=ddNYYN图2-5-10 写文件的流程图结束在已打开文件表中删除该文件登记项追加文件结束符操作为“写”?文件打开?查找已经打开文件表关闭路径名为name的文件开始文件未打开,无法关闭文件结束修改目录中文件长度图2-5-11 模拟关闭文件的流程图NNYY(6) 删除文件(delete_file)用户认为文件没有必要保存时需要调用文件系统的“删除文件”操作。实验中,删除文件时参数只要文件名,如delete_file(文件名)。实验中,删除文件操作的主要工作是检查文件是否存在;不存在,操作失败;如存在,查找该文件是否打开。如果打开不能删除;如果没有打开,则删除文件目录项并归还件文件所占磁盘空间,删除文件的流程如图2-5-12所示:(7) 显示文件内容(typefile)显示文件内容首先要找到该文件的目录登记项,如果文件不存在,指令执行失败;如果存在,查看文件是否打开,打开则不能显示文件内容;若没有打开,从目录中取出文件的起始盘块号,一块一块显示文件内容。显示文件内容的流程如图2-5-13所示。开始指定的文件不存在,显示文件内容失败开始删除路径名为name的文件查找该文件的目录项该文件存在?查找该已打开文件表找到该文件?t=文件起始盘块号删除该文件目录删除完?回收盘块t文件不存在,无法删除文件结束文件正在使用,不能删除结束t=下一个盘块结束NYNYNdnum=FAT第dnum项第dnum块内容读入buffer1显示buffer1中的内容结束或到文件结束符第dnum块是该文件的一块?dnum=该目录起始盘块号文件打开?找到该文件?查找目录name开始显示路径名为name的文件文件打开显示文件失败结束结束图2-5-12 删除文件的流程图图2-5-13 显示文件的流程图(8)改变文件属性(change)改变文件属性,首先查找该文件,如果不存在,则结束;如果存在,检查文件是否打开,打开不能改变属性;没有打开,根据要求改变目录项中属性值。实验中,首先要系统初始化,包括建立文件c模拟磁盘、初始化磁盘FAT、初始化根目录为空目录项;然后,可以选择一项功能执行。目录的操作命令: 建立目录(md):建立目录首先要找到建立目录的位置(父目录),然后查找该目录是否存在,如果父目录不存在,不能建立;如果存在,查找时否存在同名目录,如存在,则不能建立;如不存在,则查找一个空目录项,为该目录申请一个盘块,并填写目录内容。建立目录流程图如图2-5-14所示。 显示目录内容(dir):显示目录内容首先要找到该目录,如果目录不存在,指令执行失败;如果存在,则一项一项显示目录内容。显示目录内容的流程如图2-5-15所示。将name分离成建立文件的目录路径名pathname和目录名dname开始路径名为name查找pathname找到该目录?目录项起始盘块号d第d块内容读入buffer1b=-1 t=0查buffer2中第t个目录项第t项是目录且名字是dname目录中有空栏且(b=-1)b=t第t项是该盘块最后一项目录中有空栏且(b-1)申请一个磁盘块dd申请磁盘块成功初始化该块所有目录项为空目录项在第d块第b项建立该目录的目录:目录名fname、属性、起始盘块号dd、长度0:FAT表第dd项结束标志结束无目录项,建立失败NY无目录项,建立失败结束YNt=t+1NYNY指定的目录已经存在,建立目录失败结束指定目录不存在,建立目录失败结束YNYN开始结束第t项是该盘块最后一项?显示该目录内容第t项是空目录项?查buffer2中第t个目录项t=0该目录项起始盘块号dnum;第dnum块内容读入buffer2找到该目录?查找目录name显示路径名为name的目录指定目录不存在,显示目录内容失败NY结束NYt=t+1N图2-5-14 建立目录的流程图图2-5-15 显示目录内容的流程图 删除空月录(rd):删除空目录首先要找到该目录,如果目录不存在,指令执行失败:如果存在,但是根目录或非空目录显示不能删除。操作失败;若是非空子目录,则删除其目录项并回收对应空间:删除空目录的过程和删除文件的过程相似,流程可参考文件的删除过程。另外注意,对磁盘文件进行读操作时,需要磁盘的一个盘块读入内存后才能进行处理;对磁盘文件进行写操作时,要写慢缓冲后才写入磁盘。所以模拟文件操作时,不能将整个模拟磁盘的内容同时读入内存。应该当需要模拟磁盘的某个盘块内容时.从对应文件中读出;修改后需要写回模拟磁盘:实验中就是用这种方法摸拟磁盘的输入/输出。实验中定义了两个数组buffer1和buffer2模拟缓冲。实验过程中首先系统化初始化,包括建立文件c模拟磁盘、数尺花磁盘FAT和根目录初始为空目录项,然后选择
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中音乐课堂多声部合唱教学策略与音乐教育改革研究论文
- 校本课程开发中的课程内容设计论文
- 绘画课程对学生视觉思维的影响论文
- 基于虚拟现实技术的初中地理教学情境创设与教学效果评价论文
- 艾伯森财务管理制度
- 苗圃地员工管理制度
- 茶牌坊人员管理制度
- 融资合同:流动资金贷款合同
- 评估指标体系和评估机制构建支撑工作竞争性磋商文件
- 财政学 期末考试复习重点总结
- 公路水运工程土工试验讲义二
- 四川省宜宾市高县2023年数学六年级第二学期期末联考试题含解析
- 大学《管理经济学》期末复习核心知识点及考试真题解析
- 第五章-不规则三角网TIN的建立课件
- 《刑法》讲座-课件
- 中级养老护理人员技能培训
- 第二单元第1课时《线的认识》示范课教学课件【北师大版四年级数学上册】
- 重庆市建设工程施工项目每日“防高坠三检”检查记录表
- 国开电大本科《人文英语4》机考总题库
- JJF 1059.1-2012测量不确定度评定与表示
- GB/T 6070-1995真空法兰
评论
0/150
提交评论