计算机操作系统课程设计.docx

上传人:罗晋 文档编号:6127248 上传时间:2020-09-11 格式:DOCX 页数:34 大小:307.79KB
返回 下载 相关 举报
计算机操作系统课程设计.docx_第1页
第1页 / 共34页
计算机操作系统课程设计.docx_第2页
第2页 / 共34页
计算机操作系统课程设计.docx_第3页
第3页 / 共34页
计算机操作系统课程设计.docx_第4页
第4页 / 共34页
计算机操作系统课程设计.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《计算机操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《计算机操作系统课程设计.docx(34页珍藏版)》请在三一文库上搜索。

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 = )? ? 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 )? ?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1