資源描述:
《實(shí)驗(yàn) 文件全全資料管理系統(tǒng)(二).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、實(shí)驗(yàn)六:文件系統(tǒng)一、目的要求1、用高級(jí)語(yǔ)言編寫和調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過(guò)程。從而對(duì)各種文件操作命令的實(shí)質(zhì)容和執(zhí)行過(guò)程有比較深入的了解。2、要求設(shè)計(jì)一個(gè)n個(gè)用戶的文件系統(tǒng),每次用戶可保存m個(gè)文件,用戶在一次運(yùn)行中只能打開(kāi)一個(gè)文件,對(duì)文件必須設(shè)置保護(hù)措施,且至少有Create、delete、open、close、read、write等命令。二、例題:?、僭O(shè)計(jì)一個(gè)10個(gè)用戶的文件系統(tǒng),每次用戶可保存10個(gè)文件,一次運(yùn)行用戶可以打開(kāi)5個(gè)文件。②程序采用二級(jí)文件目錄(即設(shè)置主目錄[MFD])和用戶文件目
2、錄(UED)。另外,為打開(kāi)文件設(shè)置了運(yùn)行文件目錄(AFD)。③為了便于實(shí)現(xiàn),對(duì)文件的讀寫作了簡(jiǎn)化,在執(zhí)行讀寫命令時(shí),只需改讀寫指針,并不進(jìn)行實(shí)際的讀寫操作。④算法與框圖:a、因系統(tǒng)小,文件目錄的檢索使用了簡(jiǎn)單的線性搜索。b、文件保護(hù)簡(jiǎn)單使用了三位保護(hù)碼:允許讀寫執(zhí)行、對(duì)應(yīng)位為1,對(duì)應(yīng)位為0,則表示不允許讀寫、執(zhí)行。c、程序中使用的主要設(shè)計(jì)結(jié)構(gòu)如下:Ⅰ、主文件目錄和用戶文件目錄(MFD、UFD)Ⅱ、打開(kāi)文件目錄(AFD)(即運(yùn)行文件目錄)MDF用戶名文件目錄指針用戶名文件目錄指針?UFD文件名保護(hù)碼文件長(zhǎng)度文件名A
3、FD打開(kāi)文件名打開(kāi)保護(hù)碼讀寫指針?三、調(diào)度算法的流程圖四、文件管理源程序#include#include#include#includetypedefstructufd{charfilename[10];/*文件名*/charprocode[8];/*屬性*/intlength;/*文件長(zhǎng)度*/structufd*nextfile;/*指向下一個(gè)文件*/}UFD;typedefstructmfd{charusername[10];/*用
4、戶名*/structufd*link;/*指向該用戶的第一個(gè)文件*/}MFD;typedefstructprotected_flag{charcode[4];}PRO;typedefstructafd/*運(yùn)行文件目錄*/{charfilename[10];/*打開(kāi)文件名*/charprocode[4];intrwpointer;/*讀寫指針*/}AFD;PROflag[3]={"100",/*只讀*/"110",/*讀寫*/"001"/*可執(zhí)行*/};UFD*rw_pointer;/*讀寫指針*/AFD*afd=
5、NULL;MFDfilesystem[10];intnum;/*當(dāng)前用戶個(gè)數(shù)*/voiddisplayallfile(){inti;UFD*p;for(i=0;i6、
7、",p->filename);printf("文件屬性:%st
8、
9、",p->procode);printf("文件長(zhǎng)度:%d",p->
10、length);p=p->nextfile;}}}voidinput()/*建立用戶文件系統(tǒng)*/{inti,j;intlength;charfilename[10];charprocode[4];UFD*p1,*p2,*first;for(i=0;i<10;i++)filesystem[i].link=NULL;printf("用戶:");scanf("%d",&num);for(i=0;i11、ilesystem[i].username);}for(i=0;i12、=(UFD*)malloc(sizeof(UFD));first->nextfile=NULL;strcpy(first->filename,filename);strcpy(first->procode,procode);first->length=length;p1=p2=first;j++;while(1){printf("文件%d:",j);printf("長(zhǎng)