ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:190.20KB ,
资源ID:29319873      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29319873.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计.docx

1、操作系统课程设计 江苏大学京江学院JIANGSU UNIVERSITY 操 作 系 统 课 程 设 计文件管理系统学 院 名 称 : 京江学院 专 业 班 级 : J计算机1401 学 号 : 4141110020 学 生 姓 名 : 潘 庆 指 导 教 师 : 林 琳 2017 年 1 月 一、课设目的操作系统是计算机专业的一门专业课,也是计算机专业考研课程,但操作系统比较抽象,有的同学一学期完了都还很难理解进程、内存管理等一些概念和原理,操作系统课程设计的目的就是通过设计的实验,让同学们真正理解进程的实现,内存管理的机制,达到理解概念,了解实现原理。同时也进一步巩固程序设计与数据结构的实践

2、技能,实现整个大学阶段实践技能不断线的目的。二、课设题目实现一个简单的文件管理系统(1)具有文件目录(一级或者多级)(2)对指定大小的磁盘(设共1GB,每个块为1MB),建立位示图进行管理(3)文件操作,包括新建、查看属性、删除新建文件:给出文件名、大小、建立时间等信息,系统为其分配硬盘空间,并记录在文件目录中查看属性:给出文件名,可以输出该文件的所有属性,以及该文件所占用的物理块号。删除文件:给出文件名,实现文件的删除(4)文件系统操作:显示文件列表、显示磁盘空间剩余大小、输出位示图。三、系统功能结构 四、主要数据结构创建文件:creatfile,即创建一个指定名字的新文件,在目录中增加一项

3、,不考虑文件的内容,对于重名文件,给出错误信息。删除文件:deltefile,即删除一个指定名字的已创建文件,若文件不存在则给出错误信息。输出文件列表:disp(),即显示指定目录下的全部文件和第一级子目录,若无指定目录,则显示当前目录下的相应内容。输出文件属性:disp2(),即给出文件名,可以输出该文件的所有属性,以及该文件所占用的物理块号。输出位示图:bit_map(),即输出当前状态下磁盘盘块的使用情况。五、系统使用说明 文件管理系统主菜单界面(通过输入对应数字进入相应功能子菜单)“新建文件”功能(需要输入文件名、文件大小和创建时间)“查看属性”功能(输入文件名后,会显示其大小,所占盘

4、块数,所占盘块号和创建时间)“显示文件列表”功能“显示磁盘空间剩余大小”功能“输出位示图”功能“删除文件”功能(输入文件名即可将其删除)六、课程设计中遇到的问题及解决方法 刚开始做这个实验时,考虑的因素并没有很周全,比如创建文件和删除文件均没有考虑例外因素,都是在后期检查时发现的疏漏,另外,将文件管理的理论用C+来实现也需要自己从巩固书本概念做起,虽然书上并没有给出完整的算法,但是通过类比及网上查阅相关算法,自己也便可以写出以C+实现的各个功能模块,然后将其整合到文件类和文件库类两个大类中,使整个程序的结构更清晰,主函数用来实现界面和选择功能,用简单的switch-case语句便可以实现,值得

5、注意的是,这边很容易会忽视清屏,导致输出结果很繁杂,用简单的system(cls)命令即可实现清屏。 这次课程设计不仅是对自己掌握的操作系统知识的检验,更是对实践能力的检验,在这次课程设计过程中,我发现了许多课堂上或考试中并没有留意的知识点,通过翻阅书本,查阅网络才将它们重拾,这充分说明了我在学习这门课时还是偏向了课堂上的要点,但毕竟课堂上老师不可能强调所有知识点,自己还是要注意课后的复习以及动手实践,才能更好地巩固知识点,而且我也意识到自己并不能仅仅拘泥于课本上的知识,很多学科前沿的知识也要去了解,这样对以后的就业才有帮助。七、带注释的代码#include#include#includeus

6、ing namespace std;int i=0,j=0,sum=0,tt=0,ii,ss;/i,j是位视图行列,sum是位视图存储到的盘块数,tt是文件已占用块数,ii是文件编号,ss是磁盘剩余块数int a3232;/*class file /文件类private: string name; /文件名public: int tag_delete; /删除标记 1:已删 0:未删 int length; /文件大小 int blocknum; /盘块数 int blocksum1; /所占盘块号的起点 int blocksum2; /所占盘块号的终点 string time; /文件建立时

7、间 file() string getname()return name; /获取文件名 int gettag_delete()return tag_delete; /获取删除标记 int getblocksum1() /磁盘块号的起点 return blocksum1; int getblocksum2() /磁盘块号的终点 return blocksum2; void creat na,int length,string time) /创建文件 tag_delete=0; name=na; this-time=time; blocknum=length; /盘块数=文件大小/盘块大小 if

8、(j+blocknum)=32) /所有盘块数只占用一行,直接赋值 位视图赋值 for(;j(sum+blocknum);j+) aij=1; sum=sum+blocknum; /再进行下面文件的盘块数累加 else /占用多行,先赋值整行 for(;j32;j+) aij=1; :i=i=i+1; for(j=0;j(sum+blocknum)-32*i;j+) /再进行剩余项赋值 aij=1; :sum=sum=sum+blocknum; :tt=tt=tt+blocknum; /输出文件已占用的盘块号 blocksum1=sum-blocknum; blocksum2=sum-1; v

9、oid disp() /输出文件列表 coutnameendl; void disp2() /输出文件属性 coutsetw(8)name setw(8)blocknumsetw(18)blocknumsetw(10)blocksum1 to blocksum2setw(15)timeendl; ;/*class fdatabase /文件库类 private: file f50;public: fdatabase() /构造函数 int search(string fname) /按文件名查找判断是否存在 for (int i=0;i50;i+) if (fi.getname()=fname

10、) & (fi.tag_delete=0)/文件名一样而且未删 return 0; return 1; int creat na,int length,string time) int p; p=search(na); /创建文件时先查找是否存在 if (p=1) fii.creat);/创建文件 :ii+; return 1; else coutn!该文件已存在,不能创建!nn; return 0; int delte na) /删除文件 int x=0,n1,n2,q1,q2,k; for(int i=0;i50;i+) if(getname(i)=na) /进行删除文件赋值 fi.tag

11、_delete=1; tt=tt-fi.blocknum; if(i=0) /位视图中删除文件从第一盘块开始 for(k=0;kfi.blocknum;k+) axk=0; else /位视图中删除文件从其它盘快开始 n1=(fi-1.blocksum2+1)/32; /被查找的文件之前文件所占用的盘块数/32, /n1表示位视图开始操作的行 n2=(fi.blocksum2+1)/32; /所有文件所占用的盘块数/32, /大于0表示跨行 /n2表示位视图结束操作的行 q1=fi.blocksum1%32; / 位视图开始的列 q2=fi.blocksum2%32; /位视图结束的列 if(

12、n1=n2) /若n2与n1相等,表明当前所有被占用盘块在同一行 for(k=q1;kq2+1;k+) an1k=0; else for(;n1n2-1;n1+) for(int l=0;l32;l+) /循环进行整行赋值 an1l=0; for(k=0;kq2+1;k+) /对剩余项赋值 an2k=0; return 1; return 0; void disp() /输出所有文件列表 for (int i=0;i=ii;i+) if(fi.tag_delete=0) fi.disp(); void disp2(file f) /输出文件属性 f.disp2(); string getnam

13、e(int n) return fn.getname(); (int n) return fn; ;/*void bit_map() /位视图 int s=0; cout-endl; for(int p=0;p32;p+) for(int q=0;q32;q+) coutapq ; coutendl; cout-endl; for(int p1=0;p132;p1+) for(int q1=0;q132;q1+) if(ap1q1=1) s=s+1; /*void main() int I,l,sum=0; string time; string fname; fdatabase p; I=1

14、024/32; for(int i=0;iI;i+) for(int j=0;j32;j+) aij=0; char choice; char choice2; char choice3; while(choice!=0) choice=1; choice2=1; choice3=1; cout 文 件 管 理 系 统 n; cout *n; cout1.文 件 操 作nn; cout2.文 件 系 统 操 作nn; cout3.退出文件管理系统nn; cout *n; coutendl choice; system(cls); switch(choice) case 1: while(cho

15、ice2!=0) cout文 件 操 作:n; cout*n; cout1.新 建 文 件nn; cout2.查 看 属 性nn; cout3.删 除 文 件nn; cout4.返 回 主 菜 单nn; cout*n; coutendl choice2; coutendl; switch (choice2) case 1: cout fname; coutendl; cout l; coutendl; couttime; p.creat); break; case 2: coutfname; coutendl; int q; q=p.search(fname); if (!q=0) cout

16、!该文件不存在,无法查看!nn ; break; cout 文件属性如下:n; for(int n=0;n50;n+) if(p.getname(n)=fname) coutsetw(8)文件名setw(15)文件大小(MB)setw(15)所占盘块数setw(15)所占盘块号setw(15)文件创建时间endl; p.disp2(p.File(n); break; coutendl; break; case 3: cout fname; coutendl; int q; q=p.search(fname); if (!q=0) cout !该文件不存在,无法删除!nn ; break; p.

17、delte); break; case 4: choice2=0; break; default: cout输入错误,请重新输入: nn; cin.get(); cin.get(); system(cls); break; case 2: while(choice3!=0) cout文 件 系 统 操 作:n; cout*n; cout1.显 示 文 件 列 表nn; cout2.显 示 磁 盘 空 间 剩 余 大 小nn; cout3.输 出 位 视 图nn; cout4.返 回 主 菜 单nn; cout*n; coutendl choice3; coutendl; switch (cho

18、ice3) case 1: cout *文件列表如下*n; cout文件名endl; p.disp(); coutendl; break; case 2: cout剩余磁盘空间为:1024-ttendl; break; case 3: cout *显示位示图如下*n; bit_map(); break; case 4: choice3=0; break; default: cout输入错误,请重新输入: nn; cin.get(); cin.get(); system(cls); break; case 3: cout成功退出系统n; exit(0); break; default: cout输入错误,请重新输入!n; break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1