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

下載本文檔

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

文檔簡介

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ī)1206 姓名 王成義 學(xué)號 1030412612 儀器編號 實(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)體會1實(shí)驗(yàn)?zāi)康挠酶呒壵Z言編寫和調(diào)試一個(gè)簡單的文件系統(tǒng),模擬文件管理的工作過程。從而對各種文件操作命令的實(shí)質(zhì)內(nèi)容和執(zhí)行過程有比較深入的了解。 2實(shí)驗(yàn)要求要求設(shè)計(jì)一個(gè) n個(gè)用戶的文件系統(tǒng),每次用戶可保存m個(gè)文件,用戶在一次運(yùn)行中只能打開一個(gè)文件,對文件必須設(shè)置保護(hù)措施,且至少有Create、delete、open、close、read、writ

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

3、 char fname20; /文件名 int flength; /文件長度 char flag; /標(biāo)志 char fpw20; /文件保護(hù)碼 struct UserFile *link; ; /全局變量 int shoudsave; /存儲標(biāo)記 int usingnum; /當(dāng)前用戶標(biāo)記 struct MasterFile MFD20; /主目錄 struct UserFile UFD2020; /用戶目錄 /尋找主目錄空閑區(qū) struct MasterFile*MoveMFDToLast() for(int i=0;i<20;i+) if(MFDi.flag=0) usingnum

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

5、rn NULL; /查找用戶文件 struct UserFile *SearchUFD(int num) for(int i=0;i<20;i+) if(UFDusingnumi.fnum=num) return &UFDusingnumi; return NULL; /刪除用戶文件目錄 void LeftMoveUFD(int num) for(int i=0;i<20;i+) if(UFDusingnumi.fnum=num) for(int j=i;j<19;j+) UFDusingnumi.flag=UFDusingnumi+1.flag; UFDusingn

6、umi.flength=UFDusingnumi+1.flength; strcpy(UFDusingnumi.fname,UFDusingnumi+1.fname); UFDusingnumi.fnum=UFDusingnumi+1.fnum; strcpy(UFDusingnumi.fpw,UFDusingnumi+1.fpw); UFDusingnumi.link=UFDusingnumi+1.link; /用戶登陸 void Login() char flag1,flag2,flag3; char str120,str220,str320,str420; struct MasterFi

7、le *p; printf("你是已有用戶嗎(y/n)?"); scanf("%s",&flag1); if(flag1='n') /新用戶登錄 printf("請創(chuàng)建新的用戶:(y/n)"); scanf("%s",&flag2); if(flag2='n') printf("你已退出了系統(tǒng)!n"); exit(1); else printf("請輸入你的用戶名:"); scanf("%s",&st

8、r1); printf("請輸入口令:"); scanf("%s",&str2); p=MoveMFDToLast(); strcpy(p->username,str1); strcpy(p->password,str2); p->flag=1; printf("%d",MFDusingnum.flag); p->next=NULL; shoudsave=1; /存儲標(biāo)記 else /舊用戶登錄 while(1) printf("請輸入你的用戶名:"); /輸入用戶名 scanf(&

9、quot;%s",&str3); p=SearchMFD(str3); if(p=NULL) printf("對不起,你輸入的用戶名不存在!n"); printf("繼續(xù)(y)還是放棄(n)?"); scanf("%s",&flag3); if(flag3='y') continue; else printf("你已退出了系統(tǒng)!n"); exit(1); else while(1) printf("請輸入口令:"); /輸入口令 scanf("

10、%s",&str4); if(strcmp(str4,p->password)!=0) printf("對不起,你輸入的口令不正確,請重新輸入.n"); 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

11、"); /列文件目錄 void Dir() if(MFDusingnum.next=0) printf("目前你不存在任何文件!n"); else for(int i=0;i<20;i+) if(UFDusingnumi.flag=1) printf("文件編號t%dt文件名t%st文件長度t%dt保護(hù)碼t%sn",UFDusingnumi.fnum,UFDusingnumi.fname,UFDusingnumi.flength,UFDusingnumi.fpw); /創(chuàng)建文件 void Create() FILE *fp; int nu

12、m; struct UserFile *f; char str120,str220; printf("請輸入你要?jiǎng)?chuàng)建的文件名:"); /輸入文件信息 scanf("%s",&str1); printf("請輸入文件編號:"); scanf("%d",&num); printf("請輸入文件保護(hù)碼:"); scanf("%s",&str2); fp=fopen(str1,"w"); /創(chuàng)建文件 f=MoveUFDToLast(); /

13、尋找用戶目錄空閑區(qū) if(&UFDusingnum0=f) /連接主目錄 MFDusingnum.next=(struct MasterFile*)f; f->link=(struct UserFile*)fp; /設(shè)置用戶目錄 MFDusingnum.next=(struct MasterFile*)&UFDusingnum0; strcpy(f->fname,str1); strcpy(f->fpw,str2); f->fnum=num; f->flength=0; f->flag=1; fclose(fp); shoudsave=1;

14、/設(shè)置存儲標(biāo)記 printf("文件已創(chuàng)建!n"); /刪除文件 void Delete() struct UserFile *f; int num; printf("請輸入你要?jiǎng)h除的文件編號:"); scanf("%d",&num); f=SearchUFD(num); /查找用戶文件 if(f=NULL) printf("你要?jiǎng)h除的文件不存在!n"); else LeftMoveUFD(num); /刪除用戶文件目錄 printf("文件已刪除!n"); shoudsave=1; /

15、設(shè)置存儲標(biāo)記 /讀文件 void Read() char ch; struct UserFile *f; FILE *fp; int num; printf("請輸入你要讀的文件的編號:"); scanf("%d",&num); f=SearchUFD(num); /查找文件 if(f=NULL) printf("你輸入的文件不存在!n"); else if(fp=fopen(f->fname,"r")=NULL) /打開指定文件 printf("不能打開該文件!n"); exit

16、(0); ch=fgetc(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("請輸入你要寫的文件的編號:"); scanf("%d",&num); f=SearchUFD(num); /查找文件 if(

17、f=NULL) printf("你輸入的文件不存在!n"); else if(fp=fopen(f->fname,"wr")=NULL) /打開指定文件 printf("不能打開該文件!n"); exit(0); printf("請按字符輸入內(nèi)容(以'#'表示結(jié)束符)"); /寫入文件 scanf("%s",&ch); while(ch!='#') fwrite(&ch,1,1,fp); scanf("%s",&c

18、h); fclose(fp); /關(guān)閉文件 shoudsave=1; /設(shè)置存儲標(biāo)記 printf("文件寫入完畢!n"); /保存 void Save() FILE *fpm,*fpu; int flag=1,count=0; fpm=fopen("F:MasterFile.txt","wb"); /打開主文件 if(fpm=NULL) printf("n提示:重新打開主文件信息文件時(shí)發(fā)生錯(cuò)誤!n"); exit(1); for(int i=0;i<20;i+) fwrite(&MFDi,sizeo

19、f(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;j<20;j+) /保存用戶文件目錄信息 fwrite(&UFDj,sizeof(struct UserFile),20,fpu

20、); 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&q

21、uot;);printf("ttttWelcomenn");FILE *fpm,*fpu; /文件指針 int sel; char ch; char jian; printf("tttt文件管理系統(tǒng)nttttn"); fpm=fopen("D:MasterFile.txt","rb"); /打開主文件目錄信息文件 if(fpm=NULL) printf("n提示:主文件目錄信息文件還不存在,是否創(chuàng)建?(y/n)n"); scanf("%s",&jian); if(ji

22、an='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提示:用戶文件目錄信息文件還不存在,是否創(chuàng)建?(y/n)n"); scanf("%s",&jian); if(jian='y'

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

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論