基于Linux的模擬文件系統的設計實現_第1頁
基于Linux的模擬文件系統的設計實現_第2頁
基于Linux的模擬文件系統的設計實現_第3頁
基于Linux的模擬文件系統的設計實現_第4頁
基于Linux的模擬文件系統的設計實現_第5頁
免費預覽已結束,剩余19頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中北大學操作系統課程設計說明書學院、系:軟件學院專 業:軟件工程學生姓名: 戴國鵬 學號: 1121011532設計題目: 基于Linux的模擬文件系統的設計與實現起迄日期:2013年11月22日-2013年12月6日指導教師:李玉蓉2013年12月6日1 .需求分析(1)設計目的:模擬文文件管理是操作系統的重要功能之一。用高級語言編寫和調試一個簡單的文件系統, 件管理的工作過程。從而加深學生對文件系統內部功能和內部實現的理解和認識。(2)基本功能:主要包括:改變目錄(CD,創建目錄(MD,顯示目錄(DIR),刪除目錄(RD,打開全部 文件(openall ),打開單個文件(open),建立一

2、個文件(create ),刪除一個文件(delete ), 寫文件(write ),讀文件(read),改文件的保護碼(change),退出(exit )等。(3)設計要求:設計一個10個用戶的文件系統。每個用戶最多可以保存10個文件,一次運行用戶可打開多個文件。程序采用二級文件目錄。(即設置主目錄(MFD和用戶文件目錄(UFD)。另外,可打開文件設置指針。為了方便實現,對文件的讀寫作了簡化。在執行讀寫命令時,只需改讀寫指針。并不進行實際的讀寫操作。2 .總體設計2.1 數據結構struck filechar name10;int code;/保護碼int size;char pwrite;/

3、讀寫指針;struct userchar name10;struct file *list;目錄指針;2.2 主要函數聲明void running。;void delet();void write();void open();Word資料void close();void bye();void read();void create();void input();2.3模塊結構圖Main函數0巖鳥.一3 .詳細設計3.1 模塊及功能說明3.1.1 input() 模塊功能:進入文件系統。3.1.2 running。模塊功能:選擇相應的操作。3.1.3 bye()模塊功能:退出文件系統函數 bye

4、()。3.1.4 create()模塊功能:創建文件。3.1.5 open()模塊功能:打開文件。3.1.6 close()模塊功能:關閉文件。3.1.7 write()模塊功能:寫文件(需要先打開文件)。3.1.8 read() 模塊功能:讀文件(需要先打開文件)。3.1.9 9 delet()模塊功能:刪除文件。3.2 模塊代碼3.2.1 main()模塊int main() input();running。;return 0;3.2.2 input()模塊void input() char name;int i;printf("n*n");*(input digita

5、lprintf(" Please choose the following usernamen");printf("1.one 2.two 3.three 4.four 5.fine 6.six 7.seven 8.eigh9.nine 0.ten n");printf(”*nn");printf("Please input username:");scanf("%s",&name); switch(name) case'1':for(i=0;i<10;i+)UFDi=one

6、i;MFD0=use1;running();break; case'2':for(i=0;i<10;i+)UFDi=twoi;MFD0=use1;running();break; case'3':for(i=0;i<10;i+)UFDi=threei;MFD0=use2;running();break; case'4':for(i=0;i<10;i+)UFDi=fouri;MFD0=use3;running();break; case'5':for(i=0;i<10;i+)UFDi=finei;MFD0=u

7、se4;running();break; case'6':for(i=0;i<10;i+)UFDi=sixi;MFD0=use5;running();break; case'7':for(i=0;i<10;i+)UFDi=seveni;MFD0=use6;running();break; case'8':for(i=0;i<10;i+)UFDi=eighti;MFD0=use7;running();break; case'9':for(i=0;i<10;i+)UFDi=ninei;MFD0=use8;run

8、ning();break; case'0':for(i=0;i<10;i+)UFDi=teni;MFD0=use9;running();break; default : printf("Enter the user name wrong!n"); input(); 3.2.3 running。 模塊 void running。 char order;int i;printf("n*n");printf("The user all the files below: n");for(i=0;i<10;i+)pr

9、intf("%s",UFD);printf("t");printf("n*n");printf(Choose option(input code ) : n");printf("c-create d-delete o-open s-close r-read w-write b-bye t.exit R Re-election user ) n");printf("n*n");printf("Input commandin');scanf("%s&

10、quot;,&order);switch(order) case 'c' : create();break;case 'd' :delet();break;case 'o' :open();break;case 's' :close();break;case 'r' :read();break;case 'w' :write();break;case 'b' :bye();break;case 't' : input();break;default : pri

11、ntf("Input error!nn");running。;4 .心得體會操作系統是計算機科學與技術專業中的一門重要基礎課,目的是讓我們了解操作系統的基本概念,理解計算機系統的資源如何組織,操作系統如何有效地管理這些系統資源,用戶如何通過操作系統與計算機系統打交道。通過課程設計,可以進一步理解在計算機系統上運行的其它各類操作系統,并懂得在操作系統的支持下建立自己的應用系統。 操作系統課程設計, 對于訓練我們掌握程序設計、 熟 悉上機操作和程序調試技術都有重要作用。 重點培養我們的思維能力、創新能力和排錯能力。通過課程設計,進一步融會貫通教材內容,掌握程序各功能模塊的工作原

12、理,相互聯系和來龍去脈,完整地建立系統的概念。激發我的學習熱情和主動性,培養我的獨立工作能力, 在實踐活動中,將所學知識綜合運用,增長才干,并積累經驗。對編程語言又有了更深一層次的認識,并對編程能力有所加強, 但還是很多的不足有待改進, 對于編程來說還需要大量 的實踐,才能在發現問題和解決問題中前進與提高。5 .附錄:源代碼#include <stdlib.h>#include <stdio.h>#include <string.h>#define NULL 0int count=0;struct filechar name10;int code;int s

13、ize;char pwrite;struct userchar name10;struct file *list;struct file one10="a1",0,10,0,"a2”210,0,"a3”,1,10,0,"a4",2,10,0,"a5”,2,10,0,"a6”,2,10,0,"a7”,1,10,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file two10="b1",0,10

14、,0,"b2",2,10,0,"b3",1,10,0,"b4”210,0,"b5”210,0,"b6”210,0,"b7”210,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file three10="c1",0,10,0,"c2”210,0,"c3”,1,10,0, "c4",2,10,0,"c5",2,10,0,"c6"

15、;,2,10,0,"c7",1,10,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file four10="d1",0,10,0,"d2",2,10,0,"d3",1,10,0, "d4",2,10,0,"d5",2,10,0,"d6",2,10,0,"d7",1,10,0,"0",0,0,0, "0"

16、,0,0,0,"0",0,0,0;struct file fine10="e1",0,10,0,"e2",2,10,0,"e3",1,10,0,"e4",2,10,0,"e5”,2,10,0,"e6”,2,10,0,"e7”,1,10,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file six10="f1",0,10,0,"f2"

17、,2,10,0,"f3",1,10,0,"f4",2,10,0,"f5",2,10,0,"f6",2,10,0,"f7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file seven10="g1",0,10,0,"g2",2,10,0,"g3",1,10,0, "g4"210,0"g5"21

18、0,0"g6"210,0"g7",1,10,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file eight10="h1",0,10,0,"h2",2,10,0,"h3",1,10,0, "h4",2,10,0,"h5",2,10,0,"h6",2,10,0,"h7",1,10,0,"0",0,0,0,

19、 "0",0,0,0,"0",0,0,0;struct file nine10="j1",0,10,0,"j2",2,10,0,"j3",1,10,0,"j4",2,10,0,"j5",2,10,0,"j6",2,10,0,"j7",1,10,0,"0",0,0,0,"0",0,0,0,"0",0,0,0;struct file ten10="k1

20、",0,10,0,"k2",2,10,0,"k3",1,10,0,"k4",2,10,0,"k5",2,10,0,"k6",2,10,0,"k7",1,10,0,"0",0,0,0, "0",0,0,0,"0",0,0,0;struct file UFD10;filestructAFD5="0",0,0,0,"0",0,0,0,"0",0,0,0,

21、"0",0,0,0,"0",0,0,0;userstruct use10="number1",one,"number2",two,"number3",three,"number4",four,"number5",fine,"number6",six,"number7",seven,"number8",eight,"number9",nine,"number10&quo

22、t;,ten;struct user MFD1="0",0;void running。;void delet();void write();void open();void close();void bye();void read();void create。;void input();int main() input();running。;return 0;void running() char order;int i;*n,);printf("The user all the files below:n");for(i=0;i<10;i+)pr

23、intf("%s",UFD);printf("t");printf("n*n");printf(printf("nChoose option<input code>: n");printf("c-create d-delete o-open s-close r-read w-write b-bye t.exit<Re-election user> n");*n");printf("Input command:n");scanf(&

24、quot;%s",&order);switch(order) case 'c' : create();break;case 'd' :delet();break;case 'o' :open();break;case 's' :close();break;case 'r' :read();break;case 'w' :write();break;case 'b' :bye();break;case 't' :input();break;defaul

25、t :printf("Input error!nn");running();void delet() char name10;int i,flag;do printf("Input file name: nn");scanf("%s",&name);flag=0;for(i=0;i<10;i+) if(strcmp(UFD,name)flag=1;else flag=0;strcpy(UFD,"0");UFDi.code=0;UFDi.pwrite=0;UFDi.size=0;

26、printf("Delete success!n");break;Word資料if(flag=1)printf("Without this file,please enter again!n");while(flag=1);printf("n");running。;void open() char name10;int i,j,flag;if(count=5) printf("Run queue is full!n");running。;else do printf("Input file name:n&

27、quot;);scanf("%s",&name);flag=0;for(i=0;i<10;i+) if(strcmp(UFD,name)flag=1;else flag=0;break;Word資料if(flag=1)printf("Without this file,please enter again!n");while(flag=1);for(j=0;j<5;j+) if(strcmp(AFD,name)flag=1;else flag=0;break;if(flag=1)for(j=0;j<5;j

28、+) if(!strcmp(AFD,"0") AFDj=UFDi;printf("The file has been opend!n");count+;break;elseprintf("The file has been opended in the queue!nn");running。;void close() char name10;int j,flag;printf("Input file name: n");scanf("%s",&name);flag=0;for

29、(j=0;j<5;j+) if(strcmp(AFD,name) flag=1; else flag=0;strcpy(AFD,"0");AFDj.code=0;AFDj.pwrite=0;AFDj.size=0;printf("The file has been closed in the run queue!n"); break;if(flag=1)operateprintf("Runqueue without the open file ,pleaseagain!nn");running。;void

30、 bye() int i,j;for(i=0;i<5;i+) for(j=0;j<10;j+) if(!strcmp(AFD,UFD) UFDi=AFDi;break;printf("The saved file directory!n");printf("End of the operation。");exit(0);void read() char name10;int j,flag=0;printf("Input file name: n");scanf("%s",&

31、;name);for(j=0;j<5;j+)if(!strcmp(AFD,name) flag=1; break;if(flag=1)if(AFDj.code=0|AFDj.code=2) AFDj.pwrite='R'printf("The state of the files are read!n");else printf("No permission to write this file!n"); elsefileprintf("Run queue without this file,please op

32、en thefirst!n");printf("n"); running。;void write() char name10;int j,flag=0;printf("Input file name: n");scanf("%s",&name);for(j=0;j<5;j+)if(!strcmp(AFD,name) flag=1; break;if(flag=1)if(AFDj.code=1|AFDj.code=2) AFDj.pwrite=W;printf("The state of t

33、he files are write!n");else printf("No permission to write this file!n"); elseprintf("Run queue without this file,please open the filefirst!n");printf("n");running。; void create。 char name10;int i,j=0,flag;for(i=0;i<10;i+) if(!strcmp(UFD,"0") j+;

34、if(j>9) printf("The folder is full,please delete!n"); running。; else do printf("Input file name; n");scanf("%s",&name);flag=0;for(i=0;i<10;i+)Word資料 if(!strcmp(UFD,name) printf("File name duplication,please enter again!n");flag=1;break;while(fl

35、ag=1);for(i=0;i<10;i+) if(!strcmp(UFD,"0") strcpy(UFD,name);doprintf("Please enter the protected codechoose0-2,0-Read1-Write 2-Read or Write:n");scanf("%d”,&UFDi.code);if(UFDi.code!=0&&UFDi.code!=1&&UFDi.code!=2)printf("Inputerror,input protection code again!n");while(UFDi.code!=0&&UFDi.code!=1&&UFDi.code!=2);printf("Please enter the file sizechoose the digital:n");scanf("%d”,&UFDi.size);printf("The file has been established!");

溫馨提示

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

評論

0/150

提交評論