




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院實驗報告課程名稱 操作系統(tǒng) 實驗名稱 文件系統(tǒng)實驗 實驗日期 2015/5/28 班級 計算機1206 姓名 王成義 學(xué)號 1030412612 儀器編號 實驗報告要求 1實驗?zāi)康?2實驗要求 3實驗步驟 4程序清單 5運行情況 5實驗體會1實驗?zāi)康挠酶呒壵Z言編寫和調(diào)試一個簡單的文件系統(tǒng),模擬文件管理的工作過程。從而對各種文件操作命令的實質(zhì)內(nèi)容和執(zhí)行過程有比較深入的了解。 2實驗要求要求設(shè)計一個 n個用戶的文件系統(tǒng),每次用戶可保存m個文件,用戶在一次運行中只能打開一個文件,對文件必須設(shè)置保護措施,且至少有Create、delete、open、close、read、writ
2、e等命令。 3實驗步驟主目錄操作:流程圖:4程序清單編一個通過屏幕選擇命令的文件管理系統(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; /文件保護碼 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保護碼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("請輸入你要創(chuàng)建的文件名:"); /輸入文件信息 scanf("%s",&str1); printf("請輸入文件編號:"); scanf("%d",&num); printf("請輸入文件保護碼:"); 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("請輸入你要刪除的文件編號:"); scanf("%d",&num); f=SearchUFD(num); /查找用戶文件 if(f=NULL) printf("你要刪除的文件不存在!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提示:重新打開主文件信息文件時發(fā)生錯誤!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提示:重新打開用戶目錄信息文件時發(fā)生錯誤!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實驗四 文件管理n");printf("tt*ttn");printf("nnnttttt計算機1206n");printf("ttttt王成義n");printf("ttttt1030412612n");printf("ttttt完成時間: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)容放入接點中 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 編制脫硫噴槍項目可行性研究報告編制說明
- 2025年全新借款授信合同樣本下載
- 2025年中國數(shù)字電視市場運營態(tài)勢分析及投資前景預(yù)測報告
- 2020-2025年中國人工關(guān)節(jié)行業(yè)發(fā)展趨勢及投資前景預(yù)測報告
- 2024-2025學(xué)年福建省龍巖二中高一上學(xué)期第二次月考化學(xué)試卷
- 醫(yī)用無紡布合同范本
- 物資貿(mào)易項目可行性研究報告
- 2025版多人股東企業(yè)發(fā)展戰(zhàn)略合作協(xié)議范本
- 2025年度新型環(huán)保材料腳手架搭設(shè)工程承包協(xié)議
- 2025年優(yōu)鋼項目可行性研究報告
- 瀝青路面施工質(zhì)量控制要點課件
- 雀巢碘超標(biāo)危機公關(guān)分析
- 六年級奧數(shù)教材
- 螞蟻王國 完整版PPT
- 小學(xué)體育 一年級 居家跳繩練習(xí) 課件
- EFM022靜電場測試儀操作說明書
- 七年級語文閱讀理解十篇含答案解析
- 單元知識結(jié)構(gòu)圖(排球)
- 卡通風(fēng)寒假生活PPT模板課件
- 教學(xué)課件:物流營銷
- 小兒泄瀉(小兒腹瀉?。┰\療方案
評論
0/150
提交評論