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

下載本文檔

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

文檔簡介

1、<p><b>  操作系統(tǒng)課程設(shè)計</b></p><p><b>  模擬文件系統(tǒng)</b></p><p>  學(xué) 院: 計算機(jī)科學(xué)技術(shù) </p><p>  專 業(yè): 計算機(jī)科學(xué)與技術(shù)(工)</p><p>  班 級: 計10-

2、1班 </p><p>  姓 名: </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師: </p><p>  2013年07月16日</p><p>  《操作系統(tǒng)原理》課程設(shè)計任務(wù)書<

3、/p><p> ?。ㄓ嬎銠C(jī)科學(xué)與技術(shù)專業(yè) 10-1)</p><p>  一、課程設(shè)計題目(任選一個題目)</p><p><b>  1.模擬進(jìn)程管理</b></p><p><b>  2.模擬處理機(jī)調(diào)度</b></p><p><b>  3.模擬存儲器管理<

4、;/b></p><p><b>  4.模擬文件系統(tǒng)</b></p><p><b>  5.模擬磁盤調(diào)度</b></p><p><b>  二、設(shè)計目的和要求</b></p><p><b>  1.設(shè)計目的</b></p>&l

5、t;p>  《操作系統(tǒng)原理》課程設(shè)計是網(wǎng)絡(luò)工程專業(yè)實踐性環(huán)節(jié)之一,是學(xué)習(xí)完《操作系統(tǒng)原理》課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于加深對操作系統(tǒng)的理論、方法和基礎(chǔ)知識的理解,掌握操作系統(tǒng)結(jié)構(gòu)、實現(xiàn)機(jī)理和各種典型算法,系統(tǒng)地了解操作系統(tǒng)的設(shè)計和實現(xiàn)思路,培養(yǎng)學(xué)生的系統(tǒng)設(shè)計能力,并了解操作系統(tǒng)的發(fā)展動向和趨勢。</p><p><b>  2.基本要求:</b></p>

6、<p>  (1)選擇課程設(shè)計題目中的一個課題,獨(dú)立完成。</p><p>  (2)良好的溝通和合作能力</p><p>  (3)充分運(yùn)用前序課所學(xué)的軟件工程、程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)等相關(guān)知識</p><p>  (4)充分運(yùn)用調(diào)試和排錯技術(shù)</p><p>  (5)簡單測試驅(qū)動模塊和樁模塊的編寫 </p><

7、p>  (6)查閱相關(guān)資料,自學(xué)具體課題中涉及到的新知識。</p><p>  (7)課題完成后必須按要求提交課程設(shè)計報告,格式規(guī)范,內(nèi)容詳實。</p><p><b>  三、設(shè)計內(nèi)容及步驟</b></p><p>  1.根據(jù)設(shè)計題目的要求,充分地分析和理解問題,明確問題要求做什么。</p><p>  2.根

8、據(jù)實現(xiàn)的功能,劃分出合理的模塊,明確模塊間的關(guān)系。</p><p>  3.編程實現(xiàn)所設(shè)計的模塊。</p><p>  4.程序調(diào)試與測試。采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設(shè)計測試數(shù)據(jù)確定疑點(diǎn),通過修改程序來證實它或繞過它。調(diào)試正確后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果;</p><p>  5.

9、結(jié)果分析。程序運(yùn)行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。</p><p><b>  目錄</b></p><p>  1.課程設(shè)計的目的 1</p><p>  2.課程設(shè)計的要求 1</p><p><b>  3.需求分析1</b></p><p

10、>  3.1問題描述 1</p><p>  3.2數(shù)據(jù)結(jié)構(gòu) 1</p><p>  3.2.1 類 1</p><p>  3.2.2 結(jié)構(gòu) 2</p><p>  3.2.3 函數(shù) 2</p><p>  3.3系統(tǒng)運(yùn)行環(huán)境 2</p><p><b>  4.概

11、要設(shè)計 3</b></p><p>  4.1創(chuàng)建文件操作3</p><p>  4.2刪除文件操作 4</p><p>  4.3查看文件塊號 4</p><p><b>  5 詳細(xì)設(shè)計4</b></p><p>  5.1創(chuàng)建文件 4</p><p

12、>  5.2刪除文件 7</p><p>  5.3查看文件塊號10</p><p><b>  6.總結(jié) 12</b></p><p><b>  參考文獻(xiàn) 14</b></p><p><b>  附錄 15</b></p><p>

13、<b>  1.課程設(shè)計的目的</b></p><p>  掌握模擬文件系統(tǒng)的設(shè)計方法,具備初步的獨(dú)立分析和設(shè)計能力。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能。</p><p>  提高綜合運(yùn)用所學(xué)的理論知識和方法以及獨(dú)立分析和解決問題的能力。</p><p>  訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)的一般規(guī)范進(jìn)行軟件開發(fā)

14、,培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。理論聯(lián)系實踐提高計算機(jī)專業(yè)綜合水平。</p><p><b>  2.課程設(shè)計的要求</b></p><p>  將所要設(shè)計的文件系統(tǒng)確定化,并設(shè)計出該確定化的模擬文件系統(tǒng)程序,要求程序有效不出現(xiàn)死循環(huán),具有實際應(yīng)用意義。按操作由鍵盤輸入所要執(zhí)行的命令的代號,并輸入相應(yīng)要求的內(nèi)容。根據(jù)命令執(zhí)行,并輸出結(jié)果。</p&

15、gt;<p><b>  3.需求分析</b></p><p><b>  3.1問題描述</b></p><p><b>  模擬文件系統(tǒng)</b></p><p>  實驗內(nèi)容和步驟:建立一個用戶接口,其功能包括能根據(jù)用戶的選擇,運(yùn)行相應(yīng)的程序模塊,實現(xiàn)諸如改名文件、刪除文件、顯示文件

16、等功能。</p><p><b>  3.2數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  3.2.1 類</b></p><p>  class Cuser</p><p><b>  3.2.2結(jié)構(gòu)</b></p><p>  typedef stru

17、ct UFD//存儲文件信息</p><p><b>  {</b></p><p>  char name[10];</p><p>  int attribute;//文件屬性</p><p>  int length;</p><p>  int a[10];</p><

18、p>  int *p1;//一級索引</p><p>  int (*p2)[100];//二級索引</p><p>  struct UFD *next;// 指向文件鏈表中此文件結(jié)點(diǎn)的下一個結(jié)點(diǎn)</p><p><b>  }UFD;</b></p><p><b>  3.2.3 函數(shù)</b&

19、gt;</p><p>  UFD *Fhead;//文件鏈表的頭結(jié)點(diǎn)</p><p>  int dis_file();//顯示文件所占外存塊號</p><p>  int dele_file(UFD *f);//刪除文件的具體實現(xiàn)部分</p><p>  int new_file();</p><p>  int

20、open_file();</p><p>  int first_dele_file();//實現(xiàn)刪除文件的前部分工作</p><p><b>  3.3系統(tǒng)運(yùn)行環(huán)境</b></p><p>  操作系統(tǒng):Windows XP </p><p>  運(yùn)行軟件:Microsoft Visual C++ 6.0</p&

21、gt;<p><b>  4.概要設(shè)計</b></p><p><b>  4.1創(chuàng)建文件操作</b></p><p>  由于創(chuàng)建文件必須要有文件名,所以空路徑和路徑“\”在此成為錯誤。而且正因為如此,在此模塊中需要分解出文件名,再把不含文件名的路徑傳遞給“查找模塊”,其次,其中涉及了創(chuàng)建文件的操作,它包括:在找到目錄中的next

22、f中添加一項并把文件的指針指向目錄,即給文件賦值等操作。具體流程如4-1-1所示:</p><p>  圖4-1-1 創(chuàng)建文件流程圖</p><p><b>  4.2刪除文件操作</b></p><p>  刪除文件必須有文件名,所以不允許空路徑或路徑文“/”在此模塊中分解出文件名,對不含文件名的路徑進(jìn)行處理。刪除操作在找到上一級目錄后,再找

23、出上一級目錄,將之后的指針向前移一位,文件被刪除。</p><p><b>  4.3查看文件塊號</b></p><p>  文件的內(nèi)存空間為1000塊,每當(dāng)創(chuàng)建一個文件分配連續(xù)的存儲塊號給此文件,查看的時候先輸入要查詢的文件名根據(jù)用戶輸入的文件名找到此文件和相應(yīng)的塊號。</p><p><b>  5 詳細(xì)設(shè)計</b>

24、</p><p><b>  5.1創(chuàng)建文件</b></p><p>  在創(chuàng)建文件文件時要考慮文件的大小是否滿足當(dāng)前磁盤的剩余空間,只有當(dāng)希望創(chuàng)建文件的大小小于磁盤剩余空間才可創(chuàng)建。具體實現(xiàn)程序:</p><p>  int Cuse::new_file()</p><p><b>  {</b>

25、</p><p>  int i=0,j=0;</p><p><b>  UFD *p=0;</b></p><p>  p=new UFD;</p><p><b>  if(p==0)</b></p><p><b>  {</b></p&g

26、t;<p>  cout<<"內(nèi)存空間已滿,創(chuàng)建文件失??!"<<endl;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  cout<<"請輸入建立的文件的名稱,長度,屬性(0

27、:只讀,1:讀寫)"<<endl;</p><p>  cin>>p->name>>p->length>>p->attribute;</p><p>  if(p->length>disk_empty)</p><p><b>  {</b></p&g

28、t;<p>  cout<<"作業(yè)太大,當(dāng)前硬盤可用空間為:"<<disk_empty<<endl;</p><p><b>  delete p;</b></p><p><b>  return 0;</b></p><p><b>  }

29、</b></p><p>  for(i=0;i<p->length&&i<10;i++)</p><p>  for(j;j<10000;j++)</p><p>  if(disk_block[j]==0)</p><p><b>  {</b></p>

30、<p>  p->a[i]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p&

31、gt;<b>  p->p1=0;</b></p><p><b>  p->p2=0;</b></p><p>  if(p->length>10)//一級索引的實現(xiàn)</p><p><b>  {</b></p><p>  p->p1=new

32、 int[100];</p><p>  for(i=10;i<p->length&&i<110;i++)</p><p>  for(j;j<10000;j++)</p><p>  if(disk_block[j]==0)</p><p><b>  {</b></p&g

33、t;<p>  ( p->p1)[i-10]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  break;</b></p><p><b>  }</b></p>

34、;<p>  if(p->length>110)//二級索引的實現(xiàn)</p><p><b>  {</b></p><p>  p->p2=new int[100][100];</p><p>  for(i=110;i<p->length;i++)</p><p>  for

35、(j;j<10000;j++)</p><p>  if(disk_block[j]==0)</p><p><b>  {</b></p><p>  int m=(i-110)/100;</p><p>  int k=(i-110)%100;</p><p>  p->p2[m]

36、[k]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</

37、b></p><p><b>  }</b></p><p>  if(now==0)</p><p><b>  {</b></p><p>  p->next=Fhead;</p><p><b>  Fhead=p;</b></p

38、><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p->next=now->File_head;</p><p>  now->File_head=p

39、;</p><p>  DIR *h=now;</p><p>  while(h!=0)</p><p><b>  {</b></p><p>  h->length+=p->length;</p><p>  h=h->above;</p><p>

40、<b>  }</b></p><p><b>  }</b></p><p>  cout<<"文件創(chuàng)建成功!"<<endl;</p><p>  disk_empty=disk_empty-p->length;</p><p>  length+

41、=p->length;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  具體調(diào)試界面如下圖所示:</p><p><b>  圖5-1-1</b></p><p><b>

42、;  圖5-1-2</b></p><p><b>  5.2刪除文件</b></p><p><b>  具體實現(xiàn)程序:</b></p><p>  int Cuse::first_dele_file()</p><p><b>  {</b></p>

43、<p>  char temp[10];</p><p>  cout<<"請輸入你要刪除的文件名:"<<endl;</p><p>  cin>>temp;</p><p>  UFD *f=Fhead;</p><p>  UFD *above=0;</p>

44、<p>  if(now!=0)</p><p>  f=now->File_head;</p><p>  while(f!=0)</p><p><b>  { </b></p><p>  if(!strcmp(f->name,temp))</p><p>&

45、lt;b>  break;</b></p><p><b>  above=f;</b></p><p>  f=f->next;</p><p><b>  }</b></p><p><b>  if(f==0)</b></p><

46、;p><b>  {</b></p><p>  cout<<"此文件不存在!"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  disk_emp

47、ty+=f->length;</p><p>  if(now==0)</p><p><b>  {</b></p><p>  if(f==Fhead)</p><p>  Fhead=Fhead->next;</p><p><b>  else</b>&l

48、t;/p><p>  above->next=f->next;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  DIR *d=now;</p&

49、gt;<p>  while(d!=0)//修改刪除文件后各級目錄的大小</p><p><b>  {</b></p><p>  d->length-=f->length;</p><p>  d=d->above;</p><p><b>  }</b><

50、/p><p>  if(f==now->File_head)//刪除文件結(jié)點(diǎn)</p><p>  now->File_head=now->File_head->next;</p><p><b>  else</b></p><p>  above->next=f->next;</p

51、><p><b>  }</b></p><p>  length-=f->length;</p><p>  this->dele_file(f);</p><p>  cout<<"刪除成功"<<endl;</p><p><b>

52、  return 1;</b></p><p><b>  }</b></p><p>  int Cuse::dele_file(UFD *f)</p><p><b>  {</b></p><p>  int i=0,m;</p><p>  for(i=0

53、;i<10&&i<f->length;i++)</p><p><b>  { </b></p><p>  m=f->a[i];</p><p>  disk_block[m]=0;</p><p><b>  }</b></p><

54、p>  if(f->p1!=0)</p><p><b>  {</b></p><p>  for(i=10;i<110&&i<f->length;i++)</p><p><b>  {</b></p><p>  m=f->p1[i-10];

55、</p><p>  disk_block[m]=0;</p><p><b>  }</b></p><p>  delete [](f->p1);</p><p><b>  }</b></p><p>  if(f->p2!=0)</p>&l

56、t;p><b>  {</b></p><p>  for(i=110;i<f->length;i++)</p><p><b>  {</b></p><p>  m=(f->p2)[(i-110)/100][(i-110)%100];</p><p>  disk_blo

57、ck[m]=0;</p><p><b>  }</b></p><p>  delete [](f->p2);</p><p><b>  delete f;</b></p><p><b>  }</b></p><p><b>  

58、f=0;</b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  具體調(diào)試如圖5-2-1所示:</p><p><b>  圖5-2-1</b></p><p><b&

59、gt;  5.3查看文件塊號</b></p><p><b>  具體實現(xiàn)程序:</b></p><p>  int Cuse::dis_file()</p><p><b>  {</b></p><p><b>  int i;</b></p>&

60、lt;p>  char n[10];</p><p>  UFD *f=Fhead;</p><p>  if(now!=0)</p><p>  f=now->File_head;</p><p>  cout<<"請輸入你要查看的文件的名稱:"<<endl;</p>&

61、lt;p><b>  cin>>n;</b></p><p>  while(f!=0)</p><p><b>  {</b></p><p>  if(!strcmp(n,f->name))</p><p><b>  break;</b></

62、p><p>  f=f->next;</p><p><b>  }</b></p><p><b>  if(f==0)</b></p><p><b>  {</b></p><p>  cout<<"當(dāng)前目錄下沒有這個文件:

63、"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  cout<<" 此文件占用硬盤塊號如下:"<<endl;</p><p>  for(i=0;i&l

64、t;f->length&&i<10;i++)</p><p><b>  {</b></p><p>  cout<<setw(6)<<f->a[i];</p><p>  if((i+1)%10==0)</p><p>  cout<<endl;&l

65、t;/p><p><b>  }</b></p><p>  for(i=10;i<f->length&&i<110;i++)//顯示一級索引塊號</p><p><b>  {</b></p><p>  cout<<setw(6)<<f-&g

66、t;p1[i-10];</p><p>  if((i+1)%10==0)</p><p>  cout<<endl;</p><p><b>  }</b></p><p>  for(i=110;i<f->length;i++)//顯示二級索引塊號</p><p>&l

67、t;b>  {</b></p><p>  cout<<setw(6)<<f->p2[(i-110)/100][(i-110)%100];</p><p>  if((i+1)%10==0)</p><p>  cout<<endl;</p><p><b>  }<

68、/b></p><p>  cout<<endl;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  具體調(diào)試如圖5-3-1所示:</p><p><b>  圖5-3-1</

69、b></p><p><b>  6.總結(jié)</b></p><p>  本次課程設(shè)計使知道了如何定義類來實現(xiàn)相應(yīng)的功能,運(yùn)用鏈表、指針等設(shè)計出了一個簡單實用的文件管理系統(tǒng)同時也使以前所學(xué)知識得到鞏固。操作系統(tǒng)是一門將硬件功能、程序設(shè)計語言、數(shù)據(jù)結(jié)構(gòu)、算法、計算機(jī)體系結(jié)構(gòu)、軟件工程等計算機(jī)知識緊密結(jié)合在一起的學(xué)科,它將對我今后的學(xué)習(xí)和工作產(chǎn)生巨大的幫助。</

70、p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 湯小丹. 計算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,2007.5</p><p>  [2] 譚浩強(qiáng). C++程序設(shè)計. 北京:清華大學(xué)出版社,2004</p><p><b>  附錄</b></p>&

71、lt;p><b>  課設(shè)全部程序:</b></p><p>  #include "disk.h"</p><p>  #include<string.h></p><p>  #include<iostream.h></p><p>  #include<iom

72、anip.h>//</p><p>  int disk_block[10000];//</p><p>  int disk_empty;</p><p>  Cdisk::Cdisk()</p><p><b>  {</b></p><p><b>  int i=0;<

73、;/b></p><p>  char code[10]="123456";</p><p>  for(i=0;i<10000;i++)</p><p>  disk_block[i]=0;</p><p>  this->user[0].set_user("jun","1

74、23");</p><p>  disk_empty=10000;</p><p>  cout.setf(ios::left);</p><p><b>  }</b></p><p>  Cdisk::~Cdisk()</p><p><b>  {</b>&l

75、t;/p><p><b>  }</b></p><p>  int Cdisk::dele_user(int i)</p><p><b>  {</b></p><p><b>  Cuse C;</b></p><p>  C=user[i];<

76、/p><p>  user[i].dele_user();</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Cdisk::dis_disk()</p><p><b>  {</b>

77、</p><p><b>  int i=0;</b></p><p>  cout<<setw(14)<<"用戶名"<<setw(14)<<"占用空間大小"<<endl;</p><p>  for(i=0;i<5;i++)</p&

78、gt;<p>  if(user[i].get_status()==1)</p><p>  cout<<setw(14)<<user[i].get_name()<<setw(14)<<user[i].get_length()<<endl;</p><p>  cout<<"已用空間:"

79、;<<10000-disk_empty<<endl<<"剩余空間 :"<<disk_empty<<endl;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Cdisk

80、::login()</p><p><b>  {</b></p><p>  char n[10],c[10];</p><p><b>  int i;</b></p><p>  cout<<"請輸入用戶名與密碼,中間用空格隔開"<<endl;<

81、;/p><p>  cin>>n>>c;</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p><p>  if(user[i].get_status())</p><p>  if(!strcmp(n,user[i].ge

82、t_name()))</p><p>  if(!strcmp(c,user[i].get_code()))</p><p><b>  {</b></p><p>  cout<<"登陸成功!"<<endl;</p><p>  cout<<"歡迎&qu

83、ot;<<user[i].get_name()<<"登陸"<<endl;</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  else</b></p><

84、p><b>  {</b></p><p>  cout<<"密碼錯誤:"<<endl;</p><p>  return -1;</p><p><b>  }</b></p><p><b>  }</b></p>

85、;<p>  cout<<"不存在用戶"<<endl;</p><p>  return -1;</p><p><b>  }</b></p><p>  int Cdisk::set_code()</p><p><b>  {</b>&

86、lt;/p><p>  char temp1[10],temp2[10];</p><p>  cout<<"請輸入密碼:"<<endl;</p><p>  cin>>temp1;</p><p>  if(strcmp(temp1,code))</p><p>&

87、lt;b>  {</b></p><p>  cout<<"密碼錯誤!"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  while(1)

88、</b></p><p><b>  {</b></p><p>  cout<<"請輸入新密碼:"<<endl;</p><p>  cin>>temp1;</p><p>  cout<<"請再次輸入新密碼:"<

89、<endl;</p><p>  cin>>temp2;</p><p>  if(strcmp(temp1,temp2))</p><p><b>  {</b></p><p>  cout<<"密碼設(shè)置出錯!"<<endl;</p><

90、;p><b>  break;</b></p><p><b>  }</b></p><p>  cout<<"密碼設(shè)置成功!"<<endl;</p><p>  strcpy(code,temp1);</p><p><b>  }&l

91、t;/b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Cdisk::new_user()</p><p><b>  {</b></p><p>  char n[1

92、0],c[10];</p><p><b>  int i=0;</b></p><p>  for(i=0;i<5;i++)</p><p>  if(user[i].get_status()==0)</p><p><b>  break;</b></p><p>

93、<b>  if(i==5)</b></p><p><b>  {</b></p><p>  cout<<"用戶名額已滿,創(chuàng)建不成功!"<<endl;</p><p><b>  return 0;</b></p><p><

94、;b>  }</b></p><p>  user[i].set_status(1);</p><p>  cout<<"請輸入用戶名稱:"<<endl;</p><p><b>  cin>>n;</b></p><p>  cout<&l

95、t;"請輸入密碼:"<<endl;</p><p><b>  cin>>c;</b></p><p>  user[i].set_user(n,c);</p><p>  cout<<"用戶創(chuàng)建成功!"<<endl;</p><p>

96、;<b>  return 1;</b></p><p><b>  }</b></p><p>  int Cdisk::first_dele_user()</p><p><b>  {</b></p><p>  char n[10],c;</p><

97、p><b>  int i;</b></p><p>  cout<<"請輸入你要刪除的用戶的名稱:"<<endl;</p><p><b>  cin>>n;</b></p><p>  for(i=0;i<5;i++)</p><p

98、>  if(!strcmp(user[i].get_name(),n)&&user[i].get_status())</p><p><b>  break;</b></p><p><b>  if(i==5)</b></p><p><b>  {</b></p>

99、<p>  cout<<"此用戶不存在!"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  cout<<"確認(rèn)刪除此用戶?確認(rèn)請按Y,取消請按其它鍵"&

100、lt;<endl;</p><p><b>  cin>>c;</b></p><p>  if(c!='Y')</p><p><b>  {</b></p><p>  cout<<"已經(jīng)取消刪除!"<<endl;&l

101、t;/p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  this->dele_user(i);</p><p>  cout<<"用戶刪除成功!"<<endl;</p><

102、p><b>  return 1;</b></p><p><b>  }</b></p><p>  Cuse::Cuse()</p><p><b>  {</b></p><p><b>  status=0;</b></p>&

103、lt;p><b>  length=0;</b></p><p><b>  now=0;</b></p><p><b>  Fhead=0;</b></p><p><b>  Dhead=0;</b></p><p><b>  }&

104、lt;/b></p><p>  Cuse::~Cuse()</p><p><b>  {</b></p><p>  disk_empty+=length;</p><p><b>  length=0;</b></p><p>  UFD *f=Fhead;<

105、;/p><p>  DIR *d=Dhead;</p><p>  while(f!=0)</p><p><b>  {</b></p><p>  if(f->next==0)</p><p><b>  {</b></p><p>  this

106、->dele_file(f);</p><p><b>  f=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(f->next->next!=0)</p>&

107、lt;p>  f=f->next;</p><p>  this->dele_file(f->next);</p><p>  f->next=0;</p><p><b>  f=Fhead;</b></p><p><b>  }</b></p>&l

108、t;p>  while(d!=0)</p><p><b>  {</b></p><p>  if(d->next==0)</p><p><b>  {</b></p><p>  this->dele_dir(d);</p><p><b>

109、  d=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(d->next->next!=0)</p><p>  d=d->next;</p><p>  th

110、is->dele_dir(d->next);</p><p>  d->next=0;</p><p><b>  d=Dhead;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

111、;  int Cuse::new_file()</p><p><b>  {</b></p><p>  int i=0,j=0;</p><p><b>  UFD *p=0;</b></p><p>  p=new UFD;</p><p><b>  if(

112、p==0)</b></p><p><b>  {</b></p><p>  cout<<"內(nèi)存空間已滿,創(chuàng)建文件失??!"<<endl;</p><p><b>  return 1;</b></p><p><b>  }<

113、/b></p><p>  cout<<"請輸入建立的文件的名稱,長度,屬性(0:只讀,1:讀寫)"<<endl;</p><p>  cin>>p->name>>p->length>>p->attribute;</p><p>  if(p->length

114、>disk_empty)</p><p><b>  {</b></p><p>  cout<<"作業(yè)太大,當(dāng)前硬盤可用空間為:"<<disk_empty<<endl;</p><p><b>  delete p;</b></p><p&

115、gt;<b>  return 0;</b></p><p><b>  }</b></p><p>  for(i=0;i<p->length&&i<10;i++)</p><p>  for(j;j<10000;j++)</p><p>  if(disk

116、_block[j]==0)</p><p><b>  {</b></p><p>  p->a[i]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  break;</

117、b></p><p><b>  }</b></p><p><b>  p->p1=0;</b></p><p><b>  p->p2=0;</b></p><p>  if(p->length>10)//一級索引的實現(xiàn)</p>

118、<p><b>  {</b></p><p>  p->p1=new int[100];</p><p>  for(i=10;i<p->length&&i<110;i++)</p><p>  for(j;j<10000;j++)</p><p>  if(di

119、sk_block[j]==0)</p><p><b>  {</b></p><p>  ( p->p1)[i-10]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  br

120、eak;</b></p><p><b>  }</b></p><p>  if(p->length>110)//二級索引的實現(xiàn)</p><p><b>  {</b></p><p>  p->p2=new int[100][100];</p><

121、;p>  for(i=110;i<p->length;i++)</p><p>  for(j;j<10000;j++)</p><p>  if(disk_block[j]==0)</p><p><b>  {</b></p><p>  int m=(i-110)/100;</p>

122、;<p>  int k=(i-110)%100;</p><p>  p->p2[m][k]=j;</p><p>  disk_block[j]=1;</p><p><b>  j++;</b></p><p><b>  break;</b></p><

123、;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(now==0)</p><p><b>  {</b></p><p>  p->n

124、ext=Fhead;</p><p><b>  Fhead=p;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p->

125、;next=now->File_head;</p><p>  now->File_head=p;</p><p>  DIR *h=now;</p><p>  while(h!=0)</p><p><b>  {</b></p><p>  h->length+=p->

126、;length;</p><p>  h=h->above;</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"文件創(chuàng)建成功!"<<endl;</p><p> 

127、 disk_empty=disk_empty-p->length;</p><p>  length+=p->length;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Cuse::new_dir()<

128、/p><p><b>  {</b></p><p>  DIR *p,*h;</p><p>  cout<<"請輸入新目錄的名稱:"<<endl;</p><p>  p=new DIR; </p><p>  cin>>p->name

129、;</p><p>  p->Dir_head=0;</p><p>  p->length=0;</p><p>  p->File_head=0;</p><p>  if(now==0)</p><p><b>  h=Dhead;</b></p><p

130、><b>  else</b></p><p>  h=now->Dir_head;</p><p>  while(h!=0)</p><p><b>  {</b></p><p>  if(!strcmp(h->name,p->name))</p><

131、;p><b>  {</b></p><p>  cout<<"此目錄已經(jīng)存在"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  h=h->

132、next;</p><p><b>  }</b></p><p>  if(now==0)</p><p><b>  {</b></p><p>  p->above=0;</p><p>  p->next=Dhead;</p><p&g

133、t;<b>  Dhead=p;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p->above=now;</p><p&

134、gt;  p->next=now->Dir_head;</p><p>  now->Dir_head=p;</p><p><b>  }</b></p><p>  cout<<"目錄創(chuàng)建成功!"<<endl;</p><p><b>  ret

135、urn 1;</b></p><p><b>  }</b></p><p>  int Cuse::goback()</p><p><b>  {</b></p><p>  if(now==0)</p><p><b>  {</b>&

136、lt;/p><p>  cout<<"主目錄,不能再次向上"<<endl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  now=now->above;</p><

137、p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Cuse::open_dir()</p><p><b>  {</b></p><p>  char name[10];</p><p&g

138、t;<b>  DIR *p;</b></p><p>  if(now==0)</p><p><b>  p=Dhead;</b></p><p><b>  else</b></p><p>  p=now->Dir_head;</p><p&g

139、t;  cout<<"請輸入你要打開的目錄名稱:"<<endl;</p><p>  cin>>name;</p><p>  int flag=0;</p><p>  while(p!=0)</p><p><b>  {</b></p><

140、p>  if(strcmp(p->name,name)==0)</p><p><b>  {</b></p><p><b>  now=p;</b></p><p><b>  return 1;</b></p><p><b>  }</b&g

141、t;</p><p>  p=p->next;</p><p><b>  }</b></p><p>  cout<<"當(dāng)前目錄中不存在該目錄"<<endl;</p><p><b>  return 0;</b></p><p

142、><b>  }</b></p><p>  int Cuse::first_dele_file()</p><p><b>  {</b></p><p>  char temp[10];</p><p>  cout<<"請輸入你要刪除的文件名:"<&

143、lt;endl;</p><p>  cin>>temp;</p><p>  UFD *f=Fhead;</p><p>  UFD *above=0;</p><p>  if(now!=0)</p><p>  f=now->File_head;</p><p>  wh

144、ile(f!=0)</p><p><b>  { </b></p><p>  if(!strcmp(f->name,temp))</p><p><b>  break;</b></p><p><b>  above=f;</b></p><

145、;p>  f=f->next;</p><p><b>  }</b></p><p><b>  if(f==0)</b></p><p><b>  {</b></p><p>  cout<<"此文件不存在!"<<e

146、ndl;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  disk_empty+=f->length;</p><p>  if(now==0)</p><p><b>  {</b&g

147、t;</p><p>  if(f==Fhead)</p><p>  Fhead=Fhead->next;</p><p><b>  else</b></p><p>  above->next=f->next;</p><p><b>  }</b>&

148、lt;/p><p><b>  else</b></p><p><b>  {</b></p><p>  DIR *d=now;</p><p>  while(d!=0)//修改刪除文件后各級目錄的大小</p><p><b>  {</b></

149、p><p>  d->length-=f->length;</p><p>  d=d->above;</p><p><b>  }</b></p><p>  if(f==now->File_head)//刪除文件結(jié)點(diǎn)</p><p>  now->File_head

150、=now->File_head->next;</p><p><b>  else</b></p><p>  above->next=f->next;</p><p><b>  }</b></p><p>  length-=f->length;</p>

151、<p>  this->dele_file(f);</p><p>  cout<<"刪除成功"<<endl;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int

152、Cuse::dele_file(UFD *f)</p><p><b>  {</b></p><p>  int i=0,m;</p><p>  for(i=0;i<10&&i<f->length;i++)</p><p><b>  { </b></

153、p><p>  m=f->a[i];</p><p>  disk_block[m]=0;</p><p><b>  }</b></p><p>  if(f->p1!=0)</p><p><b>  {</b></p><p>  for

154、(i=10;i<110&&i<f->length;i++)</p><p><b>  {</b></p><p>  m=f->p1[i-10];</p><p>  disk_block[m]=0;</p><p><b>  }</b></p>

155、;<p>  delete [](f->p1);</p><p><b>  }</b></p><p>  if(f->p2!=0)</p><p><b>  {</b></p><p>  for(i=110;i<f->length;i++)</p&

156、gt;<p><b>  {</b></p><p>  m=(f->p2)[(i-110)/100][(i-110)%100];</p><p>  disk_block[m]=0;</p><p><b>  }</b></p><p>  delete [](f->p

157、2);</p><p><b>  delete f;</b></p><p><b>  }</b></p><p><b>  f=0;</b></p><p><b>  return 1;</b></p><p><b

158、>  }</b></p><p>  int Cuse::first_dele_dir()</p><p><b>  {</b></p><p>  char n[10];</p><p><b>  char c;</b></p><p>  DIR *

159、p,*above=0;</p><p><b>  p=Dhead;</b></p><p>  if(now!=0)</p><p>  p=now->Dir_head;</p><p>  cout<<"請輸入你要刪除的目錄的名稱:"<<endl;

160、 </p><p><b>  cin>>n;</b></p><p>  while(p!=0)</p><p><b>  {</b></p><p>  if(!strcmp(p->name,n))</p><p><b>  break;&

161、lt;/b></p><p><b>  above=p;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  if(p==0)</b></p><p><b>  

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論