2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  專 業(yè):計(jì)算機(jī)信息處理</p><p><b>  【設(shè)計(jì)目的】</b></p><p>  1. 課程設(shè)計(jì)目的是通過一個(gè)簡單多用戶文件系統(tǒng)的設(shè)計(jì),加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)。</p><p>  2. 結(jié)合數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)、計(jì)算機(jī)原理等課程的知識(shí),設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng),進(jìn)一步理解操作系統(tǒng)。</p&

2、gt;<p>  3. 通過對實(shí)際問題的分析、設(shè)計(jì)、編程實(shí)現(xiàn),提高學(xué)生實(shí)際應(yīng)用、編程的能力</p><p><b>  【設(shè)計(jì)內(nèi)容】</b></p><p>  1、delete 刪除文件</p><p>  2、open 打開文件</p><p>  3、close

3、 關(guān)閉文件</p><p>  4、write 寫文件</p><p><b>  【實(shí)驗(yàn)環(huán)境】</b></p><p>  Windows7系統(tǒng) </p><p>  Visual studio 2010</p><p><b>  【相關(guān)知識(shí)綜述】</b>

4、;</p><p>  本文件系統(tǒng)采用兩級(jí)目錄,其中第一級(jí)對應(yīng)于用戶賬號(hào),第二級(jí)對應(yīng)于用戶帳號(hào)下的文件。另外,為了簡便文件系統(tǒng)未考慮文件共享,文件系統(tǒng)安全以及管道文件與設(shè)備文件等特殊內(nèi)容。</p><p>  首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動(dòng)文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。</p><p>  用戶創(chuàng)建的文件,可

5、以編號(hào)存儲(chǔ)于磁盤上。如:file0,file1,file2…并以編號(hào)作為物理地址,在目錄中進(jìn)行登記。</p><p><b>  【設(shè)計(jì)思路】</b></p><p><b>  1 主要數(shù)據(jù)結(jié)構(gòu)</b></p><p>  #define MAXNAME 25 /*the largest length of mfdna

6、me,ufdname,filename*/</p><p>  #define MAXCHILD 50 /*the largest child每個(gè)用戶名下最多有50個(gè)文件*/</p><p>  #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/</p><p>  typedef struct /*t

7、he structure of OSFILE定義主文件*/</p><p><b>  {</b></p><p>  int fpaddr; /*file physical address*/</p><p>  int flength; /*file length*/</p

8、><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><p><b>  } OSFILE;</b></p&

9、gt;<p>  typedef struct /*the structure of OSUFD定義用戶文件目錄*/</p><p><b>  {</b></p><p>  char ufdname[MAXNAME]; /*ufd name*/</p><p>  OSFILE ufdfile[MAXCHILD];

10、 /*ufd own file*/</p><p><b>  }OSUFD;</b></p><p>  typedef struct /*the structure of OSUFD'LOGIN定義登陸*/</p><p><b>  {</b></p><p>  char uf

11、dname[MAXNAME]; /*ufd name*/</p><p>  char ufdpword[8]; /*ufd password*/</p><p>  } OSUFD_LOGIN;</p><p>  typedef struct /*file open mode定義操作方式*/</p><

12、;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*/</p><p>  }OSUFD_OPEN

13、MODE;</p><p><b>  2 主要函數(shù)</b></p><p>  void LoginF(); /*LOGIN FileSystem*/</p><p>  void DirF(); /*Dir FileSystem*/</p><p>  void CreateF(); /*Create File

14、*/</p><p>  void DeleteF(); /*Delete File*/</p><p>  void ModifyFM(); /*Modify FileMode*/</p><p>  void OpenF(); /*Open File*/</p><p>  void CloseF(); /*Close File*/&

15、lt;/p><p>  void ReadF(); /*Read File*/</p><p>  void WriteF(); /*Write File*/</p><p>  void QuitF(); /*Quit FileSystem*/</p><p>  void CdF(); /*Change Dir*/</p>&

16、lt;p>  void help();</p><p><b>  【主要程序段】</b></p><p>  1 Delete函數(shù)</p><p>  void DeleteF() /*Delete File*/</p><p>  { char fname[MAXNAME],str[50],str1[50]

17、;</p><p>  int i,k,j;</p><p>  int fpaddrno1; </p><p>  if (strcmp(strupr(ltrim(rtrim(dirname))),"")==0) /*無法刪除主目錄的文件*/</p><p><b>  {</b></p>

18、;<p>  printf("\nError.Please convert to ufd dir before delete.\n");</p><p>  wgetchar=1;</p><p><b>  }</b></p><p>  if (strcmp(strupr(dirname),strupr(u

19、sername))!=0) /*無法刪除非自己目錄的文件*/</p><p><b>  {</b></p><p>  printf("\nError.You can only modify filemode in yourself dir.\n");</p><p>  wgetchar=1;</p>&l

20、t;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\nPlease input FileName:");</p><p>  gets(fname)

21、;//從鍵盤獲取所要?jiǎng)h除的文件名</p><p>  ltrim(rtrim(fname));</p><p>  i=ExistF(fname);//獲取文件編號(hào)</p><p><b>  if (i>=0)</b></p><p><b>  {</b></p><p

22、>  k=ExistD(username);</p><p>  if(ifopen[k][i].ifopen==1)/*文件打開時(shí)無法刪除*/</p><p><b>  {</b></p><p>  printf("\nError.\'%s\' is in open status. Close it bef

23、ore delete.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  { </b></p><p>  if

24、(ufd[k]->ufdfile[i].fmode==3)/*被保護(hù)的文件無法刪除*/</p><p><b>  {</b></p><p>  printf("\nError.\'%s\' is in protect status. Close it before delete.\n",fname);</p>

25、<p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  fpaddrno1=ufd[k]->ufdfile[i].fpaddr;//獲

26、取文件對應(yīng)的物理文件名</p><p>  fpaddrno[fpaddrno1]=0;//回收盤塊</p><p>  for(j=i;j<fcount[k];j++)</p><p><b>  {</b></p><p>  ufd[k]->ufdfile[j]=ufd[k]->ufdfi

27、le[j+1];//從被刪除的文件號(hào)開始,數(shù)組值全部前移一個(gè)</p><p><b>  }</b></p><p>  strcpy(str,"d:\\osfile\\file\\file");</p><p>  itoa(fpaddrno1,str1,10);//整數(shù)轉(zhuǎn)化成字符串</p><p>

28、;  strcat(str,str1);</p><p>  strcat(str,".txt");</p><p>  remove(str);//刪除物理文件</p><p>  fcount[k]--;//k用戶文件數(shù)量少1</p><p>  printf("\n \'%s\'is d

29、eleted successfully.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

30、;  else//所要?jiǎng)h除的文件不存在 </p><p><b>  {</b></p><p>  printf("\nError. \'%s\' dose not exist.\n",fname);</p><p>  wgetchar=1;</p><p><b>  

31、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2 Open函數(shù)</b></p><p>  void OpenF() /*Open File*/</p><p><

32、;b>  { </b></p><p>  char fname[MAXNAME];</p><p>  int i,k,j; </p><p>  if (strcmp(strupr(dirname),strupr(username))!=0) /*在自己的目錄里才能打開*/</p><p><b>  {<

33、;/b></p><p>  printf("\nError.You can only open in yourself dir.\n");</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  else</b>&l

34、t;/p><p><b>  { </b></p><p>  k=ExistD(username);</p><p>  for(j=0;j<fcount[k];j++)</p><p><b>  {</b></p><p>  printf("%15s&q

35、uot;,ufd[k]->ufdfile[j].fname);</p><p><b>  }</b></p><p>  printf("\nPlease input FileName:");</p><p>  gets(fname);//獲取所要打開的文件名</p><p>  ltrim

36、(rtrim(fname));</p><p>  i=ExistF(fname);//獲取目錄編號(hào)</p><p><b>  if (i>=0)</b></p><p><b>  {</b></p><p>  if(ifopen[k][i].ifopen==1)//輸入的文件是打開的&

37、lt;/p><p><b>  {</b></p><p>  printf("\nError.\'%s\' is in open status.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p&g

38、t;<p><b>  else</b></p><p><b>  { </b></p><p>  ifopen[k][i].ifopen=1;//修改為打開的</p><p>  if(ufd[k]->ufdfile[i].fmode==0)/*根據(jù)文件的模式設(shè)置打開模式*/</p>

39、<p>  { ifopen[k][i].openmode=0;}</p><p>  else if(ufd[k]->ufdfile[i].fmode==1)</p><p>  {ifopen[k][i].openmode=1;}</p><p>  else if(ufd[k]->ufdfile[i].fmode==2)</p&g

40、t;<p>  {ifopen[k][i].openmode=2;}</p><p>  else ifopen[k][i].openmode=3;</p><p>  printf("\n\'%s\' is opened successfully\n",fname);</p><p>  wgetchar=1;

41、</p><p><b>  }</b></p><p><b>  }</b></p><p>  else//文件不存在</p><p><b>  {</b></p><p>  printf("\nError. \'%s\&#

42、39; dose not exist.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>&

43、lt;b>  3 Close函數(shù)</b></p><p>  void CloseF() /*Close File*/</p><p><b>  {</b></p><p>  char fname[MAXNAME];</p><p>  int i,k,j; </p><p>

44、;  if (strcmp(strupr(dirname),strupr(username))!=0) /*不在自己的目錄里沒法進(jìn)行*/</p><p><b>  {</b></p><p>  printf("\nError.You can only close file in yourself dir.\n");</p><

45、;p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  { </b></p><p>  k=ExistD(username);</p><p>  fo

46、r(j=0;j<fcount[k];j++)/*列出已經(jīng)打開的文件*/</p><p><b>  {</b></p><p>  if(ifopen[k][j].ifopen==1)//如果文件是打開的</p><p>  printf("%15s",ufd[k]->ufdfile[j].fname);<

47、/p><p><b>  }</b></p><p>  printf("\nPlease input FileName:");</p><p>  gets(fname);//從鍵盤上讀入所要關(guān)閉的文件</p><p>  ltrim(rtrim(fname));</p><p>

48、;  i=ExistF(fname);//獲取文件編號(hào)</p><p><b>  if (i>=0)</b></p><p><b>  {</b></p><p>  ifopen[k][i].ifopen=0;/*關(guān)閉文件*/</p><p>  printf("\n \

49、9;%s\' closed successfully\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p>  else//所要關(guān)閉的文件不存在</p><p><b>  {</b></p>&l

50、t;p>  printf("\nError. \'%s\' dose not exist.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>&l

51、t;b>  }</b></p><p><b>  4 Write函數(shù)</b></p><p>  void WriteF() /*Write File*/</p><p><b>  {</b></p><p>  int i,k,n=0;</p><p>

52、;  int length;</p><p>  char fname[MAXNAME],values[1000];</p><p>  char str[255],str1[255],c;</p><p>  if (strcmp(strupr(ltrim(rtrim(dirname))),"")==0) //只能寫自己目錄下的文件</p

53、><p><b>  {</b></p><p>  printf("\nError.Please convert to ufd dir before write.\n");</p><p>  wgetchar=1;</p><p><b>  return;</b></p&

54、gt;<p><b>  }</b></p><p>  printf("\nCaution:Open file first\n");</p><p>  printf("Opened File(s) List:\n");</p><p>  k=ExistD(dirname);//獲取目錄

55、編號(hào)</p><p>  for(i=0;i<fcount[k];i++)/*列出可以寫的文件*/</p><p><b>  {</b></p><p>  if(ifopen[k][i].ifopen==1)//如果文件是打開的</p><p><b>  {</b></p>

56、<p>  printf("%15s",ufd[k]->ufdfile[i].fname);</p><p><b>  n++;</b></p><p><b>  }</b></p><p>  if((n%4==0)&&(n!=0)) printf("\

57、n");</p><p><b>  }</b></p><p>  printf("\n%d files openned.\n",n);</p><p>  if (n==0) wgetchar=1;//沒有打開的文件</p><p><b>  if(n!=0)</b&g

58、t;</p><p><b>  {</b></p><p>  printf("\nPlease input FileName:");</p><p>  gets(fname);//從鍵盤獲取所要寫的文件</p><p>  ltrim(rtrim(fname));</p><

59、p>  i=ExistF(fname);//獲取文件編號(hào)</p><p><b>  if(i>=0)</b></p><p><b>  {</b></p><p>  if(ifopen[k][i].ifopen==1)//如果文件是打開的</p><p><b>  {&

60、lt;/b></p><p>  if((ifopen[k][i].openmode==1) ||(ifopen[k][i].openmode==2))//文件是只寫,或者是可讀可寫的</p><p><b>  {</b></p><p>  itoa(ufd[k]->ufdfile[i].fpaddr,str,10);//獲取文

61、件對應(yīng)的物理地址</p><p>  strcpy(str1,"file");</p><p>  strcat(str1,str);</p><p>  strcpy(str,"d:\\osfile\\file\\");</p><p>  strcat(str,str1);</p>&

62、lt;p>  strcat(str,".txt");</p><p>  fp_file=fopen(str,"ab");//以二進(jìn)制只寫的形式打開,每次將內(nèi)容添加到文件末尾接著上一次內(nèi)容</p><p>  length=WriteF1();</p><p>  ufd[k]->ufdfile[i].flengt

63、h=ufd[k]->ufdfile[i].flength+length;//計(jì)算總長度</p><p>  printf("\n\n%d Length.\n",ufd[k]->ufdfile[i].flength);</p><p>  printf("\n\nYou have write file successfully!!");&l

64、t;/p><p>  fclose(fp_file);</p><p>  wgetchar=0;</p><p><b>  }</b></p><p>  else if(ifopen[k][i].openmode==0)//文件是只讀的</p><p><b>  {</b>

65、;</p><p>  printf("\nError.\'%s\' has been opened with READ ONLY mode. It isn\'t write.\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p>

66、<p>  else//文件是保護(hù)的</p><p><b>  {</b></p><p>  printf("\nError.\'%s\' has been opened with PROTECT mode. It isn\'t write.\n",fname);</p><p> 

67、 wgetchar=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else //文件是關(guān)閉的</p><p><b>  {</b></p><p>  printf("\nError

68、.\'%s\' is in closing status. Please open it before write\n",fname);</p><p>  wgetchar=1;</p><p><b>  }</b></p><p><b>  }</b></p><p&g

69、t;  else //所指定的文件不存在</p><p><b>  {</b></p><p>  printf("\nError. \'%s\' does not exist.\n",fname);</p><p>  wgetchar=1;</p><p><b>  

70、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  【程序流程設(shè)計(jì)】</b></p><p><b>  總的功能結(jié)構(gòu)圖:</b></p><p>  

71、部分子模塊程序流程圖</p><p> ?。?)打開命令的程序流程圖:</p><p>  (2)關(guān)閉命令的程序流程圖:</p><p> ?。?)寫命令的程序流程圖:</p><p> ?。?)刪除命令的程序流程圖:</p><p><b>  【測試結(jié)果】</b></p><

72、;p><b>  1 刪除文件</b></p><p>  2 打開的文件不能刪除</p><p>  3 打開文件,其中已經(jīng)打開的文件不能再次打開</p><p><b>  3 關(guān)閉文件</b></p><p>  4 寫文件,其中只有打開了文件才能寫入</p><p&

73、gt;<b>  5 寫文件</b></p><p>  6 只讀文件和保護(hù)文件不能寫入</p><p><b>  7 其他函數(shù)</b></p><p><b>  【參考文獻(xiàn)】</b></p><p>  計(jì)算機(jī)操作系統(tǒng),西安電子科技大學(xué)出版社,方敏主編,2004.8<

74、;/p><p>  部分函數(shù)含義引用于msdn.microsoft.com</p><p><b>  【源程序清單】</b></p><p>  #include "stdio.h"</p><p>  #include "string.h"</p><p>

75、  #include "conio.h"</p><p>  #include "stdlib.h"</p><p>  #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/</p><p>  #define MAXCHILD 50 /*

76、the largest child每個(gè)用戶名下最多有50個(gè)文件*/</p><p>  #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/</p><p>  typedef struct /*the structure of OSFILE定義主文件*/</p><p><b>  {<

77、/b></p><p>  int fpaddr; /*file physical address*/</p><p>  int flength; /*file length*/</p><p>  int fmode; /*file mode:0-Read Only;1-Write Onl

78、y;2-Read and Write; 3-Protect;*/</p><p>  char fname[MAXNAME]; /*file name*/</p><p><b>  } OSFILE;</b></p><p>  typedef struct /*the structure of OSUFD定義用戶文件目

79、錄*/</p><p><b>  {</b></p><p>  char ufdname[MAXNAME]; /*ufd name*/</p><p>  OSFILE ufdfile[MAXCHILD]; /*ufd own file*/</p><p><b>  }OSUFD;</b&g

80、t;</p><p>  typedef struct /*the structure of OSUFD'LOGIN定義登陸*/</p><p><b>  {</b></p><p>  char ufdname[MAXNAME]; /*ufd name*/</p><p>  char ufdp

81、word[8]; /*ufd password*/</p><p>  } OSUFD_LOGIN;</p><p>  typedef struct /*file open mode定義操作方式*/</p><p><b>  {</b></p><p>  int ifopen;

82、 /*ifopen:0-close,1-open*/</p><p>  int openmode; /*0-read only,1-write only,2-read and write,3-protect*/</p><p>  }OSUFD_OPENMODE;</p><p>  void LoginF(); /*LOGIN FileSystem*/&l

83、t;/p><p>  void DirF(); /*Dir FileSystem*/</p><p>  void CreateF(); /*Create File*/</p><p>  void DeleteF(); /*Delete File*/</p><p>  void ModifyFM(); /*Modify FileMode*

84、/</p><p>  void OpenF(); /*Open File*/</p><p>  void CloseF(); /*Close File*/</p><p>  void ReadF(); /*Read File*/</p><p>  void WriteF(); /*Write File*/</p>&

85、lt;p>  void QuitF(); /*Quit FileSystem*/</p><p>  void CdF(); /*Change Dir*/</p><p>  void help();</p><p>  char *rtrim(char *str); /*remove the trailing blanks.*/</p>&

86、lt;p>  char *ltrim(char *str); /*remove the heading blanks.*/</p><p>  void InputPW(char *password); /*input password,use '*' replace*/</p><p>  int ExistD(char *dirname); /*Whethe

87、r DirName Exist,Exist-i,Not Exist-0*/</p><p>  int WriteF1(); /*write file*/</p><p>  int ExistF(char *filename); /*Whether FileName Exist,Exist-i,Not Exist-0*/</p><p>  void SetPA

88、No(int RorW); /*Set physical address num*/</p><p>  int FindPANo(); /*find out physical address num*/</p><p>  int ucount=0; /*the count of mfd's ufds用戶數(shù)*/</p><p>  int fcoun

89、t[MAXCHILD]; /*the count of ufd's files子文件數(shù)*/</p><p>  int loginsuc=0; /*whether login successfully登陸成功*/</p><p>  char username[MAXNAME]; /*record login user's name22用戶名*/</p>

90、<p>  char dirname[MAXNAME];/*record current directory使用的用戶目錄*/</p><p>  int fpaddrno[MAX]; /*record file physical address num物?理地址號(hào),存放自己所創(chuàng)建的所有文件的地址*/</p><p>  int wgetchar; /*whether getc

91、har()*/</p><p>  OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/</p><p>  OSUFD_LOGIN ufd_lp;//用戶登錄結(jié)構(gòu)體類型的變量</p><p>  OSUFD_OPENMODE ifopen[MAXCHILD][MAXCHILD]; /*record file open/

92、close*/</p><p>  FILE *fp_mfd,*fp_ufd,*fp_file_p,*fp_file;//FILE 是變量類型,實(shí)際上是語言定義的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu),用于文件</p><p>  void clrscr()/*清屏*/</p><p><b>  {</b></p><p>  system(&

93、quot;cls");</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  int i,choice1;</p><p>  char choice[50]; /*choi

94、ce operation:dir,create,delete,open,delete,modify,read,write*/</p><p>  int choiceend=1; /*whether choice end*/</p><p>  //fopen標(biāo)準(zhǔn)函數(shù),打開文件msd.txt,打開一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù),送返指針,指向FILE類型對象。</p><

95、;p>  if((fp_mfd=fopen("d:\\osfile\\mfd.txt","rb"))==NULL)</p><p><b>  {</b></p><p>  fp_mfd=fopen("d:\\osfile\\mfd.txt","wb");//打開一個(gè)二進(jìn)制文件,只

96、允許寫數(shù)據(jù)</p><p>  fclose(fp_mfd);//關(guān)閉一個(gè)流</p><p><b>  }</b></p><p>  for(i=0;i<MAX;i++) fpaddrno[i]=0;</p><p>  clrscr(); /*clear screen*/</p><p

97、>  LoginF(); /*user login*/</p><p>  if(loginsuc==1) /*Login Successfully*/</p><p><b>  {</b></p><p><b>  while (1)</b></p><p><b>  

98、{</b></p><p>  wgetchar=0;</p><p>  if (choiceend==1)</p><p>  printf("\n\nd:\\%s>",strupr(dirname));//表示以字符串型輸出</p><p><b>  else </b><

99、;/p><p>  printf("Bad command or file name.Choose help\nd:\\%s>",strupr(dirname));//strupr-變?yōu)榇髮懽帜?lt;/p><p>  gets(choice);</p><p>  strcpy(choice,ltrim(rtrim(strlwr(choice))

100、));//strlwr將字符串轉(zhuǎn)換為小寫形式,strcpy(dest,char)復(fù)制</p><p>  //ltrim(rtrim())去掉輸入用戶名的頭部和尾部空格</p><p>  if (strcmp(choice,"dir")==0) choice1=1;//strcmp相同為0</p><p>  else if(strcmp(ch

101、oice,"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><p>  

102、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;</p>

103、<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) choice1=10

104、;</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><p>  swi

105、tch(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>  case

106、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();break;<

107、;/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=1;if (!wget

108、char) 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;</p>&l

109、t;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>

110、;  }</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  printf("\nAccess denied.");</p><p><b>  }</b></p>

111、<p>  char *rtrim(char *str) /*remove the trailing blanks.去掉登陸用戶名的尾空格*/</p><p><b>  {</b></p><p>  int n=strlen(str)-1;</p><p>  while(n>=0)</p><p>

112、;<b>  {</b></p><p>  if(*(str+n)!=' ')</p><p><b>  {</b></p><p>  *(str+n+1)='\0';</p><p><b>  break;</b></p>

113、<p><b>  }</b></p><p><b>  else n--;</b></p><p><b>  }</b></p><p>  if (n<0) str[0]='\0';</p><p>  return str;</

114、p><p><b>  }</b></p><p>  char *ltrim(char *str) /*remove the heading blanks.去掉登陸用戶名的頭空格*/</p><p><b>  {</b></p><p>  strrev(str);//字符的順序顛倒</p&g

115、t;<p>  rtrim(str);</p><p>  strrev(str);</p><p>  return str;</p><p><b>  }</b></p><p>  void SetPANo(int RorW) /*Set physical address num,0-read,1

116、-write物理地址*/</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  if (RorW==0)</p><p><b>  {</b></p><p>  if((fp_file_p=

117、fopen("d:\\osfile\\file\\file_p.txt","rb"))==NULL)//只讀</p><p><b>  {</b></p><p>  fp_file_p=fopen("d:\\osfile\\file\\file_p.txt","wb");//只寫<

118、;/p><p>  fclose(fp_file_p);</p><p><b>  }</b></p><p>  fp_file_p=fopen("d:\\osfile\\file\\file_p.txt","rb");//只讀</p><p>  //fread讀數(shù)據(jù)(輸入地址,

119、大小,個(gè)數(shù),提供數(shù)據(jù)的文件),sizeof是內(nèi)存空間的大小不是長度</p><p>  for(i=0;fread(&j,sizeof(int),1,fp_file_p)!=0;i++)</p><p>  fpaddrno[j]=1;</p><p><b>  }</b></p><p><b> 

120、 else</b></p><p><b>  {</b></p><p>  fp_file_p=fopen("d:\\osfile\\file\\file_p.txt","wb");//只寫</p><p>  for(i=0;i<MAX;i++)</p><p&

121、gt;  if (fpaddrno[i]==1)</p><p>  fwrite(&i,sizeof(int),1,fp_file_p);//fwrite寫數(shù)據(jù)輸出地址,字節(jié)數(shù),個(gè)數(shù),目標(biāo)文件)</p><p><b>  }</b></p><p>  fclose(fp_file_p);</p><p>&

122、lt;b>  }</b></p><p>  void InputPW(char *password) /*input password,use '*' replace*/</p><p><b>  {</b></p><p><b>  int j;</b></p>&

123、lt;p>  for(j=0;j<=7;j++)</p><p><b>  {</b></p><p>  password[j]=getch();//gerch()返回從鍵盤上讀取到的字符</p><p>  if ((int)(password[j])!=13)</p><p><b>  {

124、</b></p><p>  if((int)(password[j])!=8)</p><p>  putchar('*');//輸出一個(gè)字符</p><p><b>  else</b></p><p><b>  {</b></p><p>

125、<b>  if (j>0)</b></p><p><b>  {</b></p><p><b>  j--;</b></p><p>  putchar('\b');putchar(' ');putchar('\b');</p>

126、<p><b>  }</b></p><p><b>  else j--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></

127、p><p><b>  {</b></p><p>  password[j]='\0';</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b>

128、;</p><p>  password[j]='\0';</p><p><b>  }</b></p><p>  int ExistD(char *dirname) /*Whether DirName Exist,Exist-i,Not Exist-(-1)*/</p><p><b>

129、  {</b></p><p><b>  int i;</b></p><p>  int exist=0;</p><p>  for(i=0;i<ucount;i++)</p><p>  if (strcmp(strupr(ufd[i]->ufdname),strupr(dirname))

130、==0)</p><p><b>  {</b></p><p><b>  exist=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (exist

131、) return(i);</p><p>  else return(-1);</p><p><b>  }</b></p><p>  int ExistF(char *filename) /*Whether FileName Exist,Exist-i,Not Exist-(-1)*/</p><p><b

132、>  {</b></p><p><b>  int i,j;</b></p><p>  int exist=0;</p><p>  j=ExistD(dirname);</p><p>  for(i=0;i<fcount[j];i++)</p><p>  if (

133、strcmp(strupr(ufd[j]->ufdfile[i].fname),strupr(filename))==0)</p><p><b>  {</b></p><p><b>  exist=1;</b></p><p><b>  break;</b></p><

134、;p><b>  }</b></p><p>  if (exist) return(i);</p><p>  else return(-1);</p><p><b>  }</b></p><p>  int FindPANo() /*find out physical address

135、 num*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<MAX;i++)</p><p>  if (fpaddrno[i]==0) </p><p><b>  {<

136、;/b></p><p>  fpaddrno[i]=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (i<MAX) return(i);</p><p>  else return(-1)

137、;</p><p><b>  }</b></p><p>  int WriteF1() /*write file*/</p><p><b>  {</b></p><p>  int length=0;</p><p><b>  char c;</b

138、></p><p>  printf("Please input text(\'#\' stands for end):\n");</p><p>  while((c=getchar())!='#')</p><p><b>  {</b></p><p>  

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論