《操作系统课程设计-文件管理系统(10页).docx》由会员分享,可在线阅读,更多相关《操作系统课程设计-文件管理系统(10页).docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-操作系统课程设计-文件管理系统-第 8 页文件管理系统学院名称: 京 江 学 院 专业班级: J计算机1401 学号: 学生姓名: 指导教师: 2017年1月目 录一、课设目的1二、课设题目1三、系统功能结构2四、主要数据结构3五、系统使用说明4六、课程设计中遇到的问题及解决方法8七、带注释的代码9一、课设目的操作系统是计算机专业的一门专业课,也是计算机专业考研课程,但操作系统比较抽象,有的同学一学期完了都还很难理解进程、内存管理等一些概念和原理,操作系统课程设计的目的就是通过设计的实验,让同学们真正理解进程的实现,内存管理的机制,达到理解概念,了解实现原理。同时也进一步巩固程序设计与数据结
2、构的实践技能,实现整个大学阶段实践技能不断线的目的。二、课设题目实现一个简单的文件管理系统(1)具有文件目录(一级或者多级)(2)对指定大小的磁盘(设共1GB,每个块为1MB),建立位示图进行管理(3)文件操作,包括新建、查看属性、删除新建文件:给出文件名、大小、建立时间等信息,系统为其分配硬盘空间,并记录在文件目录中查看属性:给出文件名,可以输出该文件的所有属性,以及该文件所占用的物理块号。删除文件:给出文件名,实现文件的删除(4)文件系统操作:显示文件列表、显示磁盘空间剩余大小、输出位示图。三、系统功能结构(使用语言或者图形方式表示所实现的所有功能)进入Java简单的文件管理系统界面。输入
3、1,调用CiPan()函数,设置磁盘大小,指定大小的磁盘(设共1GB,每个块为1MB),建立位示图进行管理。分块 n = disksize*1024/blocksize;输入2,调用ChuangJian()函数,创建新文件,输入文件名和大小,剩余内存等于原有内存减去创建的文件的大小,并在位示图中把占用的块置为1,标记插入的开头和结尾。输入3,调用Delelte()函数,删除文件,输入要删除的文件名,在已经创建的文件中查找是否存在此文件,如果有则释放对应的文件及所占有的内存,剩余内存等于原有内存加上删除的文件的大小,并把位示图中对应的块置为0。输入4,输出目录信息。输入5,输出文件属性。输入6,
4、输出剩余的内存大小。输入7,输出位示图。四、主要数据结构(说明各种管理中所采用的方法,设计的数据结构的含义)设置磁盘大小和盘块大小时,需要对初始的变量进行赋值,对文件字符数组赋初值为空,创建的文件有数量限制。创建文件时,需要对文件的名字进行标记,标记插入的位置和大小,剩余内存等于原有内存减去此文件的大小,中间的插入需要在位示图中寻找是否有空的盘块,如果有的话,则把对应的盘块置为1。删除文件时,需要先去寻找要删除的文件所对应的块的位置和文件名所对应的数组。如果找到了,显示删除成功,删除对应的块、名字,释放对应的内存空间,把对应的位示图所使用的盘块置为0;若果没找到,则显示此文件不存在。 目录,直
5、接把name字符串数组里面的东西按顺序输出。 文件属性,把对应的name和arr输出。剩余磁盘大小,在创建文件时,需要减去对应的文件的大小,在删除文件时,需要加上所删除的文件的大小。 输出位示图,在创建文件时,把对应的大小的数量在位示图上标记出来,使用了就标记为1,没有就是0;在删除文件时,把对应的文件的所使用的内存所对应的位示图的位置置为0,这样就在位示图上弄好了。五、系统使用说明(通过文字和主要功能截图的方式,大致说明系统的使用方法)1、初始化,建立环境,输入磁盘大小和盘块大小(此处使用磁盘大小1GB和盘块大小1MB,用户可以随意改变参数)2、新建文件,输入文件名,大小。(建立多个文件)3
6、、输出目录4、输出属性5、 输出剩余磁盘大小6、输出位示图7、删除文件六、课程设计中遇到的问题及解决方法 刚开始我拿到这个操作系统课程设计的题目时是很迷茫的,感觉什么都不会,开始花了大量的时间用在做Java图形界面上,试了很多次,发现用Java做图形界面时,输入的文字保存有问题,但是单个模块测试却是没有问题的,点击确认按钮时,创建文件是跳不出来主界面的,试了3天后我已经放弃用图形界面,转换为控制台里输入和显示,这样就避免了跨类调用等的问题。虽然是这样,但也是在之前的程序上把图形界面的程序删除了,然后精简到一个类中。在这之中也遇到了一些小问题,输入的问题,我跟老师、同学交流了一下,那个同学用C语
7、言做的,给了我很大的启发。我就对着程序添添补补,把那些不要的程序删除了,加上一些好的程序。就这样花了几个小时就完成了,虽然功能不是很完善,但是我已经尽力了!这次课程设计对我的影响很大,我第一次凭借自己的努力用Java写出来一个规模较小程序,累是累但是收获很大。对我的人生产生了前进的动力。在此感谢老师,感谢那位同学的意见!七、带注释的代码package a;import java.util.Scanner;public class M static int disksize; /磁盘容量static int blocksize; /块的大小static int row; /初始要插入位示图的行s
8、tatic int column; /初始要插入位示图的列static int n; /块的数目static int r; /剩余大小static int k = 0; /目录级static int d = 10;static int kk = -1;/做删除找到的标记static int a = 0; /创建的数目存放,最大10个static int b = 0; /删除的数目存放static int c = new intd;/标记1为有文件,0为空的static int arr = new intd1;/标记插入的大小static int wst = new int2048;/位示图st
9、atic String name = new Stringd;/文件名字存放的位置static String name1 = new Stringd;/文件名字删除存放的位置static int k1 = new intd; /记录文件开始存放的位置static int k2 = new intd; /记录文件结束的位置static int k3 = new int1;static int k4 = new int1;static int k5 = new int1;static int k6 = new int1;static int p1 = new intd; /记录目录下文件夹子目录是
10、否为空public void CiPan()/设置磁盘大小的模块System.out.println(设置磁盘大小);System.out.print(磁盘容量(G):);Scanner rea1 = new Scanner(System.in);disksize = rea1.nextInt();System.out.print(块的大小(M):);Scanner rea2 = new Scanner(System.in);blocksize = rea2.nextInt();System.out.print(请输入您所需要的系统多少位:);Scanner rea3 = new Scanne
11、r(System.in);column = rea3.nextInt(); n = disksize*1024/blocksize;r = n;row = disksize*1024/column;for(int i = 0; i d; i+)namei = ;for(int j = 0; j disksize*1024/blocksize; j+)wstj = 0;public void MuLu() /显示目录的模块System.out.println( 目录 );for(int i = 0; i 10; i+)if(p1i = 1)System.out.println( +namei);
12、public void ChuangJian() /创建文件的模块System.out.println(请输入要创建的文件名称:);Scanner rsda = new Scanner(System.in);/ 获得新文件的名称namea = rsda.nextLine();if(k 10)if (namea != null) / 创建新文件p1k = 1;System.out.println(请输入要插入的其大小(M);Scanner re3 = new Scanner(System.in);arra0 = re3.nextInt(); System.out.println(文件: +nam
13、ea+序列是:+a+;大小:+arra0+M);ca = 1;k30 = 1;k60 = 1;for(int j = 0; j 0)k40 = j;k60 = 0;k60 = 1;r = r-arra0;for(int i = k40; i = (k40+arra0-1) ; i+ )if(k30 = 1)wsti = 1;k1a=i;k30-;else if(k30 = 0)wsti= 1;k50-;k2a=i;k30=1;k+;a+;public void Delete()/删除文件的模块System.out.println(请输入要删除的文件名称:);Scanner rcds = new
14、 Scanner(System.in);/ 获得新文件的名称name1b = rcds.nextLine();if (name1b != null) / 删除文件for (int i = 0; i 10; i+) / 查看删除的文件是否存在if(name1b.equals(namei)kk = i;r = r+arrkk0;if(kk!=-1&p1kk=1)p1kk = 0;ckk = 0;namekk = ;for(int j = k1kk; j = k2kk; j+)wstj = 0;System.out.println(删除成功!);kk = -1;else if(kk = -1)Sys
15、tem.out.println(此文件不存在!);public void Show() /查看属性System.out.println(文件名+ +大小(M);for(int i = 0 ; i d ; i+) if(ci = 1)System.out.println( +namei+ +arri0);public void Remained()/剩余大小System.out.println(剩余大小为: +r);public void Bitmap() /输出位示图System.out.println(位示图);for(int i = 0 ; i n ; i+) if(i+1) % colu
16、mn != 0 )System.out.print(wsti+ );else if(i+1) % column = 0)System.out.println(wsti);public static void main(String args) /主函数模块int k;while(true) System.out.println( Java简单的文件管理系统 );System.out.println( 1.设置磁盘大小);System.out.println( 2.创建文件);System.out.println( 3.删除文件);System.out.println( 4.文件目录);Syst
17、em.out.println( 5.查看属性);System.out.println( 6.显示磁盘剩余大小);System.out.println( 7.输出位示图);System.out.println();System.out.print(请输入上面的编号:);Scanner sc = new Scanner(System.in);k = sc.nextInt();switch(k)case 1: M m1 = new M();m1.CiPan();break;case 2:M m2 = new M(); m2.ChuangJian();break;case 3: M m3 = new M();m3.Delete();break;case 4:M m4 = new M();m4.MuLu();break;case 5:M m5 = new M();m5.Show();break;case 6: M m6 = new M(); m6.Remained();break; case 7: M m7 = new M(); m7.Bitmap();break;