版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(上機(jī)實(shí)驗(yàn))報告
課程名稱:_________操作系統(tǒng)原理
學(xué)生姓名:沈海洋—學(xué)號:
所在學(xué)院:計算機(jī)科學(xué)與技術(shù)學(xué)院
專業(yè):
指導(dǎo)教師:_____________錢量旌
2023年1月11日
課程設(shè)計(上機(jī)實(shí)驗(yàn))報告填寫說明
1.本報告作為指導(dǎo)教師對學(xué)生課程設(shè)計(上機(jī)實(shí)驗(yàn))評分的
依據(jù)材料之一。此報告應(yīng)在指導(dǎo)教師指導(dǎo)下,由學(xué)生在課程設(shè)計(上
機(jī)實(shí)驗(yàn))結(jié)束時完畢,以班為單位收齊后準(zhǔn)時交給指導(dǎo)教師批閱;
2.本報告內(nèi)容必須用黑墨水筆工整書寫或按信息學(xué)院統(tǒng)一設(shè)
計的電子文檔標(biāo)準(zhǔn)格式(可從信息學(xué)院網(wǎng)頁上下載)打印(小4號宋
體,1.5倍行距),嚴(yán)禁打印在其它紙上后剪貼;
3.本報告中的“設(shè)計說明書”應(yīng)按論文的格式成文,并直接書
寫(或打印)在本報告”設(shè)計說明書”欄目內(nèi)。其內(nèi)容可以結(jié)合設(shè)計題
目的內(nèi)容和規(guī)定,根據(jù)自己在本課程設(shè)計(上機(jī)實(shí)驗(yàn))階段所完畢的
工作,闡明自己所采用的設(shè)計思想和方法(硬件的設(shè)計及其電原理圖
分析介紹,和/或軟件的算法和數(shù)據(jù)結(jié)構(gòu)及其重要模塊介紹、程序在測
試用例下的測試運(yùn)營結(jié)果等)、完畢本課程設(shè)計的心得體會、設(shè)計中
的局限性及改善設(shè)計的設(shè)想或建議等。說明書的篇幅應(yīng)不少于2023
字。
4.對硬件類課程設(shè)計,應(yīng)繪制或打印硬件設(shè)計圖紙或?qū)嶒?yàn)原理
圖,作為設(shè)計報告的附件。
5.軟件類課程設(shè)計(上機(jī)實(shí)驗(yàn))的軟件文檔(含軟件清單和程序
運(yùn)營的有關(guān)結(jié)果)可以單獨(dú)打印成冊或上傳到指導(dǎo)教師指定計算
機(jī),作為課程設(shè)計報告的附件。
課程設(shè)計(上機(jī)實(shí)驗(yàn))報告的附件是指導(dǎo)教師對學(xué)生課程設(shè)計
(上機(jī)實(shí)驗(yàn))評分的另一個依據(jù)。
?課程設(shè)計(上機(jī)實(shí)習(xí))報告
課程設(shè)計(上機(jī)實(shí)驗(yàn))題目:
文獻(xiàn)系統(tǒng)的模擬設(shè)計
目的與任務(wù):
理解操作系統(tǒng)文獻(xiàn)系統(tǒng)的某些工作原理,學(xué)習(xí)文獻(xiàn)操作命令和目錄操作命令的設(shè)
計方法。通過實(shí)驗(yàn),使學(xué)生加深對操作系統(tǒng)文獻(xiàn)系統(tǒng)某些問題的理解,歸納學(xué)習(xí)方法和
思考方法,做到理論聯(lián)系實(shí)際。培養(yǎng)學(xué)生分析問題、解決問題的能力,提高學(xué)生軟件設(shè)
計能力和邏輯思維能力。
設(shè)計實(shí)現(xiàn)一個簡樸的文獻(xiàn)系統(tǒng),涉及目錄文獻(xiàn)、普通文獻(xiàn),以及一些文獻(xiàn)操作命令和
目錄操作命令(例如可以模仿DOS的有關(guān)命令)。
1.修改md命令;
2.修改HeIp命令;
3.修改命令行預(yù)解決程序;
4.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較;
5.新增batch命令,實(shí)現(xiàn)批解決;
6.完善copy命令,改善某些缺陷。
內(nèi)容和規(guī)定:
1.修改md命令:增長“屬性”參數(shù),用于創(chuàng)建指定屬性的子目錄。命令形式如下:
md〈目錄名>[<屬性>]。屬性涉及R、H、S以及它們的組合(不區(qū)分大小寫,順序也
不限)。例如:mdusrrh
其功能是在當(dāng)前目錄中創(chuàng)建具有“只讀”和“隱藏”屬性的子目錄user.
2.修改HeIp命令:修改he1p命令的顯示方式和顯示內(nèi)容:修改He1pComd()
函數(shù),使之提供菜單式的較具體的幫助信息。例如可以先用菜單形式簡樸列出各命令名
稱,當(dāng)用戶選擇某個命令的序號后,再比較具體地介紹該命令,涉及命令的各種形式,
每種形式的功能,以及某些舉例說明等等。
3.修改命令行預(yù)解決程序:修改命令行預(yù)解決函數(shù)ParseCommand(),使以下命
令行(命令與參數(shù)間無空格符)可以對的執(zhí)行:cd/,cd..,dir/usr.copy/usr/boy
mail即命令名稱與后邊的“/”或”之間不需要空格也能對的執(zhí)行。
4.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較:命令形式:fc〈文獻(xiàn)名1>〈文獻(xiàn)名2〉
5.新增batch命令,實(shí)現(xiàn)批解決:命令形式:batchbatchfile
命令功能:從磁盤文獻(xiàn)batchfile逐行讀入命令行執(zhí)行,直到batchfiIe
中所有命令行都執(zhí)行完畢為止。
6.完善c。py命令,改善某些缺陷:對的的功能應(yīng)當(dāng)是:若當(dāng)前目錄中不存在文獻(xiàn)
boy,則報錯;第2個命令若當(dāng)前目錄是根目錄,因根目錄沒有父目錄,故應(yīng)報錯;
若當(dāng)前目錄的父目錄中已經(jīng)存在名為boy的文獻(xiàn),也報錯(或詢問用戶是否覆蓋)。其
他情況上述命令都應(yīng)能對的執(zhí)行。
課程設(shè)計(上機(jī)實(shí)習(xí))報告
設(shè)計說明書
(說明書的撰寫規(guī)定請參看封里的“報告填寫說明3”。篇幅不夠可附頁)
一.修改md命令
流程圖如下:
摞程設(shè)計(上機(jī)實(shí)習(xí))報告
設(shè)計思想:程序的指令格式為mduser|rh,需改為mduserrh格式,因此可在
mduserIrh中修改代碼實(shí)現(xiàn)修改功能。
要實(shí)現(xiàn)此功能,只需要獲取目錄的屬性時刪除判斷操作符“I”的過程即可。
具體方法:在GetAttrib函數(shù)中刪除如下代碼:
if(str[O]!='|')
{
。cout<〈”\n命令中屬性參數(shù)錯誤。\n”;
?return—1;
修改后的操作方法:輸入mduserrh即可對的執(zhí)行
截圖如下:
■"C:\Users\use\Desktop\excise_1\Debug\exci
現(xiàn)在你可以知A食種埃隹命令?
Jxit退出本程序.
D:/>nduserrh
3:/>
二.修改He1p命令
流程圖如下:
課程設(shè)計(上機(jī)實(shí)習(xí))報告
開始
設(shè)計思想:運(yùn)用switch(n)case…語句實(shí)現(xiàn)選擇只查看需了解的操作命
令。
具體方法:一方面運(yùn)用cout語句輸出改操作系統(tǒng)所擁有的命令.并用數(shù)字標(biāo)明,
供用戶選擇,再運(yùn)用switch(n)case…語句實(shí)現(xiàn)具體內(nèi)容的介紹。例如:
cout<<?/1.create\t”;
case1:cout<</zcreate〈文獻(xiàn)名》[〈文獻(xiàn)屬性>]\n”
<<"——創(chuàng)建新文獻(xiàn),文獻(xiàn)屬性是r、h或s。\n”;
break;
運(yùn)營效果如下:
■"C:\Users\use\Desktop\exdse_1\Debug\excise_1.exe"
xit------退出本程序.
I********本系統(tǒng)主要的文件操作命令簡述如下*********
1.create2.open3.write
4.read5.close6.del
7.dir8.cd9.nd
10.rd11.ren12.attrib
13.copy14.type15.reviind
16.fseek17.block18.closeall
19.uof20.unde121.exit
22.prompt23.fat24.check
25.fc26.batch
1~24—了解對應(yīng)命令功能和使用方法
。一退出幫助系統(tǒng)
請選擇:1
r玲蠡舞亥濯耦廿h或s°
三.修改命令行預(yù)解決程序
流程圖如下:
設(shè)計思想:在命令行預(yù)解決函數(shù)ParseCommand()中進(jìn)行修改,使以下命令行(命
令與參數(shù)間無空格符)可以對的執(zhí)行:cd/,cd..,dir/usr,copy/usr/boymail
具體方法:在ParseCommand()解決cd/,dir/usr等情況的代碼中增長
解決”的代碼。
or(i=0;comd[0][i]!='\0';i++){
if(comd[0][i]=='/')"/解決cd/,dir/usr等情況
次break;
?elseif(comd[0][i]=='.'&&comd[0][i+1])
break;
)
在
命令
見mT9
O
e-
-”
Ip程
Xit--
:/>cd/usr
:/usi*>cd..
:/>
四.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較
流程圖如下:
設(shè)計思想:一方面運(yùn)用ProcessPath()函數(shù)和FindFCB()函數(shù)查找文獻(xiàn)
的目錄所在首塊號和文獻(xiàn)所在首塊號,判斷其存在性,并記錄其全途徑名。假如需要比較
的文獻(xiàn)都存在的話則進(jìn)行比較。
具體實(shí)現(xiàn):
intFcComd(intk)
?if(k!=2)
。c。ut〈V”犯錯:輸入命令格式錯誤,請重新輸入“《endl;
returnfalse:
。shortinti,j=0,sl,s2,size1,size2,s,s3;
charattrib='\0',*FileName,*Fi1eName1,Bufferl,Buff
er2;
oFCB*fcbp,*fcbpl,*fcbp2;
s=ProcessPath(comd[1],FileName,k,0,'\2O');//取Fi
1eName所在目錄的首塊號
。if(s<l)"/途徑錯誤
?returns;?//失敗,返回
s1=FindFCB(Fi1eName,s,attrib,fcbp);//取FileName
的首塊號(查其存在性)
?fcbpl=fcbp;
if(sl<0)
(
。cout<<"\n要比較的文獻(xiàn)不存在。\n”;
?return-1;
?)
s3=ProcessPath(comd[2],Fi1eName1,k,0,'\2O');〃取File
Name1所在目錄的首塊號
if(s3<l)?//途徑錯誤
returns3;。//失敗,返回
s2=FindFCB(FileNamel,s3,'\40',fcbp);“/取Fi1eName的
首塊號(查其存在性)
fcbp2=fcbp;
>if(s2<0)
(
ocout?"\n要比較的文獻(xiàn)不存在。\n";
return-2;
sizel=fcbpl->Fsize;〃取文獻(xiàn)
一的長度
size2=fcbp2—>Fsize;//取文
獻(xiàn)二的長度
if(sizel==0&&size2|]size2==0&&size1)
。{
8coutv〈”兩個文獻(xiàn)的長度不同:"<<endl;
0cout<V"文獻(xiàn)"久fcbpl->Fi1eName<<"的長度”<<sizel<Vendl;
coutV文獻(xiàn)“<Xfcbp2—>Fi1eNameV的長度”<<size2<
<endl;
。cout?”兩文獻(xiàn)在第一個字節(jié)處不同”;
returnfalse;
)
whiIe(si>0&&s2>0)
(
。for(i=0;i<SIZE;i++,j++)
8{
?if(j==sizel&&j==size2)break;
?!稡ufferl=Disk[sl][i];〃讀第一個文獻(xiàn)內(nèi)容
Buffer2=Disk[s2][i];〃讀第二個文獻(xiàn)內(nèi)容
。if(Bufferl!=Buffer2)〃比較
{cout<<“文獻(xiàn)”<<fcbp1->FileName<V"長度為:"<<
size1<<endl;
bocout<<”文獻(xiàn)〃《fcbp2->FileName?n長度為:〃〈Vsize2<<
end1;
8cout?"第一個不同字節(jié)的位置為第"<Vj+l<個字節(jié)”<〈endl;
cout?*此時兩個文獻(xiàn)的字符分別為"<<Bufferl?/,和"
<<Buffer2?endl;
000
returnfaIse;
°}
b}
-if(i<SIZE)break;〃結(jié)束whi1e循環(huán),避免進(jìn)入死循環(huán)
。}
if(j==size1&&j==size2)
(
。cout<〈”兩文獻(xiàn)內(nèi)容相同〃<Xendl;
?>cout<<〃文獻(xiàn)長度為:〃V〈sizel;
oreturntrue;
d
return1;
}
效果圖如下:
■"C:\Users\use\Desktop\excise_1\Debug\excise_1.exe"
鬻
命令
姆^
一
見
上€
1一
p程5
”
Ie.t
,x1--
_
fc震
_/>於
^bo1
_te
=個
?.70
霹77
的
stM*就個
-兩
字
W-和
曲
--分
五.新增batch命令,實(shí)現(xiàn)批解決
流程圖如下:
設(shè)計思想:batch命令從磁盤文獻(xiàn)batchfi1e逐行讀入命令行執(zhí)行,直到
batchfile中所有命令行都執(zhí)行完畢為止。
具體方法:
intBatchComd(intk)
{
shorti,s,size,jj=0,x=0,y=0;
?charattrib=/\0',*FileName;
?chargFileName[PATH_LEN];//存放文獻(xiàn)全途徑名
FCB*fcbp;
if(k!=l)
?{
6cout<X"\n命令參數(shù)中應(yīng)當(dāng)只有一個文獻(xiàn)名。\n”;
。eturn-1;
)
else
{
os=ProcessPath(comd[l],Fi1eName,k,0,'\020');//取FileName所在目錄
的首塊號
°if(s<l)//途徑錯誤
?returns;〃失敗,返回
)
?s=FindFCB(FileName,s,attrib,fcbp);〃取FileName的首塊號(查
其存在性)
?strcpy(gFi1eName,temppath);
i=strlen(temppath);
if(temppath[i-1]!=//')
?strcat(gFi1eName,"/");
strcat(gFi1eName,FileName);//構(gòu)造文獻(xiàn)的全途徑名
bif(s<0){
,cout<<,z\n文獻(xiàn)”《gFileName?"不存在。\nH;
return-3;
d
8
eif(s==0)
cout<<"\n文獻(xiàn)〃V〈gFileName?n是空文獻(xiàn)\n
6else{
osize二fcbp->Fsize;
ocharBuffer[100][50];〃分派動態(tài)內(nèi)存空間
whi1e(s>0){
bfor(i=0;i<SIZE;i++,jj++){
b3if(jj==size)
。obreak;
。if(Disk[s][i]==,\nf){
z>Buffer[x][y]='\0’;
a>cout<<Buffer[x]?end1;
88X++J
。。尸0;
8}
?>e1se{
必BufferLx][y]=Disk[s][i];
gy++;
0}
OOOI
8if(i<SIZE)
(
⑼Buffer[x][y]='\0';
break;
8s=FAT[s];
°for(i=0;i<=x;i++){
ocout。"\nC:〃;//顯示提醒符(本系統(tǒng)總假定是C盤)
。if(dspath)
cout?curpath.cpath;
gcout<<〃>〃;
gcout?Buffer[i]<<end1;
o業(yè)二ParseCommand(Buffer[i]);〃分解命令及其參數(shù)
//comd[0]中是命令,comd[1],comd[2]...是參數(shù)
ExecComd(k);〃執(zhí)行命令
b}
}
?return1;
運(yùn)營結(jié)果如下:
設(shè)計思想:實(shí)現(xiàn)將當(dāng)前目錄/usr中的文獻(xiàn)復(fù)制到其父目錄(根目錄)中,文獻(xiàn)名
仍為原名,在CopyComd()函數(shù)中修改代碼。
具體方法:修改部分代碼如下
else"/k=2(命令中提供目的文獻(xiàn))的情況
(
8//用來判斷第二個參數(shù)是否為"
if(1stremp(comd[2],"..")){
。ints=FindPath(comd[2],(char)16,1,fcbp);〃找指定目錄(的
首塊號)
8if(S<1){
ecout<<〃\n途徑名錯誤!〃<<end1;
return-1;
O0)
3ostrcpy(comd[2],temppath);
}
〃用來判斷第二個參數(shù)是否為
if(!strcmp(comd[2],"/〃)){
strcat(comd[2],FileNamel);
。}
?s02=ProcessPath(comd[2],Fi1eName2,k,0,'\20');〃取FileName2所在目
錄的首塊號
。if(s02<l)〃目的途徑錯誤
oreturns02;
效果圖如下所示:
■"C:\Users\use\Desktop\excise_1\Debug\excise_1.exe"
C:/>cd/usr
C:/usi*>copyboyboy_l
C:/usr>dir
TheDirectoryofC:/usr
一.<DIR>
user<DIR>
lib
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 泰安房屋買賣合同交易稅費(fèi)
- 簡約勞務(wù)分包合同樣本
- 備件購買合同模板
- 水表采購合同條件
- 建筑裝飾用鋁合金型材采購合同
- 展會服務(wù)合同樣本簡單
- 批發(fā)石塊交易合同
- 公共場所地板采購合同
- 婚介公司服務(wù)合同
- 文藝演出音樂會合同
- 管道重量計算、彎頭、天圓地方重量
- 家長會發(fā)言稿
- 受力分析經(jīng)典題及答案
- 財務(wù)報表模板(帶公式)
- 2023年正規(guī)借條免費(fèi)下載(5篇)
- 酒店投資概算表(模板)精華
- GB/T 36393-2018土壤質(zhì)量自然、近自然及耕作土壤調(diào)查程序指南
- GB/T 1412-2005球墨鑄鐵用生鐵
- 新疆維吾爾自治區(qū)公共建筑節(jié)能設(shè)計標(biāo)準(zhǔn)實(shí)施細(xì)則2023
- 2022年西藏自治區(qū)中考英語真題卷(含答案與解析)
- RCS-9626CN電動機(jī)保護(hù)測控裝置
評論
0/150
提交評論