版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)操作系統(tǒng)課程設(shè)計報告設(shè)計項目名稱: 文件系統(tǒng)設(shè)計專業(yè):網(wǎng)絡(luò)工程班級:201001學(xué)號:0117 ; 0121姓名: 張世波趙流男指導(dǎo)教師:張瑞紅目錄錯誤! 未定義書簽。 錯誤! 未定義書簽。 錯誤! 未定義書簽。 錯誤! 未定義書簽。 錯誤! 未定義書簽。 錯誤! 未定義書簽。錯誤 ! 未定義書簽。 錯誤! 未定義書簽。46 錯誤! 未定義書簽。1 課程設(shè)計簡介 課程設(shè)計的目的 課程設(shè)計內(nèi)容 2 數(shù)據(jù)結(jié)構(gòu)的設(shè)計 預(yù)定義 結(jié)構(gòu)體 全局變量和函數(shù) 3 功能模塊(或算法)描述 模塊劃分 模塊流程圖 4 程序運(yùn)行結(jié)果 5 心得體會 錯 誤! 未定義書簽參考文獻(xiàn) 錯 誤! 未定義書簽附源代碼 錯誤
2、! 未定義書簽1 課程設(shè)計簡介課程設(shè)計的目的課程設(shè)計目的使學(xué)生熟悉文件管理系統(tǒng)的設(shè)計方法; 加深對所學(xué)各種文件操作的了 解及其操作方法的特點。 通過模擬文件系統(tǒng)的實現(xiàn), 深入理解操作系統(tǒng)中文件系統(tǒng)的理論知 識, 加深對教材中的重要算法的理解。同時通過編程實現(xiàn)這些算法, 更好地掌握操作系統(tǒng)的原理及實現(xiàn)方法 , 提高綜合運(yùn)用各專業(yè)課知識的能力。課程設(shè)計內(nèi)容課程設(shè)計內(nèi)容設(shè)計一個簡單的多用戶文件系統(tǒng)。即 在系統(tǒng)中用一個文件來模擬一個磁盤; 此系統(tǒng)至少有: Create 、 delete 、 open、close 、read 、write 等和部分文件屬性的功能。 實現(xiàn)這個文件系統(tǒng)。能實際演示這個文件系
3、統(tǒng)?;旧鲜沁M(jìn)入一個界面(此界面就是該文件系統(tǒng)的界面)后, 可以實現(xiàn)設(shè)計的操作要求。1)設(shè)計一個 10個用戶的文件系統(tǒng),每次用戶可保存 10 個文件,一次運(yùn)行用戶可以打開 5 個文件。2) 程序采用二級文件目錄(即設(shè)置主目錄 MFD和用戶文件目錄(UFD。另外,為打開文 件設(shè)置了運(yùn)行文件目錄( AFD)。3)為了便于實現(xiàn),對文件的讀寫作了簡化,在執(zhí)行讀寫命令時,只需改讀寫指針,并不進(jìn) 行實際的讀寫操作。4)因系統(tǒng)小,文件目錄的檢索使用了簡單的線性搜索。5) 文件保護(hù)簡單使用了三位保護(hù)碼:允許讀寫執(zhí)行、對應(yīng)位為1,對應(yīng)位為 0,則表示不允 許讀寫、執(zhí)行。6) 程序中使用的主要設(shè)計結(jié)構(gòu)如下:主文件
4、目錄和用戶文件目錄(MFD UFD,打開文件目 錄(AFD即運(yùn)行文件目錄,如圖所示。登錄nBalloc(int k) r申請k個block:J輸入用戶名寸In ode位圖是否加鎖否,加鎖否否宀B1 查找H是否加鎖否,加鎖是否有k個空閑的.才按照分一寸空閑的 block 是,登錄成功2數(shù)據(jù)結(jié)構(gòu)的設(shè)計_ _ 在ionde位圖順序查找空閑的in ode申請失敗找不申請失敗找到返回inode地址#defi ne找到返回Sick地址:_結(jié)束4Block位圖解鎖結(jié)束后在連續(xù)出版物:序號主要責(zé)任者文獻(xiàn)題名Inode位圖解鎖結(jié)束 丿J.刊名,出版年份,卷號(期號):起止頁碼)2?劉國鈞,王連成.圖書館史研究M
5、.北京:高等教育出版社,1979: 15-18,31.(專著:序號主要責(zé)任者文獻(xiàn)題名M 出版地:出版者,出版 年:起止頁碼.)3孫品一.高校學(xué)報編輯工作現(xiàn)代化特征C.中國高等學(xué)校自然科學(xué)學(xué)報 研究會.科技編輯學(xué)論文集(2).北京:北京師范大學(xué)出版社,1998:10-22.(論 文集:序號主要責(zé)任者.文獻(xiàn)題名C /主編.論文集名.出版地:出 版者,出版年:起止頁碼.)附:源代碼/*makefile*/ filsys:cc -o filsyscc -c cc -c cc cc -c cc -c cc -c cc -c cc -c cc -c cc -c cc -c cc -c cc -c cc -
6、c cc -c cc -c cc -c/*/#define BLOCKSIZ 512#define SYSOPENFILE 40#define DIRNUM 128#define DIRSIZ 14#define PWDSIZ 12#define PWDNUM 32#define NOFILE 20#define NADDR 10#define NHINO 128#define USERNUM 10#define DINODESIZ 32/*filesys*/#define DINODEBLK 32#define FILEBLK 512#define NICFREE 50#define NIC
7、INOD 50#define DINODESTART 2*BLOCKSIZ#define DATASTART(2+DINODEBLK)*BLOCKSIZ /*di_mode*/#define DIEMPTY 0000#define DIFILE 01000#define DIDIR 02000#define UDIREAD 00001#define UDIWAITE 00002#define UDIEXICUTE 00004#define GDIREAD 00010#define GDIWRITE 00020#define GDIEXICUTE 00040#define ODIREAD 001
8、00#define ODIWRITE 00200#define ODIEXICUTE 00400#define READ 1#define WRITE2#define EXICUTE 4#define DEFAULTMODE 00777 /*i_flag*/#define IUPDATE 00002 /*s_fmod*/#define SUPDATE 00001/*f_flag*/#define FREAD 00001 #define FWRITE 00002 #define FAPPEND 00004/*error*/#define DISKFULL 65535/*fseek origin*
9、/#define SEEK_SET 0sruct inodestruct inode *i_forw; struct inode*i_back; char i_flag;unsigned int i_ino; unsigned int i_count; unsigned short di_number; unsigned short di_mode; unsigned short di_uid; unsigned short di_gid; unsigned int di_size; unsigned int di_addrNADDR; ;struct dinodeunsigned short
10、 di_number; unsigned short di_mode; unsigned short di_uid; unsigned short di_gid; unsigned long di_size; unsigned int di_addrNADDR; ;struct directunsigned d_nameDIRSIZ; unsigned int d_ino;struct filsysunsigned short s_isize; unsigned long s_fsize;unsigned int s_nfree;unsigned short s_pfree; unsigned
11、 int s_freeNICFREE;unsigned int s_ninode; unsigned short s_pinode;unsigned int s_inodeNICINOD; unsigned int s_finode;char s_fmod;struct pwdunsigned short p_uid;unsigned short p_gid; unsigned passwordPWOSIZ;struct dirstruct direct directDIRNUM;int size;struct hinodestruct inode* i_forw;struct filecha
12、r f_flag;unsigned int f_count;struct inode *f_inode;unsigned long f_off;struct userunsigned short u_default_mode;unsigned short u_uid;unsigned short u_gid; unsigned short u_ofileNOFILE; ;extern struct hinode hinodeNHINO; extern struct dir dir;extern struct file sys_ofileSYSOPENFILE;extern struct fil
13、sys filsys;extern struct pwd pwdPWDNUM;extern struct user userUSERNUM;extern FILE *fd;extern struct inode *cur_path_inode; extern int user_id,file_block;extern struct inode *iget();extern iput();extern unsigned int balloc();extern bfree();extern struct inode *ialloc();extern ifree();extern unsigned
14、int namei();extern unsigned int iname();extern unsigned int access();extern _dir();extern mkdir();extern chdir();extern dirlt();extern unsigned short open();extern create();extern unsigned int read();extern unsigned write();extern int login();extern logout();extern install();extern format();extern c
15、lose();extern halt();#include#include#includestruct hinode hinodeNHINO;struct dir dir;struct file sys_ofileSYSOPENFILE;struct filsys filsys;struct pwd pwdPWDNUM;struct user userPWDNUM;FILE *fd;struct inode* cur_path_inode;int user_id,file_block;main()unsigned short ab_fd1,ab_fd2,ab_fd3,ab_fd4;unsign
16、ed short bhy_fd1; char *buf;printf(nDo you want to format the diskn); if(getchat()=y)printf(Format will erase all context on the you sure?n); getchar();else return;if(getchar()=y)formar();elseretrun;install();_dir();login(2118,abcd);user_id=0;mkdir(a2118);chdir(a2118);ab_fd1=creat(user_id,01777);fil
17、e_block=BLOCKSIZ*6+5;buf=(char*)malloc(BLOCKSIZ*6+5);write(ab_fd1,buf,BLOCKSIZ*6+5);close(user_id,ab_fd1);free(buf);mkdir(subdir);chdir(subdir);ab_fd2=creat(user_id,01777);file_block=BLOCKSIZ*4+20;buf=(char*)malloc(BLOCKSIZ*4+20); write(ab_fd2,buf,BLOCKSIZ*4+20);close(user_id,ab_fd2);free(buf);chdir
18、(.); ab_fd3=creat(user_id,01777); file_block=BLOCKSIZ*3+255;buf=(char*)malloc(BLOCKSIZ*3+255); write(ab_fd3,buf,BLOCKSIZ*3+255);close(user_id,ab_fd3);free(buf);_dir();delete();ab_fd4=creat(user_id,01777); file_block=BLOCKSIZ*8+300;buf=(char*)malloc(BLOCKSIZ*8+300); write(ab_fd4,buf,BLOCKSIZ*8+300);c
19、lose(user_id,ab_fd4);free(buf);_dir(); ab_fd3=open(user_id,FAPPEND); file_block=BLOCKSIZ*3+100;buf=(char*)malloc(BLOCKSIZ*3+100); write(ab_fd3,buf,BLOCKSIZ*3+100);close(user_id,ab_fd3);free(buf);_dir();chdir(.);logout();halt();#include#includeformat()struct inode *inode;struct direct dir_bufBLOCKSIZ
20、/(DIRSIZ+2);struct files;unsigned int block_bufBLOCKSIZ/sizeof(int);char *buf;int i,j;fd=fopen(filesystem,r+w+b);buf=(char*)malloc(DINODEBLK+FILEBLK+2)*BLOCKSIZ*sizeof(char); if(buf=NULL)printf(nfile system file creat failed! n);exit(0);fseek(fd,0,SEEK_SET); fwrite(buf,1,(DINODEBLK+FILEBLK+2)*BLOCKS
21、IZ*sizeof(char),fd);pwd0.p_uid=2116;pwd0.p_gid=03;strcpy(pwd0.password,dddd);pwd1.p_uid=2117;pwd1.p_gid=03;strcpy(pwd1.password,bbbb);pwd2.p_uid=2118;pwd2.p_gid=04;strcpy(pwd2.password,abcd);pwd3.p_uid=2119;pwd3.p_gid=04;strcpy(pwd3.password,cccc);pwd4.p_uid=2220;pwd4.p_gid=05;strcpy(pwd4.password,e
22、eee);inode=iget(1);inode-di_number=1; inode-di_mode=DEFAULTMODE|DIDIR; inode-di_size=3*(DIRSIZ+2);inode-di_addr0=0;strcpy(dir_buf0.d_name,.);dir_buf0.d_ino=1;strcpy(dir_buf1.d_name,.);dir_buf1.d_ino=1;strcpy(dir_buf2.d_name,ect);dir_buf2.d_ino=2; fseek(fd,DATASTART,SEEK_SET); fwrite(dir_buf,1,3*(DIR
23、SIZ+2),fd);iput(inode);inode=iget(2);inode-di_number=1; inode-di_mode=DEFAULTMODE|DIDIR; inode-di_size=3*(DIRSIZ+2);inode-di_addr0=1; strcpy(dir_buf0.d_name,.);dir_buf0.d_ino=1; strcpy(dir_buf1.d_name,.);dir_buf1.d_ino=2; strcpy(dir_buf2.d_name,password);dir_buf2.d_ino=3;fseek(fd,DATASTART+BLOCKSIZ*
24、1,SEEK_SET); fwrite(dir_buf,1,3*(DIRSIZ+2),fd);iput(inode);inode=iget(3); inode-di_number=1; inode-di_mode=DEFAULTMODE|DIDIR; inode-di_size=BLOCKSIZ; inode-di_addr0=2;for(i=5;i,PWDNUM;i+)pwdi.p_uid=0;pwdi.p_gid=0; strcpy(pwdi.password, ) fseek(fd,DATASTART+2*BLOCKSIZ,SEEK_SET); fwrite(pwd,1,BLOCKSIZ
25、,fd);iput(inode);=DINODEBLK;=FILEBLK;=DINODEBLK;=FILEBLK-3;for(i=0;iNICINOD;i+)i=4+i;=0;=NICNOD+4; block_bufNICFREE-1=FILEBLK+1; for(i=0;iiNICFREE-1;i+) for(j=0;j2;i-)NICFREE-1+i-j=i;=NIVFREE-1-j+3;=0;fseek(fd,BLOCKSIZ,SEEK_SET); fwrite(&filsys,1sizeof(filsys),fd); fseek(fd,BLOCKSIZ,SEEK_SET); fread
26、(&,a,sizeof(filsys),fd);#include#include#includeinstall()int i,j;fseek(fd,BLOCKSIZ,SEEK_SET);fread(&filsysk,1,sizeof(struct filsys),fd);for(i=0;iNHINO;i+) hinodei.i_forw=NULL;for(i=0;iSYSOPENFILE;i+) sys_ofilei.f_count=0; sys_ofilei.f_inode=NULL;for(i=0;iUSERNUM;i+)useri.u_uid=0;useri.u_gid=0;for(j=
27、0;jdi_size/(DIRSIZ+2);for(i=0;iDIRNUM;i+) strcpyi.d_name,); i.d_ino=0; for(i=0;idi_addri,SEEK_SET); fread(&BLOCKSIZ/(DIRSIZ+2)*i1,BLOCKSIZ,fd); fseek(fd,DATASTART+BLOCKSIZ*cur_path_inode-di_addri,SEEK_SET);fread(&(BLOCKSIZ)/(DIRSIZ+2)*i,1,cur_path_inode-di_size%BLOCKSIZ,fd); #include#include halt()s
28、truct inode *inode;int i,j;chdir(.);iput(cur_path_inode);for(i=0;iUSERNUM;i+)if(useri.u_uid!=0)for(j=0;jNOFILE;j+)if(useri.u_ofilej!=SYSOPENFILE+1)close(i,j); useri.u_ofilej=SYSOPENFILE+1;fseek(fd,BLOCKSIZ,SEEK_SET);fwrite(&filsys,1,sizeof(struct filsys).fd);fclose(fd);printf(nGOODBYE bye. See you N
29、ext turn off the switchn); exit(0);#include #inclodu struct inode *iget(dinodeid) unsigned int dinodeid;int existed=0,inodeid;long addr;struct inode *temp,*newinode;inodeid=dinodeid%NHINO; if(hinodeinodeid).i_forw=NULL)existed=0;elsetemp=hinodeinodeid.i_forw; while(temp) if(temp-i_ino=inodeid)/*exis
30、ted*/ existed=1; temp-i_count+; return temp;elsetemp=temp-i_forw; addr=DINODESTART+dinodeid*DINODESIZ;newinode=(struct inode*)malloc(sizeof(struct inode)fseek(fd,addr,SEEK_SET); fread(&(newinode-di_number),DINODESIZ,1,fd);newinode-i_forw=hinodeinodeid.i_forw; newinode-i_back=newinodelif(newinode-i_f
31、orw!=NULL) newinode-i_forw-i_back=newinode;hinodeinodeid.i_forw=newinode;newinode-i_count=1; newinode-i_flag=0;newinode-_ino=dinodeid;newinode-di_size=3*(DIRSIZ+2); if(dinodeid=3)newinode-di_size=BLOCKSIZ;return newinode; input(pinode) /*input()*/struct inode *pinode;long addr;unsigned int block_num
32、;int i;if(pinode-i_count1)pinode-i_count-;return;elseif(pinode-di_number!=0)/*write back the inode*/ addr=DINODESTSRT+pinode-i_ino*DINODESIZ; fseek(fd,addr,SEEK_SET);fwrite(&pinode-di_number,DINODESIZ,1,fd);else/*rm the inode & the block of the file in the disk*/ block_num=pinode-disize/BLOCKSIZ; fo
33、r(i=0;idi_addri);ifree(pinode-i_ino);/*free the inode in the memory*/ if(pinode-i_forw=NULL) pinode-i_back-i_forw=NULL;elsepinode-i_forw-i_back=pinode-i_back; pinode-i_back-i_forw=pinode-i_forw;ifree(pinode);#include #include static struct dinode block_bufBLOCKSIZ/DINODESIZ;struct inode *ialloc() st
34、ruct inode *temp_inode;unsigned int cur_di;int i,count ,block_end_flag;if=NICINOD)i=0;count=0;block_end_flag=1;=NICINOD-1;cur_di=;while(countNICINOD)|(countdi_number,1,sizeof(struct dinode),fd); filsys,s_pinode+;J=SUPDATE;return temp_inode;ifree(dinodeid)unsigned dinodeid;+;if=NICINOD)=dinodeid;+;el
35、seig(dinodeidNICINOD=dinodeid;=dinodeid;#include #include static unsigned int block_bufBLOCKSIZ;unsigned int balloc()unsigned int free_block,free_block_num;int i;if=0)printf(nDisk Full1 n);return DISKFULL;free_block=;if=NICFREE-1)fseek(fd,DATASTART+*BLOCKSIZ,SEEK_SET); fread(block_buf,1,BLOCKSIZ,fd)
36、;free_block_num=block_bufNICFREE;for(i=0;ifree_block_num;i+)NICFREE-1-i=block_bufi;=NICFREE-free_block-num;else+;=SUPDATE;return free_block;bfree(block_num)unsigned int block_num;int i;if=0)block_bufNICFREE=NICFREE;for(i=0;iNICFREE;i+)block_bufi=NICFREE-1-i;=NICFREE-1;fseek(fd,BlOCKSIZ,SEEK_SET);fwr
37、ite(block_buf,!,BLOCKSIZ,fd);+;=SUPDATE;#include #include #include unsigned int namei(name)char *name;int i,notfound=1;for(i=0;(i&(notfound);i+)if(!strcmpi.d_name,name)&i.d_ino!=0)return i.d_ino;return 0;unsigned int iname(name)char *name;int i,notfound=1;for(i=0;(iDIRNUM)&(notfound);i+)ifi.d_ino=0)
38、notfound=0;break;if(notfound)printf(nThe current directory is full!n);return 0;elsestrcpyi.;i.d_ino=1;return i;#include #include unsigned int access(user_id,inode,mode) unsigned int user_id;struct inode *inode; unsigned short mode; switch(mode) case READ: if(inode-di_mode & ODIREAD) return 1; if(ino
39、de-di_mode& GDIREAD) &-di_gid) return 1;if(inode-di_mode& UDIREAD) &-di_gid) return 1;return 0;case WRITE: if(inode-di_mode & ODIWRITE) return 1; if(inode-di_mode& GDIWRITE) &-di_gid) return 1;if(inode-di_mode& UDIWRITE) &-di_gid) return 1;return 0;case EXICUTE: if(inode-di_mode & ODIEXICUTE) return
40、 1; if(inode-di_mode& GDIEXICUTE) &-di_gid) return 1;if(inode-di_mode& UDIEXICUTE) &-di_gid) return 1;return 0;case DEFAULTMODE: return 1;default: return 0; (useruser_id.u_gid=inode(useruser_id.u_gid=inode(useruser_id.u_gid=inode(useruser_id.u_gid=inode(useruser_id.u_gid=inode(useruser_id.u_gid=inod
41、e#include #include #include _dir() /*_dir*/unsigned short di_mode;int i,j,k,one;struct inode *temp_inode;printf(nCURRENT DIRECTORY:=%dn,;for(i=0;idi_mode ;if(temp_inode-di_mode & DIFILE)printf(f);elseprintf(d);for(j=0;jdi_mode & DIFILE) printf(%ld,temp_inode-di_size); printf(block chain:); for(k=0;k
42、di_size/BLOCKSIZ+1;k+) printf(%d,temp_inode-di_addrk);printf(n);elseprintf(block chain:%dn,dir,directi.d_ino);iput(temp_inode);mkdir(dirname)/*mkdir*/char *dirname;int dirid,dirpos;struct inode *inode;struct direct bufBLOCKSIZ/(DIRSIZ+2); unsigned int block;dirid = namei(dirname);if(dirid!=0) iode=i
43、get(dirid); if(inode-di_mode & DIDIR) printf(n%s directory already existed! n,dirname);elseprintf(n%s is a file name ,&cant creat a dir the same name n,dirname);iput(inode);return;dirpos=iname(dirname); inode=ialloc();dirid=inode_i_ino;+;strcpy(buf0.d_name,.); buf0.d_ino=dirid;strcpy(buf1.d_name,.);
44、 buf1.d_ino=cur_path_inode_i_ino;buf2.d_ino=0;block=balloc(); fseek(ds,DSTASTART+block*BLOCKSIZ,SEEK_SET);fwrite(buf,1,BLOCKSIZ,fd);inode-di_size=2*(DIRSIZ+2);inode-di_number=1 inode-di_mode=useruser_id.u_default_mode|DIDIR; inode-di_uid=useruser_id.u_uid;=useruser_id.u_gid;inode-di_addr0=block;iput
45、(inode);return;chdir(dirname)/*chdir*/char *dirname;unsigned int dirid;struct inode *inod;unsigned short block:int i,j,low=0,high=0;dirid=namei(dirname);if(dirid=0)printf(n%s does not exist!n,dirname);return;inode +iget(dirid);if(!access(user_id,inode,useruser_id.u_default_mode) printf(nhas not acce
46、ss to the directory %sn,dirname); iput(inode);return;/*pack the current directory*/for(i=0;i;i+)for(j=0;jDIRNUM;j+)ifj.d_ino=0)break;memcpy(&j,&i,DIRSIZ+2);j.d_ino=0;/*write back the current directory*/for(i=0;idi_size/BLOCKSIZ+1;i+) bfree(cur_path_inode-di_addri);for(i=0;idiaddri=block;fseek(fd,DST
47、ASTART+block*BLOCKSIZ,SEEK_SET); fwrite(&0,1,BLOCKSIZ,fd); cur_path_inode-di_size=*(DIRSIZ+2);iput(cur_path_inode);cur_path_inode=inode;=inode-di_size/(IRSIZ+2);/*read the change dir from disk*/j=0;for(i=0;idi_size/BLOCKSIZ+1;i+)fseek(fd,DATASTART+inode-di_addri*BLOCKSIZ,SEEK_SET); fread(&0,1,BLOCKSIZ,fd);j+=BLOCKSIZ/(DIRSIZ+2);return;#include#includecreate(user_id,filename,mode)unsigned int user_id;char * filename;unsigned short mode;unsigned int di_ino,di_ith;struct indoe * indoe;int i,j;di_ino=namei(filename);if(di_ino!=0)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病保險課件教學(xué)課件
- 2024年度影視版權(quán)許可協(xié)議
- 04年影視制作委托合同
- 2024年度辦公樓照明系統(tǒng)燈具更換外包協(xié)議
- 2024年度“生態(tài)修復(fù)”工程咨詢服務(wù)合同
- 制作課件教學(xué)課件
- 2024年廣告發(fā)布與裝修施工合同協(xié)議
- 2024在熔盛重工與淡水河谷砂石船建造合同簽約儀式上的致辭熔盛重工朱文花
- 2024年度暖通設(shè)備安裝及調(diào)試合同
- 2024土地使用權(quán)轉(zhuǎn)讓合同(含開發(fā)權(quán))
- 黃河商品交易市場介紹稿
- Unit 3 My friends Part C Story time(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 2024中國海油校園招聘2024人(高頻重點提升專題訓(xùn)練)共500題附帶答案詳解
- 孫中山誕辰紀(jì)念日主題班會主題班會
- 2024年安徽省合肥市中考語文題卷(含答案)
- G -B- 43630-2023 塔式和機(jī)架式服務(wù)器能效限定值及能效等級(正式版)
- 24春國開電大《工具書與文獻(xiàn)檢索》平時作業(yè)1-4答案
- 文藝復(fù)興經(jīng)典名著選讀 知到智慧樹網(wǎng)課答案
- 2024年北京出版集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 2022-2023學(xué)年福建省廈門一中九年級(上)期中物理試卷
- 足球球性球感練習(xí)教案
評論
0/150
提交評論