![操作系統(tǒng)實(shí)驗(yàn)三-文件管理_第1頁](http://file4.renrendoc.com/view/38932cb9328f4f84d6af179dc1a27502/38932cb9328f4f84d6af179dc1a275021.gif)
![操作系統(tǒng)實(shí)驗(yàn)三-文件管理_第2頁](http://file4.renrendoc.com/view/38932cb9328f4f84d6af179dc1a27502/38932cb9328f4f84d6af179dc1a275022.gif)
![操作系統(tǒng)實(shí)驗(yàn)三-文件管理_第3頁](http://file4.renrendoc.com/view/38932cb9328f4f84d6af179dc1a27502/38932cb9328f4f84d6af179dc1a275023.gif)
![操作系統(tǒng)實(shí)驗(yàn)三-文件管理_第4頁](http://file4.renrendoc.com/view/38932cb9328f4f84d6af179dc1a27502/38932cb9328f4f84d6af179dc1a275024.gif)
![操作系統(tǒng)實(shí)驗(yàn)三-文件管理_第5頁](http://file4.renrendoc.com/view/38932cb9328f4f84d6af179dc1a27502/38932cb9328f4f84d6af179dc1a275025.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)實(shí)驗(yàn)三--文件管理操作系統(tǒng)實(shí)驗(yàn)三--文件管理操作系統(tǒng)實(shí)驗(yàn)三--文件管理xxx公司操作系統(tǒng)實(shí)驗(yàn)三--文件管理文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度《計(jì)算機(jī)操作系統(tǒng)》課程實(shí)驗(yàn)報(bào)告
題目文件管理學(xué)院:計(jì)算機(jī)學(xué)院
專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)姓名班級學(xué)號
2016年12月22日
實(shí)驗(yàn)三文件管理1.實(shí)驗(yàn)?zāi)康模?編寫一個簡單的二級文件系統(tǒng)實(shí)現(xiàn)程序,加深對文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)的理解。要求模擬采用二級目錄結(jié)構(gòu)的磁盤文件系統(tǒng)的文件操作能實(shí)現(xiàn)相應(yīng)的命令,用輸入命令來模擬用戶程序中調(diào)用的文件操作。2.實(shí)驗(yàn)內(nèi)容:最基本的文件操作(1)創(chuàng)建文件在創(chuàng)建一個新文件時(shí),系統(tǒng)首先要為新文件分配必要的外存空間,并在文件系統(tǒng)的目錄中,為之建立一個目錄項(xiàng)。目錄項(xiàng)中應(yīng)該記錄新文件的文件名及其在外存的地址等屬性。(2)刪除文件當(dāng)已不再需要某文件時(shí),可將它從文件系統(tǒng)中刪除。在刪除時(shí),系統(tǒng)應(yīng)該先從目錄中找到要刪除的文件的目錄項(xiàng),使之成為空項(xiàng),然后回收該文件所占用的存儲空間。(3)讀文件在讀一個文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出文件名和應(yīng)該讀入的內(nèi)存目標(biāo)地址。此時(shí),系統(tǒng)同樣要查找目錄,找到制定的目錄項(xiàng),從中得到被讀文件在外存中的位置。在目錄項(xiàng)中,還有一個指針用于對文件的讀/寫。(4)寫文件在寫一個文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出該文件名及該文件在內(nèi)存中的(源)地址。為此,也同樣須先查找目錄,找到指定文件的目錄項(xiàng),在利用目錄中的寫指針進(jìn)行寫操作。(5)截?cái)辔募绻粋€文件的內(nèi)容已經(jīng)陳舊而需要全部更新文件的內(nèi)容時(shí),一種方法是將此文件刪除,再重新創(chuàng)建一個新文件。但如果文件名及其屬性均無改變時(shí),則可采取另一種所謂的截?cái)辔募姆椒ǎ思磳⒃形募拈L度設(shè)置為0,或說放棄原有的文件內(nèi)容。(6)設(shè)置文件的讀/寫位置前述的文件讀/寫操作,都只提供了對文件順序存取的手段,即每次都是從文件的始端讀或?qū)?。設(shè)置文件讀/寫位置的操作,用于設(shè)置文件讀/寫指針的位置,以便每次讀/寫文件時(shí),不是從其始端而是從所設(shè)置的位置開始操作。也正因如此,才能改順序存取為隨機(jī)存取。3.設(shè)計(jì)實(shí)現(xiàn):1)流程圖 2)詳細(xì)設(shè)計(jì)源代碼#include<>#include<>#include<>#include<>#include<>#defineMaxUser100建用戶2.登陸用戶 \n"); printf("3.刪除用戶4.查看用戶 \n"); printf("0.退出系統(tǒng) \n"); printf("************************************************************\n"); printf("請輸入操作號\n"); scanf("%d",&i); switch(i) { case0:exit(0);break; case1:userCreate();break; case2:userID=login(); if(userID!=-1) { webFile(); } break; case3:userDelet();break; case4:userFind();break; default: printf("您輸入的命令有誤,請重新選擇\n"); system("pause"); system("cls"); break; } }}voiduserCreate(){ charc; charuserName[10]; inti; if(used<MaxUser) { printf("請輸入用戶名:"); for(i=0;c=_getch();i++) { if(c==13)break; else userName[i]=c; printf("%c",c); } userName[i]='\0'; for(i=0;i<used;i++) { if(!strcmp(userTable[i].userName,userName)) { printf("\n"); printf("該用戶名已存在,創(chuàng)建用戶失敗\n"); system("pause"); system("cls"); return; } } strcpy(userTable[used].userName,userName); printf("\n"); printf("請輸入密碼:"); for(i=0;c=_getch();i++) { if(c==13)break; else userTable[used].password[i]=c; printf("*"); } userTable[userID].password[i]='\0'; printf("\n"); printf("創(chuàng)建用戶成功\n"); used++; system("pause"); system("cls"); } else { printf("創(chuàng)建用戶失敗,用戶已達(dá)到上限\n"); system("pause"); system("cls"); } fflush(stdin);}intlogin(){ charname[10],psw[10]; charc; inti,times; printf("請輸入用戶名:"); for(i=0;c=_getch();i++) { if(c==13)break; else name[i]=c; printf("%c",c); } name[i]='\0'; for(i=0;i<used;i++) { if(!strcmp(userTable[i].userName,name)) break; } if(i==used) { printf("\n您輸入的用戶名不存在\n"); system("pause"); system("cls"); return-1; } for(times=0;times<3;times++) { memset(psw,'\0',sizeof(psw)); printf("\n請輸入密碼:"); for(i=0;c=_getch();i++) { if(c==13)break; else psw[i]=c; printf("*"); } printf("\n"); for(i=0;i<used;i++) { if(!strcmp(psw,userTable[i].password)) { printf("用戶登錄成功\n"); system("pause"); system("cls"); break; } } if(i==used) { printf("您輸入的密碼錯誤,您還有%d次輸入機(jī)會\n",2-times); if(times==2)exit(0); } elsebreak; } fflush(stdin); returni;}voiduserDelet(){ intstatePos; UFD*q; charname[10],psw[10]; charc; inti,times,j; printf("請輸入用戶名:"); for(i=0;c=_getch();i++) { if(c==13)break; else name[i]=c; printf("%c",c); } name[i]='\0'; for(i=0;i<used;i++) { if(!strcmp(userTable[i].userName,name)) break; } if(i==used) { printf("\n您輸入的用戶名不存在\n"); system("pause"); system("cls"); } else { q=userTable[i].user->next; while(q) { if(q->NULL) { statePos=q->file->start; } freeDisk(statePos); q=q->next; } for(i,j=i+1;i<=used;j++,i++) { userTable[i]=userTable[j]; } printf("\n用戶刪除成功\n"); system("pause"); system("cls"); used--; }}voiduserFind(){ inti; printf("用戶列表:\n"); for(i=0;i<used;i++) { printf("%s\n",userTable[i].userName); } system("pause"); system("cls"); }voidwebFile(){ inti; charname[10],kind[3]; printf("********************************************************\n"); printf("1.創(chuàng)建2.刪除\n"); printf("3.寫入文件4.查看文件內(nèi)容\n"); printf("5.重命名6.查看文件屬性\n"); printf("7.查看用戶文件8.關(guān)閉文件\n"); printf("9.修改文件權(quán)限10.查看磁盤使用情況\n"); printf("11.返回上級目錄12.退出系統(tǒng)\n"); printf("*********************************************************\n"); printf("請輸入操作號:"); scanf("%d",&i); while(1) { switch(i) { case1: (); break; case2: (); break; case3: (); break; case4: (); break; case5: (); break; case6: (); break; case7: (); break; case8: (); break; case9: (); break; case10: diskShow(); break; case11: system("cls"); webUser(); break; case12: exit(0); break; default: printf("輸入錯誤請重新輸入:"); break; } scanf("%d",&i); }}void(){ time_trawtime; intstartPos; charc; char[10],[10],[10]; charcommand[50]; intlength; ser->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) { printf("文件重名,創(chuàng)建文件失敗\n"); system("pause"); return; } } if(requestDist(startPos,length)) { =(UFD*)malloc(sizeof(UFD)); >file=(*)malloc(sizeof()); strcpy(>file->,); strcpy(>file->,); >file->maxlength=length; >file->start=startPos; >file->openFlag=false; time(&rawtime); >file->timeinfo=localtime(&rawtime); >next=NULL; if(userTable[userID].user->next==NULL) userTable[userID].user->next=; else { p=userTable[userID].user->next; while(p->next)p=p->next; p->next=; } printf("創(chuàng)建文件成功\n"); system("pause"); } else { printf("磁盤空間已滿或所創(chuàng)建文件超出磁盤空閑容量,磁盤空間分配失敗\n"); system("pause"); }}voidinitDisk(){ diskHead=(diskNode*)malloc(sizeof(diskNode)); diskHead->maxlength=MaxDisk; diskHead->useFlag=0; diskHead->start=0; diskHead->next=NULL;}voidinitFile(){ inti; for(i=0;i<MaxUser;i++)ser=(UFD*)malloc(sizeof(UFD)); userTable[i].user->next=NULL; }}intrequestDist(int&startPostion,intmaxLength){ intflag=0;ser; p=q->next; while(p) { if(!strcmp(p->file->,))break; else { p=p->next; q=q->next; } } if(p) { if(p->file->openFlag!=true)ser; for(p=q->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) break; } if(p) { startPos=p->file->start; length=p->file->length; p->file->openFlag=true;ser; for(p=q->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) break; } if(p) { if(!strcmp(p->file->,"r"))ser; for(p=q->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) break; } if(p) { printf("********************************************\n"); printf("文件名:%s\n",p->file->); printf("文件長度:%d\n",p->file->maxlength); printf("文件在存儲空間的起始地址:%d\n",p->file->start); printf("文件類型:%s\n",p->file->); printf("創(chuàng)建時(shí)間:%s\n",asctime(p->file->timeinfo)); printf("********************************************\n"); system("pause"); } else { printf("沒有找到該文件,請檢查輸入的文件名是否正確\n"); system("pause"); }}void(){ char[10],[10],command[50]; inti,k; fflush(stdin); printf("輸入文件名稱和新的文件權(quán)限:"); gets(command); for(i=0,k=0;command[i]!='';i++,k++) [k]=command[i]; [k]='\0'; for(k=i+1,i=0;command[k]!='\0';i++,k++) [i]=command[k]; [i]='\0'; UFD*p,*q; q=userTable[userID].user; for(p=q->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) break; } if(p) { strcpy(p->file->,); printf("修改文件類型成功\n"); system("pause"); } else { printf("沒有找到該文件,請檢查輸入的文件名是否正確\n"); system("pause"); }}void(){ char[10],[10],command[50]; inti,k; fflush(stdin); printf("輸入文件名稱和新的文件名稱:"); gets(command); for(i=0,k=0;command[i]!='';i++,k++) [k]=command[i]; [k]='\0'; for(k=i+1,i=0;command[k]!='\0';i++,k++) [i]=command[k]; [i]='\0'; UFD*p,*q; q=userTable[userID].user; for(p=q->next;p!=NULL;p=p->next) { if(!strcmp(p->file->,)) break; } if(p) { while(q->next) { if(!strcmp(q->next->file->,)) { printf("您輸入的文件名已存在,重命名失敗\n"); system("pause"); return; } q=q->next; } strcpy(p->file->,); printf("重命名成功\n"); system("pause"); } else { printf("沒有找到該文件,請檢查輸入的文件名是否正確\n"); system("pause"); }}void(){ charuserName[10],command[50]; inti,k; printf("輸入用戶名稱:"); fflush(stdin); gets(command); for(i=0,k=0;command[i]!='\0';i++,k++) userName[k]=command[i]; userName[k]='\0'; UFD*p; for(i=0;i<MaxUser;i++) { if(!strcmp(userTable[i].userName,userName)) { k=i; break; } } if(i==MaxUser) { printf("沒有找到該用戶,請檢查輸入用戶名是否正確\n"); system("pause"); return; } else { p=userTable[k].user->next; printf("*******************************************************************************\n"); printf("文件名文件長度文件在磁盤的起始地址文件類型創(chuàng)建時(shí)間\n"); for(;p!=NULL;p=p->next) printf("%s%d%d%s%s",p->file->,p->file->maxlength, p->file->start,p->file->,asctime(p->file->timeinfo)); printf("********************************************************************************\n"); system("pause"); }}voiddiskShow(){ diskNode*p; inti=0,unusedDisk=0; printf("********************************************************
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)評招募合伙協(xié)議書(2篇)
- 星球版地理八年級上冊《第二節(jié) 眾多的人口》聽課評課記錄1
- 五年級上冊數(shù)學(xué)聽評課記錄《數(shù)學(xué)好玩-圖形中的規(guī)律》(4)北師大版
- 蘇科版數(shù)學(xué)八年級上冊聽評課記錄《4-4近似數(shù)》
- 人教版地理七年級上冊《 聚落》聽課評課記錄
- 《東漢的興亡》聽課評課記錄3(新部編人教版七年級上冊歷史)
- 新版華東師大版八年級數(shù)學(xué)下冊《16.4零整數(shù)冪與負(fù)整數(shù)指數(shù)冪科學(xué)記數(shù)法》聽評課記錄10
- 人教版數(shù)學(xué)八年級下冊聽評課記錄:第20章 中位數(shù)和眾數(shù)
- 小學(xué)二年級口算訓(xùn)練
- 蘇教版小學(xué)二年級數(shù)學(xué)上冊口算題卡
- 中國氫內(nèi)燃機(jī)行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報(bào)告-智研咨詢(2024版)
- 《自然保護(hù)區(qū)劃分》課件
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 上海鐵路局招聘筆試沖刺題2025
- 學(xué)校食堂餐廳管理者食堂安全考試題附答案
- 《商用車預(yù)見性巡航系統(tǒng)技術(shù)規(guī)范》
- 國旗班指揮刀訓(xùn)練動作要領(lǐng)
- 春季安全開學(xué)第一課
- 植物芳香油的提取 植物有效成分的提取教學(xué)課件
- 陜鼓集團(tuán)招聘筆試題目
- 肖像繪畫市場發(fā)展現(xiàn)狀調(diào)查及供需格局分析預(yù)測報(bào)告
評論
0/150
提交評論