

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广东工业大学课程设计任务书 (源代码在附录) 一、 课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。 通过具体的文 件存储空间的管理、文件的物理结构、 目录结构和文件操作的实现,加深对文件 系统内部功能和实现过程的理解。 二、 课程设计的要求与数据 1 在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多 目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件 存储空间,并采用显式链接分配方式,则可以将位示图合并到 FAT 中。 4 .文件目录结构采用多用户多级目录结构, 每个目录项
2、包含文件名、物理地址、 长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式 可以不使用索引结点的方式,但使用索引结点,则难度系数为 1.2。 5. 设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作: (1) 具有 login (用户登录) (2) 系统初始化(建文件卷、提供登录模块) (3) 文件的创建:create (4) 文件的打开:ope n (5) 文件的读:read (6) 文件的写:write (7) 文件关闭:close (8) 删除文件:delete (9) 创建目录(建立子目录): mkdir (10) 改变当前目录:cd (11) 列出文件目
3、录:dir (12) 退出:logout 6. 系统必须可实际演示,选用程序设计语言: C+ +、C 等。题目名称 学生学院 专业班级 姓 名 学 号 多用户多级目录文件系统的实现 计算机学院 2008 级软件工程 2 班 6900 1 目录 一、设计思想说明 2 1.1设计环境 . 2 1.2设计思想 . 2 1.3存储空间管理 . 2 1.4目录结构 . 2 二、 . 数据结构 3 2.1虚拟磁盘 . 3 2.2用户的数据文件 . 3 2.3目录文件 . 3 2.4管理目录文件的类 . 3 2.5管理用户的类 . 4 三、功能实现 4 3.1登陆系统 . 4 3.2系统初始化 . 4 3.
4、3文件的创建 . 5 3.4文件的打开 . 5 3.5文件删除 . 5 3.6文件的读 . 5 3.7创建目录 . 5 3.8查看当前目录 . 5 3.9删除目录 . 5 3.10返回上一级目录 . 5 3.11退出 . 5 四、操作思想 5 五、 . 界面演示 6 5.1登陆界面 . 6 5.2管理员登陆成功后的界面 . 6 5.3用户登陆成功后的界面 . 6 六、系统具体运行演示 7 2 6.1文件的创建与查看(读文件) . 7 6.2目录的创建与查看 . 7 6.3文件系统空间的查看 . 7 七、实验体会 8 八、收集的资料及主要参考文献 83 、设计思想说明 1.1 设计环境 a) 程
5、序设计语言:C+语言 b) 计算机及操作系统:PC 机,WindowsXP c) 开发平台:Microsoft Visual C+ 6.0 企业版 d) 运行平台:PC 机, WindowsXP 1.2 设计思想 文件系统是操作系统中负责管理和存取文件信息的机构, 它具有“按名存取” 的功能。文件系统主要实现对具体的文件存取空间的管理、文件的物理结构、 目 录结构管理和文件操作。 本实验中的文件系统是多用户多级目录的文件系统。 实验中定义用户的上限 为 5 个,目录结构采用多级目录结构。 1.3 存储空间管理 系统中的数据文件,需要为之分配磁盘空间。采用模拟方法,虚拟磁盘为一 个10000 大
6、小的一维数组:disk_block10000 ,0 表示空闲,1 表示已分配出去。 使用混合索引分配方式来为存储文件分配所在外存的块号: 当文件大小较小 时,采用直接地址,索引结点的每项存放文件数据的盘块的盘块号; 当文件大小 较大时,采用一次间接地址,即一级索引;当文件非常大时,采用多次间接地址, 即二级索引。 1.4 目录结构 目录结构的组织,关系到文件系统的存取速度、安全性、共享性。为了提高 目录的检索速度和文件系统的性能, 采用了多目录结构来组织目录,即树形目录 结构,主目录称为根目录,数据文件为树叶,其他的目录为树的结点。如下图所 示。 D C 12 18 A B C * 1 F E
7、 D G A 1 1 2i J t 1 电 4 14 4 、数据结构 2.3 目录文件,即树结构中树的结点typedef struct DIR DIR* above; char n ame10; / int len gth; / DIR *n ext; UFD *File_head; DIR *Dir_head; DIR; /存储目录信息 /上一结点 目录名 目录的大小 /下一结点 /此目录下的文件指针 /此目录下目录链表指针 2.4 管理目录文件的类,每个用户都是其的对象 class Cuse /定义管理用户目录的类 DIR *now; /当前目录 UFD *Fhead; /文件的头结点 2
8、.1 虚拟磁盘,初始化时所有盘块置 for(i=0;i10000;i+) disk_blocki=0; disk_empty=10000; 2.2 用户的数据文件,即树叶 typedef struct UFD char n ame10; int attribute; int len gth; int a10; int *p1; int (*p2)100; struct UFD *n ext; UFD; 0 /初始化所有磁盘块为空闲 /存储文件信息 /文件名 /属性 /长度 /为文件本身分配 10 个空间 / 一级索引,100 个空间 /二级索引,100*100 个空间 /文件链的下一结点 5
9、DIR *Dhead; /根目录的目录链头结点6 char code10; char n ame10; int len gth; int status; public: /代码省略 / 2.5 管理用户的类,管理员是其的对象class Cdisk public: Cuse user5; char code10; int dis_disk(); /用户类 /用户个数最多为 5 /管理员密码 显示磁盘的使用情况int first_dele_user(); 删除用户的准备工作 int dele_user(i nt); 具体实现删除用户 intn ew_user();/ 查看当前用户与外存空间使用情况
10、,后创建新用户 int set_code(); / 设置新密码 int login(char); / 登陆 Cdisk(); /构造函数 ; 三、功能实现 3.1 登陆系统 系统中设置了管理员和用户两种登陆模式。 管理员的用户名为“管理员”, 默认密码为 123,可以后期修改密码。用户初始化时不存在,在登陆时系统发现 不存在任何用户则自动要求用户先注册一用户,并在注册成功后为用户登陆。 3.2 系统初始化(建文件卷、提供登录模块) for(i=0;i10000;i+) /初始化所有磁盘块为空闲 disk_blocki=0; disk_empty=10000;/密码 /用户名 /用户空间大小 /
11、是否获得空间 virtualCdisk(); /虚函数,析构 7 int Cdisk:log in( char b) 3.3 文件的创建:int Cuse:new_file() /建立新文件 3.4 文件的打开:openint Cuse:open_file() / 打开文件 3.5 文件删除:int Cuse:first_dele_file() int Cuse:dele_file(UFD *f) / 3.6 文件的读:int Cuse:dis_file() 查看文件 3.7 创建目录(建立子目录):int Cuse:new_dir() /建立新目录 3.8 查看当前目录:int Cuse:d
12、is_dir(DIR *d) int Cuse:dis_now() / 显示当前目录 DIR *Cuse:get_ no w() / 3.9 删除目录:int Cuse:first_dele_dir() int Cuse:dele_dir(DIR *p) 3.10 返回上一级目录:int Cuse:goback() 3.11 退出:在主菜单中用 flag 标记实现 四、操作思想 各个用户的名字不能相同。在每个用户注册(创建)后,将自动获得一个根 目录(root ),在此目录中,可以创建多个目录(同一父目录下,不能同名)和 多个数据文件。 在 root 目录里,进入一个新建的子目录,则又可以在此
13、子目录里创建多个 目录和数据文件。依次类推,实现树形结构。但同一父目录下,目录项和数据文 件都不能重名。/登陆 /删除文件的前面工作 具体实现删除文件 显示目录 得到当前目录路径 /删除目录的前奏 /具体实现删除目录的工作 /向上返回 8 五、界面演示 5.1 登陆界面 :KKXXhihE冒艮民匱 二;丨卩f审 甲 心 件 耳 总充 Mi耳K 匚 *作者谢中1000 #pragma once #en dif _MSC_VER1000 extern int disk_block10000; exter n int disk_empty; typedef struct UFD /存储文件信息 ch
14、ar n ame10; /文件名 int attribute; /属性 in t le ngth; /长度 int a10; /为文件本身分配 10 个空间 int *p1; / 一级索引,100 个空间 UFD; in t (*p2)100; struct UFD *n ext; /二级索引,100*100 个空间 typedef struct DIR /存储目录信息 DIR* above; char n ame10; in t le ngth; /上一结点 DIR *n ext; /下一结点 UFD *File_head; /此目录下的文件指针 DIR; DIR *Dir_head; /此
15、目录下目录链表指针 13 DIR *now; UFD *Fhead; DIR *Dhead; char code10; char n ame10; in t le ngth; int status; public: void set_status(i nt); int dele_user(); int dis_file(); int dis_dir(DIR *d);/ int get_le ngth(); char const *get_ name(); char const *get_code(); int get_status(); int set_user(char *,char *);
16、/ 设置用户名与密码 DIR *get_ no w(); int dele_file(UFD *f); /删除文件 int dele_dir(DIR*); /删除目录 Cuse(); /构造 Cuse(); /析构 int goback(); /返回上级 int dis_ no w(); /显示当前目录 int n ew_file(); int n ew_dir(); int ope n_dir(); int ope n_file(); int first_dele_file(); /删除文件的前部分工作 int first_dele_dir(); /删除目录的前部分工作 int set_co
17、de(); ; class Cdisk /用户类 public: Cuse user5; /用户个数最多为 5 char code10; int dis_disk(); int first_dele_user(); int dele_user(i nt); class Cuse /定义管理用户目录的类 /当前目录 /文件的头结点 /根目录的目录链头结点 /密码 /用户名 /用户空间大小 /是否获得空间 /显示文件所占外存块号 当前路径 14 int n ew_user(); II查看当前用户与外存空间使用情况, 后创建新用 户 int set_code(); II设置新密码 in t logi
18、 n( char); II登陆 Cdisk(); virtualCdisk(); II虚函数,析构 ; #en dif !defi ned(AFX_DISK_H_1FAB24AE_C718_49FF_A915_94211192B8BC_INCLUDED_) #i ncludedisk.h #in cludeme nu .cpp #in clude #in clude #in clude #i nclude int disk_block10000; int disk_empty; Cdisk:Cdisk() /管理磁盘的类,构造函数 int i=0; char code10=123456; fo
19、r(i=0;iuserO.set_user(stude nt,123); 默认一个用户 disk_empty=1OOOO; cout.setf(ios:left); / 设置输出方式 Cdisk:Cdisk() / 析构 /* * *disk.cpp * int Cdisk:dele_user(i nt i) Cuse C; /Cdisk 类 dele_user 的构造 II调用 Cuse 类的成员函数 int dele_user() 15 int Cdisk:dis_disk() / 检查磁盘信息 int i=0; coutsetw(14) 用户名setw(14)占用空间大小endl; fo
20、r(i=0;i5;i+) if(useri.get_status()=1) / 存在的用户的信息 coutsetw(14)useri.get_ name()setw(14)useri.get_le ngth()e n dl; cout已用空间:10000-disk_emptyendl 剩余空间 disk_emptye ndl; return 1; int Cdisk:login(char b) / 登陆 char n10,c10; int i; if(b=1) cout用户:管理员endl; cout密码:默认 nendl; system(pause); return 1; else if(!
21、userO.get_status() / 当前不存在用户 i=0; cout当前用户为空,欢迎注册! endl; useri.set_status(1); /为新用户分配权利 cout请输入用户名:endl; cinn; cout请输入密码: c; useri.set_user(n,c); /调用 Cuse 的成员函数,传递用户名与密码 cout恭喜,创建用户成功! endl; return i; else 16 cout用户名:; cinn; cout c; coute ndl; for(i=0;i5;i+) /查找是否存在此用户 if(useri.get_status() / 存在方比较
22、if(!strcmp(n,useri.get_name() / 相等时为 0,此判断为匹 配 if(!strcmp(c,useri.get_code() / 密码匹配 cout登陆成功! endl; cout欢迎useri.get_name() 登陆endl; return i; else cout密码错误endl; return -1; cout此用户不存在! endl; return -1; int Cdisk:set_code() / 设置新密码 char temp110,temp210; cout请输入原密码 temp1; if(strcmp(temp1,code) /无疑是针对当前用
23、户进行操作,故直接 code cout原密码错误! endl; return 0; while(1) 17 cout请输入新密码: temp1; cout请再次输入新密码: temp2; if(strcmp(temp1,temp2) cout两次密码不相同,请重输 !endl; break; cout密码设置成功! endl; strcpy(code,temp1); / 保存新密码 break; return 1; int Cdisk:new_user() / 准备创建新用户 char n10,c10; int i=0,j; for(i=0;i5;i+) if(useri.get_status
24、()=O) /是否有此用户,此尚未存在 break; if(i=5) cout已经达到最大用户 5 个,不能再创建! endl; return 0; useri.set_status(1); /为新用户分配权利 cout请输入用户名:0) /已有其它用户存在 for(j=0;ji-1;j+) if(!strcmp(userj.get_ name( ),n) cout此用户名已存在! endl; return 0; cout请输入密码: c; 18 useri.set_user(n,c); /调用 Cuse 的成员函数,传递用户名与密码 cout恭喜,创建用户成功! endl; return 1
25、; int Cdisk:first_dele_user() / 删除用户 char n10,c; int i; cout请输入你要删除的用户名 endl; cinn; for(i=0;i5;i+) /在查找用户的同时,得到用户序号 i if(!strcmp(useri.get_ name( ),n)&useri.get_status() break; /找到,跳出 if(i=5) cout出错啦,此用户不存在! endl; return 0; cout确认删除此用户?确认 Y,取消任意键 c; if(c!=Y&c!=y) cout已经取消删除! dele_user(i); co
26、ut用户删除成功n ext=0) this-dele_file(f); f=0; break; while(f- n ext- n ext!=0) f=f-n ext; this-dele_file(f- n ext); f-n ext=0; f=Fhead; while(d!=0) / 目录 if(d- n ext=0) this-dele_dir(d); d=0; break; while(d-n ext-n ext!=0) d=d-n ext; this-dele_dir(d-n ext); d-n ext=0; d=Dhead; int Cuse:new_file() / 建立新文件
27、int i=O,j=O; UFD *f,*p=0; DIR *D; p=new UFD; /开辟一个新的文件结构体 21 if(p=O) cout无可用内存空间,创建文件失败! endl; return 1; cout p_ n ame; if(now=0) /根目录下的文件链 f=Fhead; else /当前目录下的文件链 f=no w-File_head; while(f!=0) /检查是否文件重名 if(!strcmp(p-n ame,f- n ame) cout此文件已存在! n ext; coutn p_le ngth; coutn p-attribute; coutlengthd
28、isk_empty) / 空间不足 cout文件太大,空间不足,当前空间为: disk_emptyle ngth; / for(i=0;ile ngth&i10;i+) for(j;jai=j; disk_blockj=1; j+; break; II位示图法 II空闲 II得到此空间 II标记为已分配出去/剩余空闲盘块 II文件较小时,直接地址,文件数据盘块 II跳出寻找,为文件分配下一空间 22 if(no w=0) p-next=Fhead; /后继结点指向头,即新指点在前 Fhead=p; /新结点在头 else p-n ext=no w-File_head; no w-Fil
29、e_head=p; p-p 仁 0; p-p2=0; if(p-le ngth10) / / / p-p 仁 new in t100; for(i=10;ile ngth&i 110;i+) for(j;jp1)i-10=j; disk_blockj=1; j+; break; if(p-le ngth110) 一级索引 二级索引 超过 10,用一级索引 为一级索引分配 100 个空间 j,继续前面的值 p-p2=new in t100100; for(i=110;ile ngth;i+) for(j;jp2mk=j; /行 /列 disk_blockj=1; j+; break; /
30、 根目录下的文件 23 length+=p-length; /用户总空间大小增加 if(now!=0) /子目录下空间大小增加 no w-le ngth+=p-le ngth; D=now-above; / 上一级目录 while(D!=0) /上级目录(根目录已实现)空间增加 D-le ngth+=p_le ngth; D=D-above; / 逐级向上 int Cuse:new_dir() / 建立新目录 DIR *p,*h; cout请输入新目录的名字: Dir_head;/ 当前的目录链 while(h!=0) /此目录下存在其它子目录 if(!strcmp(h-n ame,p-n a
31、me) cout此目录已存在! n ext; if(now=0) /当前为主目录 p-above=0; /主目录里目录的上一结点为 0 p-next=Dhead; /把原目录接入新目录后面( Dhead 初始为 0) p=new DIR; cin p_ n ame; p-Dir_head=0; p-le ngth=O; p-File_head=0; if(no w=0) 24 Dhead=p; /Dhead 始终指向最新目录结点 else p-above=now; /当前目录为新目录的上一结点 p-next=now-Dir_head; / 反序插入新目录 now-Dir_head=p; / 更
32、新目录链 cout目录创建成功endl; return 1; int Cuse:goback() / 向上返回 if(no w=0) cout已是主目录,不能向上! above; / 上一结点 return 1; int Cuse:open_dir() / 打开目录 char n ame10; DIR *p; if(now=0) /当前主目录 p=Dhead; else p=now-Dir_head; /p 指向目录链 cout请输入你要打开的目录名: n ame ,n ame)=0) now=p; /找至 U 目录,now 标记 return 1; p=p-n ext; 25 cout当前没
33、此目录endl; return 0; int Cuse:first_dele_file() / 删除文件的前面工作 char temp10,a5; cout你要删除的文件名: temp; UFD *f=Fhead; /数据文件头指针 UFD *above=0; if(no w!=0) f=now-File_head; /当前目录下的数据文件 while(f!=0) if(!strcmp(f- n ame,temp) break; /找到,跳出 above=f; /标记第一个文件 f=f-n ext; if(f=0) cout此文件不存在endl; return 0; cout确定删除name文
34、件吗?按 0 确定,其他键取消 a; if(a0!=0) cout已取消删除文件。length; /回收此数据文件的空间大小 if(now=0) / 根目录 if(f=Fhead) Fhead=Fhead-n ext; else above-n ext=f- n ext; else 26 DIR *d=now; while(d!=0) d-le ngth=f-le ngth; d=d-above; if(f=no w-File_head) no w-File_head=no w-File_head-n ext; else above-n ext=f- n ext; len gth-=f-le
35、ngth; this-dele_file(f); cout删除成功endl; return 1; int Cuse:dele_file(UFD *f) / 具体实现删除文件 int i=0,m; for(i=0;i10&ilength;i+) /回收文件具体空间,重置空闲 m=f-ai; disk_blockm=0; if(f-p1!=0) /回收一级索引 for(i=10;i110&i le ngth;i+) m=f-p1i-10; disk_blockm=0; delete(f-p1); if(f-p2!=0) /回收二级索引 for(i=110;ile ngth;i+)
36、m=(f-p2)(i-110)/100(i-110)%100; disk_blockm=0; delete(f-p2); delete f; 27 f=0; /要删除的文件为空了 return 1; int Cuse:first_dele_dir() / 删除目录的前奏 char n10; char c; DIR *p,*above=0; p=Dhead; /指向根目录下的目录链 if(no w!=0) p=now-Dir_head; /指向当前目录下的目录链 cout要删除的目录名: name, n) break; /找到要删除的目录,跳出 above=p; /保存前一结点 p=p-n ex
37、t; if(p=0) cout没有这个目录! endl; return 0; cout确定删除当前目录及此目标上的所有信息吗?按 0 确定,其他键取消 c; if(c!=0) return 0; disk_empty+=p-length; / 回收磁盘空间 if(no w=0) if(p=Dhead) /如果是根目录下头结点,直接移动 Dhead Dhead=Dhead-n ext; else above- next=p- next;/ 中间抽掉目标 else if(p=no w-Dir_head) no w-Dir_head=no w-Dir_head-n ext; 28 else abov
38、e-n ext=p-n ext; above=now; / 当前目录 while(above!=0) above-length-=p-length;/ 用 above 标记当前目录,进行大小更新 above=above-above; / 向上一级 length-=p-length; /根目录大小更新 this-dele_dir(p); p=0; cout删除成功! Dir_head; /当前目录下的目录链表 UFD *f=p-File_head; /当前目录下的文件链 if(f!=0) while(p-File_head- next!=0) 删除目录里的文件 f=p-File_head; wh
39、ile(f- n ext-n ext!=0) f=f-n ext; this-dele_file(f- n ext); f-n ext=0; if(p-File_head- next=0) this-dele_file(p-File_head);/ 删除头文件 p-File_head=0; if(d!=0) /删除目录下的目录 while(p-Dir_head-n ext!=O) d=p-Dir_head; while(d-n ext- n ext!=0) 29 d=d-n ext; this-dele_dir(d-n ext); d-n ext=0; if(p-Dir_head-n ext=
40、0) this-dele_dir(p-Dir_head); 删除目录链头结点 p-Dir_head=0; delete p; /释放 p 占用的内存 p=0; / 置 0 return 1; int Cuse:dis_now() / 显示当前目录 DIR *d=Dhead; UFD *f=Fhead; if(no w!=0) d=now-Dir_head; /当前目录下的目录链 f=no w-File_head; if(d=0&f=0) cout当前目录为空endl; return 0; cout当前目录大小:; if(no w=0) coutle ngth; else cout le
41、 ngth; coute ndl; if(d=0) cout当前目录下没有目录endl; else cout当前目录下包含如下目录: endl; coutsetw(14) 目录名称setw(14) 目录大小endl; while(d!=O) 30 coutsetw(14)n amesetw(14)le ngthn ext; if(f=O) cout当前目录下没有文件endl; else cout当前目录下包含如下文件 :endl; coutsetw(14) 文件名称setw(14) 文件大小setw(14) 文件属 性e ndl; while(f!=0) coutsetw(14) n ames
42、etw(14)le ngthsetw(14)attributen ext; return 1; int Cuse:open_file() / 打开文件 char n10; cout请输入要打开的文件名 File_head; / 指向文件 while(f!=0) if(!strcmp(f- n ame, n) cout文件打开成功n ext; cout当前目录无此文件endl; return 0; int Cuse:set_code() / 设置密码 31 char a110,a210; cout请输入原密码 a1; if(strcmp(a1,code) cout密码错误endl; return
43、 0; while(1) cout请输入新密码: a1; cout再次输入新密码: a2; if(strcmp(a1,a2) cout两次输入密码不同,请重输! endl; else strcpy(code,a1); cout密码修改成功! above!=0) this-dis_dir(d-above); 递归调用此功能 cout nameFile_head; coutn ame) break; f=f-n ext; if(f=0) coutattribute=O) cout此为只读文件,; else cout此为读写文件,” cout占用硬盘块号如下: for(i=0;ile ngth &a
44、mp;i10;i+) coutsetw(6)ai; if(i+1)%10=0) coute ndl; for(i=10;ile ngth&i 110;i+) coutsetw(6)p1i-10; if(i+1)%10=0) e ndl; /找到此文件,跳出 e ndl; e ndl; /直接存放的 / 一级索引存放的 coute ndl; for(i=110;ilength;i+) / 二级索引存放的 coutsetw(6)p2(i-110)/100(i-110)%100; if(i+1)%10=0) coute ndl; coute ndl; 34 return 1; int Cuse:dele_user() 删除用户 length=O; /用户空间置 0 Fhead=O; Dhead=0; no w=0; status=0; return 1; #i ncludedisk.h #in clude #in clude #in clude void mai n() char c; Cdisk D; /管理员类的对象 int i=1, n, fl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区日常安全管理制度
- 旅游宣传物料管理制度
- 搭建桥梁说课课件
- 幼儿园材料摆放管理制度
- 数据要素+数字政府解决方案
- 汽车课件9-3-1章节
- 巷道掘进与支护 采区巷道施工 采区煤仓施工
- 多元化思维在小学音乐教学中的渗透
- 高中体育选项教学的高效教学对策
- Photoshop图形图像处理教程第6章(7)章节
- 2025年保密知识竞赛考试题库300题(含答案)
- 部编版2024-2025学年四年级下册语文期末测试卷(含答案)
- 2025年医保政策考试题库及答案:基础解读与医保政策法规试题试卷
- 肿瘤日间化疗规范化管理
- 2025至2030年中国液化设备行业投资前景及策略咨询研究报告
- 湖北省武汉市部分重点中学2022-2023学年高一下学期期末联考数学 含解析
- 行政-接机流程及礼仪(定稿)
- DB44-T 2579-2024 岭南传统天灸技术操作规范
- 中国成人呼吸系统疾病家庭氧疗指南(2024年)解读课件
- 2026届新高考地理精准复习-从“情境”到“实践”+破解人文地理认知困境的具身化教学感悟
- 2024 - 2025学年人教版三年级下册美术期末考试试卷及答案
评论
0/150
提交评论