




版權(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)告要求17應(yīng)驗(yàn)?zāi)康?.實(shí)驗(yàn)要求3-驗(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 .程序清單每屏要為用戶提供足夠的選擇信息,不需要打入冗長(zhǎng)編一個(gè)通過(guò)屏幕選擇命令的文件管理系統(tǒng), 的命令。#include <stdio.h>#include <stdlib.h>#include <string.h>/主文件結(jié)構(gòu)體struct MasterFilechar username20;/ 用戶名char password20;/ 用戶名密碼char flag; / 標(biāo)志struct MasterFile *next;;/用戶文件結(jié)構(gòu)體struct UserFileint fnum; /文件編號(hào)char
3、 fname20; / 文件名int flength; / 文件長(zhǎng)度char flag; / 標(biāo)志char fpw20;/文件保護(hù)碼struct UserFile *link; I ;/全局變量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;i<20;i+)|if (MFDi.flag=0) usingnum=i; retu
4、rn &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;return NULL;/查找用戶文
5、件struct UserFile *SearchUFD( int num)for (int i=0;i<20;i+) Iif (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;UFDusingnumi.flength=UFD
6、usingnumi+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 MasterFile *p;printf("你是已有用
7、戶嗎(y/n)?");scanf( "%s",&flag1);if (flag1= 'n' ) / 新用戶登錄printf("請(qǐng)創(chuàng)建新的用戶:(y/n)");scanf( "%s",&flag2);if (flag2= 'n' ) |printf("你已退出了系統(tǒng)!n");exit(1); else printf("請(qǐng)輸入你的用戶名:”);scanf( "%s",&str1);printf("請(qǐng)輸入口令:&qu
8、ot;);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; / 存儲(chǔ)標(biāo)記else /舊用戶登錄while (1)printf("請(qǐng)輸入你的用戶名:");/輸入用戶名scanf( "%s”,&str3);p=SearchMFD(str3);if
9、 (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
10、)printf("對(duì)不起,你輸入的口令不正確,請(qǐng)重新輸入.n"); continue ; else break; break;/菜單void menu()/列文件目錄void Dir()if (MFDusingnum.next=0)printf("目前你不存在任何文件!n");else for (int i=0;i<20;i+)if (UFDusingnumi.flag=1)printf("文件編號(hào)t%dt文件名t%st文件長(zhǎng)度t%dt保護(hù)碼t%sn" ,UFDusingnumi.fnum,UFDusingnumi.fname,
11、UFDusingnumi.flength,UFDusingnumi.fpw); /創(chuàng)建文件void Create()FILE *fp;int num;struct UserFile *f;char str120,str220;printf("請(qǐng)輸入你要?jiǎng)?chuàng)建的文件名:");/輸入文件信息scanf( "%s",&str1); printf("請(qǐng)輸入文件編號(hào):");scanf( "%d",&num);printf("請(qǐng)輸入文件保護(hù)碼:");scanf( "%s”,&
12、str2);fp=fopen(str1, "w"); / 創(chuàng)建文件f=MoveUFDToLast(); /尋找用戶目錄空閑區(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=
13、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 LeftMoveUFD(num); /刪除用戶文件
14、目錄 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) / 打開指
15、定文件 printf("不能打開該文件!n");exit(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("請(qǐng)輸入你要寫的文件的編號(hào):");scanf( "%d",&nu
16、m);f=SearchUFD(num); / 查找文件 if (f=NULL)printf("你輸入的文件不存在!n");else if (fp=fopen(f->fname, "wr" )=NULL) / 打開指定文件printf("不能打開該文件!n");exit(0); printf("請(qǐng)按字符輸入內(nèi)容(以#'表示結(jié)束符)“);/寫入文件| scanf( "%s",&ch);while (ch!= '#' )fwrite(&ch,1,1,fp);scan
17、f( "%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( "n提示:重新打開主文件信息文件時(shí)發(fā)生錯(cuò)誤!n");exit(1);for (int i=0;i<20;i+)f
18、write(&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;j<20;j+)/保存用戶文件目錄信息fwrite(&UFDj, sizeof
19、 (struct UserFile),20,fpu);fclose(fpu);printf("用戶文件目錄信息保存完畢!n");/主函數(shù)int main(););printf( "nntt*ttn"printf( "tttt 實(shí)驗(yàn)四 文件管理n");計(jì)算機(jī)1206機(jī)');printf("懂*懂坨”printf( "nnntttttprintf("ttttt王成義 n");printf("ttttt1030412612n"X printf("ttttt完成時(shí)間
20、:2015/5/28nnnn");printf("ttttWelcomen'n");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( "%
21、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提示:用戶文件目錄信息>文件還不存在,是否創(chuàng)建?(y/n)n"); scanf( "%s"
22、;,&jian); if (jian= 'y' |jian= 'Y')fpu=fopen( "D:UserFile.txt" , "wb"); / 創(chuàng)建用戶文件目錄的文件else exit(0);I_printf("文件正在打開,請(qǐng)稍等");for (int i=0;i<20;i+)/讀取主文件目錄信息fread(&MFDi, sizeof (struct MasterFile),1,fpm); / 將文件的內(nèi)容放入接點(diǎn)中 fclose(fpm); / 關(guān)閉文件 while (!f
23、eof(fpu) /讀取用戶目錄文件信息for (int i=0;i<20;i+)if (fread(&UFDi0, 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)
24、;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),再見(jiàn)!n"); break;switch (sel)case 1:Dir();break; /列文件目錄case 2:Create();break; /創(chuàng)建文件case 3:Delete(); | break; /刪除文件 case 4:Read();break; /讀文件case 5:Write();break; /寫文件default : printf("你輸?shù)倪x項(xiàng)有誤,請(qǐng)重新輸入!n"); break;system( "PAUSE"return 0;5 .運(yùn)行
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年03月江西吉安市吉州區(qū)工業(yè)園區(qū)管委會(huì)面向社會(huì)公開招聘編外人員1人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年03月吉林省農(nóng)業(yè)科學(xué)院編外勞務(wù)派遣人員(1號(hào))(5人)筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 花草種項(xiàng)目風(fēng)險(xiǎn)評(píng)估報(bào)告
- 中級(jí)電子商務(wù)設(shè)計(jì)師-《電子商務(wù)設(shè)計(jì)師》押題密卷2
- 內(nèi)蒙古阿榮旗第五區(qū)域聯(lián)合體2025屆五下數(shù)學(xué)期末檢測(cè)試題含答案
- 廣西城市職業(yè)大學(xué)《園林景觀設(shè)計(jì)初步》2023-2024學(xué)年第二學(xué)期期末試卷
- 淮北職業(yè)技術(shù)學(xué)院《電力系統(tǒng)基礎(chǔ)(英語(yǔ))》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川民族學(xué)院《數(shù)據(jù)結(jié)構(gòu)及算法(Python)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶智能工程職業(yè)學(xué)院《水工程監(jiān)理》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省巨野縣第一中學(xué)2025屆全國(guó)高三沖刺考(四)全國(guó)I卷歷史試題含解析
- 蘇洵《六國(guó)論》與蘇軾《六國(guó)論》、蘇轍《六國(guó)論》比較閱讀(附答案解析與譯文)
- 賓館、民宿安全管理制度(內(nèi)含5個(gè))
- 韻達(dá)快遞勞動(dòng)合同
- 填塘壓浸工程施工組織設(shè)計(jì)方案
- 普通心理學(xué)(第六版)
- 衛(wèi)健系統(tǒng)深入開展矛盾糾紛“大走訪、大排查、大化解”專項(xiàng)行動(dòng)工作方案
- 三年級(jí)音樂(lè)上冊(cè) 《法國(guó)號(hào)》課件教學(xué)
- 鄉(xiāng)鎮(zhèn)(街道)財(cái)政運(yùn)行綜合績(jī)效評(píng)價(jià)報(bào)告及自評(píng)指標(biāo)
- 代建項(xiàng)目管理手冊(cè)
- GB/T 15065-2009電線電纜用黑色聚乙烯塑料
- 中層干部任期考核民主測(cè)評(píng)表
評(píng)論
0/150
提交評(píng)論