《操作系統(tǒng)》實(shí)驗(yàn)實(shí)施計(jì)劃_第1頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)實(shí)施計(jì)劃_第2頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)實(shí)施計(jì)劃_第3頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)實(shí)施計(jì)劃_第4頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)實(shí)施計(jì)劃_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

自考“通信工程”專業(yè)連接考試《操作系統(tǒng)》課程實(shí)驗(yàn)環(huán)節(jié)實(shí)施方案實(shí)驗(yàn)要求依據(jù)《操作系統(tǒng)》課程教學(xué)要求,實(shí)驗(yàn)環(huán)節(jié)應(yīng)要求完成五個(gè)實(shí)驗(yàn)項(xiàng)目??紤]到自考課程教學(xué)實(shí)際情況,結(jié)合我院實(shí)驗(yàn)室的條件,經(jīng)任課老師、實(shí)驗(yàn)指導(dǎo)老師、教研室主任和我院學(xué)術(shù)委員會(huì)認(rèn)真商量,確定開(kāi)設(shè)二個(gè)實(shí)驗(yàn)項(xiàng)目。實(shí)驗(yàn)項(xiàng)目、內(nèi)容及要求詳見(jiàn)我院編制的《操作系統(tǒng)》課程實(shí)驗(yàn)大綱。實(shí)驗(yàn)環(huán)境目前,我院依據(jù)編制的《操作系統(tǒng)》課程實(shí)驗(yàn)大綱,實(shí)驗(yàn)環(huán)境基本能滿意開(kāi)設(shè)的實(shí)驗(yàn)項(xiàng)目。實(shí)驗(yàn)環(huán)境主要設(shè)備為:硬件:一臺(tái)能正常啟動(dòng)的計(jì)算機(jī)軟件:VisualC++6.0,Windows2003等實(shí)驗(yàn)報(bào)告要求與成果評(píng)定同學(xué)每完成一個(gè)實(shí)驗(yàn)項(xiàng)目,要求獨(dú)立認(rèn)真的填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)指導(dǎo)老師將依據(jù)同學(xué)完成實(shí)驗(yàn)的態(tài)度和表現(xiàn),結(jié)合填寫(xiě)的實(shí)驗(yàn)報(bào)告評(píng)定實(shí)驗(yàn)成果.成果的評(píng)定按百分制評(píng)分。實(shí)驗(yàn)考試同學(xué)在完成全部實(shí)驗(yàn)項(xiàng)目后,再進(jìn)行一次綜合性考試。老師可以依據(jù)同學(xué)完成的實(shí)驗(yàn)項(xiàng)目,綜合出3套與實(shí)驗(yàn)相像的考試題,由同學(xué)任選一套獨(dú)立完成。老師給出同學(xué)實(shí)驗(yàn)考試成果作為最終實(shí)驗(yàn)成果上報(bào)。附件附件1《操作系統(tǒng)》課程實(shí)驗(yàn)大綱附件2實(shí)驗(yàn)報(bào)告冊(cè)樣式以上對(duì)《計(jì)操作系統(tǒng)》課程實(shí)驗(yàn)的實(shí)施方案,妥否,請(qǐng)貴校批示。重慶信息工程專修學(xué)院2008年3月20日附件1《操作系統(tǒng)》課程實(shí)驗(yàn)教學(xué)大綱實(shí)驗(yàn)課程負(fù)責(zé)人:盧朝江開(kāi)課學(xué)期:第四學(xué)期實(shí)驗(yàn)類別:專業(yè)基礎(chǔ)課程實(shí)驗(yàn)類型:應(yīng)用性實(shí)驗(yàn)實(shí)驗(yàn)要求:必修適用專業(yè):通信工程課程總學(xué)時(shí):12學(xué)時(shí)課程總學(xué)分:1分《操作系統(tǒng)》課程實(shí)驗(yàn)項(xiàng)目及學(xué)時(shí)安排序號(hào)實(shí)驗(yàn)項(xiàng)目實(shí)驗(yàn)內(nèi)容及要求學(xué)時(shí)實(shí)驗(yàn)類型備注1實(shí)驗(yàn)一:頁(yè)式存儲(chǔ)管理方案頁(yè)式內(nèi)存管理系統(tǒng)模擬程序模擬頁(yè)式存儲(chǔ)管理,頁(yè)面的安排與回收,能顯示位視圖和頁(yè)表4應(yīng)用型實(shí)驗(yàn)2實(shí)驗(yàn)二文件管理文件管理模擬程序模擬操作系統(tǒng)中的建立文件、打開(kāi)文件、讀文件、寫(xiě)文件、關(guān)閉文件、刪除文件、建立名目、顯示名目?jī)?nèi)容、顯示文件內(nèi)容、轉(zhuǎn)變文件屬性等操作.8應(yīng)用型實(shí)驗(yàn)?實(shí)驗(yàn)一頁(yè)式存儲(chǔ)管理一、實(shí)驗(yàn)?zāi)康恼莆枕?yè)面存儲(chǔ)管理的內(nèi)存安排方法,位視圖的表示。二、實(shí)驗(yàn)內(nèi)容1、運(yùn)行程序,由檢查老師給出文件名,該文件中存有內(nèi)存目前狀況的位示圖的數(shù)據(jù)(0和1的文件).(程序應(yīng)做提示,界面友好)。2、你所編制的程序應(yīng)讀入數(shù)據(jù),存放在相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。3、顯示友好的用戶界面,由檢查老師輸入內(nèi)存申請(qǐng)(總塊數(shù))。4、依據(jù)申請(qǐng)和位示圖狀態(tài),為用戶安排內(nèi)存,并建立頁(yè)表。5、輸出位示圖和頁(yè)表.三、實(shí)驗(yàn)環(huán)境1、一臺(tái)能正常啟動(dòng)的P41。5GHZ以上個(gè)人計(jì)算機(jī)2、安裝有VisualC++6.0軟件四、實(shí)驗(yàn)原理與方法內(nèi)存被劃分成2048塊(頁(yè)).用32位字長(zhǎng)的字存放位示圖,為0的位表示該塊尚未安排,為1的位表示該塊已安排。五、實(shí)驗(yàn)步驟1、啟動(dòng)VisualC++6。0,創(chuàng)建一個(gè)新的C++源程序2、輸入相應(yīng)的代碼。3、保存程序4、運(yùn)行程序主要的程序代碼如下:#include〈stdio。h>#include〈iostream.h〉#include〈string.h>constintPAGES=256;//定義總塊數(shù)cWORD=32;//定義字長(zhǎng)constintWORDNUM=PAGES/WORD;//定義總字?jǐn)?shù)typedefstructnode{charjobname[20];intnum;intnums[PAGES];structnode*next;}jobs;inttable[WORDNUM][WORD];intfree(cuò)num=0;jobs*head;//初始化函數(shù)voidinitial(){inti,j;jobs*p;//初始化位示圖for(i=0;i〈WORDNUM;i++){for(j=0;j<WORD;j++){table[i][j]=0;}}//初始化作業(yè)表頭p=newjobs;strcpy(p—〉jobname,"null");p->num=0;p-〉next=NULL;head=p;}//讀入位示圖初始數(shù)據(jù)voidreadData(){inti,j;FILE*fp;charfname[20];cout〈<"請(qǐng)輸入初始位示圖數(shù)據(jù)文件名:"<<endl;cin>〉fname;if((fp=fopen(fname,"r"))!=NULL){for(i=0;i〈WORDNUM;i++){for(j=0;j<WORD;j++){fscanf(fp,"%d”,&table[i][j]);if(table[i][j]==1)free(cuò)num++;}}cout〈<”初始位示圖"〈<endl;for(i=0;i<WORDNUM;i++){for(j=0;j〈WORD;j++){cout〈〈table[i][j]<〈”";}cout〈〈endl;}cout〈〈"總空閑塊數(shù):"<〈freenum;}else{cout<〈”文件不能打開(kāi)”<〈endl;}}//新加入作業(yè)函數(shù)voidadd(){charjobname[20];intnum;jobs*p;inti,j,k=0;cout<<”請(qǐng)輸入新增的作業(yè)名:";cin>>jobname;cout<〈”新增作業(yè)所需頁(yè)數(shù):";cin>〉num;if(num<=freenum){free(cuò)num—=num;p=newjobs;strcpy(p-〉jobname,jobname);p-〉num=num;for(k=0;k<num;k++){i=0;j=0;while(table[i][j]==1){j=0;while(table[i][j]==1)j++;if(table[i][j]==1)i++;}p->nums[k]=i*WORD+j;table[i][j]=1;}p—〉next=head->next;head—>next=p;}else{cout<<"錯(cuò)誤,當(dāng)前剩余頁(yè)數(shù)小于所需頁(yè)數(shù),請(qǐng)稍候再試:)"<<endl;}}//完成作業(yè)函數(shù)voidfinish(){charjobname[20];jobs*p,*q;intn,i,j,num,k;cout<<"請(qǐng)輸入完成的作業(yè)名:";cin>>jobname;p=head-〉next;q=head;while(p!=NULL){if(strcmp(p->jobname,jobname)){q=q->next;}p=p—>next;}p=q—>next;num=p—〉num;for(k=0;k<num;k++){n=p-〉nums[k];i=n/WORD;j=n%WORD;table[i][j]=0;}freenum+=num;q->next=p->next;deletep;}//顯示當(dāng)前位示圖函數(shù)voidview_table(){inti,j;cout<<”當(dāng)前位示圖"<〈endl;for(i=0;i<WORDNUM;i++){for(j=0;j<WORD;j++){cout<〈table[i][j]<〈"";}cout<〈endl;}cout<〈”總空閑塊數(shù):”〈<freenum<〈endl;}//顯示全部頁(yè)表函數(shù)voidview_pages(){jobs*p;inti;p=head->next;if(p==NULL)cout<<"當(dāng)前沒(méi)有用戶作業(yè)”<〈endl;elsecout<<"當(dāng)前全部的用戶作業(yè)頁(yè)表情況"<<endl;while(p!=NULL){cout〈<"作業(yè)名:"〈<p->jobname<<"所用塊數(shù):"<〈p—〉num<〈endl;cout〈<"本作業(yè)所點(diǎn)塊的序列是:”〈〈endl;for(i=0;i<p->num;i++){cout〈<p—>nums[i]<<"";}cout<〈endl;p=p—〉next;}}//顯示版權(quán)信息函數(shù)voidversion(){cout<〈endl〈<endl;cout〈<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"〈<endl;cout〈<"┃頁(yè)式內(nèi)存管理系統(tǒng)模擬程序┃"<<endl;cout<〈”┠───────────────────────┨"<<endl;cout〈<"┃重慶信息工程專修學(xué)院┃"〈<endl;cout<<"┃1.0版┃"<<endl;cout<<"┃2008年3月19日┃”〈<endl;cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<〈endl;cout〈〈endl〈<endl;}voidmain(){intt=1,chioce;version();initial();readData();while(t==1){cout<<endl<〈”==========================================="〈<endl;cout〈<"頁(yè)式內(nèi)存管理系統(tǒng)模擬程序”<<endl;cout〈<”==========================================="<〈endl;cout〈<”1。加入新作業(yè)2。完成作業(yè)3。顯示當(dāng)前內(nèi)存位示圖4.顯示全部作業(yè)頁(yè)表0.退出”〈<endl;cout<<”請(qǐng)選擇:";cin〉〉chioce;switch(chioce){case1:add();break;case2:finish();break;case3:view_table();break;case4:view_pages();break;case0:t=0;break;default:cout〈<"選擇錯(cuò)誤"<<endl;}}}六、思考題1。頁(yè)面的安排和回收是如何操作的.七、實(shí)驗(yàn)報(bào)告要求認(rèn)真填寫(xiě)試驗(yàn)報(bào)告,程序代碼清單要完整,精準(zhǔn)。?實(shí)驗(yàn)二文件管理一、實(shí)驗(yàn)?zāi)康恼莆詹僮飨到y(tǒng)文件管理的基本方法。二、實(shí)驗(yàn)內(nèi)容編寫(xiě)程序代碼,模擬操作系統(tǒng)對(duì)文件的操作。1、運(yùn)行程序,由檢查老師給出文件名,該文件中存有相應(yīng)的若干命令.(程序應(yīng)做提示,界面友好)。2、要求實(shí)現(xiàn)兩個(gè)命令:mkdir名目名(名目已存在,應(yīng)給出錯(cuò)誤信息。)cd名目名(名目不存在,應(yīng)給出錯(cuò)誤信息。)3、你所編制的程序應(yīng)讀入文件,并執(zhí)行其中的每一條命令。4、在屏幕上顯示文件名目的結(jié)構(gòu)。(界面自己設(shè)計(jì),但要清楚明白。)三、實(shí)驗(yàn)環(huán)境(宋體小四加粗)1、一臺(tái)能正常啟動(dòng)的P41.5GHZ以上個(gè)人計(jì)算機(jī)2、安裝有VisualC++6.0軟件四、實(shí)驗(yàn)原理與方法模擬一個(gè)文件系統(tǒng),包括名目文件,一般文件,并實(shí)現(xiàn)對(duì)它們的一些基本操作。假定每個(gè)名目文件最多只能占用一個(gè)塊;一個(gè)名目項(xiàng)包括文件名(下一級(jí)名目名),文件類型,文件長(zhǎng)度,指向文件內(nèi)容(下一級(jí)名目)的指針內(nèi)容。一般文件可以只用名目項(xiàng)(FCB)代表。(簡(jiǎn)略的數(shù)據(jù)結(jié)構(gòu)見(jiàn)后面的說(shuō)明)程序功能方面的要求:需要實(shí)現(xiàn)一個(gè)命令行操作界面,包含如下命令:1轉(zhuǎn)變名目格式:CD〈名目名〉功能:工作名目轉(zhuǎn)移到指定的名目下,只要求完成轉(zhuǎn)變到當(dāng)前名目的某一個(gè)子名目下的功能,不要求實(shí)現(xiàn)相對(duì)名目以及肯定名目。2創(chuàng)建文件格式:CREATE〈文件名〉〈文件長(zhǎng)度〉功能:創(chuàng)立一個(gè)指定名字的新文件,即在名目中增加一項(xiàng),不考慮文件內(nèi)容,但必須能輸入文件長(zhǎng)度.3刪除文件格式:DEL〈盼望刪除的文件名〉功能:刪除指定的文件4顯示名目格式:LSALL功能:顯示全部名目以及文件,輸出時(shí)要求先輸出接近根的名目,再輸出子名目。圖示如圖。5創(chuàng)建名目格式:MD〈名目名〉功能:在當(dāng)前路徑下創(chuàng)建指定的名目6刪除名目格式:RD〈名目名>功能:刪除當(dāng)前名目下的指定名目,如果該名目為空,則可刪除,否則應(yīng)提示是否作刪除,刪除操作將該名目下的全部文件和子名目都刪除。對(duì)于上述功能要求,完成1—4為及格,完成1—5為良,完成1-6為優(yōu)。程序?qū)崿F(xiàn)方面的要求:1對(duì)于重名(創(chuàng)建時(shí)),文件不存在(刪除時(shí)),名目不存在(轉(zhuǎn)變名目時(shí))等錯(cuò)誤*作情況,程序應(yīng)該作出相應(yīng)處理并給出錯(cuò)誤信息,但是程序不得因此而退出。2界面友好,程序強(qiáng)壯。3界面的提示符為#,提示的命令以及調(diào)試的方法應(yīng)和前面的要求全都。不要自己設(shè)計(jì)命令或者附加不要求的功能.4在考卷的說(shuō)明部分(背面)有一段程序的源代碼以及對(duì)源代碼的說(shuō)明,考試的編碼應(yīng)在這個(gè)程序的基礎(chǔ)上修改而成.這段源代碼中規(guī)定了文件系統(tǒng)使用的數(shù)據(jù)結(jié)構(gòu)和需要實(shí)現(xiàn)的函數(shù)框架,請(qǐng)將你的實(shí)現(xiàn)代碼填寫(xiě)到合適的位置中去,可以自己添加幫助數(shù)據(jù)結(jié)構(gòu)、變量、常量以及函數(shù),但是不得轉(zhuǎn)變已有的代碼(如數(shù)據(jù)結(jié)構(gòu)的定義以及函數(shù)的名稱以及參數(shù)說(shuō)明)。5考試提交的源程序請(qǐng)命名為filesys。c.6程序設(shè)計(jì)環(huán)境使用TC2。0,在DOS操作系統(tǒng)下完成全部程序代碼。本程序包括實(shí)現(xiàn):1轉(zhuǎn)變名目格式:CD〈名目名〉功能:工作名目轉(zhuǎn)移到指定的名目下,只要求完成轉(zhuǎn)變到當(dāng)前名目的某一個(gè)子名目下的功能,不要求實(shí)現(xiàn)相對(duì)名目以及肯定名目.2創(chuàng)建文件格式:CREATE〈文件名〉〈文件長(zhǎng)度〉功能:創(chuàng)立一個(gè)指定名字的新文件,即在名目中增加一項(xiàng),不考慮文件內(nèi)容,但必須能輸入文件長(zhǎng)度.3刪除文件格式:DEL〈盼望刪除的文件名〉功能:刪除指定的文件4顯示名目格式:LSALL功能:顯示全部名目以及文件,輸出時(shí)要求先輸出接近根的名目,再輸出子名目。圖示如圖.5創(chuàng)建名目格式:MD<名目名〉功能:在當(dāng)前路徑下創(chuàng)建指定的名目6刪除名目格式:RD<名目名>五、實(shí)驗(yàn)步驟1、啟動(dòng)VisualC++6.0,創(chuàng)建一個(gè)新的C++程序2、輸入相應(yīng)的代碼。3、保存程序4、運(yùn)行程序主要的代碼如下:include<stdio.h>#include<string.h>#include〈iostream。h〉#include<mat(yī)h.h>#include<stdlib.h>#include<iomanip。h>//******************名目和文件的結(jié)構(gòu)定義******typedefstructnode{charname[50];/*名目或文件的名字*/inttype;/*0代表名目,1代表一般文件*/structnode*next;/*指向下一個(gè)兄弟結(jié)點(diǎn)的指針*/structnode*sub;/*指向第一個(gè)子結(jié)點(diǎn)的指針*/structnode*father;/*指向父結(jié)點(diǎn)的指針*/intsize;/*如果是文件則表示文件的大小*/}dirNode;dirNode*workDir;//定義當(dāng)前工作名目dirNoderoot;//定義根名目charpath[100];//定義路徑信息//初始化函數(shù)voidinitial(){strcpy(root.name,"root”);root。type=0;root.next=NULL;root.sub=NULL;root.father=NULL;root.size=0;workDir=&root;strcpy(path,"root");}//初始化新結(jié)點(diǎn)函數(shù)dirNode*init(){dirNode*p;p=newdirNode;strcpy(roo,"");root.type=0;root.next=NULL;root.sub=NULL;root.father=NULL;root。size=0;returnp;}//1轉(zhuǎn)變名目voidCD(chardirName[]){dirNode*p;intflag=0;p=workDir-〉sub;if(p==NULL){cout〈<"錯(cuò)誤,\"”<<dirName<〈"\"子名目不存在"<<endl;}else{while(p){if(p->type==0){if(!strcmp(p-〉name,dirName)){flag=1;break;}}p=p->next;}if(flag==1){workDir=p;strcat(path,"\\");strcat(path,p-〉name);cout<〈"工作名目已進(jìn)入\”"〈<dirName〈<”\”"〈<endl;}else{cout<<"錯(cuò)誤,\”"〈〈dirName<〈”\"子名目不存在"<<endl;}}}//2創(chuàng)建文件voidCREATE(charfileName[],intfileSize){intflag;dirNode*p,*q;q=newdirNode;strcpy(q—>name,fileName);q—>sub=NULL;q—>type=1;q->next=NULL;q—>father=workDir;q—〉size=fileSize;p=workDir—>sub;if(p==NULL){workDir-〉sub=q;cout<<”\””<<fileName〈〈"\"文件創(chuàng)建成功"〈<endl;}else{flag=0;while(p){if(p->type==1){if(!strcmp(p—>name,fileName)){flag=1;cout<〈"錯(cuò)誤,\"”<<fileName〈〈”\"文件已存在"<<endl;}}p=p-〉next;}if(flag==0){p=workDir—〉sub;while(p->next){p=p->next;}p-〉next=q;cout<<”\"”<〈fileName<<"\"文件創(chuàng)建成功”〈〈endl;}}}//3刪除文件voidDEL(charfileName[]){dirNode*p,*q;intflag=0;p=workDir—>sub;if(p==NULL){cout<<"錯(cuò)誤,\””<〈fileName<<"\"文件不存在”〈<endl;}else{while(p){if(p->type==1){if(!strcmp(p->name,fileName)){flag=1;break;}}p=p->next;}if(flag==1){if(p==workDir-〉sub){workDir—>sub=p->next;}else{q=workDir—>sub;while(q-〉next!=p){q=q-〉next;}q-〉next=p-〉next;deletep;}cout<〈"\""<<fileName<<"\"文件已刪除”<〈endl;}else{cout〈<"錯(cuò)誤,\""〈〈fileName<<”\"文件不存在”〈〈endl;}}}//4顯示全部名目//顯示本名目下全部兄弟名目和文件voiddir(dirNode*p){while(p){if(p-〉type==0){cout.setf(2);cout〈〈setw(14)〈〈p->name〈〈setw(12)〈〈"<DIR〉"<〈endl;}else{cout.setf(2);cout<<setw(14)〈<p-〉name<<setw(12)<〈"<FILE〉"〈<setw(10)<<p—>size〈〈endl;}p=p-〉next;}}//voiddirs(dirNode*p,charstr[]){charnewstr[100];dirNode*q;cout<<str<<”下子名目及文件:”<<endl;dir(p);q=p;if(q->sub){strcpy(newstr,"");strcat(newstr,str);strcat(yī)(newstr,"\\”);strcat(newstr,q->name);dirs(q—>sub,newstr);}q=p;while(q—〉next){if(q->next—>sub){strcpy(newstr,"");strcat(newstr,str);strcat(newstr,"\\");strcat(yī)(newstr,q->next-〉name);dirs(q—>next-〉sub,newstr);}q=q—>next;}}//顯示全部名目voidLSALL(){dirNode*p;cout<〈"顯示全部名目結(jié)構(gòu)”<<endl〈〈"—--—---——---——---—-——-----——-----——---—--—--"<<endl;p=root.sub;dirs(p,"root”);}//5創(chuàng)建名目voidMD(chardirName[]){intflag;dirNode*p,*q;q=newdirNode;strcpy(q-〉name,dirName);q—>sub=NULL;q—>type=0;q-〉next=NULL;q->father=workDir;q->size=0;p=workDir—>sub;if(p==NULL){workDir—>sub=q;cout<〈"\"”<<dirName<〈”\”子名目創(chuàng)建成功”<<endl;}else{flag=0;while(p){if(p—〉type==0){if(!strcmp(p—>name,dirName)){flag=1;cout<<"錯(cuò)誤,\"”〈〈dirName<<"\"子名目已存在"〈<endl;}}p=p-〉next;}if(flag==0){p=workDir—>sub;while(p—>next){p=p->next;}p->next=q;cout<〈”\””<<dirName<〈”\"子名目創(chuàng)建成功"〈<endl;}}}//6刪除名目voidRD(chardirName[]){/*?jiǎng)h除當(dāng)前名目下的指定名目,如果該名目為空,則可刪除,否則應(yīng)提示是否作刪除,刪除操作將該名目下的全部文件和子名目都刪除*/dirNode*p,*q;intflag=0;p=workDir-〉sub;if(p==NULL){cout<<"錯(cuò)誤,\""〈<dirName<〈"\"子名目不存在"<<endl;}else{while(p){if(p->type==0){if(!strcmp(p-〉name,dirName)){flag=1;break;}}p=p—>next;}if(flag==1){if(p==workDir->sub){workDir-〉sub=p-〉next;}else{q=workDir-〉sub;while(q—〉next?。絧){q=q->next;}q—>next=p-〉next;deletep;}cout〈<"\""<<dirName<<"\”子名目已刪除"<<endl;}else{cout〈<"錯(cuò)誤,\”"<<dirName<<"\"子名目不存在”<<endl;}}}//顯示版權(quán)信息函數(shù)voidversion(){cout〈〈endl<<endl;cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃模擬文件管理模擬系統(tǒng)┃"<〈endl;cout<<"┠───────────────────────┨"<<endl;cout<<"┃重慶信息工程專修學(xué)院┃”<〈endl;cout〈〈"┃┃"<<endl;cout<〈"┃2008年3月19日┃"<<endl;cout<〈"┗━━━━━━━━━━━━━━━━━━━━━━━┛”<〈endl;cout<〈endl<〈endl;}voidmain(){intlen,fileSize,flag,comm;charstring[50];charcommand[10];charname[40];char*s,*s1;version();initial();flag=1;while(flag){cout〈〈endl〈〈”模擬文件管理模擬系統(tǒng)"<<endl;cout〈〈endl〈<"CD轉(zhuǎn)變名目CREATE創(chuàng)建文件DEL刪除文件”<<endl〈<"LSALL顯示名目MD創(chuàng)建名目RD刪除名目"<<endl<<"exit退出"〈<endl;cout〈〈endl<〈"--—---———--—-—-——-—--—--——-—--—-——-—---—--"<<endl;printf(”%s:〉#",path);gets(string);len=strlen(string);if(len==0){strcpy(command,"errer”);}else{//獲得命令s=NULL;s=strchr(string,'’);if(s!=NULL){*s='\0';}strcpy(command,string);//測(cè)試命令類型if((!strcmp(command,”CD"))||!strcmp(command,"cd”)){comm=1;}else{if((!strcmp(command,"CREATE”))||?。螅簦騝mp(command,"creat(yī)e”)){comm=2;}else{if((!strcmp(command,"DEL”))||!strcmp(command,"del”)){comm=3;}else{if((!strcmp(command,”LSALL"))||!strcmp(command,”lsall”)){comm=4;}else{if((!strcmp(command,"MD”))||!strcmp(command,"md")){comm=5;}else{if((!strcmp(command,"RD"))||!strcmp(command,”rd")){comm=6;}else{if((!strcmp(command,"EXIT"))||!strcmp(command,"exit")){comm=0;}else{comm=100;}}}}}}}switch(comm){case1://1轉(zhuǎn)變名目strcpy(name,s+1);CD(name);break;case2://2創(chuàng)建文件s1=strchr(s+1,’’);*s1='\0';strcpy(name,s+1);fileSize=at(yī)oi(s1+1);CREATE(name,fileSize);break;case3://3刪除文件strcpy(name,s+1);DEL(name);break;case4://4顯示名目LSALL();break;case5://5創(chuàng)建名目strcpy(name,s+1);MD(name);break;case6://6刪除名目strcpy(name,s+1);RD(name);break;case0://0退出系統(tǒng)flag=0;break;default:cout<<”命令錯(cuò)誤"〈<endl;}}}}六、思考題1、新建文件是如何實(shí)現(xiàn)的。2、程序是如何對(duì)文件進(jìn)行修改并保存的。七、實(shí)驗(yàn)報(bào)告要求認(rèn)真填寫(xiě)試驗(yàn)報(bào)告,程序代碼清單要完整,精準(zhǔn)。實(shí)驗(yàn)三實(shí)現(xiàn)一個(gè)簡(jiǎn)潔的shell任務(wù)目的:學(xué)會(huì)如何在Unix系統(tǒng)下創(chuàng)建進(jìn)程和管理進(jìn)程,了解shell工作的基本原理.任務(wù)要求:實(shí)現(xiàn)一個(gè)簡(jiǎn)潔的命令行解釋器,支持下列內(nèi)部命令以及各種外部命令.Cd<名目〉更改當(dāng)前的工作名目。Environ列出全部的環(huán)境變量的字符串設(shè)置。Echo<內(nèi)容〉顯示echo后的內(nèi)容并換行。Help簡(jiǎn)短概要的輸出你的shell的使用方法和基本功能.Jobs輸出shell當(dāng)前的一系列子進(jìn)程。Quiteexitbye退出shell。同時(shí)shell應(yīng)具有bat(yī)chprocessing、debugging、prompt、backgroundprocessing等特征。設(shè)計(jì)方案:任務(wù)要求模擬shell實(shí)現(xiàn)簡(jiǎn)潔的屬于自己的shell,所以要求從系統(tǒng)終端進(jìn)入自己的shell,退出自己的shell后仍舊能在系統(tǒng)的shell中,同時(shí)執(zhí)行shell時(shí)可以循環(huán)接受命令,執(zhí)行完命令后等待鍵入命令.Shell的主體就是反復(fù)下面的循環(huán)過(guò)程:While(1){接收用戶輸入的命令行;解析命令行;If(用戶命令為內(nèi)部命令)直接處理Elseif(用戶命令為外部命令)創(chuàng)建子進(jìn)程執(zhí)行命令Else提示錯(cuò)誤的命令}轉(zhuǎn)變名目:cd命令實(shí)現(xiàn)名目的轉(zhuǎn)變,體現(xiàn)在命令顯示的時(shí)候以及使用ls命令的時(shí)候,所以進(jìn)行cd操作,只要求將轉(zhuǎn)變之后的名目存下來(lái)即可,同時(shí)完善地調(diào)用cddir()函數(shù),實(shí)現(xiàn)名目的更改。文件名目的更改只在cd操作中進(jìn)行了更改,所以只需記錄路徑的更改,采納字符數(shù)組存儲(chǔ)路徑變化。環(huán)境變量顯示:運(yùn)行Environ要求列出全部的環(huán)境變量的字符串設(shè)置,實(shí)行定義一個(gè)externchar**environ的變量,對(duì)字符型的指針進(jìn)行移動(dòng),將環(huán)境變量打印出來(lái)。Echo命令:只需接受命令,對(duì)命令進(jìn)行解析,將打印的內(nèi)容隔離出來(lái)打印即可。Jobs輸出子進(jìn)程:調(diào)用系統(tǒng)函數(shù),可以獵取當(dāng)前進(jìn)程,通過(guò)獵取操作,打印出屏幕。退出:凡接收到有quiteexitbye命令,即執(zhí)行退出shell,簡(jiǎn)潔地來(lái)說(shuō)就是跳出循環(huán),結(jié)束程序。外部命令:對(duì)于外部命令,則創(chuàng)建子進(jìn)程,讓子進(jìn)程執(zhí)行相關(guān)的程序.主要調(diào)用execv()函數(shù),實(shí)現(xiàn)外部命令的執(zhí)行。任務(wù)內(nèi)容:1.接收命令定義足夠大小的字符串?dāng)?shù)組,從鍵盤(pán)接收字符串輸入,接收到換行符則停止接受,此處采納getline()函數(shù),從stdin接收一行的數(shù)據(jù).若輸入為空,則進(jìn)入下一個(gè)循環(huán),即再次打印提示字符串.2。解析命令使用strtok()函數(shù)實(shí)現(xiàn)對(duì)命令字符串進(jìn)行分割,以空格為分割符,得到若干字符串,定義指針數(shù)組,分別指向各字符串.此處得到的字符串,將用于命令的比較,以及各參數(shù)的獲得.程序可以比較第一個(gè)字符串?dāng)?shù)組決定進(jìn)行何種操作,而后面的參數(shù)將送入相應(yīng)的執(zhí)行模塊,參加程序的執(zhí)行。此處不太完善的地方是對(duì)接收的字符串進(jìn)行處理,將破環(huán)字符串的完整性,即程序不能再次使用命令字符串,所以需要做好備份。分割字符串?dāng)?shù)組并讓指針指向生成的數(shù)組的核心代碼如下:while((p[argc]=strtok(str,"”))!=NULL)//分割字符串{argc++;str=NULL;}3。內(nèi)部命令和外部的命令的比較。利用strcmp()函數(shù),比較指針數(shù)組指向的第一個(gè)字符串與各內(nèi)部命令,若相同則跳入內(nèi)部命令的執(zhí)行,否則跳入外部命令。4.外部命令執(zhí)行。內(nèi)部命令可以直接處理,而外部命令需要

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論