版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)生課程設(shè)計報告實驗課名稱:操作系統(tǒng)實驗項目名稱:文件系統(tǒng)設(shè)計專班業(yè)名稱:計算機科學(xué)與技術(shù)級:-學(xué)學(xué)生姓號:-名:-教師姓名:-2014年6月30日一、課程設(shè)計的目的.二、課程設(shè)計的內(nèi)容及要求.內(nèi)容.要求.三、實現(xiàn)原理.四、關(guān)鍵算法實現(xiàn)流程圖.流程圖.關(guān)鍵算法.五、軟件運行環(huán)境及限制.六結(jié)果輸出及分析.七心得體會.一課程設(shè)計的目的本課程設(shè)計是學(xué)習(xí)完計算機操作系統(tǒng)課程后,進行的一次全面的綜合訓(xùn)練,通過課程設(shè)計,讓我更好地掌握操作系統(tǒng)的原理及實現(xiàn)方法,加深對操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強了我的動手能力。二課程設(shè)計的內(nèi)容及要求實驗內(nèi)容通過一個簡單的二級文件系統(tǒng)設(shè)計,加深對文件系統(tǒng)的內(nèi)部功能以
2、及內(nèi)部實現(xiàn)的理解。要求模擬采用二級目錄結(jié)構(gòu)的磁盤文件系統(tǒng)的文件操作,能實現(xiàn)以下幾條命令,用輸入命令來模擬用戶程序中調(diào)用的文件操作:Login用戶登錄Dir列文件目錄(列出文件名、物理地址、保護碼和文件長度)Create創(chuàng)建文件Delete刪除文件Open打開文件Close關(guān)閉文件Read讀文件Write寫文件源文件可以進行讀寫保護實驗要求文件系統(tǒng)管理中用到的數(shù)據(jù)結(jié)構(gòu)有:首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。用戶創(chuàng)建的文件,可以編號存儲于磁盤上。如:file0,file1,file2并以編號作為物理地址,在目錄中進行
3、登記。三實現(xiàn)原理首先,實現(xiàn)Login用戶登錄,(用戶名:lhx密碼:12358)必須登錄成功才能進入文件系統(tǒng)進行查看,進入后,通過樹狀展示文件目錄(默認(rèn)文件目錄是homelhxkefile),利用命令行的方式進行注冊、登錄、各種各樣的文件操作。四關(guān)鍵算法實現(xiàn)流程圖流程圖:開始登錄否驗證是否成功?是目錄右鍵進行選擇操作新建目錄新建文件刪除打開文件屬性結(jié)束關(guān)鍵算法:用戶登錄功能的實現(xiàn)typedefstructuserMsgcharloginName20;charloginPasswd20;UserMsg;intlogin(char*name,char*passwd)UserMsgum;intcou
4、nt=0,size=sizeof(UserMsg),nres,pres;intfd=open(/home/lhx/study/kefile/login.dat,O_RDONLY);if(fd=-1)return-1;while(1)if(read(fd,&um,size)size)return-1;nres=strcmp(name,um.loginName);pres=strcmp(passwd,um.loginPasswd);if(nres=0&pres=0)return1;if(nres=0&pres!=0)return0;count+;lseek(fd,SEEK_SET,size*cou
5、nt);lseek(fd,SEEK_SET,0);close(fd);用戶注冊具體實現(xiàn)intregist(char*name,char*passwd)UserMsgum;intcount=0,size=sizeof(UserMsg);intfd=open(/home/lhx/study/kefile/login.dat,O_WRONLY|O_APPEND);if(fd=-1)return-1;strcpy(um.loginName,name);strcpy(um.loginPasswd,passwd);lseek(fd,SEEK_END,0);count=write(fd,&um,size);
6、if(count!=size)return-1;return1;查看目錄下文件intlistdtl(char*pname)structdirent*dlist;inttmp,count;charfpath50,*fname;count=scandir(pname,&dlist,NULL,alphasort);if(count=-1)return-1;printf(%10st%10st%10st%10st%10sn,編號,類型,所有者ID,大小,文件名);for(tmp=0;tmpd_name);stat(fpath,&st);switch(dlisttmp-d_type)caseDT_DIR:
7、fname=目錄;break;caseDT_LNK:fname=軟鏈接;break;caseDT_BLK:fname=塊設(shè)備;break;caseDT_REG:fname=普通文件;break;default:fname=其他類型;break;printf(%10lut%10st%10ut%10lut%10sn,st.st_ino,fname,st.st_uid,st.st_size,dlisttmp-d_name);return0;文件創(chuàng)建、目錄創(chuàng)建、目錄刪除、文件刪除等實現(xiàn)if(strcmp(resbuf,create)=0)intmode=atoi(pbuf);if(mode=0)pri
8、ntf(無法識別的文件權(quán)限n);continue;filedesc=creat(ubuf,tentoe(mode);if(filedesc=-1)printf(創(chuàng)建失敗,該文件已存在n);elseprintf(創(chuàng)建成功n);close(filedesc);elseif(strcmp(resbuf,type)=0)filedesc=open(ubuf,O_RDONLY);if(filedesc=-1)printf(該文件不存在!n);elsecharbuf1025;intcount;printf(%s文件的內(nèi)容:n,ubuf);while(1)count=read(filedesc,buf,10
9、24);if(count=0)break;bufcount=0;printf(%s,buf);elseif(strcmp(resbuf,delete)=0)filedesc=unlink(ubuf);if(filedesc!=0)printf(刪除失敗,文件可能不存在n);elseprintf(刪除文件%s成功n,ubuf);elseif(strcmp(resbuf,mkdir)=0)filedesc=mkdir(ubuf,0751);if(filedesc!=0)printf(創(chuàng)建目錄失敗,目錄可能已經(jīng)存在了n);elseprintf(創(chuàng)建目錄%s成功n,ubuf);elseif(strcm
10、p(resbuf,rmdir)=0)filedesc=rmdir(ubuf);if(filedesc!=0)printf(刪除目錄失敗,目錄可能不存在或者目錄非空n);elseprintf(刪除目錄%s成功n,ubuf);elseif(strcmp(resbuf,cd)=0)chardpath50;sprintf(dpath,%s%s,upath,ubuf);strcpy(upath,dpath);filedesc=chdir(dpath);if(filedesc!=0)printf(更改工作目錄失敗!n);elseprintf(當(dāng)前工作目錄:%sn,dpath);elseif(strcmp(
11、resbuf,dir)=0)if(strcmp(ubuf,-nl)=0)DIR*dir;structdirent*drt;dir=opendir(upath);while(1)drt=readdir(dir);if(drt=NULL)break;printf(%st,drt-d_name);printf(n);closedir(dir);elseif(strcmp(ubuf,-l)=0)listdtl(upath);elseprintf(不能識別的選項%s!n,ubuf);continue;elseprintf(未能識別的命令,請核對!n);五軟件運行環(huán)境及限制2.22.3登錄文件系統(tǒng)lxc密
12、碼12358創(chuàng)建文件1.c并查看當(dāng)前目錄下的文件信息運行環(huán)境運行環(huán)境:linux使用語言:c語言編程工具:Kate具體演示注冊新用戶lxc密碼123582.4創(chuàng)建新目錄dirc2.5刪除目錄dirc2.6查看文件1.c的內(nèi)容2.7刪除文件1.c七心得體會操作系統(tǒng)課程設(shè)計,自己通過查找資料、復(fù)習(xí)課本、編程調(diào)試,寫實驗報告等環(huán)節(jié),進一步掌握了以前學(xué)到的知識,并且還對操作系統(tǒng)應(yīng)用有了更深入的認(rèn)識與掌握。比如對樹的展示有了很好的學(xué)習(xí),對二級文件系統(tǒng)也有了很好的了解,如何解決實現(xiàn)里面功能的各種問題。通過實踐的學(xué)習(xí),我認(rèn)到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計算機方面的
13、知識都要重在實踐,所以后在學(xué)習(xí)過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機。附件(代碼)mfun.h#ifndef_MFUN_H_#define_MFUN_H_#include#include#include#include#include#includetypedefstructuserMsgcharloginName20;charloginPasswd20;UserMsg;intlogin(char*name,char*passwd)UserMsgum;intcount=0,size=sizeof(UserMsg),nres,pres;intfd=open(/home/lhx/st
14、udy/kefile/login.dat,O_RDONLY);if(fd=-1)return-1;while(1)if(read(fd,&um,size)999|num0)return-1;res=64*num/100+8*(num/10%10)+num%10;returnres;intlistdtl(char*pname)structdirent*dlist;inttmp,count;charfpath50,*fname;count=scandir(pname,&dlist,NULL,alphasort);if(count=-1)return-1;printf(%10st%10st%10st
15、%10st%10sn,編號,類型,所有者ID,大小,文件名);for(tmp=0;tmpd_name);stat(fpath,&st);switch(dlisttmp-d_type)caseDT_DIR:fname=目錄;break;caseDT_LNK:fname=軟鏈接;break;caseDT_BLK:fname=塊設(shè)備;break;caseDT_REG:fname=普通文件;break;default:fname=其他類型;break;printf(%10lut%10st%10ut%10lut%10sn,st.st_ino,fname,st.st_uid,st.st_size,dlis
16、ttmp-d_name);return0;#endiffile.c#includemfun.h#includeintisLogin;intmain()charresbuf20,ubuf20,pbuf20,upath50;printf(-文件系統(tǒng)演示課設(shè)n);while(!isLogin)printf(操作說明:n);printf(1:登陸格式:loginusernamepasswordn);printf(2:注冊格式:registusernamepasswordn);printf(請輸入命令:);scanf(%s%s%s,resbuf,ubuf,pbuf);if(strcmp(resbuf,l
17、ogin)=0)intlres=login(ubuf,pbuf);if(lres=-1)printf(用戶%s不存在,請核對信息或注冊n,ubuf);continue;elseif(lres=0)printf(密碼與%s不匹配,請核對n,ubuf);elsecontinue;printf(登陸成功n);isLogin=1;sprintf(upath,/home/lhx/study/kefile/%s/,ubuf);lres=chdir(ubuf);if(lres!=0)printf(進入目錄失敗n);printf(Error:%sn,strerror(errno);elseprintf(當(dāng)前工
18、作目錄:%sn,upath);system(clear);elseif(strcmp(resbuf,regist)=0)intrres=regist(ubuf,pbuf);if(rres=-1)printf(注冊失敗,請重試n);elseelseprintf(注冊成功,趕快登陸系統(tǒng)演示吧n);mkdir(ubuf,0741);printf(您輸入的命令無法識別,請重試n);printf(-文件操作演示n);while(1)intfiledesc;printf(n);printf(創(chuàng)建文件:createfilenamemode(eg:666)n);printf(查看文件內(nèi)容:typefilena
19、me-nn);printf(刪除文件:deletefilename-nn);printf(創(chuàng)建目錄:mkdirdirname-nn);printf(刪除目錄:rmdirdirname-nn);printf(察看當(dāng)前目錄下的文件:diroption(-l:detail,-nl)-nn);printf(進入目錄:cddirname-nn);printf(請輸入操作命令:);scanf(%s%s%s,resbuf,ubuf,pbuf);if(strcmp(resbuf,create)=0)intmode=atoi(pbuf);if(mode=0)printf(無法識別的文件權(quán)限n);continue
20、;filedesc=creat(ubuf,tentoe(mode);if(filedesc=-1)printf(創(chuàng)建失敗,該文件已存在n);elseprintf(創(chuàng)建成功n);close(filedesc);elseif(strcmp(resbuf,type)=0)filedesc=open(ubuf,O_RDONLY);if(filedesc=-1)printf(該文件不存在!n);elsecharbuf1025;intcount;printf(%s文件的內(nèi)容:n,ubuf);while(1)count=read(filedesc,buf,1024);if(count=0)break;bufcount=0;printf(%s,buf);elseif(strcmp(resbuf,delete)=0)filedesc=unlink(ubuf);if(filedesc!=0)printf(刪除失敗,文件可能不存在n);elseprintf(刪除文件%s成功n,ubuf);elseif(strcmp(resbuf,mkdir)=0)fil
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 纖維素課程設(shè)計
- 煙氣濕法脫硫課程設(shè)計
- 熱電廠課程設(shè)計電氣部分
- 標(biāo)準(zhǔn)化服務(wù)在畜牧獸醫(yī)行業(yè)的健康發(fā)展考核試卷
- 焊接設(shè)備在電梯維修與保養(yǎng)中的應(yīng)用考核試卷
- 港口物流與冷鏈物流發(fā)展考核試卷
- 玻璃制品的售后服務(wù)策略考核試卷
- 地質(zhì)災(zāi)害防治培訓(xùn)教材考核試卷
- 海洋工程裝備市場動態(tài)分析考核試卷
- 病房護理中的護理教育考核試卷
- 公開課教我如何不想他課件-PPT
- 《網(wǎng)店運營實務(wù)》課程標(biāo)準(zhǔn)
- 讀書筆記《框架思維》PPT模板思維導(dǎo)圖下載
- 裁判員勞動合同
- 國開2023春計算機組網(wǎng)技術(shù)實訓(xùn)-小型校園網(wǎng)網(wǎng)絡(luò)解決方案的設(shè)計與實施參考答案
- 半導(dǎo)體物理學(xué)(劉恩科)第七版-完整課后題答案
- 項目部領(lǐng)導(dǎo)施工現(xiàn)場值班帶班交接班記錄表
- 2023年江蘇小高考歷史試卷
- 放棄公開遴選公務(wù)員面試資格聲明
- 氰化鈉庫安全操作規(guī)程
- 攝影中點線面藝術(shù)
評論
0/150
提交評論