文件管理_實(shí)驗(yàn)4_第1頁(yè)
文件管理_實(shí)驗(yàn)4_第2頁(yè)
文件管理_實(shí)驗(yàn)4_第3頁(yè)
文件管理_實(shí)驗(yàn)4_第4頁(yè)
文件管理_實(shí)驗(yàn)4_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院實(shí)驗(yàn)報(bào)告課程名稱 操作系統(tǒng) 實(shí)驗(yàn)名稱 文件系統(tǒng)實(shí)驗(yàn) 實(shí)驗(yàn)日期 2015/5/28 班級(jí) 計(jì)算機(jī)1206 姓名 王成義 學(xué)號(hào) 1030412612 儀器編號(hào) 實(shí)驗(yàn)報(bào)告要求 1實(shí)驗(yàn)?zāi)康?2實(shí)驗(yàn)要求 3實(shí)驗(yàn)步驟 4程序清單 5運(yùn)行情況 5實(shí)驗(yàn)體會(huì)1實(shí)驗(yàn)?zāi)康挠酶呒?jí)語(yǔ)言編寫和調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過(guò)程。從而對(duì)各種文件操作命令的實(shí)質(zhì)內(nèi)容和執(zhí)行過(guò)程有比較深入的了解。 2實(shí)驗(yàn)要求要求設(shè)計(jì)一個(gè) n個(gè)用戶的文件系統(tǒng),每次用戶可保存m個(gè)文件,用戶在一次運(yùn)行中只能打開一個(gè)文件,對(duì)文件必須設(shè)置保護(hù)措施,且至少有Create、delete、open、close、read、writ

2、e等命令。 3實(shí)驗(yàn)步驟主目錄操作:流程圖:4程序清單編一個(gè)通過(guò)屏幕選擇命令的文件管理系統(tǒng),每屏要為用戶提供足夠的選擇信息,不需要打入冗長(zhǎng)的命令。#include #include #include /主文件結(jié)構(gòu)體 struct MasterFile char username20; /用戶名 char password20; /用戶名密碼 char flag; /標(biāo)志 struct MasterFile *next; ; /用戶文件結(jié)構(gòu)體 struct UserFile int fnum; /文件編號(hào) char fname20; /文件名 int flength; /文件長(zhǎng)度 char fla

3、g; /標(biāo)志 char fpw20; /文件保護(hù)碼 struct UserFile *link; ; /全局變量 int shoudsave; /存儲(chǔ)標(biāo)記 int usingnum; /當(dāng)前用戶標(biāo)記 struct MasterFile MFD20; /主目錄 struct UserFile UFD2020; /用戶目錄 /尋找主目錄空閑區(qū) struct MasterFile*MoveMFDToLast() for(int i=0;i20;i+) if(MFDi.flag=0) usingnum=i; return &MFDi; return NULL; /查找用戶 struct MasterF

4、ile*SearchMFD(char str) for(int i=0;i20;i+) if(strcmp(str,MFDi.username)=0) usingnum=i; return &MFDi; return NULL; /尋找用戶目錄空閑區(qū) struct UserFile *MoveUFDToLast() for(int i=0;i20;i+) if(UFDusingnumi.flag=0) return &UFDusingnumi; return NULL; /查找用戶文件 struct UserFile *SearchUFD(int num) for(int i=0;i20;i+

5、) if(UFDusingnumi.fnum=num) return &UFDusingnumi; return NULL; /刪除用戶文件目錄 void LeftMoveUFD(int num) for(int i=0;i20;i+) if(UFDusingnumi.fnum=num) for(int j=i;jusername,str1); strcpy(p-password,str2); p-flag=1; printf(%d,MFDusingnum.flag); p-next=NULL; shoudsave=1; /存儲(chǔ)標(biāo)記 else /舊用戶登錄 while(1) printf(請(qǐng)輸

6、入你的用戶名:); /輸入用戶名 scanf(%s,&str3); p=SearchMFD(str3); if(p=NULL) printf(對(duì)不起,你輸入的用戶名不存在!n); printf(繼續(xù)(y)還是放棄(n)?); scanf(%s,&flag3); if(flag3=y) continue; else printf(你已退出了系統(tǒng)!n); exit(1); else while(1) printf(請(qǐng)輸入口令:); /輸入口令 scanf(%s,&str4); if(strcmp(str4,p-password)!=0) printf(對(duì)不起,你輸入的口令不正確,請(qǐng)重新輸入.n);

7、 continue; else break; break; /菜單 void menu() printf(n*); printf(t1列文件目錄ttttt2創(chuàng)建文件n); printf(t3刪除文件ttttt4讀文件n); printf(t5寫文件tttttt0退出系統(tǒng)n); printf(*n); /列文件目錄 void Dir() if(MFDusingnum.next=0) printf(目前你不存在任何文件!n); else for(int i=0;ilink=(struct UserFile*)fp; /設(shè)置用戶目錄 MFDusingnum.next=(struct MasterFi

8、le*)&UFDusingnum0; strcpy(f-fname,str1); strcpy(f-fpw,str2); f-fnum=num; f-flength=0; f-flag=1; fclose(fp); shoudsave=1; /設(shè)置存儲(chǔ)標(biāo)記 printf(文件已創(chuàng)建!n); /刪除文件 void Delete() struct UserFile *f; int num; printf(請(qǐng)輸入你要?jiǎng)h除的文件編號(hào):); scanf(%d,&num); f=SearchUFD(num); /查找用戶文件 if(f=NULL) printf(你要?jiǎng)h除的文件不存在!n); else Le

9、ftMoveUFD(num); /刪除用戶文件目錄 printf(文件已刪除!n); shoudsave=1; /設(shè)置存儲(chǔ)標(biāo)記 /讀文件 void Read() char ch; struct UserFile *f; FILE *fp; int num; printf(請(qǐng)輸入你要讀的文件的編號(hào):); scanf(%d,&num); f=SearchUFD(num); /查找文件 if(f=NULL) printf(你輸入的文件不存在!n); else if(fp=fopen(f-fname,r)=NULL) /打開指定文件 printf(不能打開該文件!n); exit(0); ch=fge

10、tc(fp); /輸出文件內(nèi)容 while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n); fclose(fp); /關(guān)閉文件 printf(文件已讀完畢!n); /寫文件 void Write() char ch; struct UserFile *f; FILE *fp; int num; printf(請(qǐng)輸入你要寫的文件的編號(hào):); scanf(%d,&num); f=SearchUFD(num); /查找文件 if(f=NULL) printf(你輸入的文件不存在!n); else if(fp=fopen(f-fname,wr)=NULL)

11、 /打開指定文件 printf(不能打開該文件!n); exit(0); printf(請(qǐng)按字符輸入內(nèi)容(以#表示結(jié)束符); /寫入文件 scanf(%s,&ch); while(ch!=#) fwrite(&ch,1,1,fp); scanf(%s,&ch); fclose(fp); /關(guān)閉文件 shoudsave=1; /設(shè)置存儲(chǔ)標(biāo)記 printf(文件寫入完畢!n); /保存 void Save() FILE *fpm,*fpu; int flag=1,count=0; fpm=fopen(F:MasterFile.txt,wb); /打開主文件 if(fpm=NULL) printf(

12、n提示:重新打開主文件信息文件時(shí)發(fā)生錯(cuò)誤!n); exit(1); for(int i=0;i20;i+) fwrite(&MFDi,sizeof(struct MasterFile),1,fpm); /保存主文件目錄信息 fclose(fpm); printf(主文件目錄信息保存完畢!n); fpu=fopen(F:UserFile.txt,wb); /打開用戶文件 if(fpu=NULL) printf(n提示:重新打開用戶目錄信息文件時(shí)發(fā)生錯(cuò)誤!n); exit(1); for(int j=0;j20;j+) /保存用戶文件目錄信息 fwrite(&UFDj,sizeof(struct

13、UserFile),20,fpu); fclose(fpu); printf(用戶文件目錄信息保存完畢!n); /主函數(shù) int main() printf(nntt*ttn);printf(tttt實(shí)驗(yàn)四 文件管理n);printf(tt*ttn);printf(nnnttttt計(jì)算機(jī)1206n);printf(ttttt王成義n);printf(ttttt1030412612n);printf(ttttt完成時(shí)間:2015/5/28nnnn);printf(ttttWelcomenn);FILE *fpm,*fpu; /文件指針 int sel; char ch; char jian; p

14、rintf(tttt文件管理系統(tǒng)nttttn); fpm=fopen(D:MasterFile.txt,rb); /打開主文件目錄信息文件 if(fpm=NULL) printf(n提示:主文件目錄信息文件還不存在,是否創(chuàng)建?(y/n)n); scanf(%s,&jian); if(jian=y|jian=Y) fpm=fopen(D:MasterFile.txt,wb); /創(chuàng)建主文件目錄的文件 else exit(0); fpu=fopen(D:UserFile.txt,rb); /打開用戶文件目錄信息文件 if(fpu=NULL) printf(n提示:用戶文件目錄信息文件還不存在,是否

15、創(chuàng)建?(y/n)n); scanf(%s,&jian); if(jian=y|jian=Y) fpu=fopen(D:UserFile.txt,wb); /創(chuàng)建用戶文件目錄的文件 else exit(0); printf(文件正在打開,請(qǐng)稍等.); for(int i=0;i20;i+) /讀取主文件目錄信息 fread(&MFDi,sizeof(struct MasterFile),1,fpm); /將文件的內(nèi)容放入接點(diǎn)中 fclose(fpm); / 關(guān)閉文件 while(!feof(fpu) /讀取用戶目錄文件信息 for(int i=0;i20;i+) if(fread(&UFDi0,

16、sizeof(struct UserFile),20,fpu) /將文件的內(nèi)容放入接點(diǎn)中 MFDi.next=(struct MasterFile*)&UFDi0; fclose(fpu); /關(guān)閉文件 printf(n文件已導(dǎo)入完畢!n); Login(); /用戶登錄while(1) /菜單操作 menu(); printf(請(qǐng)你選擇操作:); scanf(%d,&sel); if(sel=0) /保存文件信息 if(shoudsave=1) getchar(); printf(n資料已經(jīng)改動(dòng),是否將改動(dòng)保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) Save(); printf(n你已經(jīng)退出系統(tǒng),再見!n); break; switch(sel) case 1:Dir(); break; /列文件目錄 cas

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論