版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 專 業(yè):</b></p><p><b> 學(xué) 號:</b></p><p><b> 姓 名:</b></p><p><b> 提交日期:</b></p><p><b> 【設(shè)計題目】
2、</b></p><p><b> 二級文件系統(tǒng)設(shè)計</b></p><p><b> 【設(shè)計目的】</b></p><p> 1、本實驗的目的是通過一個簡單多用戶文件系統(tǒng)的設(shè)計,加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實現(xiàn)。</p><p> 2、結(jié)合數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計、計算機原理等課
3、程的知識,設(shè)計一個二級文件系統(tǒng),進(jìn)一步理解操作系統(tǒng)。</p><p> 3、通過分對實際問題的分析、設(shè)計、編程實現(xiàn),提高學(xué)生實際應(yīng)用、編程的能力.</p><p><b> 【設(shè)計內(nèi)容】</b></p><p><b> 任務(wù)</b></p><p> 為Linux系統(tǒng)設(shè)計一個簡單的二級文件
4、系統(tǒng)。要求做到以下幾點:</p><p> 1.可以實現(xiàn)下列幾條命令:</p><p> login 用戶登錄</p><p> dir 列目錄</p><p> create 創(chuàng)建文件</p><p> delete 刪除文件</p>&
5、lt;p> open 打開文件</p><p> close 關(guān)閉文件</p><p> read 讀文件</p><p> write 寫文件</p><p> cd 進(jìn)出目錄</p><p> 2.列目錄時要列出文件名
6、,物理地址,保護(hù)碼和文件長度</p><p> 3.源文件可以進(jìn)行讀寫保護(hù)</p><p><b> 程序設(shè)計</b></p><p><b> 設(shè)計思想</b></p><p> 本文件系統(tǒng)采用兩級目錄,其中第一級對應(yīng)于用戶賬號,第二級對應(yīng)于用戶帳號下的文件。另外,為了簡便文件系統(tǒng)未考慮文
7、件共享,文件系統(tǒng)安全以及管道文件與設(shè)備文件等特殊內(nèi)容。</p><p> 首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。</p><p> 用戶創(chuàng)建的文件,可以編號存儲于磁盤上。如:file0,file1,file2…并以編號作為物理地址,在目錄中進(jìn)行登記</p><p><b>
8、 【實驗環(huán)境】</b></p><p><b> C++/VC++</b></p><p><b> 【設(shè)計原理】</b></p><p> 對采用二級文件目錄的文件系統(tǒng)工作的機理了如指掌,對文件系統(tǒng)的相關(guān)操作要掌握。</p><p><b> 【設(shè)計思路】</
9、b></p><p><b> 1. 主要數(shù)據(jù)結(jié)構(gòu)</b></p><p> #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/</p><p> #define MAXCHILD 50 /*the largest child每個用戶名下最多有
10、50個文件*/</p><p> #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/</p><p> typedef struct /*the structure of OSFILE定義主文件*/</p><p><b> {</b></p><p>
11、; int fpaddr; /*file physical address*/</p><p> int flength; /*file length*/</p><p> int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Prot
12、ect;*/</p><p> char fname[MAXNAME]; /*file name*/</p><p><b> } OSFILE;</b></p><p> typedef struct /*the structure of OSUFD定義用戶文件目錄*/</p><p>&l
13、t;b> {</b></p><p> char ufdname[MAXNAME]; /*ufd name*/</p><p> OSFILE ufdfile[MAXCHILD]; /*ufd own file*/</p><p><b> }OSUFD;</b></p><p> t
14、ypedef struct /*the structure of OSUFD'LOGIN定義登陸*/</p><p><b> {</b></p><p> char ufdname[MAXNAME]; /*ufd name*/</p><p> char ufdpword[8]; /*ufd
15、password*/</p><p> } OSUFD_LOGIN;</p><p> typedef struct /*file open mode定義操作方式*/</p><p><b> {</b></p><p> int ifopen; /*ifopen:0-close,1-open*/
16、</p><p> int openmode; /*0-read only,1-write only,2-read and write,3-initial*/</p><p> }OSUFD_OPENMODE;</p><p><b> 2.主要函數(shù)</b></p><p> void LoginF();
17、/*LOGIN FileSystem*/</p><p> void DirF(); /*Dir FileSystem*/</p><p> void CreateF(); /*Create File*/</p><p> void DeleteF(); /*Delete File*/</p><p> void ModifyFM
18、(); /*Modify FileMode*/</p><p> void OpenF(); /*Open File*/</p><p> void CloseF(); /*Close File*/</p><p> void ReadF(); /*Read File*/</p><p> void WriteF(); /*Wri
19、te File*/</p><p> void QuitF(); /*Quit FileSystem*/</p><p> void CdF(); /*Change Dir*/</p><p> void help();</p><p><b> 程序流程設(shè)計</b></p><p>&
20、lt;b> 總體功能程序結(jié)構(gòu)圖</b></p><p> 打開命令的程序流程圖</p><p> 刪除命令的程序流程圖</p><p> 關(guān)閉命令的程序流程圖</p><p><b> 寫命令的程序流程圖</b></p><p><b> 【源程序清單】&l
21、t;/b></p><p> #include "stdio.h"</p><p> #include "string.h"</p><p> #include "conio.h"</p><p> #include "stdlib.h"</p
22、><p> #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/</p><p> #define MAXCHILD 50 /*the largest child*/</p><p> #define MAX (MAXCHILD*MAXCHILD) /*the size of
23、fpaddrno*/</p><p> typedef struct /*the structure of OSFILE*/</p><p><b> {</b></p><p> int fpaddr; /*file physical address*/</p><p> in
24、t flength; /*file length*/</p><p> int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/</p><p> char fname[MAXNAME]; /*file name*/</p>
25、<p><b> } OSFILE;</b></p><p> typedef struct /*the structure of OSUFD*/</p><p><b> {</b></p><p> char ufdname[MAXNAME]; /*ufd name*/</p>
26、;<p> OSFILE ufdfile[MAXCHILD]; /*ufd own file*/</p><p><b> }OSUFD;</b></p><p> typedef struct /*the structure of OSUFD'LOGIN*/</p><p><b> {</
27、b></p><p> char ufdname[MAXNAME]; /*ufd name*/</p><p> char ufdpword[8]; /*ufd password*/</p><p> } OSUFD_LOGIN;</p><p> typedef struct /*fi
28、le open mode*/</p><p><b> {</b></p><p> int ifopen; /*ifopen:0-close,1-open*/</p><p> int openmode; /*0-read only,1-write only,2-read and write,3-initial*/</
29、p><p> }OSUFD_OPENMODE;</p><p> OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/</p><p> OSUFD_LOGIN ufd_lp;</p><p> int ucount=0; /*the count of mfd's ufds*/<
30、;/p><p> int fcount[MAXCHILD]; /*the count of ufd's files*/</p><p> int loginsuc=0; /*whether login successfully*/</p><p> char username[MAXNAME]; /*record login user's na
31、me22*/</p><p> char dirname[MAXNAME];/*record current directory*/</p><p> int fpaddrno[MAX]; /*record file physical address num*/</p><p> OSUFD_OPENMODE ifopen[MAXCHILD][MAXCHIL
32、D]; /*record file open/close*/</p><p> int wgetchar; /*whether getchar()*/</p><p> FILE *fp_mfd,*fp_ufd,*fp_file_p,*fp_file;</p><p> void LoginF(); /*LOGIN FileSystem*/</p>
33、;<p> void DirF(); /*Dir FileSystem*/</p><p> void CdF(); /*Change Dir*/</p><p> void CreateF(); /*Create File*/</p><p> void DeleteF(); /*Delete File*/</p><
34、;p> void ModifyFM(); /*Modify FileMode*/</p><p> void OpenF(); /*Open File*/</p><p> void CloseF(); /*Close File*/</p><p> void ReadF(); /*Read File*/</p><p>
35、 void WriteF(); /*Write File*/</p><p> void QuitF(); /*Quit FileSystem*/</p><p> void help();</p><p> char *rtrim(char *str); /*remove the trailing blanks.*/</p><p>
36、; char *ltrim(char *str); /*remove the heading blanks.*/</p><p> void InputPW(char *password); /*input password,use '*' replace*/</p><p> void SetPANo(int RorW); /*Set physical add
37、ress num*/</p><p> int ExistD(char *dirname); /*Whether DirName Exist,Exist-i,Not Exist-0*/</p><p> int WriteF1(); /*write file*/</p><p> int ExistF(char *filename); /*Whether
38、FileName Exist,Exist-i,Not Exist-0*/</p><p> int FindPANo(); /*find out physical address num*/</p><p> void clrscr()</p><p><b> {</b></p><p> system(&q
39、uot;cls");</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> int i,choice1;</p><p> char choice[50]; /*choic
40、e operation:dir,create,delete,open,delete,modify,read,write*/</p><p> int choiceend=1; /*whether choice end*/</p><p> char *rtrim(char *str); /*remove the trailing blanks.*/</p><p
41、> char *ltrim(char *str); /*remove the heading blanks.*/</p><p> if((fp_mfd=fopen("c:\\osfile\\mfd.txt","rb"))==NULL)</p><p><b> {</b></p><p>
42、 fp_mfd=fopen("c:\\osfile\\mfd.txt","wb");</p><p> fclose(fp_mfd);</p><p><b> }</b></p><p> for(i=0;i<MAX;i++) fpaddrno[i]=0;</p><p
43、> //textattr(BLACK*16|WHITE);</p><p> clrscr(); /*clear screen*/</p><p> LoginF(); /*user login*/</p><p><b> clrscr();</b></p><p> if(loginsuc==
44、1) /*Login Successfully*/</p><p><b> {</b></p><p><b> while (1)</b></p><p><b> {</b></p><p> wgetchar=0;</p><p>
45、if (choiceend==1)</p><p> printf("\n\nC:\\%s>",strupr(dirname));</p><p><b> else </b></p><p> printf("Bad command or file name.\nC:\\%s>",st
46、rupr(username));</p><p> gets(choice);</p><p> strcpy(choice,ltrim(rtrim(strlwr(choice))));</p><p> if (strcmp(choice,"dir")==0) choice1=1;</p><p> else i
47、f(strcmp(choice,"create")==0) choice1=2;</p><p> else if(strcmp(choice,"delete")==0) choice1=3;</p><p> else if(strcmp(choice,"attrib")==0) choice1=4;</p>
48、<p> else if(strcmp(choice,"open")==0) choice1=5;</p><p> else if(strcmp(choice,"close")==0) choice1=6;</p><p> else if(strcmp(choice,"read")==0) choice1=7;
49、</p><p> else if(strcmp(choice,"write")==0) choice1=8;</p><p> else if(strcmp(choice,"exit")==0) choice1=9;</p><p> else if(strcmp(choice,"cls")==0)
50、 choice1=10;</p><p> else if(strcmp(choice,"cd")==0) choice1=11;</p><p> else if(strcmp(choice,"help")==0) choice1=20;</p><p> else choice1=12;</p><
51、;p> switch(choice1)</p><p><b> {</b></p><p> case 1:DirF();choiceend=1;break;</p><p> case 2:CreateF();choiceend=1;if(!wgetchar) getchar();break;</p><p
52、> case 3:DeleteF();choiceend=1;if(!wgetchar)getchar();break;</p><p> case 4:ModifyFM();choiceend=1;if(!wgetchar) getchar();break;</p><p> case 5:OpenF();choiceend=1;if (!wgetchar) getchar(
53、);break;</p><p> case 6:CloseF();choiceend=1;if (!wgetchar) getchar();break;</p><p> case 7:ReadF();choiceend=1;if (!wgetchar) getchar();break;</p><p> case 8:WriteF();choiceend=
54、1;if (!wgetchar) getchar();break;</p><p> case 9:printf("\nYou have exited this system.");</p><p> QuitF();exit(0);break;</p><p> case 10:clrscr();choiceend=1;break;<
55、;/p><p> case 11:CdF();choiceend=1;break;</p><p> case 20:help();choiceend=1;break;</p><p> default:choiceend=0;</p><p><b> }</b></p><p><b
56、> }</b></p><p><b> }</b></p><p><b> else </b></p><p> printf("\nAccess denied.");</p><p><b> }</b></p>
57、;<p> void help(void)</p><p><b> {</b></p><p> printf("\nThe Command List\n");</p><p> printf("\nCd Attrib Create write Read Open Cls De
58、lete Exit Close\n");</p><p><b> }</b></p><p> char *rtrim(char *str) /*remove the trailing blanks.*/</p><p><b> {</b></p><p> int n=
59、strlen(str)-1;</p><p> while(n>=0)</p><p><b> {</b></p><p> if(*(str+n)!=' ')</p><p><b> {</b></p><p> *(str+n+1)=&
60、#39;\0';</p><p><b> break;</b></p><p><b> }</b></p><p><b> else n--;</b></p><p><b> }</b></p><p>
61、if (n<0) str[0]='\0';</p><p> return str;</p><p><b> }</b></p><p> char *ltrim(char *str) /*remove the heading blanks.*/</p><p><b> {&l
62、t;/b></p><p> strrev(str);</p><p> rtrim(str);</p><p> strrev(str);</p><p> return str;</p><p><b> }</b></p><p> void Log
63、inF() /*LOGIN FileSystem*/</p><p><b> {</b></p><p> char loginame[MAXNAME],loginpw[9],logincpw[9],str[50];</p><p> int i,j,flag=1;</p><p> char a[25];&
64、lt;/p><p> int findout; /*login user not exist*/</p><p><b> while(1)</b></p><p><b> {</b></p><p> findout=0;</p><p> printf("
65、;\n\nLogin Name:");</p><p> gets(loginame);</p><p> ltrim(rtrim(loginame));</p><p> fp_mfd=fopen("c:\\osfile\\mfd.txt","rb");</p><p> for(i
66、=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;i++)</p><p> if (strcmp(strupr(ufd_lp.ufdname),strupr(loginame))==0)</p><p><b> {</b></p><p> findout=1;</p&g
67、t;<p> strcpy(logincpw,ufd_lp.ufdpword);</p><p><b> }</b></p><p> fclose(fp_mfd);</p><p> if (findout==1) /*user exist*/</p><p><b> {<
68、/b></p><p> printf("Login Password:");</p><p> InputPW(loginpw); /*input password,use '*' replace*/</p><p> if (strcmp(loginpw,logincpw)==0)</p><p
69、><b> {</b></p><p> strcpy(username,strupr(loginame));</p><p> strcpy(dirname,username);</p><p> fp_mfd=fopen("c:\\osfile\\mfd.txt","rb");</
70、p><p> for(j=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;j++)</p><p><b> {</b></p><p> strcpy(str,"c:\\osfile\\");</p><p> strcat(str,uf
71、d_lp.ufdname);</p><p> strcat(str,".txt");</p><p> ufd[j]=(OSUFD*)malloc(sizeof(OSUFD));</p><p> strcpy(ufd[j]->ufdname,strupr(ufd_lp.ufdname));</p><p>
72、 fp_ufd=fopen(str,"rb");</p><p> fcount[j]=0;</p><p> for(i=0;fread(&ufd[j]->ufdfile[i],sizeof(OSFILE),1,fp_ufd)!=0;i++,fcount[j]++)</p><p><b> {</b>
73、;</p><p> ifopen[j][i].ifopen=0;</p><p> ifopen[j][i].openmode=4;</p><p><b> }</b></p><p> fclose(fp_ufd);</p><p><b> }</b><
74、;/p><p> fclose(fp_mfd);</p><p><b> ucount=j;</b></p><p> SetPANo(0);</p><p> printf("\n\nLogin successful! Welcome to this FileSystem\n\n");<
75、/p><p> loginsuc=1;</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
76、;<p> printf("\n\n");</p><p><b> flag=1;</b></p><p> while(flag)</p><p><b> {</b></p><p> printf("Login Failed! Pass
77、word Error. Try Again(Y/N):");</p><p><b> gets(a);</b></p><p> ltrim(rtrim(a));</p><p> if (strcmp(strupr(a),"Y")==0) </p><p><b>
78、{</b></p><p> loginsuc=0;</p><p><b> flag=0;</b></p><p><b> }</b></p><p> else if(strcmp(strupr(a),"N")==0)</p><p
79、><b> {</b></p><p> loginsuc=0;</p><p><b> flag=0;</b></p><p><b> return;</b></p><p><b> }</b></p><p&g
80、t;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
81、 printf("New Password(<=8):");</p><p> InputPW(loginpw); /*input new password,use '*' replace*/</p><p> printf("\nConfirm Password(<=8):"); /*input new passw
82、ord,use '*' replace*/</p><p> InputPW(logincpw);</p><p> if (strcmp(loginpw,logincpw)==0)</p><p><b> {</b></p><p> strcpy(ufd_lp.ufdname,strupr(
83、loginame));</p><p> strcpy(ufd_lp.ufdpword,loginpw);</p><p> fp_mfd=fopen("c:\\osfile\\mfd.txt","ab");</p><p> fwrite(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd
84、);</p><p> fclose(fp_mfd);</p><p> strcpy(username,strupr(loginame));</p><p> strcpy(dirname,loginame);</p><p> ////////////////////////////////////////////////////
85、////</p><p> strcpy(str,"c:\\osfile\\");</p><p> strcat(str,username);</p><p> strcat(str,".txt");</p><p> if((fp_ufd=fopen(str,"rb"))
86、==NULL)</p><p><b> {</b></p><p> fp_ufd=fopen(str,"wb");</p><p> fclose(fp_ufd);</p><p><b> }</b></p><p> fp_mfd=fop
87、en("c:\\osfile\\mfd.txt","rb");</p><p> for(j=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;j++)</p><p><b> {</b></p><p> /////////////////
88、////////////////////</p><p> strcpy(str,"c:\\osfile\\");</p><p> strcat(str,ufd_lp.ufdname);</p><p> strcat(str,".txt");</p><p> ufd[j]=(OSUFD*)
89、malloc(sizeof(OSUFD));</p><p> strcpy(ufd[j]->ufdname,strupr(ufd_lp.ufdname));</p><p> fp_ufd=fopen(str,"rb");</p><p> for(i=0;fread(&ufd[j]->ufdfile[i],sizeo
90、f(OSFILE),1,fp_ufd)!=0;i++,fcount[j]++)</p><p><b> {</b></p><p> ifopen[j][i].ifopen=0;</p><p> ifopen[j][i].openmode=4;</p><p><b> }</b><
91、;/p><p> fclose(fp_ufd);</p><p><b> }</b></p><p> fclose(fp_mfd);</p><p><b> ucount=j;</b></p><p> SetPANo(0);</p><p&g
92、t; printf("\n\nLogin Successful! Welcome to this System\n\n");</p><p> loginsuc=1;</p><p><b> return;</b></p><p><b> }</b></p><p>
93、<b> else</b></p><p><b> {</b></p><p> printf("\n\n");</p><p><b> flag=1;</b></p><p> while(flag)</p><p>
94、<b> {</b></p><p> printf("Login Failed! Password Error. Try Again(Y/N):");</p><p><b> gets(a);</b></p><p> ltrim(rtrim(a));</p><p>
95、; if (strcmp(strupr(a),"Y")==0) </p><p><b> {</b></p><p> loginsuc=0;</p><p><b> flag=0;</b></p><p><b> }</b></p&g
96、t;<p> else if(strcmp(strupr(a),"N")==0)</p><p><b> {</b></p><p> loginsuc=0;</p><p><b> flag=0;</b></p><p><b> retu
97、rn;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }&l
98、t;/b></p><p><b> }</b></p><p> void SetPANo(int RorW) /*Set physical address num,0-read,1-write*/</p><p><b> {</b></p><p><b> int
99、i,j;</b></p><p> if (RorW==0)</p><p><b> {</b></p><p> if((fp_file_p=fopen("c:\\osfile\\file\\file_p.txt","rb"))==NULL)</p><p>
100、<b> {</b></p><p> fp_file_p=fopen("c:\\osfile\\file\\file_p.txt","wb");</p><p> fclose(fp_file_p);</p><p><b> }</b></p><p&
101、gt; fp_file_p=fopen("c:\\osfile\\file\\file_p.txt","rb");</p><p> ///////////////////////////////////////////////////////////////////</p><p> for(i=0;fread(&j,sizeof(i
102、nt),1,fp_file_p)!=0;i++)</p><p> fpaddrno[j]=1;</p><p> /*for(i=1;i<MAX;i++)</p><p> if ((i%13)==0) </p><p> fpaddrno[i]=1;*/</p><p><b> }<
103、;/b></p><p><b> else</b></p><p><b> {</b></p><p> fp_file_p=fopen("c:\\osfile\\file\\file_p.txt","wb");</p><p> /*for
104、(i=1;i<MAX;i++)</p><p> if((i%13)==0) </p><p> fpaddrno[i]=0;*/</p><p> for(i=0;i<MAX;i++)</p><p> if (fpaddrno[i]==1)</p><p> fwrite(&i,siz
105、eof(int),1,fp_file_p);</p><p><b> }</b></p><p> fclose(fp_file_p);</p><p><b> }</b></p><p> void InputPW(char *password) /*input password,u
106、se '*' replace*/</p><p><b> {</b></p><p><b> int j;</b></p><p> for(j=0;j<=7;j++)</p><p><b> {</b></p><p&
107、gt; password[j]=getch();</p><p> if ((int)(password[j])!=13)</p><p><b> {</b></p><p> if((int)(password[j])!=8)</p><p> putchar('*');</p>
108、<p><b> else</b></p><p><b> {</b></p><p><b> if (j>0)</b></p><p><b> {</b></p><p><b> j--;</b>
109、;</p><p><b> j--;</b></p><p> putchar('\b');putchar(' ');putchar('\b');</p><p><b> }</b></p><p><b> else j--;&
110、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> {password[j]='\0';</p><p><b>
111、; break;</b></p><p><b> }</b></p><p><b> }</b></p><p> password[j]='\0';</p><p><b> }</b></p><p> v
112、oid DirF() /*Dir FileSystem*/</p><p><b> {</b></p><p> int i,j,count=0;</p><p> char sfmode[25],sfpaddr[25],str[25];</p><p><b> clrscr();</b&g
113、t;</p><p> if (strcmp(strupr(ltrim(rtrim(dirname))),"")!=0)</p><p><b> {</b></p><p> printf("\n\nC:\\%s>dir\n",dirname);</p><p>
114、printf("\n%14s%16s%14s%10s%18s\n","FileName","FileAddress","FileLength","Type","FileMode");</p><p> j=ExistD(dirname);</p><p> for(i
115、=0;i<fcount[j];i++)</p><p><b> {</b></p><p> if ((i%16==0)&&(i!=0))</p><p><b> {</b></p><p> printf("\nPress any key to cont
116、inue..");</p><p><b> getch();</b></p><p><b> clrscr();</b></p><p> printf("\n%14s%16s%14s%10s%18s\n","FileName","FileAddress
117、","FileLength","Type","FileMode");</p><p><b> }</b></p><p> /////////////////////////////////////////////////////////</p><p> itoa(
118、ufd[j]->ufdfile[i].fpaddr,str,10);</p><p> strcpy(sfpaddr,"file");</p><p> strcat(sfpaddr,str);</p><p> if (ufd[j]->ufdfile[i].fmode==0) strcpy(sfmode,"Read
119、Only");</p><p> else if(ufd[j]->ufdfile[i].fmode==1) strcpy(sfmode,"Write Only");</p><p> else if(ufd[j]->ufdfile[i].fmode==2)strcpy(sfmode,"Read And Write");<
120、;/p><p> else strcpy(sfmode,"Protect");</p><p> printf("%14s%16s%14d%10s%18s\n",ufd[j]->ufdfile[i].fname,sfpaddr,ufd[j]->ufdfile[i].flength,"<FILE>",sfmo
121、de);</p><p><b> }</b></p><p> printf("\n %3d file(s)\n",fcount[j]);</p><p><b> }</b></p><p><b> else</b></p>&l
122、t;p><b> {</b></p><p> printf("\n\nC:\\>dir\n");</p><p> printf("\n%14s%18s%8s\n","DirName","OwnFileCount","Type");</p>
123、;<p> for(i=0;i<ucount;i++)</p><p><b> {</b></p><p> if ((i%16==0)&&(i!=0))</p><p><b> {</b></p><p> printf("\nPress
124、 any key to continue...");</p><p><b> getch();</b></p><p><b> clrscr();</b></p><p> printf("\n%14s%18s%8s\n","DirName","OwnF
125、ileCount","Type");</p><p><b> }</b></p><p> printf("%14s%18d%8s\n",ufd[i]->ufdname,fcount[i],"<UFD>");</p><p> count=count
126、+fcount[i];</p><p><b> }</b></p><p> printf("\n %3d dir(s),%5d file(s)\n",ucount,count);</p><p><b> }</b></p><p><b> }</b
127、></p><p> int ExistD(char *dirname) /*Whether DirName Exist,Exist-i,Not Exist-0*/</p><p><b> {</b></p><p><b> int i;</b></p><p> int exi
128、st=0;</p><p> for(i=0;i<ucount;i++)</p><p> if (strcmp(strupr(ufd[i]->ufdname),strupr(dirname))==0)</p><p><b> {</b></p><p><b> exist=1;<
129、/b></p><p><b> break;</b></p><p><b> }</b></p><p> if (exist) return(i);</p><p> else return(-1);</p><p><b> }</b&
130、gt;</p><p> void CdF() /*Exchange Dir*/</p><p><b> {</b></p><p> char dname[MAXNAME];</p><p> printf("\nPlease input DirName (cd..-Previous dir; Di
131、rNAME-cd [DirNAME]):");</p><p> gets(dname);</p><p> ltrim(rtrim(dname));</p><p> if (ExistD(dname)>=0) strcpy(dirname,strupr(dname));</p><p><b> els
132、e </b></p><p> if(strcmp(strupr(dname),"CD..")==0) strcpy(ltrim(rtrim(dirname)),"");</p><p> else printf("\nError.\'%s\' does not exist.\n",dname);
133、</p><p><b> }</b></p><p> void CreateF() /*Create File*/</p><p><b> {</b></p><p> int fpaddrno,flag=1,i;</p><p> char fname[M
134、AXNAME],str[50],str1[50],a[25];</p><p> char fmode[25];</p><p> if (strcmp(strupr(dirname),strupr(username))!=0)</p><p><b> {</b></p><p> printf("\
135、nError. You must create file in your own dir.\n");</p><p> wgetchar=1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
136、;</p><p> printf("\nPlease input FileName:");</p><p> gets(fname);</p><p> ltrim(rtrim(fname));</p><p> if (ExistF(fname)>=0)</p><p><b
137、> {</b></p><p> printf("\nError. Name \'%s\' has already existed.\n",fname);</p><p> wgetchar=1;</p><p><b> }</b></p><p><
138、b> else</b></p><p><b> {</b></p><p> printf("Please input FileMode(0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect):");</p><p> gets(fmode)
139、;</p><p> ltrim(rtrim(fmode));</p><p> if((strcmp(fmode,"0")==0)||(strcmp(fmode,"1")==0)||(strcmp(fmode,"2")==0)||(strcmp(fmode,"3")==0))</p><
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計----二級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計--二級文件系統(tǒng)設(shè)計
- 操作系統(tǒng)課程設(shè)計二級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計--二級文件系統(tǒng)(java)
- 操作系統(tǒng)課程設(shè)計linux二級文件系統(tǒng)設(shè)計
- 操作系統(tǒng)課程設(shè)計--簡單二級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--linux二級文件系統(tǒng)設(shè)計
- 操作系統(tǒng)課程設(shè)計--模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計--樹形目錄文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計---文件系統(tǒng)的模擬
- 操作系統(tǒng)課程設(shè)計---模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計--為linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計-模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 操作系統(tǒng)文件系統(tǒng)的設(shè)計與實現(xiàn)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng).doc
- 操作系統(tǒng)課程設(shè)計(文件系統(tǒng)管理)
- 操作系統(tǒng)課程設(shè)計--簡單文件系統(tǒng)的實現(xiàn)
評論
0/150
提交評論