




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、xx計算機科學與技術(shù)學院 課程設(shè)計報告*大學計算機科學與技術(shù)學院課程設(shè)計報告 ( 2006 2007 學年度 第 2 學期 )課程名稱操作系統(tǒng)課程設(shè)計項目名稱文件管理系統(tǒng)設(shè)計姓名學號專業(yè)班級地點教師1.題目內(nèi)容:文件管理系統(tǒng)設(shè)計:設(shè)計和調(diào)試一個簡單的文件系統(tǒng),通過模擬文件操作命令的執(zhí)行,來模擬文件管理,對主要文件操作命令的實質(zhì)和執(zhí)行過程有比較深入的了解,掌握它們的基本實施方法.2.設(shè)計任務(wù)及主要技術(shù):設(shè)計任務(wù):1.設(shè)計一個支持n個用戶的文件系統(tǒng),每個用戶可擁有多個文件.2.采用二級或二級以上的多級文件目錄管理. 主要技術(shù):1.對文件應(yīng)設(shè)置存取控制保護方式,如“允許讀”、“允許寫”等.2.系統(tǒng)的
2、外部特征應(yīng)接近于真實系統(tǒng),可設(shè)置下述文件操作命令:建立文件、修改屬性、刪除文件、讀文件、寫文件、復(fù)制文件、查詢目錄.3.通過鍵盤使用該文件系統(tǒng),系統(tǒng)應(yīng)顯示操作命令的執(zhí)行結(jié)果.3.設(shè)計方案及論證結(jié)果 設(shè)計方案: 本系統(tǒng)一共建立了administrator 和guest兩個用戶,每個用戶擁有一個結(jié)構(gòu)體數(shù)組為struct flie fa8和 struct flie fg8每個用戶最多可一建立8個文件,每個文件對應(yīng)一個文件模塊; 文件模塊: struct flie int ed; /判斷是否正存放文件 char f_name8; /文件名 char f_c8; /存放文件內(nèi)容 int att ; /
3、文件屬性 0為只讀 1為只寫 ; 文件模塊示意圖:ed f_name8 att f_c8函數(shù)設(shè)計和功能分析:系統(tǒng)調(diào)用原型功能主要參數(shù)說明void check()密碼認證admin為函數(shù)出口int init()初始化操作界面返回i執(zhí)行相應(yīng)的操作void createfile()創(chuàng)建文件name為文件名-fa.f_namevoid deletefile()刪除文件void openfile()打開文件void exit()退出系統(tǒng)void writefile()書寫文件c為文件內(nèi)容-fa.f_cvoid copyfile()復(fù)制文件void modifyfile()修改屬性a為文件屬性-fa.at
4、tvoid catalogue()目錄管理main()函數(shù)的流程圖:消注?成功? 開始用戶登陸ny接收命令 解析命令實現(xiàn)命令 結(jié)束n選擇用戶退出nyy 4.系統(tǒng)的原理框圖:administratorguestflie1 flie2 flie1 flie2 ed f_name att f_c文件名文件屬性文件內(nèi)容判斷存儲狀態(tài)ed f_name att f_c5.設(shè)計程序:#include #include /*不容易歸類的標準函數(shù)庫*/#include struct flieint ed; /判斷是否正存放文件char f_name8; /文件名char f_c8; /存放文件內(nèi)容int att
5、 ; / 文件屬性 0為只讀 1為只寫 /用于指向文件內(nèi)容模塊fa8,fg8;int x; /全局鑰匙void check() /密碼認證int check,a=1;char pin1=admin; /此處設(shè)定用戶口令char pin20; while(a)printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 文件管理系統(tǒng)用戶登錄 *n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請選擇用戶:n);
6、printf( 1.administrator 2.guest 3.退出系統(tǒng)n);scanf(%d,&x);getchar();if(x=3)system(cls);break;printf(密 碼:);scanf (%s,pin);check=strcmp(pin,pin1);if (check!=0)system(cls);printf(n密碼錯誤! 請重新輸入:n);elsesystem(cls);a=0;void createfile() /*創(chuàng)建文件操作*/int handle=1,a,check,i,j,h;char name8,pin8;while(1) printf(* * *
7、 * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 創(chuàng)建文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請輸入所要創(chuàng)建的文件名稱:n);scanf(%s,name);if(x=1)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) else printf(n創(chuàng)建錯誤!文件已經(jīng)存在!);handl
8、e=0;getchar();break; if(handle=1)for(h=0;h8;h+)if(fah.ed=0)strcpy(fah.f_name,name); while(1) printf(n請選擇文件屬性(0.只讀 - 1.只寫):); scanf(%d,&a); getchar(); if(a=0|a=1) fah.att=a; printf(n創(chuàng)建文件成功.n);fah.ed=1; break; else printf(錯誤! 請重新輸入:n);break;getchar();break;if(x=2)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fgi
9、.f_namej;check=strcmp(pin,name); if (check!=0) else printf(n創(chuàng)建錯誤!文件已經(jīng)存在!);handle=0;break; if(handle=1) for(h=0;h8;h+)if(fah.ed=0)strcpy(fgh.f_name,name); while(1) printf(n請選擇文件屬性(0.只讀 - 1.只寫):); scanf(%d,&a); getchar(); if(a=0|a=1) fgh.att=a; printf(n創(chuàng)建文件成功.n); fgh.ed=1; getchar(); break; else print
10、f(錯誤! 請重新輸入:n); break;break;void deletefile() /*刪除文件的操作*/int status=0,j=0,i,check,choice;char name8,pin8;while(1)system(cls);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 刪除文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);if(x=1)printf(請輸入所要刪除的文件名
11、稱:n); scanf(%s,name); /*輸入要刪除的文件名*/ printf(n請確認(0 - 1):);scanf(%d,&choice); getchar();if(choice=1) for( i=0;i8;i+) for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0) else status=1;if(fai.att=0) /*獲取文件的狀態(tài),是否存在并且是否只讀*/ j=1; if(j=1) printf(n刪除錯誤! 文件為只讀文件!); /只讀文件 else if(j!=0) /從目錄中
12、刪除一個文件 strcpy(fai.f_name, ); strcpy(fai.f_c, );fai.ed=0; printf(n刪除文件成功.); getchar(); break; if(status!=1)printf(n刪除錯誤! 所要刪除的文件不存在!n);/*文件不存在*/getchar(); break;if(x=2)printf(請輸入所要刪除的文件名稱:n); scanf(%s,name); /*輸入要刪除的文件名*/ printf(n請確認(0 - 1):);scanf(%d,&choice); getchar();if(choice=1) for( i=0;i8;i+)
13、for(j=0;j8;j+) pinj=fgi.f_namej; check=strcmp(pin,name); if (check!=0) else status=1;if(fgi.att=0) /*獲取文件的狀態(tài),是否存在并且是否只讀*/ j=1; if(j=1) printf(n刪除錯誤! 文件為只讀文件!); /只讀文件 else if(j!=0) /從目錄中刪除一個文件函數(shù) strcpy(fgi.f_name, ); strcpy(fgi.f_c, );fgi.ed=0; printf(n刪除文件成功.);break; getchar(); break; if(status!=1)p
14、rintf(n刪除錯誤! 所要刪除的文件不存在!);/*文件不存在*/getchar();break;void openfile() /*打開文件操作*/int i,a=0,j,check;char name8,pin8;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 打開文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請輸入您所要打開文件的名稱: n);scanf(%s,name
15、);getchar();if(x=1)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) else printf(%s,fai.f_c);a=1;if(a!=1)printf(文件不存在!);getchar();else if(x=2)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fgi.f_namej;check=strcmp(pin,name); if (check!=0) else printf(%s,fgi.f_c);a=1;if(a!=1)pr
16、intf(文件不存在!);getchar();void writefile() /*書寫文件*/int i,j,check,b=1;char ch=0,a=0,name8,c8,pin8;while(b) printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 書寫文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請輸入要書寫的文件的名稱:n);scanf(%s,name);if(x=1)fo
17、r( i=0;i8;i+) /*獲取文件的狀態(tài),是否存在*/ for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0) elseif(fai.att=0) printf(書寫錯誤!只讀文件!n);a=1;getchar();getchar(); break; printf(請輸入文件的內(nèi)容: n); scanf(%s,c); strcpy(fai.f_c,c); printf(書寫文件成功.n); a=1;b=0;getchar();getchar();break;break;if(a!=1)printf(文件
18、不存在!);getchar();getchar();break;break;getchar(); if(x=2)for( i=0;i8;i+) /*獲取文件的狀態(tài),是否存在*/ for(j=0;j8;j+) pinj=fgi.f_namej; check=strcmp(pin,name); if (check!=0) elseif(fai.att=0) printf(書寫錯誤!只讀文件!n);a=1;getchar(); break; printf(請輸入文件的內(nèi)容: n); scanf(%s,c); strcpy(fgi.f_c,c); printf(書寫文件成功.n); a=1;getch
19、ar();getchar(); break;if(a!=1)printf(文件不存在!);break; break;void copyfile() / 復(fù)制文件操作int i,j,k,l,check,p;char name8,name18,pin8;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 復(fù)制文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);if(x=1) printf(請輸入要復(fù)制的文件的
20、名稱:n); scanf(%s,name); getchar(); printf(請輸入要復(fù)制到的文件的名稱:n); scanf(%s,name1); getchar();for( i=0;i8;i+) /獲取文件的狀態(tài),是否存在for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0)elsefor( k=0;k8;k+) /獲取文件的狀態(tài),是否存在 for(l=0;l8;l+) pinl=fak.f_namel; check=strcmp(pin,name1); if (check!=0)elsefor(p=
21、0;p8;p+)fak.f_cp=fai.f_cp;printf(復(fù)制成功n);if(x=2) printf(請輸入要復(fù)制的文件的名稱:n); scanf(%s,name); getchar(); printf(請輸入要復(fù)制到的文件的名稱:n); scanf(%s,name1); getchar();for( i=0;i8;i+) /獲取文件的狀態(tài),是否存在for(j=0;j8;j+) pinj=fgi.f_namej; check=strcmp(pin,name); if (check!=0)elsefor( k=0;k8;k+) /獲取文件的狀態(tài),是否存在 for(l=0;l8;l+) p
22、inl=fgk.f_namel; check=strcmp(pin,name1); if (check!=0)elsefor(p=0;p8;p+)fak.f_cp=fai.f_cp;printf(復(fù)制成功n);getchar();getchar();void modifyfile() /*修改屬性操作*/int status=0,a,i,j,check;char choice,name8,pin8;while(1)printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 修改屬性 *n); print
23、f(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);if(x=1) printf(請輸入所要修改屬性的文件的名稱:n); scanf(%s,name); getchar();for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) elseprintf(n); printf(請選擇文件屬性:);while(1) scanf(%d,&a);getchar(); if(x=1|x=2) break; else print
24、f(錯誤! 請重新輸入:n);fai.att=a;printf(修改屬性成功.n);status=1;break; /*獲取文件的狀態(tài)*/ if(status!=1) printf(錯誤! 文件不存在!); getchar(); printf(是否重新輸入?(y - n)n); scanf(%c,&choice); getchar(); if(choice=n|choice=n) break; getchar();break;if(x=2)printf(請輸入所要修改屬性的文件的名稱:n); scanf(%s,name); getchar();for( i=0;i8;i+)for(j=0;j8
25、;j+) pinj=fgi.f_namej;check=strcmp(pin,name); if (check!=0) elseprintf(n); printf(請選擇文件屬性:);while(1) scanf(%d,&a);getchar(); if(x=1|x=2) break; else printf(錯誤! 請重新輸入:n);fgi.att=a;printf(修改屬性成功.n);break;if(i=7)status=1;break; /*獲取文件的狀態(tài)*/if(status=1)printf(錯誤! 文件不存在!);getchar();printf(是否重新輸入?(y - n)n)
26、;scanf(%c,&choice);getchar();if(choice=n|choice=n)break;getchar();void catalogue() /*目錄管理子程序*/int x,a=1;char name8;while(a) /*目錄管理操作*/ printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 目錄管理 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( 1.顯示目錄
27、 6.退出目錄n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請選擇:);scanf(%d,&x);while(x2)printf(n錯誤! 請重新輸入:);scanf(%d,&x);switch(x) case 1: /*顯示目錄操作*/ system(cls);printf(n請輸入所要顯示的文件目錄:n);scanf(%s,name);printf(n%s的文件目錄為:n,name);if(x=1)printf(n administrator/%s 文件,name);if(x=2)pri
28、ntf(n guest/%s 文件,name);a=0;getchar();break;case 2: /*退出目錄管理操作*/system(cls);getchar();a=0;break; getchar();break;int init() /*初始化操作界面函數(shù)*/int i;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 文件管理系統(tǒng) *n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf
29、(1.創(chuàng)建文件 2.刪除文件 3.打開文件 4.書寫文件n);printf(5.復(fù)制文件 6.修改屬性 7.目錄管理 8.消 注n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(請您選擇:);scanf(%d,&i);return(i); /*選擇相應(yīng)的序號,執(zhí)行相應(yīng)的操作*/void main()int flag=1,i;check(); while(flag) /*初始化系統(tǒng)界面*/if(x=3) exit(0);i=init(); getchar(); switch(i) case 1: /*創(chuàng)建文件*/system(cls);createfile();system(cls);break; case 2: /*刪除文件*/system(cls);deletefile(); system(cls);break; case 3: /*打開文件*/system(cls);openfile();system(cls); break; case 4: /*寫文件*/system(cls);writefile();system(cls); break; case 5: /拷貝文件 s
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司網(wǎng)絡(luò)線路維修合同范本
- 加工蔬菜采購合同范本
- 利益聯(lián)結(jié)機制合同范本
- 出租專用桌子合同范本
- 與社區(qū)合作社簽訂合同范例
- 二手房按揭買賣合同范本
- 公司許可經(jīng)營合同范本
- 買車正規(guī)貸款合同范本
- 書面汽車轉(zhuǎn)讓合同范本
- 入會員協(xié)議合同范本
- IBM咨詢-中糧生化ERP項目業(yè)務(wù)藍圖設(shè)計報告
- 《跨境供應(yīng)鏈管理》教學大綱(含課程思政)
- 如果國寶會說話中國歷史文物介紹
- 智慧農(nóng)業(yè)的智能農(nóng)機與裝備
- 2 祖父的園子(生字)-部編版五年級下冊語文課件
- 復(fù)用醫(yī)療器械的規(guī)范化處理流程之清洗課件
- ★滬教牛津版英語四年級上冊練習冊4a
- 跨文化語境下的國家形象塑造與傳播以中國《國家形象》宣傳片為例
- 2024年北京電子科技職業(yè)學院高職單招(英語/數(shù)學/語文)筆試題庫含答案解析
- 生產(chǎn)車間環(huán)境改善方案
- 第1課 古代亞非(課件)
評論
0/150
提交評論