操作系統(tǒng)代碼小新有注釋_第1頁(yè)
操作系統(tǒng)代碼小新有注釋_第2頁(yè)
操作系統(tǒng)代碼小新有注釋_第3頁(yè)
操作系統(tǒng)代碼小新有注釋_第4頁(yè)
操作系統(tǒng)代碼小新有注釋_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include #include #include #include #define BLOCKSIZE 1024#define SIZE 1024000#define END 65535#define FREE 0#define ROOTBLOCKNUM 2#define MAXOPENFILE 10typedef struct FCB/unsignedchar filename8; char exname3;unsigned char attribute;/文件屬性,0 目錄文件char reserve10; unsigned short time; unsigned short dat

2、a;1 數(shù)據(jù)文件unsigned short;unsigned long length;fcb;typedef struct FATunsigned short id;fat;typedef struct USEROPENfcb openfileMAXOPENFILE;char dirMAXOPENFILE80;/用來(lái) count;useropen;每個(gè)打開(kāi)文件的目錄名typedef struct BLOCK0/*引導(dǎo)塊內(nèi)容*/char information200;/賦值 50 時(shí)本身已經(jīng)越界unsigned char *startblock;/虛擬磁盤(pán)上數(shù)據(jù)區(qū)開(kāi)始位置block0;/以上定

3、義新的類(lèi)型名以方便下面代碼輸入unsigned char *myvhard;useropen *openfilelist;char currentdir80; unsigned char* startp;void initsys();/系統(tǒng)初始化:創(chuàng)建虛盤(pán)和格式化虛盤(pán) void format();/格式化之后填充初始內(nèi)容void startsys(); void exitsys();void create();/創(chuàng)建文件或目錄open(char *filename);void close(fd);void mywrite(fd,char *buff);fd,char *buff);/文件內(nèi)容v

4、oid myread(void deletefile(char *filename);void ls();void listopenfile();void cd(char *dirname);/系統(tǒng)初始化:創(chuàng)建虛盤(pán)和格式化虛盤(pán) void initsys()myvhard=(unsigned char *)malloc(SIZE);/申請(qǐng)分配內(nèi)存空間,起始地址 myvhard memset(myvhard,0,SIZE);/這一段空間設(shè)置為 0format();/調(diào)用格式化函數(shù)進(jìn)行高級(jí)格式化void format()/格式化函數(shù)FILE *fp; time_t *now;struct tm *n

5、owtime; unsigned char *p; fat *fat1,*fat2;fcb *root; i,a;block0 *b0;now=(time_t *)malloc(sizeof(time_t);p=myvhard; b0=(block0 *)p;strcpy(b0-information,Myfilesystem,ver0.01,blocksizeis1K,wholesizeis1000K,emulate FAT16,Max open file number is 10);/寫(xiě)入磁盤(pán)信息/prf(n %s,b0-information); p+=BLOCKSIZE;fat1=(f

6、at *)(p);fat2=(fat *)(p+BLOCKSIZE*2); fat1-id=END;fat2-id=END; fat1+; fat2+;fat1-id=END; fat2-id=END; fat1+; fat2+;fat1-id=END; fat2-id=END; fat1+; fat2+;fat1-id=END; fat2-id=END; fat1+; fat2+;fat1-id=END; fat2-id=END; fat1+; fat2+;fat1-id=6; fat2-id=6; fat1+; fat2+;fat1-id=END; fat2-id=END; fat1+;

7、fat2+;for(i=7;ifilename,.); strcpy(root-exname,di); root-attribute=40; time(now);nowtime=localtime(now);root-time=nowtime-tm_hour*2048+nowtime-tm_min*32+nowtime-tm_sec/2;root-data=(nowtime-tm_year-80)*512+(nowtime-tm_mon+1)*32+nowtime-tm_mday;root-=5;root-length=2*sizeof(fcb);root+;strcpy(root-filen

8、ame,.); strcpy(root-exname,di); root-attribute=40; time(now); nowtime=localtime(now);root-time=nowtime-tm_hour*2048+nowtime-tm_min*32+nowtime-tm_sec/2;root-data=(nowtime-tm_year-80)*512+(nowtime-tm_mon+1)*32+nowtime-tm_mday;root-=5;root-length=2*sizeof(fcb);root+; for(i=2;ifilename0=0;a =BLOCKSIZE*2

9、/sizeof(fcb); fp=fopen(c:myfsys,w);b0-startblock=p+BLOCKSIZE*4; fwrite(myvhard,SIZE,1,fp); fclose(fp);free(myvhard);/格式化之后填充初始內(nèi)容 void startsys()FILE *fp;/指針 fp 指向 FILE 類(lèi)型的對(duì)象i;openfilelist=(useropen *)malloc(sizeof(useropen);/申請(qǐng)分配內(nèi)存空間,記住打開(kāi)了哪些文件memset(openfilelist,0,sizeof(useropen);/將申請(qǐng)到的數(shù)據(jù)賦值為 0,。fp=

10、fopen(c:myfsys,r);/以只讀的方式打開(kāi)文件,保證上次退出文件系統(tǒng)保存的修改下次還可以用。myvhard=(unsigned char *)malloc(SIZE);/這個(gè)是真正的文件系統(tǒng),申請(qǐng) SIZE 個(gè)字節(jié)大小的空間memset(myvhard,0,SIZE);/對(duì)數(shù)組賦值fread(myvhard,SIZE,1,fp);/把 c:myfsys 的所有內(nèi)容讀入 myvhard 里面strcpy(openfilelist-openfile0.filename,root); strcpy(openfilelist-openfile0.exname,di);openfilelis

11、t-openfile0.attribute=168;openfilelist-openfile0.time=(fcb *)(myvhard+5*BLOCKSIZE)-time; openfilelist-openfile0.data=(fcb *)(myvhard+5*BLOCKSIZE)-data;openfilelist-openfile0.=(fcb *)(myvhard+5*BLOCKSIZE)-;openfilelist-openfile0.length=(fcb *)(myvhard+5*BLOCKSIZE)-length;openfilelist-count=1; strcpy(

12、currentdir,root);strcpy(openfilelist-dir0,currentdir);/第一次進(jìn)入文件系統(tǒng),默認(rèn)是在根目錄,這些就是做了這些/對(duì)空的,方便已經(jīng)打開(kāi)文件的信息進(jìn)行初始化,就是對(duì) openfilelist 進(jìn)行操作,讓他們是再打開(kāi)文件的時(shí)候進(jìn)行for(i=6;istartblock;/用 startp文件的地址文件系統(tǒng)第一個(gè)可以新fclose(fp);/安全關(guān)閉 c:myfsys,因?yàn)橛猛晁藇oid exitsys()FILE *fp; fp=fopen(c:myfsys,w); fwrite(myvhard,SIZE,1,fp); free(myvhard

13、); free(openfilelist);fclose(fp);/這個(gè)是退出文件系統(tǒng)的時(shí)候,要把的修改保存到文件/所以,重新打開(kāi)那個(gè)文件,把 myvhard 的所有東西全部寫(xiě)入文件,然后把 myvhard/然后再把那個(gè)申請(qǐng)的真正寫(xiě)入硬盤(pán)保存下來(lái)了打開(kāi)的文件的結(jié)構(gòu)掉,最后安全關(guān)閉 c:myfsys,算是/創(chuàng)建文件或目錄 void create()time_t *now;struct tm *nowtime; char current8;fcb *freefcb,*updir,*p;i,j,k,m,flag,b;unsigned short index;fat *fat1,*fat2,*fatc

14、urrent1,*fatcurrent2; now=(time_t *)malloc(sizeof(time_t); if(openfilelist-count=MAXOPENFILE)prf(open too many files!n); return;flag=0; for(i=80;i=0;i-)if(currentdiri=) flag+;if(flag=2)break; i+;for(j=0;currentdiri!=;i+,j+)currentj=currentdiri;currentj=0; for(i=0;iopenfilei.attribute & 8)=8) break;f

15、at1=(fat *)(myvhard+BLOCKSIZE);index=openfilelist-openfilei.;freefcb=(fcb *)(myvhard+openfilelist-openfilei.*BLOCKSIZE);for(m=0;mopenfilei.length/BLOCKSIZE+1;m+)for(j=0;jfilename0=0) break;freefcb+;if(j=32)freefcb=(fcb *)(myvhard+fat1index.id); index=fat1index.id;if(strcmp(currentdir,root)!=0)updir=

16、(fcb *)(myvhard+openfilelist-openfilei. if(j=openfilelist-openfilei.length/32)*BLOCKSIZE);for(k=0;kopenfilei.length/32;j+)if(strcmp(updir-filename,.)=0)break;updir+;fat1=(fat *)(myvhard+BLOCKSIZE); fat2=(fat *)(myvhard+BLOCKSIZE*3); for(m=7;mid=FREE)break;fat1+;fat2+;fatcurrent1=(fat *)(myvhard+BLOC

17、KSIZE); fatcurrent2=(fat *)(myvhard+BLOCKSIZE*3);index=openfilelist-openfilei.while(fatcurrent1index.id!=END)index=fatcurrent1index.id; if(m=SIZE/BLOCKSIZE)prf(cant creat filen); return;fatcurrent1index.id=m; fatcurrent2index.id=m; fatcurrent1m.id=END; fatcurrent2m.id=END; for(k=0;klength/32;k+);if(

18、strcmp(updir-filename,currentdir)=0)break;updir+;fat1=(fat *)(myvhard+BLOCKSIZE); fat2=(fat *)(myvhard+BLOCKSIZE*3); for(m=0;mid=FREE)break;fat1+;fat2+;fat1-id=END; fat2-id=END;updir=(fcb *)(myvhard+openfilelist-openfilei. updir-length+=sizeof(fcb);updir+;updir-length+=sizeof(fcb); updir-;*BLOCKSIZE

19、);for(k=0;kopenfilei.length/32;j+)if(strcmp(updir-filename,.)=0)break;updir+;updir=(fcb *)(myvhard+updir-*BLOCKSIZE); for(k=0;klength/32;k+)if(strcmp(updir-filename,currentdir)=0)break;updir+;updir-length+=sizeof(fcb);elseupdir=(fcb *)(myvhard+openfilelist-openfilei.updir-length+=sizeof(fcb); updir+

20、;updir-length+=sizeof(fcb);*BLOCKSIZE);fat1=(fat *)(myvhard+BLOCKSIZE);fat2=(fat *)(myvhard+BLOCKSIZE*3); for(m=0;mid=FREE)break;fat1+;fat2+;fat1-id=END; fat2-id=END;openfilelist-openfilei.length+=sizeof(fcb); prf(please input filename:); scanf(%s,freefcb-filename);prf(please input filetype:); scanf

21、(%s,freefcb-exname); freefcb-attribute=0; if(strcmp(freefcb-exname,di)=0)freefcb-attribute +=8;p=(fcb *)(myvhard+m*BLOCKSIZE); strcpy(p-filename,.);strcpy(p-exname,di); p-attribute=40; time(now);nowtime=localtime(now);p-time=nowtime-tm_hour*2048+nowtime-tm_min*32+nowtime-tm_sec/2;p-data=(nowtime-tm_

22、year-80)*512+(nowtime-tm_mon+1)*32+nowtime-tm_mday;p-=m;p-length=2*sizeof(fcb);p+;strcpy(p-filename,.);strcpy(p-exname,di); p-attribute=40; time(now);nowtime=localtime(now);p-time=nowtime-tm_hour*2048+nowtime-tm_min*32+nowtime-tm_sec/2;p-data=(nowtime-tm_year-80)*512+(nowtime-tm_mon+1)*32+nowtime-tm

23、_mday;p-=openfilelist-openfilei.;p-length=2*sizeof(fcb);freefcb-length=2*sizeof(fcb);prf(is this file readonly?(1 or 0); scanf(%d,&b);if(b=1)freefcb-attribute +=128;prf(is this file hide?(1 or 0); scanf(%d,&b);if(b=1)freefcb-attribute +=64;prf(is this file system?(1 or 0); scanf(%d,&b);if(b=1)freefc

24、b-attribute +=32;time(now); nowtime=localtime(now);freefcb-time=nowtime-tm_hour*2048+nowtime-tm_min*32+nowtime-tm_sec/2;freefcb-data=(nowtime-tm_year-80)*512+(nowtime-tm_mon+1)*32+nowtime-tm_mday;freefcb-=m;if(freefcb-attribute & 8)!=8)freefcb-length=0; open(freefcb-filename);void ls()i,l;fcb *curre

25、nt; for(i=0;iopenfilei.attribute & 8)=8) break;/找到第一個(gè)打開(kāi)的文件或者文件夾,因?yàn)槭沁B續(xù)保存,所以只要找到第一個(gè)就行current=(fcb *)(myvhard+openfilelist-openfilei.*BLOCKSIZE);/定位到第一個(gè)文件或者文件夾的開(kāi)始位置l=openfilelist-openfilei.length/sizeof(fcb);/計(jì)算打開(kāi)了幾個(gè)文件或者文件夾 for(i=0;ifilename,current-exname,current-time/2048,(current-time%2048)/32,(curr

26、ent-time%32)*2,current-data/512current-data%32,current-length);,current-data%512/32,/把文件或者文件夾信息顯示出來(lái),信息是保存在文件的 fcb 里面的void listopenfile()i;for(i=0;icount;i+)prf(%d.%s%s.%sn,i,openfilelist-diri,openfilelist-openfilei.filename,openfilelist-openfilei.exname);/這個(gè)就是把保存信息的打開(kāi)的文件顯示出來(lái),不包括文件夾,openfilelist 就是之前

27、說(shuō)的,申請(qǐng)來(lái)open(char *filename)i,m,j,index,flag;fat *fat1;fcb *nowfile; flag=0;if(openfilelist-count=MAXOPENFILE)prf(open too many files!n); return -1;/就是打開(kāi)的文件太多了,就好比快遞太多,一個(gè)人不好拿,所以不拿了 for(i=0;iopenfilei.attribute & 8)=8) break;/假如卷標(biāo)屬性存在,則跳出。fat1=(fat *)(myvhard+BLOCKSIZE);index=openfilelist-openfilei.;no

28、wfile=(fcb *)(myvhard+openfilelist-openfilei.*BLOCKSIZE);/計(jì)算 fat1 的位置,然后再計(jì)算第一個(gè)可以用的空閑空間,最后,根據(jù)可用的位置加上文件塊大小進(jìn)行偏移,找到當(dāng)前文件夾的物理位置for(m=0;mopenfilei.length/BLOCKSIZE+1;m+)for(j=0;jfilename,filename)=0)/就是簡(jiǎn)單的比較文件名相不相等,如果相等,這個(gè)就成立flag=1; break;nowfile+;/在當(dāng)前文件夾下搜索文件,找到尾或者找到了就跳出 if(j=32)nowfile=(fcb *)(myvhard+fa

29、t1index.id); index=fat1index.id;/如果找不到,就把現(xiàn)場(chǎng)給恢復(fù),拉屎要擦干凈不是if(flag=0)prf(file %s doesnt existn,filename); return -1;/直接結(jié)束函數(shù),不往后面走了。/擦干凈了,要走人了不是strcpy(openfilelist-openfileopenfilelist-count.filename,nowfile-filename); strcpy(openfilelist-openfileopenfilelist-count.exname,nowfile-exname); openfilelist-op

30、enfileopenfilelist-count.attribute=nowfile-attribute; openfilelist-openfileopenfilelist-count.time=nowfile-time;openfilelist-openfileopenfilelist-count.data=nowfile-data;openfilelist-openfileopenfilelist-count.=nowfile-;openfilelist-openfileopenfilelist-count.length=nowfile-length;strcpy(openfilelis

31、t-diropenfilelist-count,currentdir); openfilelist-count+;listopenfile();return openfilelist-count-1;/把找到的文件夾信息保存下來(lái),算是完成了,切換目錄,即 cd/然后返回一個(gè)下標(biāo),是下次可以保存打開(kāi)文件信息的位置的下標(biāo)void close(i;fd)if(fd=openfilelist-count)prf(file doesnt existn); return;/那個(gè) fd 是要關(guān)閉文件的下標(biāo),如果下標(biāo)大于我最大的設(shè)置,屬于接 return;for(i=fd;icount-1;i+)的,所以,直

32、strcpy(openfilelist-openfilei.filename,openfilelist-openfilei+1.filename);strcpy(openfilelist-openfilei.exname,openfilelist-openfilei+1.exname); openfilelist-openfilei.attribute=openfilelist-openfilei+1.attribute; openfilelist-openfilei.time=openfilelist-openfilei+1.time;openfilelist-openfilei.data=

33、openfilelist-openfilei+1.data;openfilelist-openfilei.=openfilelist-openfilei+1.;openfilelist-openfilei.length=openfilelist-openfilei+1.length;strcpy(openfilelist-diri,openfilelist-diri+1);openfilelist-count-;/相當(dāng)于群的數(shù)目,要減掉/把找到的文件夾信息保存下來(lái)/寫(xiě)文件 void mywrite(fd,char *buff)unsigned char *p;i,j,newid,index,s

34、ize1,size2,size; fcb *temp;/設(shè)置文件控制塊 fat *fat1,*fat2;/char dir10,*q; if(fd=openfilelist-count)prf(file doesnt existn); return;/假如下標(biāo)超過(guò)設(shè)置的最大值,文件不存在 if(openfilelist-openfilefd.attribute&8)=8)prf(file is a dirfile cant writen); return;/寫(xiě)文件只能寫(xiě)到表示文件的地方,文件夾只能放東西,把寫(xiě)好的東西放進(jìn)去,不能直接寫(xiě)/寫(xiě)入的文字長(zhǎng)度需要增加一個(gè)數(shù)據(jù)塊if(openfileli

35、st-openfilefd.length/BLOCKSIZE !=(openfilelist-openfilefd.length+strlen(buff)/BLOCKSIZE)fat1=(fat *)(myvhard+BLOCKSIZE);fat2=(fat *)(myvhard+3*BLOCKSIZE); for(i=7;iid=FREE)break;fat1+;fat2+;if(i=SIZE/BLOCKSIZE)prf(the hard disk is fulln); return;fat1-id=END; fat2-id=END; newid=i-1;fat1=(fat *)(myvha

36、rd+BLOCKSIZE); fat2=(fat *)(myvhard+BLOCKSIZE*3);index=openfilelist-openfilefd.;/找到文件的頭位置 while(fat1index.id!=END)index=fat1index.id;/從頭順藤摸瓜到尾 fat1index.id=newid;fat2index.id=newid;/把新的文件進(jìn)去size1=BLOCKSIZE-openfilelist-openfilefd.length%BLOCKSIZE;size2=strlen(buff)-size1;p=myvhard+index*BLOCKSIZE+ope

37、nfilelist-openfilefd.length%BLOCKSIZE; for(j=0;jsize1;j+)*p=buffj; p+;/把輸入緩沖區(qū)的內(nèi)容寫(xiě)入文件,然后把 p 移到新的可用位置p=myvhard+newid*BLOCKSIZE; for(j=0;jopenfilefd.while(fat1index.id!=END)index=fat1index.id;p=myvhard+index*BLOCKSIZE+openfilelist-openfilefd.length%BLOCKSIZE;/找到文件最后一塊,通常是含有零頭那一塊for(j=0;j length;/將 buff

38、 里面的內(nèi)容寫(xiě)入EOF,表示文件結(jié)束。然后重新定位新的 fcb for(q=openfilelist-dirfd;*q!=0;q+)if(*q!=)dirj=*q; j+;elsedirj=0; for(i=0;ifilename)=0) break;temp+;塊,然后進(jìn)行封裝處理,p=0,即寫(xiě)入temp=(fcb *)(myvhard+temp-size=temp-length; j=0;*BLOCKSIZE);for(i=0;iopenfilefd.filename,temp-filename)=0)break; temp+;temp-length+=strlen(buff);openf

39、ilelist-openfilefd.length=strlen(buff);/文件內(nèi)容void myread(fd,char *buff)unsigned char *p;n,index,i,length,j,k; fat *fat1;fat1=(fat *)(myvhard+BLOCKSIZE);index=openfilelist-openfilefd.;p=myvhard+openfilelist-openfilefd.*BLOCKSIZE;n=openfilelist-openfilefd.length/BLOCKSIZE+1;length=openfilelist-openfile

40、fd.length; k=0;for(i=0;in;i+)for(j=0;jBLOCKSIZE &k length;j+,k+)buffk=*p; p+;p=myvhard+BLOCKSIZE*(fat1index.id); index=fat1index.id;buffk=0;/進(jìn)入 dirname 目錄void cd(char *dirname)i,index,j,k,length,count,m,n; unsigned char *p;char *updir; fcb *nowfile;fat *fat1; count=0;updir = (char*)malloc(sizeof(cha

41、r) * 80);for(i=0;icount;i+)if(openfilelist-openfilei.attribute & 8)=8)break;if(i=openfilelist-count)prf(dir doesnt existn); return;fat1=(fat *)(myvhard+BLOCKSIZE); index=openfilelist-openfilei.;p=myvhard+openfilelist-openfilei.*BLOCKSIZE;nowfile=(fcb *)p;length=openfilelist-openfilei.length; for(j=0

42、;jopenfilei.length/sizeof(fcb);j+)if(j!=0 & j%32=0)nowfile=(fcb *)(myvhard+fat1index.id); index=fat1index.id;elseif(strcmp(nowfile-filename,dirname)=0 & (nowfile-attribute & 8)=8) break;nowfile+;if(j=openfilelist-openfilei.length/sizeof(fcb)prf(dir doesnt existn); return;if(strcmp(dirname,.)!=0 & st

43、rcmp(dirname,.)!=0)strcpy(openfilelist-openfileopenfilelist-count.filename,nowfile-filename); strcpy(openfilelist-openfileopenfilelist-count.exname,nowfile-exname); openfilelist-openfileopenfilelist-count.attribute=nowfile-attribute; openfilelist-openfileopenfilelist-count.time=nowfile-time;openfile

44、list-openfileopenfilelist-count.data=nowfile-data;openfilelist-openfileopenfilelist-count.=nowfile-;openfilelist-openfileopenfilelist-count.length=nowfile-length;strcpy(openfilelist-diropenfilelist-count,currentdir); openfilelist-count+;else if(strcmp(dirname,.)=0 & strcmp(currentdir,root)!=0)/root/

45、count=0; for(k=80;k0;k-)if(currentdirk= & count=2) break;else if(currentdirk=) count+;updir0 = currentdirk; k+;for(n=1;(kopenfileopenfilelist-count.filename,updir+1); strcpy(openfilelist-openfileopenfilelist-count.exname,nowfile-exname); openfilelist-openfileopenfilelist-count.attribute=nowfile-attr

46、ibute; openfilelist-openfileopenfilelist-count.time=nowfile-time;openfilelist-openfileopenfilelist-count.data=nowfile-data;openfilelist-openfileopenfilelist-count.=nowfile-;openfilelist-openfileopenfilelist-count.length=nowfile-length;updirn=currentdirk; updirn+1=0;strcpy(openfilelist-diropenfilelist-count,updir);openfilelist-count+;if(strcmp(currentdir,root)=0 strcmp(dirname,.)=0)/;/root/&(strcmp(dir

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論