版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)操作系統(tǒng)課程設(shè)計(jì)班級(jí):計(jì) 091 姓名:學(xué)號(hào) :使用語言 : +指導(dǎo)老師:學(xué)院 :一、系統(tǒng)要求1、實(shí)驗(yàn)?zāi)康猛ㄟ^一個(gè)簡單多用戶文件系統(tǒng)得設(shè)計(jì) , 加深理解文件系統(tǒng)得內(nèi)部功能及內(nèi)部實(shí)現(xiàn)。、實(shí)驗(yàn)內(nèi)容為 inux 系統(tǒng)設(shè)計(jì)一個(gè)簡單得二級(jí)文件系統(tǒng)。要求做到以下幾點(diǎn):( 1) 可以實(shí)現(xiàn)下列幾條命令 ( 至少條) ; ogin ?用戶登陸di ?列文件目錄c at 創(chuàng)建文件de t 刪除文件opn?打開文件 o e?關(guān)閉文件read?讀文件 rite寫文件( 2) 列目錄時(shí)要列出文件名、物理地址、保護(hù)碼與文件長度;()源文件可以進(jìn)行讀寫保護(hù) .二、系統(tǒng)分析1、設(shè)計(jì)思想本文件為二級(jí)文件系統(tǒng) ,即要實(shí)現(xiàn)對
2、文件得增刪改查,同時(shí)又具備登陸系統(tǒng)、注冊用戶得功能,各個(gè)用戶之間得文件系統(tǒng)互不干擾。本文件系統(tǒng)采用兩級(jí)目錄, 其中第一級(jí)對應(yīng)于用戶賬號(hào), 第二級(jí)對應(yīng)于用戶帳號(hào)下得文件 . 另外,為了簡便文件系統(tǒng)未考慮文件共享, 文件系統(tǒng)安全以及管道文件與設(shè)備文件等特殊內(nèi)容。系統(tǒng)采用結(jié)構(gòu)體來存儲(chǔ)用戶、文件目錄、文件數(shù)據(jù)內(nèi)容:04 8 44*5048* + 4 0+26 00用戶區(qū)文件目錄區(qū)文件數(shù)據(jù)區(qū)每個(gè)分區(qū)都就是由結(jié)構(gòu)體組成,每個(gè)個(gè)去得結(jié)構(gòu)體得個(gè)數(shù)由格式化系統(tǒng)就是決定 .整個(gè)系統(tǒng)得編碼構(gòu)成主要分為:allstr ct 、h ys 、 erfile mmai、 cpp mysy、 cpp定義了每個(gè)分區(qū)得結(jié)構(gòu)體;聲
3、明了對系統(tǒng)操作得各種方法;、h聲明了對文件操作得各種方法;整個(gè)系統(tǒng)得主函數(shù),操作入口;包含了 myss、h,實(shí)現(xiàn)了操作系統(tǒng)得各種方法;myu er 包含了 myus r i e、 h,實(shí)現(xiàn)了操作文件得各種方法;2、主要數(shù)據(jù)結(jié)構(gòu)a lstut 、h 文件得內(nèi)容 :st uct s_use ?/用戶區(qū)結(jié)構(gòu)體? ng suse;h n e20 ;/就是否使用/用戶名 ar ps 0;/密碼?longaddres;/目錄地址;st uc _ist?/目錄結(jié)構(gòu)體log ss;/就是否使用char na e 20;文件名字long addess;/本條目錄地址?on oitaddre ;/指向得文件得地址
4、loisfi ;/就是否鎖定 ng poi ti ;/目標(biāo)文件得大小?long nextaddre s;/下條目錄得地址 ;stru t s_file/文件結(jié)構(gòu)體?lo isus;/就是否使用?char cont nt256; /文件內(nèi)容?ln next;/下個(gè)文件塊地址 ;三、系統(tǒng)執(zhí)行1、如果首次進(jìn)入系統(tǒng) ,還沒有文件系統(tǒng) ,則會(huì)提示格式化文件系統(tǒng),創(chuàng)建分區(qū) ,并初始化分區(qū):2、剛初始化后 ,沒有用戶 ,提示創(chuàng)建用戶:3、用戶創(chuàng)建成功后出現(xiàn)對系統(tǒng)操作得菜單4、注冊用戶功能 :5、用戶登錄 ,登錄成功后顯示當(dāng)前用戶下得所有文件及其詳細(xì)信息,同時(shí)顯示對文件操作得菜單 :6、新注冊得用戶默認(rèn)為沒有
5、文件,選擇創(chuàng)建文件 ,并且每次對文件操作后顯示當(dāng)前用戶得所有文件與操作菜單 :7、此次新建得文件為鎖定狀態(tài),不能被刪除:8、對文件查瞧 ,默認(rèn)創(chuàng)建得時(shí)候用0 填充文件內(nèi)容:9、修改文件內(nèi)容:10、對文件得鎖定進(jìn)行裝換:1、刪除文件 : 2、注銷登錄退出系統(tǒng):四、功能實(shí)現(xiàn)m sy 、 h n lud stdio、 h# ncl de yus rf le、cla s ms s erm?/成員變量rivate :/ 封裝了管理系統(tǒng)得方法f le myf e;? sr myuse ; /成員函數(shù)publi :ms sterm()void utn m() ; /打印登陸后得用戶名int c eack()
6、 ; /檢查虛擬文件系統(tǒng)跟就是否存在i tm format ( ); /初始化虛擬磁盤?int c e teuser(); / 創(chuàng)建用戶int o in( ); /用戶登錄vo d m main();/主控制程序intl g t( );/用戶注銷 ;myuserfile、h#i clud class muser/ 封裝了管理文件得方法 /成員變量 blic :?file m file;?ch r na e 0;? hr psd 20;long istadress;?l ng myaddress;pri a :/用戶名/密碼/ 目錄地址/此用戶得地址 ng la taddess; /成員函數(shù) b
7、l :/最后一個(gè)目錄得地址int cr atefil () ;in el 0);/ 刪除文件?int revamp 20); /修改文件/增加文件 n mydir() ;?intv w 0); /查瞧文件? t version ( har/列出當(dāng)前目錄得所有文件(夾) 20) ;/轉(zhuǎn)換就是否鎖定狀態(tài)priv t :? nt i s e( c r 20 , ha 2 ); ;myma n 、c p# nclu e s dio、h#incl de i clu e m s、h”#inclu nod1;? ci、 clea( ); / 清除流得錯(cuò)誤標(biāo)記?c n、i nore(nu eric_lim t
8、ss eams e: ma()?f (nod1= y|nod = y), n );/ 清空輸入流?cout 正在創(chuàng)建 .。 .?!?e dl;? (my 、 myformat( )!= )/ 創(chuàng)建磁盤空間?cout 創(chuàng)建磁盤空間失敗 ! 即將退出。 en l;? ?cin nod1;? ? re urn 2;?cout ”創(chuàng)建完成!就是否創(chuàng)建用戶?y/n” en;?c n o 1;?cin 、 clear(); /清除流得錯(cuò)誤標(biāo)記?cin 、 ig ore(nu eri li its str am ize :: max( ), n) ; / 清空輸入流? f(nod1= |nod = y)?f
9、( ys s、 reateuser() =) /創(chuàng)建用戶? ? ?cout”創(chuàng)建用戶成功。 endl;? ? ? se? ? ?cout”創(chuàng)建用戶失敗 !即將退出。 endl;? ? re un 3;? ? ? ?e e?cout”匿名用戶無法進(jìn)入系統(tǒng),正在退出。 endl;? ? turn ;? ?else?cout 程序已結(jié)束 ! 按任意鍵退出。.?!?endl;? etu n 1;? * * * * 文件存在得程序入口* */?for (; ;)?cou * * * * * * en l;? c t 請選擇 :” e d ;?co” 1、 登錄 ndl 2、 注冊 endl ” 3、 退
10、出 en ;cout * * * * end;? ci n_select;?in、 clear( ); 清除流得錯(cuò)誤標(biāo)記cin、 ore(numeric_limi :max( ), n) ; / 清空輸入流?i (n sele t)?f (in i_1=0 ; i_1= ;i 1) / 登錄? ? ? f ( ys s、 lo i () =1)? ? u 登陸成功!歡迎您 ” ;?mys、 un e();? ? rea;? ?ese? ?c t 用戶名不存在或密碼錯(cuò)誤!e d;? ? ? ?i (i_1=4)? o t 非法用戶!” dl ”輸入任意鍵退出. no 1;?et rn 5;?br
11、eak;?if (n_s ct = )? ?if(my y、 reat user() = 1) /創(chuàng)建用戶? co 創(chuàng)建用戶成功。 ” endl;?e? ?cout ”創(chuàng)建用戶失敗 ! e dl;?if (n_ ele= 3)? eturn6;?mys s、 myma n() ;retun 0;m sys 、cp nclude mys s、 h nclud al ruc、 h clud i stream in lud stdio、 i clu e l mits /用于清除殘留得輸入流u ng name pace std;intms s rm : cheack() /檢查虛擬空間就是否存在?my
12、( test1、 t , ”r);? f(my )eturn 1; /返回 ,代表文件不存在?fclose( yfil );ret1;int ms sterm: myformat()?int i =1;?m( ” te t1、 txt , ”w) ;?i ( y)?return 1;s_userms_us r;?ms_ ser、 isse= ;?s li t ms_list ;m list 、 sse=0;s_;m;f( =1 ; i =5 ; +)? if( wr te( & s_use, s zeof( ms_sr) , 1,my) /用戶區(qū)格式化? co”用戶格式信息寫入失敗 ! end
13、l;?f se(my il );? et r -2;?fo(i 1; i =5 ;i+)?f ( w it ( ms_l ,si e f( m _list ) ,1,my) / 目錄區(qū)格式化?co t ”目錄格式信息寫入失敗!” d ;?f se(my ile ) ;? r u n 3; ? or( i=0 ; =199; i+ )?if ( fwrite ( ms_( s_)! =1)/數(shù)據(jù)區(qū)格式化? out數(shù)據(jù)格式信息寫入失?。?endl;f lose( ile); ?re urn -4 ;?fclo e(myfile );retur1;i msyste : createuser() /
14、創(chuàng)建用戶?s_u erms_user, ms_us r2;?int no dr ss 0,issam = ,m=0 , 1;/ 記錄當(dāng)前得掃描指針,密碼比對標(biāo)志位,循環(huán)使用得變量cout”正在檢查用戶空間就是否足夠。 .。” ndl ; y( te 、 txt ,”r ”);f( =1;i=5;i ,f k(my ), n ad res +) / 檢查用戶空間就是否足夠? f (fr a(&ms user2、 i u e, 4, 1,m )? ?cout 讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 ?fclo e( myfile ); ? en l;? ?return ;?if ( ms
15、_ e2、 isuse= 0)? ?br a; ? f( i=6 )?c u ”用戶空間已滿!創(chuàng)建用戶失敗” e l ;r turn -2 ;?for?(;)cout 請輸入新用戶得用戶名:” ms user、 n e;? c n、cl () ; / 清除流得錯(cuò)誤標(biāo)記? c n、 gnore( u eric imits tr am iz ::max( ), n); / 清空輸入流?sek(my ) ;f r (i 1; i 5;i+ ) / 檢查用戶名? ? i ( read( ms_ ser2、i use,4,1,my )/找到被使用得用戶區(qū),下一步讀取名字? o t ”讀取用戶空間失敗,虛
16、擬磁盤格式錯(cuò)誤,可能已被損壞 endl;? fclo ( m f e) ;? r t rn 1; ? f ( ms_ ser2、 i s =0 )?fs ek( my);?e se?if (f ead( &ms_user2 、 name,20, ,m )/讀取用戶區(qū)得名字?c u ”讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞”endl;?close( yi e); ? ?return 1;? ? ?fo ( m =0 ; 9; + )? ? f ( m _u e、 nme m?!ms_u er2、 name )? ?is am = 0 ;? ? br ak;? ?els? ss m =
17、1;? f (ms_user、 na m = 0 )? ?br ak;? ? ?i (i sm = 1)? ?co t =6 )? for ( ;; )/ 輸入密碼? ? cout ms_ ser、 p d;?cin、 c ar(); / 清除流得錯(cuò)誤標(biāo)記?cin、 n e( numeric_lim ts ream i e:: ax() ,n); / 清空輸入流?c u請?jiān)俅屋斎朊艽a:: : x(), n ); / 清空輸入流?fo ( m = ; m =19; +)? ? ? f (ms_u r、 psd ! = ms_use 2、psd )?i same = ;?psd ?cout ”兩次
18、密碼不匹配 m en l; s_use、 psd s_us r、? ?break;? ? ?el e? ? ?i ame = 1;? ?if ( s u er、 m = 0)? ? ? ?b e k;? ?if (issame = 1)? ?brea;? ? ou 進(jìn)入存儲(chǔ)。 . nd;?m ser、 isuse =1; /空間使用置為 使用( );?m_user、 a dre s = 0 ; / 默認(rèn)不存在目錄fcl se(myfile) ;m ( ” test1、 xt ”, r”);fsee( nowa dres, 0);?if (fw ite( &ms_use , izeof ( ms
19、_ er) ,1, yfil ) =0)?out”寫入用戶信息失??!e dl;? ? else? ? ?br;? fcl se(m file );? e u n 1;int msys erm: l gin() /用戶登錄s_user s_u, ms_user2;int i same = 0, m = 0 , i =0 ; / 比較標(biāo)記 ,循環(huán)使用得變量 ou 請輸入用戶名: ” ms_ ser、 nam;ci、 c ear(); / 清除流得錯(cuò)誤標(biāo)記 in、 ignore( numer c_limits streamsie:: ma( ), n) ;/ 清空輸入流?my( ”t 1、 txt
20、, r ”) ;?fo ( i = 1; i 5;i+ )?if ( read(&ms_user2、 isuse,4, 1, my)/ 讀取被使用得用戶區(qū)?cout讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 endl;f ose( myf e);?return ;?if ( m user2、 i use= )? fseek( y);?c ntin ;els?if (fr a ( ms_ 2、 ame,0, 1,m )/ 讀取名字? ? ou ”讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 en;?fclos( myfile ) ;?reurn ;? for ( m = ; m=19
21、; m+ )?if ( ms_user、 namm ! = ms user2、 na m)? ? ?ssame 0;? br a;? s? ?issam = ;?i ( m se、 name m = )?brea;? ? f( ssame = 1)?if(fre ( s_u er、 p d, 2, 1, m )/ 讀取密碼?co讀取密碼失敗!磁盤錯(cuò)誤 . nd;? ?fc ose(myfi e);?return 1;?for(intk0;k =2; k+ )? t 請輸入密碼: endl;? ?cin ms_user、 ps;? ? cin 、 c ear(); / 清除流得錯(cuò)誤標(biāo)記? in、
22、 igno e(numeric limit stremize :: m (), ); 清空輸入流? ? f r ( m =0 ; 9; +)? ? f( s us r、 s ! ms_use 2、 psd m)?issae= 0 ;?b eak;? ?els? ? ?is ame ;?if (ms_ ser、 psd m= )?break;? f( i s e0)?cout 密碼錯(cuò)誤,請重新輸入.” e l ;? ?el e? ? ?f (fread(&ms_user 、 dres ,4,1,my)/ 讀取目錄地址? ?cout 讀取目錄失敗!磁盤錯(cuò)誤。 nd ;? ?c e(myfi e);
23、? ? u n -1;? ? ?for ( m=; m =1; m +) /對對象my ser 賦值? ? ?y ser、 namem = ms_use 2、 am m ;? user、 s m = ms_user、 sd m ;?myuser、 l sta dr ss= ms_use 2、 addres ;? ?myuse、 my ddress = (i 1) 4 ;?cl se( y ile);?re r1; /返回登錄成功? ? ?fc e( myfile );?retu n ;/密碼錯(cuò)誤 ?fs (m) ;f lo e(my i e);? urn -1 ;voidm y t r: my
24、m in( )/主控制程序 nt m_ o nt 9, yget=0 ; /記錄使用第幾層控制臺(tái),接收函數(shù)返回值?c r m_ ame 0, m_name220;?fo (; )i (m poi= )?myget=logo t();?break;?c t end ” * * * * * * * * * * * * * * * * * * * en l;? cout”當(dāng)前目錄下得文件: ” e dl;? my et = myuser、 m d r() ;?cout ” * * * * * * * * * * * * * * * * * * * dl;?c ut ” * * * * * * * *
25、 endl;co t 請輸入您得選擇: en l;?cout”1、查瞧文件內(nèi)容 endl;? cout 2、新建文件” endl ;?out 3、刪除文件” enl;? cout”、修改文件” endl ;?cout5、就是否鎖定狀態(tài)轉(zhuǎn)換” ;o t、注銷,退出程序 end ;?cout * * * * * * * * end ;cin m_poin ;?c n、 ar();/ 清除流得錯(cuò)誤標(biāo)記cin、ignor ( numeric_ imit stre size: ax(),n) ;/清空輸入流? w tch ( _point )?ca :? i ( us r、 sa dres = )? ?
26、 cout ”您還沒有創(chuàng)建文件 !” m_na e1;(僅限當(dāng)前目錄)” dl;? ? cin、 cea (); / 清除流得錯(cuò)誤標(biāo)記? in、ig r (numeic_li t t a ize::ma (),n);/清空輸入流?myget = yus r、 view );? ? swit h (myge )? ? ?ase 1:?co 文件查瞧成功! ” endl; a;? ?ca e 1:? ? cout 磁盤打開失敗! end;?reak;? ? ase -:? ?co t文件不存在! endl;? ? ?break;? ? d fau t:?b ea ;? ? ?br ;? /case
27、 1 文件打開? cas 2:?my t= m ser、 cr efile();?witch( m get)? ? se 1:? ?cout 創(chuàng)建成功! endl;?br ak;? c se 1:?co ”磁盤打開失敗! edl ;? ?brek;? ? ?case -2:? ?cou 目錄空間已滿! ” endl;?b e k;? ? ? case -3:? ? ?cout”數(shù)據(jù)空間已滿! endl;? re ;?case 4:? ? ?cou文件名已存在! ” endl;?br a;?e ult:? ? ?/ out”創(chuàng)建文件失敗,原因未知! endl;? ?break;? ? break
28、;? /cas 新建文件? cas 3: ? ?f (m ser、 lista d es= 0 )? co 您還沒有創(chuàng)建文件! ”endl ;? r ak;? ?cout 請輸入要?jiǎng)h除得文件得名字:( 僅限當(dāng)前目錄 ) end;?cin m_name1;?ci、 clear(); / 清除流得錯(cuò)誤標(biāo)記?cin、 igno e( umer c li tsstrea sie :m x();入流/ 清空輸? myget = my er、 el);? swit h (myget) ? c s :? ? out”文件刪除成功 ! e l;? ? ?brea;? ? case -1:? ?out”磁盤打開
29、失敗 ! endl;?br ak;? ? ?cas 2:? ? ? co t 文件不存在! e dl;? r ak;?cas 4:? ?ou文件鎖定!不能刪除!end ;? ? r ak;? ? e aul :? ? ? ?cut 未知原因 ,刪除失敗 ! en l;? bre k;? ? ?break;?/cas 3 刪除文件? c se : ? ?i( yuse、 listadd ess =0)?c u 您還沒有創(chuàng)建文件! ” edl ;?br ak;?cout”請輸入要修改得文件得名字:(僅限當(dāng)前目錄) ” m_na e1;? ?ci、 cle() ; / 清除流得錯(cuò)誤標(biāo)記? ?cin
30、、 igno (nueric_limit str a ze: :m (), n ); / 清空輸入流? myget = yser、 amp) ;? ?switc ( myg t)? ?cae 1:? ? ?co t 文件修改成功 ! ” e dl;?rea;? ?cae :? ?cout磁盤打開失敗!endl ;? ?brek;? ? case 2:? ? ? ? ? c ut”文件不存在! ” enl;?r a ;? ase -4:? ?/?cout ”文件鎖定!無法修改! en l;?b eak;?cae 5:?c ut 輸入內(nèi)容過多 ! 無法修改 ! enl ;?brea;? ?default :? ?/ out 未知原因,修改失敗! d;? bre k; ? ?brea;?/ a 修改文件? c e :? i (my ser、 i add ess = )? ? out 您還沒有創(chuàng)建文件! ” end ;? ?brea ;? ? cout: :m x(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醋酸氟輕松項(xiàng)目提案報(bào)告模稿
- 2025年發(fā)熱芯項(xiàng)目提案報(bào)告模板
- 新娘婚禮致辭(15篇)
- 建筑安裝與設(shè)備工程施工技術(shù)
- 工作中的團(tuán)隊(duì)建設(shè)與協(xié)作
- 標(biāo)準(zhǔn)化肉牛養(yǎng)殖小區(qū)實(shí)施方案
- 考試期間飲食優(yōu)化方案
- 科技產(chǎn)品在小學(xué)科學(xué)實(shí)驗(yàn)教學(xué)中的應(yīng)用研究
- 綠色環(huán)保理念在農(nóng)業(yè)展覽中的應(yīng)用與啟示
- 教育背景下學(xué)生自我管理的重要性
- 子宮畸形的超聲診斷
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- JT-T-1004.1-2015城市軌道交通行車調(diào)度員技能和素質(zhì)要求第1部分:地鐵輕軌和單軌
- (高清版)WST 408-2024 定量檢驗(yàn)程序分析性能驗(yàn)證指南
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- DB11∕T 2035-2022 供暖民用建筑室溫?zé)o線采集系統(tǒng)技術(shù)要求
- 《復(fù)旦大學(xué)》課件
- 針灸與按摩綜合療法
- Photoshop 2022從入門到精通
- T-GDWJ 013-2022 廣東省健康醫(yī)療數(shù)據(jù)安全分類分級(jí)管理技術(shù)規(guī)范
- DB43-T 2775-2023 花櫚木播種育苗技術(shù)規(guī)程
評論
0/150
提交評論