![操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/11/b48a630f-f023-4105-8919-945ee0db1f47/b48a630f-f023-4105-8919-945ee0db1f471.gif)
![操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/11/b48a630f-f023-4105-8919-945ee0db1f47/b48a630f-f023-4105-8919-945ee0db1f472.gif)
![操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/11/b48a630f-f023-4105-8919-945ee0db1f47/b48a630f-f023-4105-8919-945ee0db1f473.gif)
![操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/11/b48a630f-f023-4105-8919-945ee0db1f47/b48a630f-f023-4105-8919-945ee0db1f474.gif)
![操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/11/b48a630f-f023-4105-8919-945ee0db1f47/b48a630f-f023-4105-8919-945ee0db1f475.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè)計報告專 業(yè):軟件工程學(xué) 號:姓 名:馬 提交日期: 2017/1/10實用標(biāo)準(zhǔn)文案【設(shè)計目的 】1、通過一個簡單多用戶文件系統(tǒng)的設(shè)計,加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實現(xiàn)2、結(jié)合數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計、計算機(jī)原理等課程的知識,設(shè)計一個二級文件系統(tǒng),進(jìn)一步 理解操作系統(tǒng)3、通過對實際問題的分析、設(shè)計、編程實現(xiàn),提高學(xué)生實際應(yīng)用、編程的能力 【設(shè)計內(nèi)容 】為 Linux 系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)。要求做到以下幾點:1.可以實現(xiàn)下列幾條命令:login用戶登錄dir列目錄create創(chuàng)建文件delete刪除文件open打開文件close關(guān)閉文件read讀文件write寫文件cd進(jìn)出
2、目錄2列目錄時要列出文件名,物理地址,保護(hù)碼和文件長度3源文件可以進(jìn)行讀寫保護(hù)精彩文檔實用標(biāo)準(zhǔn)文案【實驗環(huán)境 】C+DevCpp【設(shè)計思路 】本文件系統(tǒng)采用兩級目錄, 其中第一級對應(yīng)于用戶賬號, 第二級對應(yīng)于用戶帳號下的文 件。另外, 為了簡便文件系統(tǒng)未考慮文件共享, 文件系統(tǒng)安全以及管道文件與設(shè)備文件等特 殊內(nèi)容。首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu): 主目錄、 子目錄及活動文件等。 主目錄和子目錄都以 文件的形式存放于磁盤,這樣便于查找和修改。用戶創(chuàng)建的文件,可以編號存儲于磁盤上。 如: file0,file1,file2 并以編號作為物理地址,在目錄中進(jìn)行登記。結(jié)構(gòu)體:typedef struc
3、t/*the structure of OSFILE*/intfpaddr;/*file physical address*/intflength;/*file length*/intfmode;/*file mode:0-Read Only;1-Write Only;2-Read and Write;3-Protect;*/char fnameMAXNAME; /*file name*/ OSFILE; / 存放重要信息typedef struct /*the structure of OSUFD*/精彩文檔實用標(biāo)準(zhǔn)文案char ufdnameMAXNAME;/*ufd name*/OSFI
4、LE ufdfileMAXCHILD;/*ufd own file*/OSUFD;/ 用戶下面的文件typedef struct /*the structure of OSUFDLOGIN*/char ufdnameMAXNAME;/*ufd name*/char ufdpword8;/*ufd password*/ OSUFD_LOGIN;typedef struct/*file open mode*/int ifopen;/*ifopen:0-close,1-open*/int openmode;/*0-read only,1-write only,2-read and write,3-i
5、nitial*/OSUFD_OPENMODE;主要的函數(shù)說明:void LoginF(); /*LOGIN FileSystem 用戶登錄 */void DirF(); /*Dir FileSystem列目錄 */void CdF(); /*Change Dir 改變目錄 */void CreateF(); /*Create File創(chuàng)建文件 */void DeleteF(); /*Delete File 刪除文件 */精彩文檔實用標(biāo)準(zhǔn)文案void ModifyFM(); /*Modify FileMode 修改 */void OpenF();/*Open File 打開文件 */void C
6、loseF(); /*Close File 關(guān)閉文件 */void ReadF(); /*Read File讀文件 */void WriteF(); /*Write File 寫文件 */void QuitF(); /*Quit FileSystem 離開文件系統(tǒng) */void help();其他重要函數(shù):void clrscr() / 清屏int ExistD(char *dirname)/*Whether DirName Exist,Exist-i,Not Exist-0*/int ExistF(char *filename)/*Whether FileName Exist,Exist-i
7、,Not Exist-0*/int FindPANo()/*find out physical address num*/void SetPANo(int RorW)/*Set physical address num,0-read,1-write*/void InputPW(char *password)/*input password,use * replace*/char *ltrim(char *str) /*remove the heading blanks.去除左空白 */char *rtrim(char *str)/*remove the trailing blanks.去除右空
8、白 */int WriteF1() /*write file 相當(dāng)于置換文件 */精彩文檔實用標(biāo)準(zhǔn)文案程序流程說明:整體流程:開始Login ( Name/Pw/Cpw )創(chuàng)打建精彩文檔開文文件件實用標(biāo)準(zhǔn)文案精彩文檔實用標(biāo)準(zhǔn)文案各部分功能流程:Open :精彩文檔實用標(biāo)準(zhǔn)文案精彩文檔實用標(biāo)準(zhǔn)文案Delete :精彩文檔實用標(biāo)準(zhǔn)文案接收刪除文件名獲取文件獲取物理塊號文件向前移動刪除文件,文件數(shù)減一精彩文檔實用標(biāo)準(zhǔn)文案結(jié)束Write開始獲取文件確認(rèn)該文件被打開實用標(biāo)準(zhǔn)文案獲取路徑覆蓋精彩文檔追加結(jié)束實用標(biāo)準(zhǔn)文案Close :開始羅列已經(jīng)打開的文件獲取文件名獲取物理地址精彩文檔實用標(biāo)準(zhǔn)文案關(guān)閉文件源
9、程序清單 】精彩文檔實用標(biāo)準(zhǔn)文案Open :void OpenF() /*Open File*/printf(nnC:%s,strupr(dirname);/ 顯示當(dāng)前路徑int fcoun, i;/ 定義兩個整形變量char fnameMAXNAME, fmode25;/ 定義兩個字符串變量int fmod;/ 文件模式printf(nPlease input FileName:);gets(fname);/ 接收打開文件的文件名ltrim(rtrim(fname);/ 去除左右空白if(ExistF(fname)0)/ 判斷文件是否存在/ 不存在printf(nError. 文件名 %s
10、不存在 n, fname);wgetchar=1; else / 存在i=ExistD(username);/ 獲取用戶物理信息for(int a=0; a ufdfilea.fname)=0) / 找到文件fcoun=a;break;精彩文檔實用標(biāo)準(zhǔn)文案ifopenifcoun.ifopen=1; / 將文件狀態(tài)置為打開狀態(tài) printf(Please input OpenMode( 0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect ):);/ 打開文件模式gets(fmode);fmod=atoi(fmode);ifopenifc
11、oun.openmode=fmod;OpenModeprintf(nOpen Successed);wgetchar=1;/ 獲取模式/ 將字符串轉(zhuǎn)換為整型/ 將 文 件 的 模 式 置 為/ 顯示路徑/ 定義三個字符串變量/ 記錄文件物理地址塊號Delete :void DeleteF() /*Delete File*/printf(nnC:%s,strupr(dirname);char fnameMAXNAME, str50, str150; int i, k, j;int fpaddrno1;精彩文檔實用標(biāo)準(zhǔn)文案if(strcmp(strupr(ltrim(rtrim(dirname),
12、 )=0) / 判斷主目錄是否為空printf(nError. 請確認(rèn)您要刪除的是否在用戶目錄下! n);wgetchar=1;if(strcmp(strupr(dirname), strupr(username)!=0) / 判斷用戶是否在用戶目 錄下printf(nError.wgetchar=1; else printf(nPlease input FileName:);gets(fname);ltrim(rtrim(fname);i=ExistF(fname);if(i=0)k=ExistD(username);if(ifopenki.ifopen=1)printf(n Error.%
13、s您只能刪除修改自己用戶目錄下的文件哦!n);/ 接收刪除的文件名/ 去除文件名的左右空白/ 用戶文件位置/ 獲取用戶所在存儲位置/ 文件狀態(tài)處于打開狀態(tài), 不許刪除處于打開狀態(tài)!請先關(guān)閉喲! n, fname);wgetchar=1; else if(ufdk-ufdfilei.fmode=3) / 保護(hù)文件, 不可刪除printf(nError.%s 處于被保護(hù)狀態(tài)!請先關(guān)閉喲! n, fname);精彩文檔實用標(biāo)準(zhǔn)文案wgetchar=1;/ 獲取文件的物理地 else fpaddrno1=ufdk-ufdfilei.fpaddr;址塊號/ 回收物理地址塊號/ 將文件都向前移動j+1;
14、/ 將 j+1 位置為 j/ 將整數(shù)轉(zhuǎn)化為字符/ 連接/ 刪除物理文件/ 文件個數(shù)減一/ 文件不存在fpaddrnofpaddrno1=0;for(j=i; jufdfile j=ufdk-ufdfilestrcpy(str , c:osfilefile);itoa(fpaddrno1, str1, 10);strcat(str, str1); strcat(str, .txt); remove(str); fcountk-;printf(n%sis deleted successfully.n, fname);wgetchar=1; else printf(nError.%s 文件不存在!
15、n, fname);精彩文檔實用標(biāo)準(zhǔn)文案wgetchar=1;Write :void WriteF() /*Write File*/printf(nnC:%s,strupr(dirname);int i, k, m=0;int length;char fnameMAXNAME;char str255, str1255;if(strcmp(strupr(dirname), 戶目錄下strupr(username)!=0)/ 顯示用戶路徑/ 定義整形變量/ 定義長度整形變量/ 定義文件名字符串/ 定義兩個字符串變量 / 判斷用戶是否在用printf(nError !請確認(rèn)您要寫的在用戶目錄下! n
16、);wgetchar=1;return;printf(n 請先打開文件! n);printf(Opened File(s) List:n);k=ExistD(dirname);/ 獲取用戶文件信息精彩文檔/ 遍歷用戶下的文件/ 文件處于打開狀態(tài)/ 每創(chuàng)建 4 個文件換/ 創(chuàng)建文件/ 接收文件名/ 去除左右空白/ 獲取文件物理地址/ 文件存在/ 文件處于打開狀態(tài)| ifopenki.openmode=2) 實用標(biāo)準(zhǔn)文案for(i=0; iufdfilei.fname);m+;if(m%4 = 0 & m!=0)一行printf(n);printf(n%d 文件已經(jīng)打開啦! n, m);if(m
17、= 0)wgetchar=1;if(m!=0)printf(nPlease input FileName:);gets(fname);ltrim(rtrim(fname);i=ExistF(fname);if(i=0) if(ifopenki.ifopen=1) if(ifopenki.openmode=1精彩文檔實用標(biāo)準(zhǔn)文案/ 文 件 權(quán) 限是只寫或讀寫itoa(ufdk-ufdfilei.fpaddr, str, 10); / 獲取文件路徑 strcpy(str1, file);strcat(str1, str);strcpy(str, c:osfilefile);strcat(str,
18、str1);strcat(str, .txt); / 文件路徑 char str23;int choice=3;strcpy(str2,ab);printf(You can choise 0-Covered W 1-Additonal W:);/ 選擇追加還是覆蓋scanf( %d, &choice);if(choice = 0)/0- 覆蓋strcpy(str2, wb);fp_file=fopen(str, str2); / 打開文件length=WriteF1(); ufdk-ufdfilei.flength=ufdk-ufdfilei.flength+length;/ 修改文件長度 i
19、f(choice = 0)精彩文檔實用標(biāo)準(zhǔn)文案不允許寫fname);ufdk-ufdfilei.flength=length;printf(nnYou have write file successfully!);fclose(fp_file); / 關(guān)閉文件wgetchar=0; else if(ifopenki.openmode=0) / 文件處于只讀狀態(tài), printf(nError.%s文 件 以 只 讀 狀 態(tài) 打 開 , 不 允 許 寫 ! n,wgetchar=1; else printf(nError.%s 文件處于關(guān)閉狀態(tài),請先打開! n, fname);wgetchar=1
20、; else printf(nError.%s 文件不存在! n, fname); / 文件不存在wgetchar=1;精彩文檔實用標(biāo)準(zhǔn)文案Close :void CloseF() /*Close File*/printf(nnC:%s,strupr(dirname);/ 顯示路徑char fnameMAXNAME;/ 定義字符串變量int i, k, n=0;if(strcmp(strupr(dirname), strupr(username)!=0)/ 關(guān)閉用戶文件需在用戶目錄下printf(nError !請確認(rèn)您要關(guān)閉的是在用戶目錄下! n); else printf(nnOpened
21、 File(s) List:n);/ 羅列已處于打開的文件k=ExistD(dirname);for(i=0;iufdfilei.fname);精彩文檔實用標(biāo)準(zhǔn)文案n+;if(n%4=0)&(n!=0) printf(n);printf(n%d 文件已被打開! n,n);if (n=0) wgetchar=1;printf(nPlease input FileName:);/ 接收關(guān)閉文件的文件名/ 除去首尾空格/ 獲取文件物理地址/ 獲取用戶文件信息/ 文件處于關(guān)閉狀態(tài)gets(fname);ltrim(rtrim(fname);i=ExistF(fname);if(i = 0)k=ExistD(username); if(ifopenki.ifopen=0)printf(nError ! %s 文件已經(jīng)被關(guān)閉! n, fname); else / 將文件關(guān)閉ifopenki.ifopen=0;ifopenki.openmode=4;printf(%s has been closed successfully!, fname);精彩文檔實用標(biāo)準(zhǔn)文案 else 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球針織翻邊毛線帽行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國智慧生態(tài)解決方案行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球全自動小袋拆包機(jī)行業(yè)調(diào)研及趨勢分析報告
- 無人機(jī)技術(shù)研發(fā)項目合同
- 2025上海市房屋買賣合同書(簡易范本)
- 產(chǎn)品銷售代理合同
- 購銷校服合同范本
- 倉儲服務(wù)定金合同模板
- 2025合同模板化妝品采購合同范本
- 2025國有土地使用權(quán)轉(zhuǎn)讓合同書(公開交易方式)新
- 人教版2024年新教材七年級上冊英語starter unit 1 -unit7重點短語句型清單
- 排水管網(wǎng)更新改造項目經(jīng)濟(jì)效益和社會效益分析
- 護(hù)理服務(wù)在產(chǎn)科中的應(yīng)用課件
- 2024年小升初語文入學(xué)分班測試卷四(統(tǒng)編版)
- 流行文化對青少年價值觀的影響研究
- 中國保險行業(yè)協(xié)會官方-2023年度商業(yè)健康保險經(jīng)營數(shù)據(jù)分析報告-2024年3月
- 設(shè)計質(zhì)量管理和保證措施及設(shè)計質(zhì)量管理和質(zhì)量保證措施
- 小學(xué)二年級語文上冊閱讀理解專項訓(xùn)練20篇(含答案)
- 科技論文圖表等規(guī)范表達(dá)
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
評論
0/150
提交評論