版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)課程設(shè)計(jì)題目文件系統(tǒng)學(xué)院計(jì)算機(jī)學(xué)院專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)年級(jí)班別10級(jí)7班學(xué)號(hào)3110006154學(xué)生姓名 指導(dǎo)教師劉老師20年月日文件系統(tǒng)課程設(shè)計(jì)的內(nèi)容:模擬文件系統(tǒng)實(shí)現(xiàn)的根本功能,了解文件系統(tǒng)的根本結(jié)構(gòu)和管理方法,加深理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn)。通過(guò)用高級(jí)語(yǔ)言編寫(xiě)和調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過(guò)程,從而對(duì)各種文件操作命令的實(shí)質(zhì)內(nèi)容和執(zhí)行過(guò)程有比擬深入的了解。二、可行性分析:可行性分析是通過(guò)對(duì)工程的主要內(nèi)容和配套條件,并通過(guò)對(duì)各方面進(jìn)行調(diào)查研究和分析比擬,并對(duì)工程建成以后所帶來(lái)的影響,從而提出該工程是否值得投資和如何進(jìn)行建設(shè)的咨詢(xún)意見(jiàn),是一種綜合性的系統(tǒng)分析方法??尚行苑治鰬?yīng)具有預(yù)見(jiàn)性、公正性、可靠性、科學(xué)性的特點(diǎn)。這里以三個(gè)方面來(lái)分析此次設(shè)計(jì):經(jīng)濟(jì)可行性、技術(shù)可行性、法律可行性。1、經(jīng)濟(jì)可行性:編寫(xiě)該文件系統(tǒng),只需要用到PC機(jī)和VC++6.0編程軟件,不需要花費(fèi)金錢(qián),所以,在經(jīng)濟(jì)方面,這個(gè)課程設(shè)計(jì)適合做。2、技術(shù)可行性:在做這個(gè)課程設(shè)計(jì),事先需要掌握的知識(shí)有C/C++語(yǔ)言,數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),PC機(jī)的根本操作和VC++6.0軟件的使用方法等。目前,這些知識(shí)都已經(jīng)學(xué)習(xí)并掌握了,所以在技術(shù)方面,這個(gè)課程設(shè)計(jì)也適合做。3、法律可行性:做這個(gè)課程設(shè)計(jì),只是為了掌握文件系統(tǒng)的根本內(nèi)容,提升自己的編程能力,沒(méi)有違反法律法規(guī),所以,在法律方面,這個(gè)課程設(shè)計(jì)也適合做。三、需求分析1.設(shè)計(jì)一個(gè)多用戶(hù)多級(jí)目錄文件管理系統(tǒng)。2.要設(shè)計(jì)多個(gè)實(shí)用命令并設(shè)置文件保護(hù)措施。3.設(shè)計(jì)一個(gè)較實(shí)用的用戶(hù)界面,方便用戶(hù)使用,界面要為用戶(hù)提供足夠的選擇信息,不需用戶(hù)打入冗長(zhǎng)的命令4.功能簡(jiǎn)介:①多用戶(hù)管理,多級(jí)目錄形式。②根本的文件操作功能,如新建文件、翻開(kāi)文件、寫(xiě)入文件、關(guān)閉文件、讀取文件等。③用戶(hù)間文件的共享功能四、概要設(shè)計(jì)(邏輯圖)系統(tǒng)結(jié)構(gòu)圖:開(kāi)始開(kāi)始新用戶(hù)注冊(cè)讀入文件新用戶(hù)注冊(cè)讀入文件用戶(hù)登錄用戶(hù)登錄用戶(hù)不存在MFD中找到該用戶(hù)?用戶(hù)不存在MFD中找到該用戶(hù)?顯示該用戶(hù)目錄下的所有文件管理信息顯示該用戶(hù)目錄下的所有文件管理信息輸入操作命令輸入操作命令是什么命令?是什么命令?刪除文件創(chuàng)立文件刪除文件創(chuàng)立文件復(fù)制文件寫(xiě)出文件顯示目錄共享文件平安退出查找文件關(guān)閉文件翻開(kāi)文件復(fù)制文件寫(xiě)出文件顯示目錄共享文件平安退出查找文件關(guān)閉文件翻開(kāi)文件自動(dòng)保存目錄自動(dòng)保存目錄結(jié)束結(jié)束2、界面簡(jiǎn)單說(shuō)明該系統(tǒng)主要分為兩個(gè)界面,用戶(hù)操作界面及文件操作管理界面。用戶(hù)操作界面可進(jìn)行創(chuàng)立用戶(hù)、刪除用戶(hù)、登陸用戶(hù)、查看用戶(hù)等操作,登陸用戶(hù)后將進(jìn)入文件操作管理界面,可以對(duì)文件〔夾〕進(jìn)行簡(jiǎn)單的操作,包括:創(chuàng)立、刪除、翻開(kāi)、讀出、寫(xiě)入、關(guān)閉、修改、共享等操作,根據(jù)用戶(hù)命令執(zhí)行不同功能。五.詳細(xì)的設(shè)計(jì)〔重要函數(shù)、數(shù)據(jù)結(jié)構(gòu)乃其詳細(xì)說(shuō)明〕1、設(shè)計(jì)方案數(shù)據(jù)結(jié)構(gòu):structfcb{ charfcbname[10];//文件名 inttype;//文件類(lèi)型,0為文件,1為文件夾 intlength;//文件長(zhǎng)度 intprotect;//保護(hù)碼,0為只讀,1為可讀寫(xiě) intflag;//文件狀態(tài),0為關(guān)閉狀態(tài),1為翻開(kāi)狀態(tài) char*content;//文件內(nèi)容 intshare;//文件共享狀態(tài),0為不共享狀態(tài),1為共享狀態(tài) structfcb*parent; structfcb*child; structfcb*next; structjiedian*jdparent;//指向該文件的索引結(jié)點(diǎn) structjiedian*jdnext;//用來(lái)鏈接共享索引結(jié)點(diǎn)};structuser{charusername[10];//用戶(hù)名FCB*fcb;//該用戶(hù)下的目錄文件 structuser*parent;structuser*next;};structjiedian//索引結(jié)點(diǎn),可為文件共享所使用{charfilename[10];//索引結(jié)點(diǎn)所指的文件名稱(chēng) charrename[10];FCB*fcb;//索引結(jié)點(diǎn)指向的文件 intshare;//0表示該結(jié)點(diǎn)沒(méi)有共享,1表示共享 structjiedian*sharenext;//鏈接共享索引結(jié)點(diǎn) structjiedian*front;structjiedian*next;};主要的函數(shù)說(shuō)明:createfile—在用戶(hù)當(dāng)前目錄下創(chuàng)立一個(gè)文件〔夾〕,該文件的管理信息登錄到用戶(hù)文件信息管理模塊中。deletefile—?jiǎng)h除當(dāng)前用戶(hù)當(dāng)前目錄下的一個(gè)文件〔夾〕。openfile—在當(dāng)前用戶(hù)目錄翻開(kāi)某個(gè)文件并修改標(biāo)志位,對(duì)文件讀、寫(xiě)操作都需先翻開(kāi)。closefile—關(guān)閉用戶(hù)翻開(kāi)的文件。執(zhí)行該命令后,用戶(hù)在系統(tǒng)中運(yùn)行文件狀態(tài)位被修改為關(guān)閉。readfile—從用戶(hù)已翻開(kāi)文件讀信息,將文件內(nèi)容讀出,未翻開(kāi)文件無(wú)法讀取。writefile-向用戶(hù)已翻開(kāi)文件寫(xiě)入信息,未翻開(kāi)文件無(wú)法寫(xiě)入操作。share-共享文件,文件共享后各用戶(hù)可以對(duì)共享文件進(jìn)行訪問(wèn)。file_menu-用戶(hù)當(dāng)前目錄文件列表顯示。search-在所有用戶(hù)中查找所需要的文件back-返回上一級(jí)目錄quit用戶(hù)注銷(xiāo)命令。當(dāng)使用該命令時(shí),用戶(hù)退出系統(tǒng)。copyfile-在當(dāng)前目錄下,復(fù)制一個(gè)文件或文件夾rename-對(duì)一個(gè)文件或文件夾進(jìn)行重命名源代碼〔局部〕:voidcreatefile(FCB*f,intflag)//新建文件(夾){FCB*temp; FCB*p=f->child;FCB*q; JD*jdtemp,*jdp;temp=get(FCB); q=f->child; if(flag==0){printf("\t\t\t************\n"); printf("\t\t\t*新建文件*\n"); printf("\t\t\t************\n");printf("請(qǐng)輸入文件名:");//輸入文件名 scanf("%s",temp->fcbname); while(q!=NULL) { if(strcmp(temp->fcbname,q->fcbname)==0&&(q->type==flag)) { printf("該目錄下已有該名字的文件,請(qǐng)重新輸入。"); scanf("%s",temp->fcbname); q=f->child; } q=q->next; } } else { printf("\t\t\t**************\n"); printf("\t\t\t*新建文件夾*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件夾名:");//輸入文件〔夾〕名 scanf("%s",temp->fcbname); while(q!=NULL) { if(strcmp(temp->fcbname,q->fcbname)==0&&(q->type==flag)) { printf("該目錄下已有該名字的文件,請(qǐng)重新輸入。"); scanf("%s",temp->fcbname); q=f->child; } q=q->next; } } temp->content=NULL; printf("\n\t文件屬性:0、只讀\t1、可寫(xiě)");//設(shè)置保護(hù)模式 printf("\n請(qǐng)選擇:"); scanf("%d",&temp->protect); while(temp->protect!=0&&temp->protect!=1) { printf("輸入錯(cuò)誤,請(qǐng)重新輸入。"); scanf("%d",&temp->protect); } if(flag==0) { printf("該文件的長(zhǎng)度為:");//設(shè)置文件大小 scanf("%d",&temp->length); }if(flag==0) temp->type=0;//0為文件 elsetemp->type=1;//1為文件夾 temp->flag=0;//文件默認(rèn)為關(guān)閉狀態(tài),以后需要時(shí)再翻開(kāi) temp->share=0;//文件默認(rèn)為不共享狀態(tài) temp->child=NULL; temp->next=NULL; temp->jdnext=NULL; temp->parent=currentfcb; if(p==NULL)//該目錄下還沒(méi)有文件〔夾〕{f->child=temp;} else{ while(p->next!=NULL) {p=p->next;} p->next=temp; } jdtemp=get(JD);//建立該文件〔夾〕的索引結(jié)點(diǎn) temp->jdparent=jdtemp; strcpy(jdtemp->filename,temp->fcbname);//取相同的文件名 jdtemp->fcb=temp; jdtemp->share=0;//索引結(jié)點(diǎn)默認(rèn)不共享 jdtemp->sharenext=NULL; jdtemp->next=NULL; if(head==NULL) { head=jdtemp; head->front=NULL; } else { jdp=head; while(jdp->next!=NULL) jdp=jdp->next; jdp->next=jdtemp; jdtemp->front=jdp; }getchar(); file_menu();}voidopenfile(FCB*f,intflag)//翻開(kāi)文件(夾){ charn[10]; intflag1=0; FCB*p=f->child; if(flag==0) { printf("\t\t\t**************\n"); printf("\t\t\t*翻開(kāi)文件*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件名:"); } else { printf("\t\t\t**************\n"); printf("\t\t\t*翻開(kāi)文件夾*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件夾名:"); } scanf("%s",n); if(f->jdnext!=NULL) { JD*j=f->jdnext; while(j!=NULL) { if(j->share==1) if(strcmp(j->rename,n)==0)//找到要翻開(kāi)的共享文件 { if(j->share==1) { j->fcb->flag=1; printf("文件%s成功翻開(kāi)。\n",n); flag1=1; } else printf("共享文件不存在,請(qǐng)確認(rèn)文件沒(méi)有被刪除。\n",n); getchar(); break; } j=j->sharenext; } }while(p!=NULL&&flag1==0) { if((strcmp(p->fcbname,n)==0)&&(p->type==flag))//找到要翻開(kāi)的文件〔夾〕 { if(p->type==0) { p->flag=1; printf("文件%s成功翻開(kāi)。\n",n); getchar(); break; } else { p->flag=1; currentfcb=p; printf("文件夾%s已經(jīng)翻開(kāi)。\n",n); break; } }p=p->next; } if(p==NULL&&flag1==0) { if(flag=1) printf("該文件夾不存在。\n"); else printf("該文件不存在。\n"); getchar(); } getchar(); file_menu();}voidsearch(intflag)//查找文件〔夾〕{ charn[10],filename[10][10]; inti,flag1=0; JD*p=head; FCB*q; if(flag==0) { printf("\t\t\t**************\n"); printf("\t\t\t*查找文件*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件名:"); } else { printf("\t\t\t**************\n"); printf("\t\t\t*查找文件夾*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件夾名:"); } scanf("%s",n);while(p!=NULL) { if((strcmp(p->filename,n)==0)&&(p->fcb->type==flag))//找到對(duì)應(yīng)的文件〔夾〕 { q=p->fcb; for(i=0;q!=NULL;i++,q=q->parent) strcpy(filename[i],q->fcbname); if(flag==0) printf("\n文件%s所在的位置是:",p->fcb->fcbname); else printf("\n文件夾%s所在的位置是:",p->fcb->fcbname); for(i=i-1;i>=0;i--)//顯示文件路徑 printf("%s/",filename[i]); printf("\n"); flag1=1; }p=p->next; } printf("\n查找結(jié)束。\n",n); if(flag1==0) { if(flag==0) printf("該文件不存在。\n"); else printf("該文件夾不存在。\n"); } getchar(); getchar(); file_menu();}voidshare()//共享文件{ charn[10]; FCB*p=currentfcb->child; printf("\t\t\t************\n"); printf("\t\t\t*共享文件*\n"); printf("\t\t\t************\n");printf("請(qǐng)輸入文件名:"); scanf("%s",n);while(p!=NULL) { if((strcmp(p->fcbname,n)==0)&&(p->type==0))//找到要共享的文件 { USER*q=user; JD*j; p->share=1; p->jdparent->share=1; strcpy(p->jdparent->rename,p->jdparent->filename); while(q!=NULL)//共享索引結(jié)點(diǎn) { if(q!=currentuser) { j=q->fcb->jdnext; if(j==NULL) { q->fcb->jdnext=p->jdparent; p->jdparent->sharenext=NULL; }else { while(j->sharenext!=NULL) j=j->sharenext; j->sharenext=p->jdparent; p->jdparent->sharenext=NULL; } } q=q->next; } printf("文件%s已經(jīng)共享。\n",n); break; }p=p->next; } if(p==NULL) { printf("該文件不存在。\n"); } getchar(); getchar(); file_menu();//返回文件管理操作菜單}voidcancleshare()//撤消共享文件{ charn[10]; FCB*p=currentfcb->child; printf("\t\t\t****************\n"); printf("\t\t\t*撤消共享文件*\n"); printf("\t\t\t****************\n");printf("請(qǐng)輸入文件名:"); scanf("%s",n);while(p!=NULL) { if((strcmp(p->fcbname,n)==0)&&(p->type==0))//找到要撤消共享的文件 { p->share=0; p->jdparent->share=0; printf("撤消共享成功。\n",n); break; }p=p->next; } if(p==NULL) { printf("該共享文件不存在。\n"); } getchar(); getchar(); file_menu();//返回文件管理操作菜單}voidrename(FCB*f,intflag)//重命名文件〔夾〕{ charn[10],temp[10]={0}; FCB*p=f->child; intflag1=0; if(flag==0) { printf("\t\t\t**************\n"); printf("\t\t\t*重命名文件*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件名:"); } else { printf("\t\t\t**************\n"); printf("\t\t\t*重命名文件夾*\n"); printf("\t\t\t**************\n");printf("請(qǐng)輸入文件夾名:"); } scanf("%s",n); if(f->jdnext!=NULL) { JD*j=currentfcb->jdnext; while(j!=NULL) { if(j->share==1) if(strcmp(j->rename,n)==0&&flag==0)//找到要重命名的共享文件 { if(j->share==1) { printf("\n請(qǐng)輸入新文件名:"); scanf("%s",n); strcpy(j->rename,temp); strcpy(j->rename,n); printf("\n重命名成功。\n"); flag1=1; break; } getchar(); break; } j=j->sharenext; } }while(p!=NULL&&flag1==0) { if((strcmp(p->fcbname,n)==0)&&p->type==flag)//找到要重命名的文件〔夾〕 { if(flag==0) printf("\n請(qǐng)輸入新文件名:"); else
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)園林景觀苗木種植與城市生態(tài)修復(fù)承包合同2篇
- 2025年度人工智能教育應(yīng)用開(kāi)發(fā)合同范本4篇
- 2025年度生態(tài)農(nóng)業(yè)大棚建設(shè)項(xiàng)目合同3篇
- 二零二五年度充電樁智能管理系統(tǒng)研發(fā)與授權(quán)合同4篇
- 2025版?;穬?chǔ)存場(chǎng)地租賃與安全生產(chǎn)培訓(xùn)與事故調(diào)查預(yù)防合同3篇
- 2025年度科技研發(fā)中心員工勞動(dòng)合同范本(含知識(shí)產(chǎn)權(quán))
- 2025年中國(guó)無(wú)糖食品行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢(xún)報(bào)告
- 2025年度車(chē)輛租賃市場(chǎng)推廣合作合同范本4篇
- 2025年中國(guó)桶裝水行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資前景展望報(bào)告
- 2025年度電競(jìng)館場(chǎng)地租賃與電競(jìng)賽事舉辦合同4篇
- 注射泵管理規(guī)范及工作原理
- 國(guó)潮風(fēng)中國(guó)風(fēng)2025蛇年大吉蛇年模板
- 故障診斷技術(shù)的國(guó)內(nèi)外發(fā)展現(xiàn)狀
- 2024年發(fā)電廠交接班管理制度(二篇)
- 農(nóng)機(jī)維修市場(chǎng)前景分析
- HG+20231-2014化學(xué)工業(yè)建設(shè)項(xiàng)目試車(chē)規(guī)范
- 匯款賬戶(hù)變更協(xié)議
- 電力系統(tǒng)動(dòng)態(tài)仿真與建模
- 蝦皮shopee新手賣(mài)家考試題庫(kù)及答案
- 四川省宜賓市2023-2024學(xué)年八年級(jí)上學(xué)期期末義務(wù)教育階段教學(xué)質(zhì)量監(jiān)測(cè)英語(yǔ)試題
- 價(jià)值醫(yī)療的概念 實(shí)踐及其實(shí)現(xiàn)路徑
評(píng)論
0/150
提交評(píng)論