操作系統-文件系統課程設計報告_第1頁
操作系統-文件系統課程設計報告_第2頁
操作系統-文件系統課程設計報告_第3頁
操作系統-文件系統課程設計報告_第4頁
操作系統-文件系統課程設計報告_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、操作系統課程設計題目名稱 多用戶多級目錄共享文件系統的實現 _學生學院 計算機學院 專業班級 10級計算機科學與技術7班 學 號 學生姓名 指導教師 劉老師 20年月 日一、 可行性分析隨著信息化進程,文件管理越來越受到重視,并且逐漸成為國內外業界研究的熱點。在現有的操作系統中,幾乎都是通過文件系統來組織和管理計算機中所存儲的程序和數據等大量的文件。在現代OS中,幾乎毫毛例外地是通過文件系統來組織和管理在計算機中存儲 和大量程序和數據的;或者說,文件系統的管理功能,是通過把它所管理的程序和數據組織成一系列文件的方法來實現的。而文件則是指具有文件名的若干相關元素的集合。元素通常是記錄,而記錄又是

2、一組有意義的數據項的集合。通過分析,可知文件系統對大多數文件的操作,器過程大致都是這樣兩步:第一步是通過檢索文件目錄來找到指定文件的屬性及其在外存上的位置;第二步是對文件實施相應的操作,如讀文件或寫文件。為了便于管理和控制文件,根據系統管理員或用戶所規定的存取控制屬性,將文件分為只讀文件、讀寫文件和只執行文件三類。而文件系統的模型主要分為三個層次,分別是對象及其屬性、對對象的操縱和管理的軟件集合、文件系統接口,其最底層的是對象及其屬性;中間層對對象進行操縱和管理的軟件集合;最高層是文件系統提供給用戶的接口。用戶通過文件系統所提供的系統調用實施對文件的操作,如創建文件、刪除無文件、讀文件、寫文件

3、等,為了方便用戶使用文件而提供了更多對文件的操作,如打開和關閉文件。軟硬件可行性分析:本模擬系統的實現需要一臺PC機作為硬件設備,此外,軟件開發環境包括:Win7、VC+6.0,.因此,該模擬系統具備實現條件,綜合分析,系統在成本、技術、操作上,都是可行的。技術可行性分析:在當前的技術條件下,該系統的各個功能模塊在理論上而言都是能實現的;根據自己掌握的技術情況,在規定的期限內,系統的開發設計能完成。二、 需求分析1、 功能需求分析功能劃分:本模擬系統主要針對文件的管理和操作名主要有:創建用戶、文件、文件夾,讀文件,寫文件,執行文件,關閉文件,刪除用戶、文件夾、文件的功能。創建用戶、文件、文件夾

4、:在對系統發出操作命令之前必須先登錄用戶,然而登錄之前必須要已經創建該用戶。在創建完用戶后,可通過登錄用戶來創建文件和文件夾。在創建文件時可設置文件的屬性和輸入文件的內容。讀文件:可通過登錄用戶來讀取任何已創建的只讀或讀寫文件的內容;如果所要讀的文件不是可讀文件時,系統會顯示該文件不可讀;如果所讀文件不存在,系統會顯示文件不存在。寫文件:登錄用戶后,用戶可寫或重寫讀寫文件中的內容,并保存文件中的重寫內容,以供下次讀取;當所要寫的文件不是可寫的文件時,系統會顯示該文件不可寫;當所要寫的文件并不存在時,系統會顯示該文件不存在。執行文件:登錄用戶后,用戶可執行系統中已創建的執行文件;當該文件不是可執

5、行文件時,系統會顯示該文件不可執行;當該文件不存在時,系統將會顯示該文件不存在。關閉文件:可通過選擇關閉文件的功能選項,來關閉系統中所有打開的文件,如果沒有文件被打開,則系統會顯示沒有文件打開。刪除用戶、文件、文件夾:登錄用戶后,用戶可通過選擇刪除的功能選項來刪除不想再保存的文件和文件夾,刪除后,用戶會自動注銷;當選擇刪除用戶的功能選項時,系統會刪除該用戶,以及該用戶所創建的所有文件和文件夾。2、 非功能需求分析在現代計算機系統中,要用到大量的程序和數據,因內存容量有限,且不能長期保存,故而平時總是把它們以文件的形式存放在外存中,需要時再隨時將它們調入內存。如果有用戶注解管理外存上的文件,不僅

6、要求用戶熟悉外存特性,了解各文件的屬性,以及它們在外存上的位置,而且在多用戶環境下,還必須能保持數據的安全性和一致性。顯然,這是用戶所不能勝任、也不愿意承擔的工作。于是,取而代之的便是在操作系統中又增加了文件管理功能,即構成一個文件系統,負責管理在外存上的文件,并把對文件的存取、共享和保護等手段提供給用戶。這不僅方便了用戶,保證了文件的安全性,還可有效地提高系統資源的利用率。在該課程設計中,主要設計了一個模擬的多用戶的二級共享的文件系統。通過對用戶的管理,文件和文件夾的物理結構,目錄的結構和對文件、文件夾的操作的實現,來對系統中的所有文件進行管理。三、 概要設計1、整體思路概述運行程序時,首先

7、系統要進行初始化,然后等待輸入操作類型,但是在未創建用戶之前,只能進行顯示目錄(此時為空目錄)和退出的操作。當用戶創建成功后,即可通過登錄用戶來創建文件和文件夾。在輸入操作選項之后,必須先登錄用戶,當確認用戶身份正確后,系統才能根據指定的命令進行操作,否則,不能進行操作,必須創建用戶后,才能以該用戶的身份進行操作。操作完之后,用戶會自動退出,沒發出一個操作命令,用戶必須登錄一次。只有在發出的命令是顯示目錄或退出或返回上級目錄時,才不需要用戶的登錄。2、 數據流圖顯示目錄42513主菜單輸入界面模擬文件系統創建刪除文件操作退出 創建用戶 創建文件 創建文件夾 上級菜單 刪除用戶 刪除文件 刪除文

8、件夾 上級菜單讀文件 寫文件 執行文件 打開文件 關閉文件 顯示目錄 上級菜單3、 功能流程圖開始輸入功能選項創建文件操作刪除退出顯示目錄創建文件創建用戶創建文件夾刪除文件刪除用戶刪除文件夾讀文件寫文件執行文件打開文件關閉文件顯示目錄四、 詳細設計1、實現原理本程序是一個文件系統模擬程序,模擬文件管理的工作過程。本程序設計一個最多有10個用戶的文件系統,實現文件系統的模擬管理過程,可以進行創建用戶、刪除用戶、創建文件、刪除文件、創建文件夾、刪除文件夾、讀文件、寫文件、執行文件、打開文件、關閉文件、顯示目錄等操作。程序設置了主目錄MFD、用戶文件目錄UFD和用戶文件夾目錄UDD,為打開文件設置了

9、運行目錄AFD。文件保護簡單使用了保護碼:只讀為r,讀寫為wr,只執行為do,其他則表示不允許讀寫、執行。用戶名文件目錄指針文件夾目錄指針用戶名文件目錄指針文件夾目錄指針文件名保護碼文件長度文件內容文件夾名下一文件夾指針下一文件指針子文件夾指針下一文件指針打開文件名保護碼文件內容讀寫指針MFDUFDUDDAFD。2、重要數據結構說明typedef struct ufd是文件的數據結構,即用戶文件目錄。typedef struct udd是文件夾的數據結構,即用戶文件夾目錄。typedef struct mfd是用戶的數據結構,即主文件目錄。typedef struct afd是運行中文件的數據

10、結構。typedef struct sfile是指向文件的索引節點的數據結構。1)用戶的數據結構typedef struct mfdchar username10;/*用戶名*/struct ufd *link;/*指向該用戶的第一個文件*/struct udd *clink;/*指向該用戶的第一個文件夾*/MFD;用來描所創建用戶的信息的結點,包含用戶名、指向用戶文件和文件夾的兩個指針。所以的結點都存放在一個名字為filesysten的數組中。2)文件夾的數據結構typedef struct uddchar foldername10;/*文件夾名*/struct ufd *clink;/*指

11、向該文件夾的第一個文件*/struct udd *cnext;/*指向該文件夾的第一個文件夾*/struct udd *link;/*指向同級文件夾*/UDD;用來描述文件夾的信息的結點。3)文件的數據結構typedef struct ufdchar filename10;/*文件名*/char filecon100;/*文件內容*/char procode8;/*屬性*/int length;/*文件長度*/struct ufd *nextfile;/*指向下一個文件*/UFD;用來描述文件信息的數據結構,同個用戶的文件結點用一條鏈鏈接在一起。4)運行文件的數據結構typedef struc

12、t afd/*運行文件目錄*/char filename10;/*打開文件名*/char filecon100;/文件內容char procode4;/屬性int rwpointer;/*讀寫指針*/AFD;存放著運行文件的信息,標示著某文件正在執行,當關閉文件時,釋放結點。5)共享文件的結點的數據結構typedef struct sfilechar username10; /用戶名struct ufd *file; /共享的文件struct sfile *next; /指向下一個共享文件的指針SFILE;每一個文件都有一個共享的結點,該節點存放文件的信息、文件的創造者的名字和指向下一個共享文

13、件的指針,所有文件的共享結點鏈接在一起,由sharefile指針指向該共享鏈。3、重要函數說明void displayallfile()是用于顯示目錄的函數;在實驗中,我將創建的所有用戶都存儲在一個結點數組中,每個用戶結點都有指向其文件和文件夾的指針,通過遍歷結點數組來遍歷用戶,通過用戶的指針來遍歷用戶的文件和文件夾。void createuser()是用于創建用戶的函數;將創建的用戶以mfd結點的結構存儲在filesystem數組中。int findusername(char * username)是用戶查找用戶的函數,當找到函數時返回保存用戶的節點的下標;當返回值大于等于用戶個數時,表示找

14、不到用戶。void deleteuser()是用于刪除用戶的函數;在filesystem數組中尋找指定名字的用戶,當找到該用戶時,將用戶從數組中刪除,并將數組中該用戶后面的其他用戶的下標往前移一位,即減一;如果找不到指定用戶,則輸出:“用戶不存在!刪除失敗!”。sfile* findsharefile(char *filename)是用于查找共享文件的函數,當找到共享文件鎖時返回指向該文件的節點指針,如果找不到,則返回空。UFD * findfilename(char *filename,UFD *filepointer)是查找文件的函數,返回指向特定文件名的指針,或返回值為NULL。UDD

15、* findfoldername(char *foldername,UDD *folderpointer)是查找文件夾的函數,返回指向特定文件名的指針,或返回值為NULL。void displayfile(UFD *link)是用于顯示文件屬性的函數。void createfile()是用于創建文件的函數;當要創建文件時,首先輸入登錄的用戶名,如果該用戶不存,輸入是否創建用戶,否則退出,是的話則創建用戶,然后再創建文件;當用戶存在時,則直接創建文件。創建文件時,若該登錄的用戶的文件中沒有同名文件,則直接創建,否則輸出:“文件名已存在,請輸入新的文件名!”,通過輸入新的文件名后再創建文件。每創建

16、一個文件,都會為文件創建一個共享結點,添加到共享鏈中。void createfolder()是用于創建文件夾的函數;首先輸入登陸的用戶名,然后再創建,步驟與穿件文件相似,只是沒有共享結點。void deletefile()是用于刪除文件的函數;首先查找文件所屬用戶,然后再查找文件,找到則刪除,否則刪除失敗。void deletefolder()是用于刪除文件夾的函數。AFD * openfile()是用于打開文件的函數,當找到文件時打開文件,創建該文件的運行文件結點,并返回;找不到文件時,返回值為NULL;當要打開一個文件之前,首先先登錄,如果登錄的用戶不存在則不能打開文件,如果用戶存在,輸入

17、需要打開的文件名,如果用戶沒有創建該文件則尋找共享文件中是否存在其他用戶創建的該文件,有則打開,為文件創建運行文件的結點,沒有則輸出不存在該文件。在對文件的所有操作之前都需要先調用該函數打開文件,才能進行操作。void closefile()是用于關閉文件的函數;關閉文件時釋放文件的運行文件結點。void readfile()是用于讀文件的函數;打開文件后首先判斷文件是否可讀,如果是可讀文件則讀出文件中的內容,否則輸出文件不可讀。void writefile()是用于寫文件的函數;首先打開文件,判斷文件是否可寫。void executefile()是用于執行文件的函數。/菜單,即有關用戶界面的

18、函數void menu()是主菜單,程序執行時就會顯示該菜單,初始化界面,并通過該菜單選擇相應的功能選項。void menu1()是menu的一個子菜單,包含了所有的創建功能選項和返回上級菜單的選項;void menu2()是menu的一個子菜單,包含了所有的刪除功能選項和返回上級菜單的選項;void menu3()是menu的一個子菜單,包含了對文件的各種操作選項、返回上級菜單的選項和顯示目錄的選項。4、 相關代碼UFD *rw_pointer;/*讀寫指針*/AFD *afd=NULL; /運行文件MFD filesystem10; /存放用戶的數組sfile *sharefile=NUL

19、L;/共享文件void displayallfile()/*顯示目錄*/int i;UFD *p; /指向某個文件的指針UDD *q; / 指向用戶文件目錄的指針system("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n");printf("tt顯示目錄n"); printf("t* * * * * * * * * * * * * * * *n");for(i=0;i<num;i+)printf("用戶 :%s 目錄如下!n"

20、,filesystemi.username); p=filesystemi.link; /指向該用戶的第一個文件q=filesystemi.clink; /指向該用戶的第一個文件夾while(p) printf("t文件名: %st|",p->filename);printf("文件屬性: %st|",p->procode);printf("文件長度: %dn",p->length);p=p->nextfile;while(q) printf("t文件夾名: %sn",q->folde

21、rname);q=q->link;void createuser()/*建立用戶*/int i;char username10;system("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n");printf("tt建立用戶n"); printf("t* * * * * * * * * * * * * * * *n");if(num>=10)/*用戶文件目錄已滿,創建文件失敗*/printf("用戶已滿n創建文件失敗!n")

22、;return;printf("輸入用戶名:n");scanf("%s",username);for(i=0;i<num;i+)if (!strcmp(filesystemi.username,username)printf("用戶名已存在,請輸入新用戶名!n");scanf("%s",username); strcpy(filesystemnum.username,username);num+;printf("用戶已創建!n");/*-查找用戶*/int findusername(cha

23、r * username)/返回用戶名下標,當I=NUM時,用戶不存在int i;i=0;while(i<num)if(!strcmp(filesystemi.username ,username)break;i+;return i;void deleteuser()/*刪除用戶*/int i;char cs,username10;UFD *p1,*p2;UDD *p3,*p4;system("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n");printf("tt刪除用戶n&q

24、uot;); printf("t* * * * * * * * * * * * * * * *n");printf("n輸入用戶名:n");scanf("%s",username);i=findusername(username);/*返回用戶名下標*/if(i>=num)printf("用戶不存在!n刪除失敗!n");return ;elseprintf("是否刪除用戶%s及用戶%s下所有東西?(y/n)",filesystemi.username,filesystemi.usernam

25、e);cscanf("%c",&cs);if(cs='y')p1=p2=filesystemi.link;/用戶的第一個文件while(p2)p2=p2->nextfile;free(p1);p1=p2;p3=p4=filesystemi.clink;/用戶的第一個文件夾while(p2)p4=p4->link;free(p3);p3=p4;for(i;i<num-1;i+)filesystemi=filesystemi+1;num-;printf("n用戶已刪除!n");elsereturn;sfile* fi

26、ndsharefile(char *filename) /*查找共享文檔*/sfile *k;k=sharefile;while(k && strcmp(filename,k->file->filename)k=k->next;return k;/*-查找文件*/UFD * findfilename(char *filename,UFD *filepointer)/返回指向特定文件名的指針,或返回值為NULL*/UFD *k;k=filepointer;while(k&&strcmp(filename,k->filename)k=k-&g

27、t;nextfile;return k;/* 查找文件夾*/UDD * findfoldername(char *foldername,UDD *folderpointer)/返回指向特定文件名的指針,或返回值為NULL*/UDD *k;k=folderpointer;while(k&&strcmp(foldername,k->foldername)k=k->link;return k;void displayfile(UFD *link) /*顯示文件屬性*/UFD *p;p=link;if(!p)printf("n此目錄沒有該文件!");re

28、turn;printf("n用戶文件如下:n");while(p)printf("%st|",p->filename);printf("%st|",p->procode);printf("%dnn",p->length);p=p->nextfile;void createfile()/*-創建文件*/char cx;char username10;char filename10;int i,j;UFD *p1,*p2,*newfile;sfile *q1 = sharefile;system

29、("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n");printf("tt創建文件n"); printf("t* * * * * * * * * * * * * * * *n");if(num>=10)/*用戶文件目錄已滿,創建文件失敗*/printf("用戶文件目錄已滿n創建文件失敗!n");return;printf("輸入登錄的用戶名:n");scanf("%s",username)

30、;i=findusername(username);/*返回用戶名下標*/if(i=num)/*如果該用戶不存在,且用戶個數不小于10,先創建用戶再建立用戶文件*/printf("用戶不存在,是否建立用戶?(y/n)");cscanf("%c",&cx); printf("n"); if(cx='y')strcpy(filesystemnum.username ,username);/*創建用戶目錄*/num+;/*為剛創建的用戶建立文件*/newfile =(UFD *)malloc(sizeof(UFD);

31、/為新建文件分配空間newfile->nextfile=NULL;filesystemnum-1.link=newfile;/該新建用戶的第一個文件為newfileprintf("文件名:");scanf("%s",filesystemnum-1.link->filename);printf("屬性(r只讀,wr讀寫,do可執行):");scanf("%s",filesystemnum-1.link->procode);printf("長度:");scanf("%d&

32、quot;,&(filesystemnum-1.link->length);printf("文件已創建!n");if(sharefile=NULL)sharefile=(sfile*)malloc(sizeof(sfile);sharefile->file=filesystemnum-1.link;strcpy(sharefile->username, username);sharefile->next=NULL;elseq1=(sfile*)malloc(sizeof(sfile);q1->file=filesystemnum-1.l

33、ink;strcpy(q1->username, username);q1->next=sharefile;sharefile=q1;elsereturn;else/*為已存在的用戶建立文件*/p1=p2=filesystemi.link ;printf("輸入文件名:");scanf("%s",filename);if(!p1)newfile=(UFD *)malloc(sizeof(UFD); newfile->nextfile=NULL; strcpy(newfile->filename,filename); printf(

34、"屬性(r只讀,wr讀寫,do可執行):"); scanf("%s",newfile->procode); printf("長度:"); scanf("%d",&(newfile->length); filesystemi.link=newfile;if(sharefile=NULL)sharefile=(sfile*)malloc(sizeof(sfile);sharefile->file=filesystemi.link;strcpy(sharefile->username, u

35、sername);sharefile->next=NULL;elseq1=(sfile*)malloc(sizeof(sfile);q1->file=filesystemi.link;strcpy(q1->username, username);q1->next=sharefile;sharefile=q1;else while(p2) if (!strcmp(p2->filename,filename) printf("文件名已存在,請輸入新文件名!n"); scanf("%s",filename); p1=p2;p2=p

36、2->nextfile; newfile=(UFD *)malloc(sizeof(UFD); newfile->nextfile=NULL; strcpy(newfile->filename,filename); printf("屬性(r只讀,wr讀寫,do可執行):"); scanf("%s",newfile->procode); printf("長度:"); scanf("%d",&(newfile->length); p1->nextfile=newfile;if

37、(sharefile=NULL)sharefile=(sfile*)malloc(sizeof(sfile);sharefile->file=p1->nextfile;strcpy(sharefile->username, username);sharefile->next=NULL;elseq1=(sfile*)malloc(sizeof(sfile);q1->file=p1->nextfile;strcpy(q1->username, username);q1->next=sharefile;sharefile=q1;printf("

38、;文件已創建!n"); printf("是否輸入文件內容?(y/n)");cscanf("%c",&cx);printf("n");if(cx='y')printf("請輸入文件內容,用'#'鍵結束n");cscanf("%c",&newfile->filecon0);for(j=0;newfile->fileconj!='#'j+)cscanf("%c",&newfile->

39、fileconj+1); newfile->length=j;printf("n");void createfolder()/*-創建文件夾*/char cx;char username10;char foldername10;int i;UDD *p1,*p2,*newfolder;system("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n");printf("tt創建文件夾n"); printf("t* * * * * * * *

40、* * * * * * * *n");if(num>=10)/*用戶文件目錄已滿,創建文件夾失敗*/printf("用戶文件目錄已滿n創建文件失敗!n");return;printf("輸入登錄的用戶名:n");scanf("%s",username);i=findusername(username);/*返回用戶名下標*/if(i=num)/*如果該用戶不存在,且用戶個數不小于10,先創建用戶再建立用戶文件夾*/printf("用戶不存在,是否建立用戶?(y/n)");cscanf("%

41、c",&cx); printf("n"); if(cx='y')strcpy(filesystemnum.username ,username);/*創建用戶目錄*/num+;/*為剛創建的用戶建立文件夾*/newfolder =(UDD *)malloc(sizeof(UDD);newfolder->cnext=NULL; /該文件夾的第一個子文件夾newfolder->clink=NULL; /該文件夾的第一個子文件newfolder->link=NULL; /該文件夾的下一個同級文件夾filesystemnum-1.

42、clink=newfolder; /該用戶的第一個文件夾printf("文件夾名:");scanf("%s",filesystemnum-1.clink->foldername);printf("文件夾已創建!n");elsereturn;else/*為已存在的用戶建立文件夾*/p1=p2=filesystemi.clink ;printf("輸入文件夾名:");scanf("%s",foldername);if(!p1)/該用戶還沒有任何文件夾newfolder=(UDD *)mallo

43、c(sizeof(UDD);newfolder->cnext=NULL;/該文件夾的第一個子文件夾為空newfolder->clink=NULL;/該文件夾的第一個子文件為空newfolder->link=NULL; /該文件夾的下一個同級文件夾為空 strcpy(newfolder->foldername,foldername); filesystemi.clink=newfolder;else while(p2) if (!strcmp(p2->foldername,foldername) printf("文件夾名已存在,請輸入新文件夾名!n&quo

44、t;); scanf("%s",foldername); p1=p2;p2=p2->link; newfolder=(UDD *)malloc(sizeof(UDD);newfolder->cnext=NULL;/該文件夾的第一個子文件夾為空newfolder->clink=NULL;/該文件夾的第一個子文件為空newfolder->link=NULL; /該文件夾的下一個同級文件夾為空 strcpy(newfolder->foldername,foldername); p1->link=newfolder;printf("文件

45、夾已創建!n");void displayuser()/顯示用戶目錄int i;if(num<=0)return;printf("n用戶目錄如下! ");for(i=0;i<num;i+);printf("n%s",filesystemi.username);*/void deletefile()/*刪除文件*/int i;char cy;char username10;char filename10;UFD *p1,*p2;system("cls");/*清屏*/printf("t* * * * *

46、* * * * * * * * * * *n");printf("tt刪除文件n"); printf("t* * * * * * * * * * * * * * * *n");printf("n輸入用戶名:n");scanf("%s",username);i=findusername(username);/*返回用戶名下標*/if(i>=num)/找不到該用戶printf("用戶不存在!n刪除失敗!");return ;elseprintf("n輸入文件名:"

47、);scanf("%s",filename);p1=p2=filesystemi.link;/用戶的第一個文件while(p2&&strcmp(p2->filename,filename)p1=p2;p2=p2->nextfile;if(!p2)/該用戶名下沒有文件或不存在指定文件printf("n文件不存在!n刪除失敗!n");else printf("是否刪除文件%s?(y/n)",p2->filename); cscanf("%c",&cy); if(cy='

48、y')if(p1=p2)filesystemi.link=p1->nextfile; elsep1->nextfile=p2->nextfile;free(p2);printf("n文件已刪除!n");elsereturn;void deletefolder()/*刪除文件夾*/int i;char cy;char username10;char foldername10;UDD *p1,*p2;system("cls");/*清屏*/printf("t* * * * * * * * * * * * * * * *n&

49、quot;);printf("tt刪除文件夾n"); printf("t* * * * * * * * * * * * * * * *n");printf("n輸入用戶名:n");scanf("%s",username);i=findusername(username);/*返回用戶名下標*/if(i>=num)printf("用戶不存在!n刪除失敗!");return ;elseprintf("n輸入文件夾名:");scanf("%s",folde

50、rname);p1=p2=filesystemi.clink;while(p2&&strcmp(p2->foldername,foldername)p1=p2;p2=p2->link;if(!p2)printf("n文件夾不存在!n刪除失敗!n");else printf("是否刪除文件夾%s及文件夾%s下所有東西?(y/n)",p2->foldername,p2->foldername); cscanf("%c",&cy); if(cy='y')if(p1=p2)fil

51、esystemi.clink=p1->link; elsep1->link=p2->link;free(p2);printf("n文件夾已刪除!n");elsereturn;AFD * openfile()/*打開文件*/char username10;char filename10;int i;char ch;sfile *k;UFD *p=NULL;system("cls");/*清屏*/switch(choice)case 1:printf("t* * * * * * * * * * * * * * * *n"

52、); printf("tt讀文件n"); printf("t* * * * * * * * * * * * * * * *n");break;case 2:printf("t* * * * * * * * * * * * * * * *n"); printf("tt寫文件n"); printf("t* * * * * * * * * * * * * * * *n");break;case 3:printf("t* * * * * * * * * * * * * * * *n"

53、); printf("tt執行文件n"); printf("t* * * * * * * * * * * * * * * *n");break;case 4:printf("t* * * * * * * * * * * * * * * *n"); printf("tt打開文件n"); printf("t* * * * * * * * * * * * * * * *n");break;printf("輸入登錄的用戶名:");scanf("%s",userna

54、me);i=findusername(username);/*返回用戶名下標*/if(i>=num)/*用戶不存在*/printf("n用戶不存在!n不能打開文件!n");return NULL;else/*用戶存在*/printf("輸入文件名:");scanf("%s",filename);p=findfilename(filename,filesystemi.link);if(!p)/*用戶文件不存在*/printf("n該用戶沒有創建指定文件!");k=(sfile*)malloc(sizeof(sfile);

溫馨提示

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

評論

0/150

提交評論