版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 課程名稱____操作系統(tǒng) ________</p><p> 題目名稱___文件管理系統(tǒng)___ _ </p><p> 學(xué)生學(xué)院____計(jì)算機(jī)學(xué)院________</p><p> 專業(yè)班級(jí)_10級(jí)計(jì)算機(jī)科學(xué)與技術(shù)5班</p>
2、;<p> 學(xué) 號(hào)_ __________</p><p> 學(xué)生姓名____ ___________</p><p> 指導(dǎo)教師_ _ ______ _</p><p> 2013年 1 月 10 日</p><p> 一、課程設(shè)計(jì)題目和目的</p><p>
3、通過(guò)模擬文件系統(tǒng)的實(shí)現(xiàn),深入理解操作系統(tǒng)中文件系統(tǒng)的理論知識(shí), 加深對(duì)教材中的重要算法的理解。同時(shí)通過(guò)編程實(shí)現(xiàn)這些算法,更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,提高綜合運(yùn)用各專業(yè)課知識(shí)的能力。</p><p><b> 二、課程設(shè)計(jì)要求</b></p><p> 通過(guò)課程設(shè)計(jì),要求學(xué)生主要掌握如下內(nèi)容:</p><p> (1)設(shè)計(jì)多用戶文件
4、系統(tǒng),采用多級(jí)文件目錄。</p><p> (2)至少要有十個(gè)以上的實(shí)用命令,應(yīng)設(shè)置文件保護(hù)措施。</p><p> (3)設(shè)計(jì)一個(gè)較實(shí)用的用戶界面,方便用戶使用,界面要為用戶提供足夠的選擇信息,不需用戶打入打入冗長(zhǎng)的命令。</p><p><b> 三、程序設(shè)計(jì)思想</b></p><p> 閱讀操作系統(tǒng)方面的
5、書籍,了解操作系統(tǒng)的文件系統(tǒng)原理。結(jié)合分析課程設(shè)計(jì)要求,確定實(shí)體以及它們之間的關(guān)系。實(shí)體關(guān)系有三張表(磁盤空間分配表、文件表、打開文件表)、一個(gè)模擬磁盤的數(shù)組、命令服務(wù)和用戶構(gòu)成。用戶負(fù)責(zé)輸入命令。命令服務(wù)實(shí)現(xiàn)命令的解釋、命令檢查、命令幫助以及調(diào)用相關(guān)模塊執(zhí)行相應(yīng)的命令功能。</p><p> 此課程設(shè)計(jì)把TXT文本作來(lái)研究對(duì)象來(lái)模擬操作系統(tǒng)的文件系統(tǒng)工作過(guò)程。所以用一個(gè)字符串?dāng)?shù)組來(lái)模擬磁盤空間,顧名思義,模擬
6、磁盤提供字符的存儲(chǔ)服務(wù)。</p><p> 磁盤空間分配表,采用鏈表結(jié)構(gòu),每個(gè)節(jié)點(diǎn)保存模擬磁盤的一個(gè)邏輯塊的信息,包括塊的最大長(zhǎng)度,文件占用長(zhǎng)度,占用標(biāo)志。如果占用標(biāo)志為0,即該空間可分配給文件。初始化磁盤空間分配表鏈表,首先把整個(gè)模擬磁盤作來(lái)一塊,并置占用位為0.當(dāng)有進(jìn)程申請(qǐng)磁盤空間時(shí),從頭開始遍歷,檢查占用位,如果該塊為可分配,則檢查塊大小,若塊長(zhǎng)度大于或等于申請(qǐng)空間大小,則把塊的前一部分(等于申請(qǐng)大?。┓?/p>
7、配給文件,并置標(biāo)志位為占用。剩下的大小作來(lái)一個(gè)新塊,作來(lái)一個(gè)新節(jié)點(diǎn)插入到原節(jié)點(diǎn)的后邊,標(biāo)志位為可用。這樣就實(shí)現(xiàn)了模擬磁盤的線性分配。</p><p> 文件表,由于模擬文件系統(tǒng)的文件數(shù)量不多,故文件表采用線性表來(lái)存儲(chǔ)。線性表每個(gè)結(jié)點(diǎn)存儲(chǔ)一個(gè)文件的信息。</p><p> 打開文件表,采用數(shù)組形式存儲(chǔ)打開的文件,數(shù)組每個(gè)元素保存一個(gè)打開文件的信息。文件信息和文件表中的文件信息類似。<
8、;/p><p> 構(gòu)造這些實(shí)體的關(guān)系圖,數(shù)據(jù)流圖、程序流程圖來(lái)進(jìn)行具體的設(shè)計(jì)。</p><p><b> 四、文件系統(tǒng)的實(shí)現(xiàn)</b></p><p><b> 1.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> 通過(guò)分析課程設(shè)計(jì)要求,具體設(shè)計(jì)出如下數(shù)據(jù)結(jié)構(gòu):</p><p>
9、char disk[10000]; //模擬磁盤空間</p><p> 通過(guò)一個(gè)字符串?dāng)?shù)組來(lái)模擬磁盤空間,數(shù)組最大長(zhǎng)度設(shè)置為10000,即磁盤空間最大容量為10000字節(jié)。作為模擬文件系統(tǒng),主要理解文件系統(tǒng)的原理,可以把文本文件作為對(duì)象來(lái)研究。故磁盤空間用一個(gè)字符串?dāng)?shù)組來(lái)模擬.</p><p> struct freeDiskTable //碰盤空間分配表</p>&l
10、t;p><b> {</b></p><p> int start; //開始位置</p><p> int length; //占用長(zhǎng)度</p><p> int maxLength; //最大長(zhǎng)度</p><p> int useFlag; //使用標(biāo)志,1為占用,0為空閑</p&
11、gt;<p><b> };</b></p><p> 通過(guò)結(jié)構(gòu)體,將磁盤空間使用情況(文件開始位置、占用長(zhǎng)度、最大長(zhǎng)度、使用標(biāo)志)結(jié)合在一體。一個(gè)結(jié)構(gòu)體變量記錄磁盤一個(gè)塊的信息。結(jié)構(gòu)體作為鏈表的一個(gè)節(jié)點(diǎn),設(shè)置一個(gè)鏈表將節(jié)點(diǎn)連接起來(lái),構(gòu)成一個(gè)磁盤空間分配表。</p><p> struct fileTable //文件表</p>
12、<p><b> {</b></p><p> char fileName[20]; //文件名字</p><p> int start; //開始位置</p><p> int length; //文件長(zhǎng)度</p><p> int maxLength;
13、 //最大長(zhǎng)度</p><p> char fileKind[8]; //文件種類,此默認(rèn)為txt</p><p> struct tm *timeinfo; //文件創(chuàng)建時(shí)間</p><p><b> };</b></p><p> 通過(guò)結(jié)構(gòu)體,將文件名字、文件在磁盤的開始位置、文件長(zhǎng)度、文件最大長(zhǎng)度、
14、文件類型、創(chuàng)建時(shí)間結(jié)合在一起。文件類型,本模擬程序使用txt類型。設(shè)置一個(gè)線性表來(lái)存儲(chǔ)文件。</p><p> struct openFileTable // 打開文件表</p><p><b> {</b></p><p> char fileName[20]; //文件名字</p><p> char
15、fileKind[8]; //文件類型</p><p> int start; //文件開始位置</p><p> int length; //文件長(zhǎng)度</p><p> int maxLength; //最大長(zhǎng)度</p><p> int openCount; //
16、打開文件的進(jìn)程數(shù)</p><p> struct tm *timeinfo; //文件創(chuàng)建時(shí)間</p><p><b> };</b></p><p> 通過(guò)結(jié)構(gòu)體存儲(chǔ)打開的文件信息,包括文件名字、文件類型、文件開始位置、文件長(zhǎng)度、最大長(zhǎng)度、文件打開數(shù)和文件創(chuàng)建時(shí)間。通過(guò)結(jié)構(gòu)體數(shù)組存儲(chǔ)所有打開文件信息。</p><p&
17、gt;<b> 2.程序功能圖</b></p><p> 文件系統(tǒng)提供的文件操作有建立文件(create)、刪除文件(delete)、條件讀取文件(read)、寫入文件(write)、查詢文件的屬性(ask)、顯示文件所有內(nèi)容(type)、重命名文件(ren)、關(guān)閉文件(close)??梢酝ㄟ^(guò)鍵盤輸入命令來(lái)模擬文件的操作。通過(guò)exit命令退出程序。</p><p>
18、;<b> 3.實(shí)體關(guān)系圖</b></p><p> 命令服務(wù)使得用戶能夠輸入命令,在需要時(shí)提供命令的幫助。同時(shí)能夠分析命令,調(diào)用相應(yīng)的命令模塊對(duì)模擬磁盤、磁盤空間分配表、文件表、打開文件表進(jìn)行操作。磁盤空間分配表記錄模擬磁盤的使用情況。文件表記錄文件的信息和在磁盤里的位置等信息。打開文件表記錄已打開的文件,對(duì)應(yīng)文件表中的文件信息,和文件表里的文件節(jié)點(diǎn)類似,記錄了文件在模擬磁盤中的信息。
19、</p><p><b> 4.數(shù)據(jù)流圖</b></p><p><b> 5.程序流程圖</b></p><p> 模擬文件系統(tǒng)提供的文件操作有建立(create),讀?。╮ead),顯示(type),刪除(detele),寫入(write),關(guān)閉(close),重命名(ren)和查詢(ask)。在模擬程序中可從鍵
20、盤上輸入文件操作命令來(lái)模擬各用戶程序中所調(diào)用的各種文件操作結(jié)束命令(exit)停止程序的執(zhí)行。</p><p><b> 五:程序運(yùn)行界面</b></p><p> 用戶可以通過(guò)數(shù)字選擇進(jìn)入相應(yīng)的操作</p><p> 從1-10功能分別是:</p><p><b> 創(chuàng)建文件</b><
21、;/p><p><b> 刪除文件</b></p><p><b> 打開文件</b></p><p><b> 寫文件</b></p><p><b> 定位文件</b></p><p><b> 修改文件屬性&l
22、t;/b></p><p><b> 復(fù)制文件</b></p><p><b> 目錄管理</b></p><p><b> 退出系統(tǒng)</b></p><p> 以下是對(duì)系統(tǒng)功能進(jìn)行逐項(xiàng)說(shuō)明</p><p><b> 1 創(chuàng)建文
23、件</b></p><p> 從圖中可以看出,當(dāng)輸入要?jiǎng)?chuàng)建的文件名和路徑后,盤中出現(xiàn)了這個(gè)這個(gè)文件。</p><p> 然后系統(tǒng)詢問(wèn)是否輸入內(nèi)容,選擇是后輸入內(nèi)容+#號(hào)結(jié)束。</p><p> 輸入完畢后用記事本打開剛才創(chuàng)建的文件,顯示的就是剛才在文件系統(tǒng)中輸入的內(nèi)容。也可以通過(guò)OPEN操作來(lái)打開,后面有說(shuō)明。</p><p&g
24、t;<b> 2 刪除文件</b></p><p> 從圖中可以看出,剛才創(chuàng)建的文件已經(jīng)被刪除。為防止誤操作,刪除前必須先確認(rèn)。</p><p><b> 3 打開文件</b></p><p><b> 4 寫文件</b></p><p> 這個(gè)就是往里面寫內(nèi)容。寫入
25、后會(huì)覆蓋掉以前的內(nèi)容。</p><p><b> 5 定位文件</b></p><p> 定位文件,也就是設(shè)置文件狀態(tài),1為只讀,2為只寫。</p><p><b> 6 修改文件屬性</b></p><p> 延續(xù)定位操作,可讀的改成可寫,可寫的改成可讀,隨你喜歡。但是只能2選1。<
26、/p><p><b> 7 復(fù)制文件</b></p><p><b> 8 移動(dòng)文件</b></p><p> 和復(fù)制文件基本一樣,只不過(guò)這個(gè)是剪切:)</p><p><b> 9 文件目錄管理</b></p><p> 目錄管理里又分多個(gè)選項(xiàng):
27、</p><p><b> 列出目錄</b></p><p><b> 創(chuàng)建目錄</b></p><p><b> 刪除目錄</b></p><p><b> 復(fù)制目錄</b></p><p><b> 移動(dòng)目錄
28、</b></p><p> 與文件操作形式一樣,只不過(guò)操作對(duì)象變成了目錄而已,所以不再詳細(xì)說(shuō)明。</p><p><b> 10 退出系統(tǒng)</b></p><p><b> 心得體會(huì)</b></p><p> 通過(guò)本次的課程設(shè)計(jì),使我能夠正確運(yùn)用操作系統(tǒng)課程中所學(xué)的基本理論和知識(shí)
29、,加深了對(duì)文件系統(tǒng)基本概念的理解,以及磁盤文件系統(tǒng)的文件操作。還有讓我感受挺深的是對(duì)軟件工程方法的應(yīng)用。設(shè)計(jì)一個(gè)軟件,先要做好需求分析,這一點(diǎn)很重要,如果沒(méi)有分析好需求,到軟件設(shè)計(jì)的最后,發(fā)現(xiàn)所做的功能不符合要求,那么一切都得重做,前面所有的努力都付諸東流。還有比較重要的是,寫好E-R圖,至少畫出語(yǔ)境級(jí)的數(shù)據(jù)流圖,以及仔細(xì)畫好程流程圖。在程序設(shè)計(jì)的開始,由于分析工作做得不夠深入和細(xì)致,吃了點(diǎn)小苦頭。對(duì)于這樣一個(gè)小設(shè)計(jì)來(lái)說(shuō),都會(huì)吃苦頭,要
30、是大工程更是無(wú)法想像,有可能會(huì)項(xiàng)目失敗。以后得加強(qiáng)對(duì)軟件工程的學(xué)習(xí)。另外在運(yùn)用C語(yǔ)言的時(shí)候,感覺(jué)有點(diǎn)生疏,在組織語(yǔ)言時(shí)時(shí)而出錯(cuò),在編程和調(diào)試的過(guò)程中,經(jīng)常會(huì)出現(xiàn)意想不到的問(wèn)題,并非每個(gè)問(wèn)題都可以從相關(guān)資料中找到解決方法,有些問(wèn)題是無(wú)法預(yù)料到的,這就需要通過(guò)自己理性的分析得出問(wèn)題的解決方案。</p><p> 在設(shè)計(jì)過(guò)程中,查詢了不少相關(guān)資料,不斷的發(fā)現(xiàn)問(wèn)題、提出問(wèn)題、解決問(wèn)題。在對(duì)自己所編寫的源程序段的糾錯(cuò)的過(guò)
31、程中,使我更好的理解了操作系統(tǒng)中文件系統(tǒng)的理論知識(shí),同時(shí)在編程時(shí)用到了模塊化的設(shè)計(jì)思想,這種編程方法可以使我們的編程變的更簡(jiǎn)單,可以使我們的查錯(cuò)與糾錯(cuò)變的更方便??偟膩?lái)說(shuō)通過(guò)這次的設(shè)計(jì)的學(xué)習(xí)使我學(xué)到了很多在平時(shí)的學(xué)習(xí)中學(xué)不到的很多東西,通過(guò)這次課程設(shè)計(jì),使我對(duì)操作系統(tǒng)和編程產(chǎn)生興趣,我想我會(huì)在這條路上繼續(xù)前進(jìn)下去。我相信,只要不斷的嚴(yán)格要求自己,注意培養(yǎng)自己的思維能力,就一定會(huì)有更大更輝煌的發(fā)展和提高。</p><p
32、><b> 附程序源代碼</b></p><p> /***********文 件 管 理 系 統(tǒng)***********/</p><p> #include <stdio.h></p><p> #include <stdlib.h> /*不容易歸類的標(biāo)準(zhǔn)函數(shù)庫(kù)*/</
33、p><p> #include <conio.h></p><p> #include <string.h></p><p> #include <sys\stat.h> </p><p> #include <fcntl.h> /*非標(biāo)準(zhǔn)文
34、件輸入輸出操作的代碼符號(hào)屬性*/</p><p> #include <dos.h></p><p> #include <io.h></p><p> int init() /*初始化操作界面函數(shù)*/</p><p><b> {int i;</
35、b></p><p><b> clrscr();</b></p><p> gotoxy(23,3);printf("* * * * * * * * * * * * * *");</p><p> gotoxy(27,4);printf("FILE MANAGE SYSTEM");</
36、p><p> gotoxy(23,5);printf("* * * * * * * * * * * * * *");</p><p> gotoxy(23,7);printf("丹灰-3210006071-10級(jí)計(jì)算機(jī)科學(xué)與技術(shù)5班");</p><p> gotoxy(28,9);printf("1--Creat
37、 File");</p><p> gotoxy(28,10);printf("2--Delete File");</p><p> gotoxy(28,11);printf("3--OPen File");</p><p> gotoxy(28,12);printf("4--Wri
38、te File");</p><p> gotoxy(28,13);printf("5--Locate File");</p><p> gotoxy(28,14);printf("6--Modify File");</p><p> gotoxy(28,15);printf("7--C
39、opy File");</p><p> gotoxy(28,16);printf("8--Move File");</p><p> gotoxy(28,17);printf("9--Cataloge Manage");</p><p> gotoxy(28,18);printf("
40、10--Exit File");</p><p> gotoxy(25,21);</p><p> printf("Please Choice:");</p><p> scanf("%d",&i);</p><p> return(i);
41、 /*選擇相應(yīng)的序號(hào),執(zhí)行相應(yīng)的操作*/</p><p><b> }</b></p><p><b> main()</b></p><p> {int x,i,j,flag=1;</p><p> char name[15],name1[15],name2[40];<
42、/p><p> char choice,ch;</p><p> int handle,status; /*定義文件的指針和狀態(tài)*/</p><p><b> FILE *fp;</b></p><p> while(flag) /*初始化系統(tǒng)
43、界面*/</p><p> {i=init();</p><p> getchar();</p><p><b> switch(i)</b></p><p> { case 1:label1: /*創(chuàng)建文件操作*/</p><p><b> c
44、lrscr();</b></p><p> gotoxy(27,5);printf("CREAT FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> printf("\n\nP
45、lease input the creating file name and routine:\n");</p><p> scanf("%s",name);</p><p> getchar();</p><p> handle=creatnew(name,0);/*按指定的文件方式創(chuàng)建文件,若有同名文件返回錯(cuò)誤代碼*/<
46、/p><p> if(handle==-1)</p><p> { printf("\nSorry,the file already exists.");</p><p> getchar();</p><p> printf("\nInput again?(Y or N)");</p>
47、<p> scanf("%c",&choice);getchar();</p><p> if(choice=='Y'||choice=='y')</p><p> goto label1;</p><p><b> }</b></p><p&
48、gt; else { printf("\nThe file is created.");</p><p> printf("Do you now input contentof the file?(Y or N):");</p><p> while(1) /*輸入創(chuàng)建文件的內(nèi)容*/</p><p>
49、{ scanf("%c",&choice);</p><p> if(choice=='y'||choice=='n'||choice=='Y'||choice=='N')</p><p><b> break;</b></p><p><b&
50、gt; else</b></p><p> printf("\nError!Please input again!");</p><p><b> }</b></p><p> if(choice=='y'||choice=='Y')</p><p>
51、; { printf("\nNow input content to the file(End with '#'):\n\n");</p><p> fp=fopen(name,"w");/*把內(nèi)容存放到fp指向的文件中去*/</p><p> ch=getchar();</p><p> while(
52、ch!='#')</p><p> { fputc(ch,fp);</p><p> ch=getchar();</p><p><b> }</b></p><p> fclose(fp);getchar();/*關(guān)閉文件*/</p><p><b> }&l
53、t;/b></p><p> getchar();</p><p><b> break;</b></p><p> case 2:label2: /*刪除文件的操作*/</p><p><b> clrscr();</b></p><
54、;p> gotoxy(25,5);printf("DELETE FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> printf("\n\nPlease input the deleting file na
55、me and routine:\n");</p><p> scanf("%s",name); /*輸入要?jiǎng)h除的文件名*/</p><p> getchar();</p><p> printf("\n Are you sure?(Y or N):");</p><p><
56、b> while(1)</b></p><p> { scanf("%c",&choice);</p><p> if(choice=='y'||choice=='n'||choice=='Y'||choice=='N')</p><p><b&
57、gt; break;</b></p><p><b> else</b></p><p> printf("\nError!Please input again!");</p><p><b> }</b></p><p> if(choice=='
58、y'||choice=='Y')</p><p> {status=access(name,0);/*獲取文件的狀態(tài),是否存在*/</p><p> if(status!=0)</p><p> {printf("\nSorry the file doesn't exist!");</p>&l
59、t;p> getchar();</p><p> printf("\n\nInput again?(Y or N)");</p><p> scanf("%c",&choice);getchar();</p><p> if(choice=='Y'||choice=='y'
60、)</p><p> goto label2;</p><p><b> }</b></p><p><b> else</b></p><p> { status=access(name,02);/*獲取文件的狀態(tài),是否存在并且是否只讀*/</p><p> i
61、f(status!=0)</p><p> { printf("\nSorry the file is only read!");</p><p> getchar();</p><p><b> }</b></p><p><b> else</b></p>
62、<p> {unlink(name); /*從目錄中刪除一個(gè)文件函數(shù),該函數(shù)在dos.h中*/</p><p> printf("\n\ndelete succefully!");</p><p> getchar();</p><p><b> }</b></p><p>
63、;<b> }</b></p><p><b> }</b></p><p> getchar();</p><p><b> break;</b></p><p> case 3:label3: /*打開文件操作*/</p>
64、;<p><b> clrscr();</b></p><p> gotoxy(27,5);printf("OPEN FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p&
65、gt; printf("\n\nPlease input the opening file name and routine:\n");</p><p> scanf("%s",name);</p><p> status=access(name,0);/*獲取文件的狀態(tài)*/</p><p> if(status!=0
66、)</p><p> {printf("\nSorry the file doesn't exist!");</p><p> getchar();</p><p> printf("\n\nInput again?(Y or N)");</p><p> scanf("%c&
67、quot;,&choice);getchar();</p><p> if(choice=='Y'||choice=='y')</p><p> goto label3;</p><p><b> }</b></p><p><b> else</b>
68、</p><p> { printf("\nNow begin to read the file:\n");</p><p> fp=fopen(name,"r");</p><p> ch=fgetc(fp); /*讀出文件到內(nèi)存*/</p><p> while(ch!=EOF
69、)</p><p> {printf("%c",ch);</p><p> ch=fgetc(fp);j++;</p><p><b> }</b></p><p> fclose(fp);getchar();/*關(guān)閉文件*/</p><p><b> }&
70、lt;/b></p><p> getchar();</p><p><b> break;</b></p><p> case 4:label4: /*寫文件操作*/</p><p><b> clrscr();</b></p><
71、p> gotoxy(27,5);printf("WRITE FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> printf("\n\nPlease input the writing file name
72、and routine:\n");</p><p> scanf("%s",name);</p><p> status=access(name,0);/*獲取name指向的文件狀態(tài)*/</p><p> if(status!=0)</p><p> {printf("\nSorry the f
73、ile doesn't exist!");</p><p> getchar();</p><p> printf("\n\nInput again?(Y or N)");</p><p> scanf("%c",&choice);getchar();</p><p>
74、 if(choice=='Y'||choice=='y')</p><p> goto label4;</p><p><b> }</b></p><p><b> else</b></p><p> {fp=fopen(name,"w"
75、);/*以寫入方式打開name 指向的文件*/</p><p> printf("\nPlease input the information(end with '#'):\n");</p><p> ch=getchar(); /*重寫文件*/</p><p> while(ch!='#')&
76、lt;/p><p> { fputc(ch,fp);</p><p> ch=getchar();</p><p><b> }</b></p><p> fclose(fp);getchar();/*關(guān)閉文件*/</p><p><b> }</b></p>
77、;<p> getchar();</p><p><b> break;</b></p><p> case 5:label5: /*定位文件操作*/</p><p><b> clrscr();</b></p><p> gotoxy(27,
78、5);printf("LOCATE FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> printf("\n\nPlease input the locating file name and routine:\n&
79、quot;);</p><p> scanf("%s",name);</p><p> status=access(name,0);/*獲取name文件指向的文件的狀態(tài)*/</p><p> if(status!=0)</p><p> {printf("\nSorry the file doesn
80、9;t exist!");</p><p> getchar();</p><p> printf("\n\nInput again?(Y or N)");</p><p> scanf("%c",&choice);getchar();</p><p> if(choice==
81、'Y'||choice=='y')</p><p> goto label5;</p><p><b> }</b></p><p><b> else</b></p><p> {printf("\nPlease input the locatio
82、n:");</p><p> scanf("%d",&x);</p><p> handle=open(name,O_CREAT|O_RDWR,S_IREAD|S_IWRITE);/*打開由name指定的文件,name既可以是簡(jiǎn)單的文件名*/</p><p> /*也可以是文件的路徑名,O_CREAT表示了打開文件的存取代
83、碼,若文件不存在,則建立,否則無(wú)效。*/</p><p> /*O_RDWR表示打開文件用于讀寫。S_IREAD|S_IWRITE允許讀寫*/</p><p> lseek(handle,x,SEEK_SET);/*該函數(shù)把由handle指定的文件的文件指針,移到SEEK_SET(開始位置)再加上x偏移量的地方*/</p><p> getchar();<
84、;/p><p><b> }</b></p><p> getchar();</p><p><b> break;</b></p><p> case 6:label6: /*修改文件屬性操作*/</p><p><b> c
85、lrscr();</b></p><p> gotoxy(27,5);printf("MODIFY FILE\n");</p><p> for(j=0;j<80;j++)</p><p> printf("= ");</p><p> printf("\n\n
86、Please input the modifying attribution file name and routine:\n");</p><p> scanf("%s",name);</p><p> status=access(name,0);/*獲取文件的狀態(tài)*/</p><p> if(status!=0)</p&
87、gt;<p> {printf("\nSorry the file doesn't exist!");</p><p> getchar();</p><p> printf("\n\nInput again?(Y or N)");</p><p> scanf("%c",&a
88、mp;choice);getchar();</p><p> if(choice=='Y'||choice=='y')</p><p> goto label6;</p><p><b> }</b></p><p><b> else</b></p&g
89、t;<p> { printf("\nPlease choice:1--READ_ONLY 2--WRITE_ONLY");</p><p> printf("\n\nPlease choice the attributione operation:");</p><p><b> while(1)</b&g
90、t;</p><p> { scanf("%d",&x);</p><p> if(x==1||x==2)</p><p><b> break;</b></p><p><b> else</b></p><p> printf(&qu
91、ot;\nError!Please input again!");</p><p><b> }</b></p><p> if(x==1) { status=chmod(name,S_IREAD);/*修改文件為“只讀”*/</p><p> if(status)</p><p> printf(&q
92、uot;\nSorry!Couldn't make the file read_only!");</p><p><b> else</b></p><p> printf("\n===Made <%s> read_only===",name);</p><p> getchar();&l
93、t;/p><p><b> }</b></p><p> else if(x==2) /*修改文件為“只寫”*/</p><p> { status=chmod(name,S_IWRITE);</p><p> if(status)</p><p> printf("\nS
94、orry!Couldn't make the file write_only!");</p><p><b> else</b></p><p> printf("\n===Made <%s> write_only===",name);</p><p> getchar();</p&
95、gt;<p><b> }</b></p><p><b> }</b></p><p> getchar();</p><p><b> break;</b></p><p> case 7:clrscr(); /*復(fù)制文
96、件的操作*/</p><p> gotoxy(27,5);printf("COPY FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> printf("\n\nPlease input t
97、he copying file name and routine:\n");</p><p> scanf("%s",name);</p><p> getchar();</p><p> printf("\nPlease input the copyed file name and routine:\n");
98、</p><p> scanf("%s",name1);</p><p> getchar();</p><p> strcpy(name2,"copy ");</p><p> strcat(name2,name);</p><p> strcat(name2,&qu
99、ot; ");</p><p> strcat(name2,name1);</p><p> system(name2); /*系統(tǒng)調(diào)用dos指令*/</p><p> getchar();</p><p><b> break;</b></p><p>
100、case 8:clrscr(); /*移動(dòng)文件操作*/</p><p> gotoxy(27,5);printf("MOVE FILE\n");</p><p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p
101、> printf("\n\nPlease input the moving file name and routine:\n");</p><p> scanf("%s",name);</p><p> getchar();</p><p> printf("\nPlease input the mov
102、ing file name and routine:\n");</p><p> scanf("%s",name1);</p><p> getchar();</p><p> strcpy(name2,"move ");</p><p> strcat(name2,name);<
103、;/p><p> strcat(name2," ");</p><p> strcat(name2,name1);</p><p> system(name2); /*系統(tǒng)調(diào)用dos指令*/</p><p> getchar();</p><p><b> bre
104、ak;</b></p><p> case 9: label9: /*目錄管理操作*/</p><p><b> clrscr();</b></p><p> gotoxy(27,5);printf("CATALOGUE MANAGE\n");</p>
105、<p> for(j=0;j<40;j++)</p><p> printf("= ");</p><p> gotoxy(13,9);</p><p> printf("Please input the moving file name and routine:\n");</p><
106、;p> gotoxy(25,11);printf("1--display catalogue");</p><p> gotoxy(25,12);printf("2--creat catalogue");</p><p> gotoxy(25,13);printf("3—delete catalogue");</
107、p><p> gotoxy(25,14);printf("4--copy catalogue");</p><p> gotoxy(25,15);printf("5--move catalogue");</p><p> gotoxy(25,16);printf("6--exit catalogue");
108、</p><p> gotoxy(26,20);</p><p> printf("Please choice:");</p><p> scanf("%d",&x);</p><p> while(x<1||x>6)</p><p> {print
109、f("\nError!Please input again!\n");</p><p> scanf("%d",&x);</p><p><b> }</b></p><p><b> switch(x)</b></p><p> { case
110、 1: printf("\nPlease iuput the displaying catalogue:\n");</p><p> scanf("%s",name);/*先是目錄操作*/</p><p> strcpy(name2,"dir ");/*復(fù)制dir命令*/</p><p> strca
111、t(name2, name);</p><p> printf("%s",name2);</p><p> getchar();</p><p> system(name2);/*系統(tǒng)調(diào)用*/</p><p> getchar();</p><p><b> break;<
112、/b></p><p> case 2: printf("\nPlease iuput the creating catalogue:\n");</p><p> scanf("%s",name);/*創(chuàng)建目錄操作*/</p><p> strcpy(name2,"md ");/*復(fù)制md命令
113、*/</p><p> strcat(name2,name);</p><p> system(name2);/*系統(tǒng)調(diào)用*/</p><p> getchar();</p><p><b> break;</b></p><p> case 3: printf("\nPlea
114、se iuput the deleting catalogue:\n");</p><p> scanf("%s",name);/*刪除目錄操作*/</p><p> strcpy(name2,"rd ");/*復(fù)制rd命令*/</p><p> strcat(name2,name);</p>
115、<p> system(name2);</p><p> getchar();</p><p><b> break;</b></p><p> case 4: printf("\nPlease iuput the copying catalogue:\n");</p><p>
116、scanf("%s",name);/*復(fù)制目錄操作*/</p><p> printf("\nPlease iuput the displayed catalogue:\n");</p><p> scanf("%s",name1);</p><p> strcpy(name2,"xcopy
117、 ");/*復(fù)制xcopy命令*/</p><p> strcat(name2,name);</p><p> strcat(name2," ");</p><p> strcat(name2,name1);</p><p> strcat(name2,"/e");</p>
118、<p> system(name2);/*系統(tǒng)調(diào)用*/</p><p> getchar();break;</p><p> case 5: printf("\nPlease iuput the moving catalogue:\n");</p><p> scanf("%s",name);/*移動(dòng)目錄
119、操作*/</p><p> printf("\nPlease iuput the moved catalogue:\n");</p><p> scanf("%s",name1);</p><p> strcpy(name2,"move ");/*復(fù)制move命令*/</p><
120、p> strcat(name2,name);</p><p> strcat(name2," ");</p><p> strcat(name2,name1);</p><p> system(name2);</p><p> getchar();break;</p><p> c
121、ase 6:goto tag; /*退出目錄管理操作*/</p><p><b> }</b></p><p> printf("Input again?(Y or N)");</p><p> scanf("%c",&choice);getchar();</p>
122、<p> if(choice=='Y'||choice=='y')</p><p> goto label9;</p><p> tag:getchar();</p><p><b> break;</b></p><p> case 10:flag=0;exit(0)
123、;break; /*退出文件管理系統(tǒng)程序*/</p><p> default: clrscr();</p><p> printf("\n\n Error!Please input again!\n");</p><p> getchar();</p><p><b> break;&l
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)---文件管理系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告----文件管理系統(tǒng)
- 《操作系統(tǒng)》課程設(shè)計(jì)-- 模擬文件管理系統(tǒng)
- 《操作系統(tǒng)》課程設(shè)計(jì)--模擬文件管理系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤文件操作
- 內(nèi)存管理(操作系統(tǒng))操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---操作系統(tǒng)之文件管理部分的設(shè)計(jì)與實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)(文件系統(tǒng)管理)
- 操作系統(tǒng)課程設(shè)計(jì)--基于文件分配表的文件管理系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)-- 操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)-文件管理實(shí)驗(yàn)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)---文件加密存儲(chǔ)
- 操作系統(tǒng)課程設(shè)計(jì)--模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--樹形目錄文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--文件訪問(wèn)接口設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---文件系統(tǒng)的模擬
- 操作系統(tǒng)課程設(shè)計(jì)---模擬文件系統(tǒng)
評(píng)論
0/150
提交評(píng)論