




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、江南大學物聯(lián)網(wǎng)工程學院實驗報告課程名稱 操作系統(tǒng) 實驗名稱 文件系統(tǒng)實驗 實驗日期 2015/5/28 班級 計算機1206 姓名 王成義 學號 1030412612 儀器編號 實驗報告要求 1實驗目的 2實驗要求 3實驗步驟 4程序清單 5運行情況 5實驗體會1實驗目的用高級語言編寫和調試一個簡單的文件系統(tǒng),模擬文件管理的工作過程。從而對各種文件操作命令的實質內容和執(zhí)行過程有比較深入的了解。 2實驗要求要求設計一個 n個用戶的文件系統(tǒng),每次用戶可保存m個文件,用戶在一次運行中只能打開一個文件,對文件必須設置保護措施,且至少有Create、delete、open、close、read、writ
2、e等命令。 3實驗步驟主目錄操作:流程圖:4程序清單編一個通過屏幕選擇命令的文件管理系統(tǒng),每屏要為用戶提供足夠的選擇信息,不需要打入冗長的命令。#include <stdio.h>#include <stdlib.h>#include <string.h>/主文件結構體 struct MasterFile char username20; /用戶名 char password20; /用戶名密碼 char flag; /標志 struct MasterFile *next; ; /用戶文件結構體 struct UserFile int fnum; /文件編號
3、 char fname20; /文件名 int flength; /文件長度 char flag; /標志 char fpw20; /文件保護碼 struct UserFile *link; ; /全局變量 int shoudsave; /存儲標記 int usingnum; /當前用戶標記 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; /存儲標記 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; /設置用戶目錄 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、/設置存儲標記 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、設置存儲標記 /讀文件 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); /輸出文件內容 while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf("n"); fclose(fp); /關閉文件 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("請按字符輸入內容(以'#'表示結束符)"); /寫入文件 scanf("%s",&ch); while(ch!='#') fwrite(&ch,1,1,fp); scanf("%s",&c
18、h); fclose(fp); /關閉文件 shoudsave=1; /設置存儲標記 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); /將文件的內容放入接點中 fclose(fpm); / 關閉文件 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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第六章 實數(shù)大單元教學設計 課時教學設計 2024-2025學年人教版數(shù)學七年級下冊
- 廠工作合同范例
- 農(nóng)業(yè)種植合同范本
- 辦事傭金合同范例
- 八年級語文下冊 十一岳陽樓記教學實錄設計 長春版
- 分店加盟簡易合同范例
- 作品維修合同范例
- 冷鏈裝卸合同范例
- 企業(yè)分紅合同范例
- 新疆兵團第五師八十八團學校高中信息技術下冊《第11課時 聲音的編輯與加工》教學實錄
- 中國古都西安英文介紹課件
- 第3課 中古時期的西歐(新教材課件)-【中職專用】《世界歷史》(高教版2023?基礎模塊)
- 《電氣裝置安裝工程 盤、柜及二次回路接線施工及驗收規(guī)范》
- RRU設計原理與實現(xiàn)
- 工程質量責任制和考核辦法
- 《室內展示設計》課件
- 中級消防設施操作員考試題庫
- 服裝店售后培訓課件
- 3D打印與傳統(tǒng)工藝美術的融合創(chuàng)新
- 運動損傷預防與處理的案例分析
- 第四次工業(yè)革命課件
評論
0/150
提交評論