计算机操作系统课程设计_第1页
计算机操作系统课程设计_第2页
计算机操作系统课程设计_第3页
计算机操作系统课程设计_第4页
计算机操作系统课程设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机操作系统课程设计班级:计 091 姓名:学号 :使用语言 : +指导老师:学院 :一、系统要求1、实验目得通过一个简单多用户文件系统得设计 , 加深理解文件系统得内部功能及内部实现。、实验内容为 inux 系统设计一个简单得二级文件系统。要求做到以下几点:( 1) 可以实现下列几条命令 ( 至少条) ; ogin ?用户登陆di ?列文件目录c at 创建文件de t 删除文件opn?打开文件 o e?关闭文件read?读文件 rite写文件( 2) 列目录时要列出文件名、物理地址、保护码与文件长度;()源文件可以进行读写保护 .二、系统分析1、设计思想本文件为二级文件系统 ,即要实现对

2、文件得增删改查,同时又具备登陆系统、注册用户得功能,各个用户之间得文件系统互不干扰。本文件系统采用两级目录, 其中第一级对应于用户账号, 第二级对应于用户帐号下得文件 . 另外,为了简便文件系统未考虑文件共享, 文件系统安全以及管道文件与设备文件等特殊内容。系统采用结构体来存储用户、文件目录、文件数据内容:04 8 44*5048* + 4 0+26 00用户区文件目录区文件数据区每个分区都就是由结构体组成,每个个去得结构体得个数由格式化系统就是决定 .整个系统得编码构成主要分为:allstr ct 、h ys 、 erfile mmai、 cpp mysy、 cpp定义了每个分区得结构体;声

3、明了对系统操作得各种方法;、h声明了对文件操作得各种方法;整个系统得主函数,操作入口;包含了 myss、h,实现了操作系统得各种方法;myu er 包含了 myus r i e、 h,实现了操作文件得各种方法;2、主要数据结构a lstut 、h 文件得内容 :st uct s_use ?/用户区结构体? ng suse;h n e20 ;/就是否使用/用户名 ar ps 0;/密码?longaddres;/目录地址;st uc _ist?/目录结构体log ss;/就是否使用char na e 20;文件名字long addess;/本条目录地址?on oitaddre ;/指向得文件得地址

4、loisfi ;/就是否锁定 ng poi ti ;/目标文件得大小?long nextaddre s;/下条目录得地址 ;stru t s_file/文件结构体?lo isus;/就是否使用?char cont nt256; /文件内容?ln next;/下个文件块地址 ;三、系统执行1、如果首次进入系统 ,还没有文件系统 ,则会提示格式化文件系统,创建分区 ,并初始化分区:2、刚初始化后 ,没有用户 ,提示创建用户:3、用户创建成功后出现对系统操作得菜单4、注册用户功能 :5、用户登录 ,登录成功后显示当前用户下得所有文件及其详细信息,同时显示对文件操作得菜单 :6、新注册得用户默认为没有

5、文件,选择创建文件 ,并且每次对文件操作后显示当前用户得所有文件与操作菜单 :7、此次新建得文件为锁定状态,不能被删除:8、对文件查瞧 ,默认创建得时候用0 填充文件内容:9、修改文件内容:10、对文件得锁定进行装换:1、删除文件 : 2、注销登录退出系统:四、功能实现m sy 、 h n lud stdio、 h# ncl de yus rf le、cla s ms s erm?/成员变量rivate :/ 封装了管理系统得方法f le myf e;? sr myuse ; /成员函数publi :ms sterm()void utn m() ; /打印登陆后得用户名int c eack()

6、 ; /检查虚拟文件系统跟就是否存在i tm format ( ); /初始化虚拟磁盘?int c e teuser(); / 创建用户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; /成员函数 b

7、l :/最后一个目录得地址int cr atefil () ;in el 0);/ 删除文件?int revamp 20); /修改文件/增加文件 n mydir() ;?intv w 0); /查瞧文件? t version ( har/列出当前目录得所有文件(夹) 20) ;/转换就是否锁定状态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( ); / 清除流得错误标记?c n、i nore(nu eric_lim t

8、ss eams e: ma()?f (nod1= y|nod = y), n );/ 清空输入流?cout 正在创建 .。 .。” e dl;? (my 、 myformat( )!= )/ 创建磁盘空间?cout 创建磁盘空间失败 ! 即将退出。 en l;? ?cin nod1;? ? re urn 2;?cout ”创建完成!就是否创建用户?y/n” en;?c n o 1;?cin 、 clear(); /清除流得错误标记?cin 、 ig ore(nu eri li its str am ize :: max( ), n) ; / 清空输入流? f(nod1= |nod = y)?f

9、( ys s、 reateuser() =) /创建用户? ? ?cout”创建用户成功。 endl;? ? ? se? ? ?cout”创建用户失败 !即将退出。 endl;? ? re un 3;? ? ? ?e e?cout”匿名用户无法进入系统,正在退出。 endl;? ? turn ;? ?else?cout 程序已结束 ! 按任意键退出。.。” 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( ); 清除流得错误标记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 用户名不存在或密码错误!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) /创建用户? co 创建用户成功。 ” endl;?e? ?cout ”创建用户失败 ! 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) /用户区格式化? 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) / 目录区格式化?co t ”目录格式信息写入失败!” d ;?f se(my ile ) ;? r u n 3; ? or( i=0 ; =199; i+ )?if ( fwrite ( ms_( s_)! =1)/数据区格式化? out数据格式信息写入失败! endl;f lose( ile); ?re urn -4 ;?fclo e(myfile );retur1;i msyste : createuser() /

14、创建用户?s_u erms_user, ms_us r2;?int no dr ss 0,issam = ,m=0 , 1;/ 记录当前得扫描指针,密码比对标志位,循环使用得变量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 读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 ?fclo e( myfile ); ? en l;? ?return ;?if ( ms

15、_ e2、 isuse= 0)? ?br a; ? f( i=6 )?c u ”用户空间已满!创建用户失败” e l ;r turn -2 ;?for?(;)cout 请输入新用户得用户名:” ms user、 n e;? c n、cl () ; / 清除流得错误标记? 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 )/找到被使用得用户区,下一步读取名字? o t ”读取用户空间失败,虚

16、拟磁盘格式错误,可能已被损坏 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 )/读取用户区得名字?c u ”读取用户空间失败,虚拟磁盘格式错误,可能已被损坏”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(); / 清除流得错误标记?cin、 n e( numeric_lim ts ream i e:: ax() ,n); / 清空输入流?c u请再次输入密码:: : 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 进入存储。 . nd;?m ser、 isuse =1; /空间使用置为 使用( );?m_user、 a dre s = 0 ; / 默认不存在目录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 ; / 比较标记 ,循环使用得变量 ou 请输入用户名: ” ms_ ser、 nam;ci、 c ear(); / 清除流得错误标记 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)/ 读取被使用得用户区?cout读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 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 ”读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 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读取密码失败!磁盘错误 . nd;? ?fc ose(myfi e);?return 1;?for(intk0;k =2; k+ )? t 请输入密码: endl;? ?cin ms_user、 ps;? ? cin 、 c ear(); / 清除流得错误标记? 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 密码错误,请重新输入.” e l ;? ?el e? ? ?f (fread(&ms_user 、 dres ,4,1,my)/ 读取目录地址? ?cout 读取目录失败!磁盘错误。 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 ;/密码错误 ?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 ; /记录使用第几层控制台,接收函数返回值?c r m_ ame 0, m_name220;?fo (; )i (m poi= )?myget=logo t();?break;?c t end ” * * * * * * * * * * * * * * * * * * * en l;? cout”当前目录下得文件: ” e dl;? my et = myuser、 m d r() ;?cout ” * * * * * * * * * * * * * * * * * * * dl;?c ut ” * * * * * * * *

25、 endl;co t 请输入您得选择: en l;?cout”1、查瞧文件内容 endl;? cout 2、新建文件” endl ;?out 3、删除文件” enl;? cout”、修改文件” endl ;?cout5、就是否锁定状态转换” ;o t、注销,退出程序 end ;?cout * * * * * * * * end ;cin m_poin ;?c n、 ar();/ 清除流得错误标记cin、ignor ( numeric_ imit stre size: ax(),n) ;/清空输入流? w tch ( _point )?ca :? i ( us r、 sa dres = )? ?

26、 cout ”您还没有创建文件 !” m_na e1;(仅限当前目录)” dl;? ? cin、 cea (); / 清除流得错误标记? 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 创建成功! endl;?br ak;? c se 1:?co ”磁盘打开失败! edl ;? ?brek;? ? ?case -2:? ?cou 目录空间已满! ” endl;?b e k;? ? ? case -3:? ? ?cout”数据空间已满! endl;? re ;?case 4:? ? ?cou文件名已存在! ” endl;?br a;?e ult:? ? ?/ out”创建文件失败,原因未知! endl;? ?break;? ? break

28、;? /cas 新建文件? cas 3: ? ?f (m ser、 lista d es= 0 )? co 您还没有创建文件! ”endl ;? r ak;? ?cout 请输入要删除得文件得名字:( 仅限当前目录 ) end;?cin m_name1;?ci、 clear(); / 清除流得错误标记?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 您还没有创建文件! ” edl ;?br ak;?cout”请输入要修改得文件得名字:(仅限当前目录) ” m_na e1;? ?ci、 cle() ; / 清除流得错误标记? ?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 输入内容过多 ! 无法修改 ! enl ;?brea;? ?default :? ?/ out 未知原因,修改失败! d;? bre k; ? ?brea;?/ a 修改文件? c e :? i (my ser、 i add ess = )? ? out 您还没有创建文件! ” end ;? ?brea ;? ? cout: :m x(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论