版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计揭安全jieanquan@163.com江西师范大学计算机信息工程学院高级语言程序设计——基于计算思维能力培养高级语言程序设计——基于计算思维能力培养第9章文件及其应用揭安全jieanquan@163.com江西师范大学计算机信息工程学院主要内容文件概述文件的打开和关闭文件检测函数文件读写操作文件随机读写本章思维导图学生
文件信息的创建9.19.1引例——学生文件信息的创建例如,在命令行下执行:8_5<stu.txt>out.txtStu.txt输入输出重定向文件概述9.29.2文件概述9.2.1流的概念在C语言中的每个串行输入源和输出目标被称为“流”。输入流是一个串行数据源,可以为程序提供输入数据输出流是串行数据的目的地,可以接收程序的输出。流充当了程序和输入输出设备之间的桥梁,这使得程序在输入输出数据时可以采用统一的方式来工作,而不必去关注具体的物理设备是什么。<stdio.h>提供了3个标准流流名称流含义默认连接外设stdin标准输入键盘stdout标准输出屏幕stderr标准错误屏幕9.2.2文件的分类1、文本文件与二进制文件
C语言的<stdio.h>支持两种类型的文件:文本文件(也称ASCII文件)和二进制文件。在文本文件中,用字节来存储字符,这使人们可以检查或编辑文件。在二进制文件中,字节不一定表示字符,有可能是某数值型数据的某些bit位。例如,假设有变量声明语句: shortinta=32767;在二进制文件中,变量a仅占2个字节的存储空间,如图9-3所示。图9-31、文本文件与二进制文件
图9-4而把变量a的值存入到文本文件中则需要5个字节的存储空间,如图9-4所示。例如,假设有变量声明语句: shortinta=32767;1、文本文件与二进制文件
另外,文本文件还有以下特性:文本文件分为若干行。文本文件的每一行通常以一两个特殊字符结尾,在Windows中,行末的标记是回车符与换行符。文本文件可以包含一个特殊的“文件末尾”标记。一些操作系统允许在文本文件的末尾使用一个特殊的字节作为标记。在Windows中,标记为'\x1a'(Ctrl+Z)。1、文本文件与二进制文件
2、缓冲文件与非缓冲文件
C语言中可使用以下两种文件系统:缓冲文件系统,又称为标准文件系统或高级文件系统。是一种高效、方便且常用的文件系统。后面要学习的文件操作函数都是基于缓冲文件系统的。非标准缓冲文件系统,又称低级文件系统。该系统与机器有关,节省内存,执行效率高,但是应用难度大。图9-5文件缓冲区工作原理9.2.3文件指针stdio.h中定义了文件结构体类型FILE。typedefstruct{ shortlevel; /*缓冲区‘满’或‘空’的程度*/ unsignedflags; /*文件状态标志*/ charfd; /*文件描述符*/ unsignedcharhold; /*如无缓冲区不读字符*/ shortbsize; /*缓冲区的大小*/ unsignedchar*buffer; /*数据缓冲区的位置*/ unsignedchar*curp; /*指针当前的指向*/ unsignedistemp; /*临时文件指示器*/ shorttoken; /*用于有效性检查*/}FILE; C语言中对流的访问是通过文件指针实现的,文件指针的类型为FILE*。用文件指针表示特定的流具有标准的名字,如stdin、stdout和stderr等;我们可以根据程序需要声明一些另外的文件指针。例如:FILE*fp1,*fp2;定义了两个文件指针fp1和fp2。可以通过文件打开函数将文件指针连接到指定的文件上。文件的打开与关闭9.39.3.1文件的打开1、fopen函数打开文件要使用库函数fopen(),其函数原型为:FILE*fopen(constchar*filename,constchar*mode);fopen函数返回一个文件指针。例如:fp=fopen("in.dat","r");fp=fopen("d:\\cprogram\\test.c","r");为何要用\\注意:当打开的文件不存在或建立新文件时没有访问权限等将导致无法打开文件,此时fopen函数会返回空指针。因此打开文件后要测试fopen函数返回值以确保文件是否被正确打开。2、读写模式模式字符串含义"r"或"rt"打开文本文件用于读"rb"打开二进制文件用于读"w"或"wt"打开文本文件用于写(文件不需要存在)"wb"打开二进制文件用于写(文件不需要存在)"a"或"at"打开文本文件用于追加(文件不需要存在)"ab"打开二进制文件用于追加(文件不需要存在)"r+"或"rt+"打开文本文件用于读和写,从文件头开始"rb+"打开二进制文件用于读和写,从文件头开始模式字符串含义"w+"或"wt+"打开文本文件用于读和写(如果文件存在就覆盖原文件)"wb+"打开二进制文件用于读和写(如果文件存在就覆盖原文件)"a+"或"at+"打开文本文件用追加方式进行读和写"ab+"打开二进制文件用追加方式进行读和写2、读写模式9.3.2文件的关闭C语言使用fclose函数来关闭已打开的文件。其函数原型如下:intfclose(FILE*filename);其中filename是文件指针,指向已打开的文件。9.3.2文件的关闭文件检测函数9.49.4.1检测文件末尾函数feof()函数用来检测文件读写位置指针是否已到文件末尾。feof()的调用格式为:feof(fp);fp是文件指针,如果文件读写位置指针已到文件末尾,则函数返回非0值(逻辑真);否则函数返回0值(逻辑假)。例如,我们常用下面的语句来控制文件读写:
while(!feof(fp))
文件读/写语句;9.4.1检测文件末尾函数9.4.2检测出错函数ferror()函数可用来检测输入输出函数的每次调用是否有错,函数的调用格式是:ferror(fp)正常时函数返回0值,出错时函数返回非值(逻辑真)。一般在调用输入输出函数后可调用该函数,以检查输入输出函数的引用是否正确。例如:
文件读写语句; if(ferror(fp)) printf("文件读写错误!\n");9.4.2检测出错函数文件的读写操作9.59.5.1字符读/写函数1、字符读函数fgetc()该函数用来从文件读取一个字符,其函数原型为:intfgetc(FILE*fp);从fp读出一个字符,将位置指针指向下一个字符,若读成功,则返回该字符;若读到文件尾,则返回EOF。常见的用法:while(!feof(fp)) {ch=fgetc(fp); … }
对文本文件还可以用以下的形式来判断文件是否已读到文件末尾。while((ch=fgetc(fp))!=EOF) …9.5.1字符读/写函数2、字符写函数fputc()该函数用来将一个字符写入文件。其函数原型为:intfputc(intch,FILE*fp);其中,ch是字符常量或字符变量,fp是文件指针。该语句的功能是把字符ch写入到fp所指向的文件中;如果函数执行成功,则返回ch;否则,返回EOF。例如:fputc('A',fp);
将大写字母'A'写入fp指示的文件中。9.5.2字符读/写函数应用实例【例9.1】编写一个程序,将从键盘输入若干行字符串存入9_1.txt文件,并将文件中的内容重新读出显示到屏幕上(以'#'作为输入结束标志)。【分析】可首先将键盘上输入的若干文本行写入文件,再重新以只读方式打开文件,将其内容读出后显示在屏幕上。#include<stdio.h>intmain(){charch;FILE*fp;
fp=fopen("9_1.txt","w"); //以写方式打开文本文件if(fp!=NULL){printf("请输入若干行文本,以#结束输入:\n");while((ch=getchar())!='#')//循环写入fputc(ch,fp);fclose(fp);}elseprintf("文件创建失败!\n");fp=fopen("9_1.txt","r"); //以读方式打开文本文件if(fp!=NULL){printf("文件内容是:\n");while(!feof(fp)) //循环读出{ch=fgetc(fp);putchar(ch); //可用fputc(ch,stdout)代替putchar(ch)}fclose(fp); //关闭文件}elseprintf("文件打开失败!\n");return0;}请输入若干行文本,以#结束输入:
TeachyouhowtoreadCprograms↙TeachyouhowtowriteCprograms↙TeachyouhowtodebugCprograms#↙文件内容是:TeachyouhowtoreadCprogramsTeachyouhowtowriteCprogramsTeachyouhowtodebugCprograms9.5.3字符串读/写函数函数fgets和fputs分别用于从指定的文件中读出一个字符串和把一个字符串写入指定的文件。1、字符串读函数fgets()函数fgets可以从指定文件中读入一行字符串并存入到字符数组中。其函数原型为:char*fgets(char*s,intn,FILE*fp);
例如,若字符数组s的大小为20,则:fgets(s,20,fp);
从fp指向的文件中读取最大长度为19的字符串存入s。
利用这一特性,我们可以用:fgets(s,sizeof(s),stdin);
来限定从键盘输入的字符串的大小,这比直接用gets(s)函数要安全,可以防止输入数据过长而导致非法访问内存。2、字符串写函数fputs()函数fputs可以将一个字符串写入指定的文件,其函数原型为:intfputs(constchar*s,FILE*fp);9.5.4字符串读/写函数应用实例【例9.2】从键盘输入一行字符串:“TeachyouhowtodesigngoodCprograms”,将其追加到text01.txt文本中去。【分析】因要向text01.txt中追加信息,所以应该将其打开方式设置为a。#include<stdio.h>#defineN80intmain(){chars[N];FILE*fp;
fp=fopen("text01.txt","a");if(fp!=NULL){printf("请输入一行文本:\n");fgets(s,N,stdin); //从键盘输入字符串fputs(s,fp); //写入文件fclose(fp); //关闭文件}elseprintf("文件打开失败!\n");}9.5.5格式化读/写函数1、格式化读函数fscanf()fscanf的函数原型为:intfscanf(FILE*fp,constchar*format,变量地址列表);如果函数执行成功,则返回正确输入项的个数;若执行失败,则返回0。例:
fscanf(fp,"%s%d",name,&age);2、格式化写函数fprintf()fprintf的函数原型为:intfprintf(FILE*fp,constchar*format,输出项列表);例如:fprintf(fp,"%12s%6d",name,age);将字符串name和整型变量age的值存入fp指向的文件。9.5.6格式化读/写函数应用实例【例9.3】为例8.5中的程序设计从文件读数据的函数和将学生数据存盘的函数。(1)增加从文件读数据函数intreadData(stuStrus[],char*filename),从文件filename中读入学生信息,存入学生数组s,函数返回读取的学生人数;(2)增加函数voidsaveData(stuStrus[],char*filesname,intn),将学生信息存入filename文件。数据格式:可以通过feof函数来判断对文件的读写是否到达文件末尾。/*@函数名称:readData入口参数:stuStrus[],char*filename@函数功能:从文件filename读入学生信息存入s,返回正确读取的学生人数*/intreadData(stuStrus[],char*filename){FILE*fp;fp=fopen(filename,"r");if(fp!=NULL){intn=0,i;while(!feof(fp)){fscanf(fp,"%s",s[n].id); //读入准考证号fscanf(fp,"%s",s[n].name); //读入姓名for(i=0;i<4;i++) //读入4门课程成绩fscanf(fp,"%f",&s[n].score[i]);n++;}fclose(fp);returnn; //返回有效学生人数}elsereturn0;}/*@函数名称:saveData入口参数:stuStrus[]char*filename,intn@函数功能:学生信息存盘函数*/voidsaveData(stuStru*s,char*filename,intn){FILE*fp;inti,j;fp=fopen(filename,"w");if(fp!=NULL){for(i=0;i<n;i++,s++){fprintf(fp,"%-12s",s->id); //输出准考证号fprintf(fp,"%-12s",s->name); //输出姓名for(j=0;j<4;j++) //输出成绩fprintf(fp,"%-8.2f",s->score[j]);fprintf(fp,"%-8.2f\n",s->total);//输出总分}fclose(fp);//关闭文件}elseprintf("文件保存失败!\n");}intmain(){stuStrus[N];intn;n=readData(s,"studata.txt"); //从文件读数据sum(s,n); //求和quickSort(s,0,n-1); //按总分由高到低排序print(s,n); //输出saveData(s,"9_3.txt",n); //存盘return0;}准考证号姓名语文数学英语综合总分-----------------------------------------------------------------------------110100105杨婷130.00132.00128.00256.00646.00110100104刘洁121.00105.00130.00250.00606.00110100102李科108.00130.00125.00241.00604.00110100101王晓东112.00120.00121.00230.00583.00110100103赵国庆99.0098.00101.00200.00498.009.5.7数据块读/写函数1、数据块读函数fread()fread函数用于从文件中读出一个数据块,其函数原型为:unsignedfread(void*buffer,unsignedsize,unsignedcount,FILE*fp);fwrite函数用于向文件写入一个数据块,其函数原型为:unsignedfwrite(constvoid*buffer,unsignedsize,unsignedcount,FILE*fp);2、数据块写函数fwrite()例9.3中的saveData函数对每一个学生数据,是采用逐个数据项的方式来输出到文件中的,这种方式的优点是文件中的数据按固定的格式呈现,便于用户用记事本直接浏览,但操作的效率较低。采用fwrite()函数一次性将学生结构体数组的n个元素写入文件具有较高的存取效率。但该函数写入数据时是将内存数据块直接写入文件,因此宜采用二进制文件为宜。同时应注意,用fwrite()写入文件的数据应该用fread()函数按相应地格式来进行读取,才能正确的还原数据。9.5.8数据块读/写函数应用实例(1)wirteToFile函数,采用fwrite函数保存学生数据至文件。(2)readFromFile函数,采用fread函数从文件读入学生数据至某学生结构体数组,并将结果显示到屏幕上。【例9.4】为例9.3的程序设计函数:voidwriteToFile(stuStrus[],char*filename,intn){FILE*fp;fp=fopen(filename,"wb"); //打开文件if(fp!=NULL){ fwrite(s,sizeof(stuStru),n,fp); //写文件 fclose(fp);}elseprintf("文件保存失败!\n");}/*@函数名称:readFromFile入口参数:stuStrus[]char*filename@函数功能:从文件filename读入学生信息存入s,返回正确读取的学生人数*/intreadFromFile(stuStrus[],char*filename){FILE*fp;intn=0,k;fp=fopen(filename,"rb");//打开文件if(fp!=NULL){while(1){k=fread(s+n,sizeof(stuStru),1,fp);//读取一条记录if(k!=1)break;//未读取成功表明文件已结束n++;}returnn; //返回成功读取的记录总数fclose(fp);}else{printf("读取数据失败!\n"); return0;}}intmain(){stuStrus[N],t[N];intn;n=readData(s,"studata.txt"); //从文件读数据sum(s,n); //求和quickSort(s,0,n-1); //按总分由高到低排序writeToFile(s,"9_4.dat",n); //存盘n=readFromFile(t,"9_4.dat"); //读取数据存入数组tprint(t,n); //输出学生数据return0;}文件的随机读写9.69.6文件的随机读写按读写方式分为:顺序文件与随机文件。顺序文件是指只能按顺序读写的文件,如存储在磁带上的文件就是顺序文件。随机文件是指可以随机读写文件任意位置内容的文件,如存储在磁盘、DVD等介质上的文件大部分都为随机文件。9.6.1文件的定位文件定位有关的函数:fseek函数ftell函数rewind函数1、fseek函数fseek函数的作用是使文件读写位置指针移动到所需要的位置,它的调用方式为:fseek(文件指针,位移量,起始点);符号名值含义SEEK_SET0文件开头SEEK_CUR1文件当前位置SEEK_END2文件末尾例如,若fp为指向例9.4的学生排序结果文件(9_4.dat)的指针,则:fseek(fp,sizeof(stuStru)*2,SEEK_SET);
表示将文件读写位置指针从文件开头向前移动2个记录的位置,即定位在第3个学生记录的起始位置。1、fseek函数fseek(fp,-sizeof(stuStru)*2,SEEK_END);表示将文件读写位置指针从文件末尾向后移动2个记录的位置,即定位到倒数第2个学生记录的起始位置。注意:fseek()函数一般用于二进制文件的随机读写。1、fseek函数2、ftell函数ftell()函数用于返回文件读写位置指针相对于文件头的字节数,其值为long类型,出错时返回-1。其调用格式为:ftell(fp);例如:longpostion;if((postion=ftell(fp))==-1L) printf("Afileerrorhasoccurredat%ld.\n",postion);用于通知用户文件出错的位置。2、ftell函数3、rewind函数使用rewind()函数可使文件读写位置指针重新返回文件的开头处。调用格式为:rewind(fp);9.6.2文件随机读写应用实例【例9.5】例9.4程序将学生排序的数据存入了二进制文件9_4.dat,编写程序从文件中由后向前读取学生数据输出到屏幕上,并将其结果保存到二进制文件9_5.dat。【分析】可以采用fseek()函数实现从文件末尾向文件头方向依次读取数据存入内存结构体数组,之后调用print()函数输出。/*@函数名称:readFromFile入口参数:stuStrus[],char*filename@函数功能:从文件filename读入学生信息存入s,返回正确读取的学生人数*/intreadFromFile(stuStrus[],char*filename){FILE*fp;intn=0,k;fp=fopen(filename,"rb");//打开文件if(fp!=NULL){fseek(fp,-sizeof(stuStru),SEEK_END);while(1){k=fread(s+n,sizeof(stuStru),1,fp);//读取一条记录if(k!=1)break;//未读取成功表明文件已结束n++;
fseek(fp,-2*sizeof(stuStru),SEEK_CUR);}returnn;//返回成功读取的记录总数fclose(fp);}else{ printf("读取数据失败!\n"); return0; }}intmain(){stuStrus[N];intn;n=readFromFile(s,"9_4.dat");//读取数据存入数组sprint(s,n); //输出学生数据writeToFile(s,"9_5.dat",n); //将结果保存到9_5.datreturn0;}【例9.6】例9.5程序已将按总分递增的学生数据存入二进制文件9_5.dat中,编写一个程序,将属性为{"110100106","柯男",121,130,99,215,565}的学生数据追加到文件末尾,并重新读取学生信息后输出到屏幕上。【分析】因要追加记录到文件中,且对该文件写完之后需要读取数据,因此打开模式应设置为ab+。添加记录后使用rewind()函数将文件读写指针重新定位到文件头。#include<stdio.h>#defineN10000structstudent{charid[10]; //准考证号charname[9]; //姓名floatscore[4]; //大小为4的数组,分别存储4门课程分数floattotal; //总分};typedefstructstudentstuStru;intmain(){stuStrus={"110100106","柯男",121,130,99,215,565};stuStrut;FILE*fp;intk,j;fp=fopen("9_5.dat","ab+");
if(fp!=NULL){fwrite(&s,sizeof(s),1,fp); //将学生s写入文件rewind(fp); //重新回到文件头部printf("%-12s%-12s","准考证号","姓名"); //输出表头printf("%-8s%-8s%-8s%-8s%-8s\n","语文","数学","英语","综合","总分");printf("--------------------------------------------------------\n");
while(1){k=fread(&t,sizeof(t),1,fp); //读取一条记录if(k!=1)break; //未读取成功表明文件已结束printf("%-12s",t.id); //输出准考证号printf("%-12s",); //输出姓名for(j=0;j<4;j++) //输出成绩printf("%-8.2f",t.score[j]);printf("%-8.2f\n",t.total); //输出总分} fclose(fp); //关闭文件}else printf("文件打开失败!");return0;}准考证号姓名语文数学英语综合总分-------------------------------------------------------------------------------110100103赵国庆99.0098.00101.00200.00498.00110100101王晓东112.00120.00121.00230.00583.00110100102李科108.00130.00125.00241.00604.00110100104刘洁121.00105.00130.00250.00606.00110100105杨婷130.00132.00128.00256.00646.00110100106柯男121.00130.0099.00215.00565.00【例9.7】(选读)编写一个程序,将256色的bmp位图顺时针旋转180度存到另一个文件。【分析】要编写该程序,首先要了解256色bmp位图格式。256色bmp位图包括4个部分,一个位图文件头,一个位图信息头,一个色表和位图数据本身。位图文件头包含关于这个文件的信息,如从哪里开始是位图数据的定位信息。位图信息头含有关于这幅图像的信息,例如以象素为单位的宽度和高度。色表中有图像颜色的RGB值。这三部分共占用文件的前1078个字节,之后的内容为位图数据。因此,可以先将源文件的前1078个字节复制到目标文件,再将之后的文件内容从后向前复制到目标文件。从而实现图像顺序时针180度旋转。#include<stdio.h>intmain(intargc,char*argv[]){inti;charc;FILE*fp1,*fp2;if(argc!=3)exit(1);fp1=fopen(argv[1],"rb");
fp2=fopen(argv[2],"wb");第一个命令行参数为源文件第二个命令行参数为目标文件if(fp1==NULL||fp2==NULL)exit(1);for(i=0;i<1078;i++) //复制文件头信息{c=fgetc(fp1);fputc(c,fp2);}
fseek(fp1,-1,SEEK_END);
将文件读写位置指针定位到最后一个字节将位图信息从后向前复制到目标文件从文件末尾向文件头移动while(ftell(fp1)>1077) { c=fgetc(fp1); fputc(c,fp2);
fseek(fp1,-2,SEEK_CUR);
} fclose(fp1); fclose(fp2); return0;}编译后产生9_7.exe文件,设当前文件夹下存有如图9-8所示的位图文件(文件名为:rabbit.bmp)在命令行下输入:>9_7rabbit.bmprabbit2.bmp利用位运算
对文件数据加密9.79.7利用位运算对文件数据加密9.7.1位运算1、移位运算a<<b的值是将a中的位左移b位后的结果。每次从a的左端移出一位,在a的右端补一个0。a>>b则是将a中的位右移b位的结果。如果a是无符号数或非负数,则右移时会在a的左端补0。如果a是负值,其结果依赖于编译器,一些编译器会在左端补0,而有些则会保留补码的符号位而补1。因此,考虑到程序的可移植性,最好仅对无符号数或字符进行移位运算。例如:unsignedshorta=56,b,c;初始时,a的值为(二进制形式):执行b=a<<2;语句后,b的值为:执行c=a>>1;语句后,c的值为:2、按位求反、按位与、按位或与按位异或运算按位求反、按位与、按位或与按位异或四个运算符分别为:~、&、|和^。例如: unsignedshorta=19,b=67,c;初始时a与b的值分别为:执行c=~a;后,c的值为:执行c=a&b;后,c的值为:执行c=a|b;后,c的值为:执行a=a^b;后,a的值为:再次执行a=a^b;后,a的值重新回到原值。可见,将变量连续与同一个数进行两次异或运算后,可以将该数还原。9.7.2数据文件加密实例【例9.7】编写程序对用户名及密码进行加密后存入文件,并模拟用户登录系统的验证过程。#include<stdio.h>#include<stdlib.h>#include<string.h>/*@函数名称:set入口参数:charusername[],charpassword[],char*filename@函数功能:设置系统密码*/voidset(charusername[],charpassword[],char*filename){FILE*fp;fp=fopen(filename,"w");inti;charuser[11];charpass[7];strcpy(user,username);strcpy(pass,password);if(fp!=NULL){i=0;while(user[i]){user[i]=user[i]^0x5a;i++;}i=0;
username加密while(pass[i]){pass[i]=pass[i]^0xb4;i++;}fprintf(fp,"%s\n",user);fprintf(fp,"%s\n",pass);fclose(fp);}}password加密/*@函数名称:readFile入口参数:charusername[],charpassword[],char*filename@从文件中读取用户名与密码*/voidreadFile(charusername[],charpassword[],char*filename){FILE*fp;inti;fp=fopen(filename,"r");if(fp!=NULL){ fscanf(fp,"%s",username); fscanf(fp,"%s",password); i=0;while(username[i]){username[i]=username[i]^0x5a;i++;}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集成电路工业互联网平台建设方案
- 房地产工作计划
- 学校学生分组实验记录表
- 气管切开病人家庭护理的指导要点
- 母婴夜间护理技巧
- 山西大学附中2025-2026学年第二学期高三5月模块诊断(第十六次)生物+答案
- 老年公寓护理心理支持与干预
- 春考护理专业考试大纲
- 2026年无偿办公场地合同(1篇)
- 2026年医疗设备租赁协议(医疗)
- DB34∕ 1659-2022住宅工程质量常见问题防治技术规程
- JBT 7361-2023 滚动轴承 零件硬度试验方法 (正式版)
- 全新电子购销合同模板范本下载
- 阴雨天安全知识
- 刑事证据审查手册
- 医疗器械经营质量管理制度、工作程序文件目录
- 第五版-FMEA-新版FMEA【第五版】
- 某工程甘肃段地质灾害危险性评估报告
- 河北大学版小学五年级信息技术教案
- GB/T 2828.10-2010计数抽样检验程序第10部分:GB/T 2828计数抽样检验系列标准导则
- 航空气象-102雷达回波的识别课件
评论
0/150
提交评论