当前位置:文档之家› 江苏大学京江学院操作系统课程设计

江苏大学京江学院操作系统课程设计

前言:这是我自己按照自己理解的设计方法设计的一份简易的Java操作系统的程序内容比较简单,目前互联网上还没有此类的课程设计报告,因为我也去查了的,哪些打着Java的名头,裤子穿着C++/C#,坑人。

之前我是准备用Java的Swing组件来写的,搞了三天,验证出现了问题,问老师,老师也不知道,故而我直接在console(控制台)里面输出,大家可以自由发挥,我不想有人直接原文照搬,参考是可以的,复制是学术的大忌,大家自觉遵守。

我目前只会放PDF版的,Word版我博客中会放,不过还没建成。

2017年9月8日于江苏大学文件管理系统学院名称:京江学院专业班级:J计算机1401学号:23学生姓名:谢舟指导教师:林琳2017年1月目录一、课设目的 (1)二、课设题目 (1)三、系统功能结构 (2)四、主要数据结构 (3)五、系统使用说明 (4)六、课程设计中遇到的问题及解决方法 (8)七、带注释的代码 (9)一、课设目的操作系统是计算机专业的一门专业课,也是计算机专业考研课程,但操作系统比较抽象,有的同学一学期完了都还很难理解进程、内存管理等一些概念和原理,操作系统课程设计的目的就是通过设计的实验,让同学们真正理解进程的实现,内存管理的机制,达到理解概念,了解实现原理。

同时也进一步巩固程序设计与数据结构的实践技能,实现整个大学阶段实践技能不断线的目的。

二、课设题目实现一个简单的文件管理系统(1)具有文件目录(一级或者多级)(2)对指定大小的磁盘(设共1GB,每个块为1MB),建立位示图进行管理(3)文件操作,包括新建、查看属性、删除新建文件:给出文件名、大小、建立时间等信息,系统为其分配硬盘空间,并记录在文件目录中查看属性:给出文件名,可以输出该文件的所有属性,以及该文件所占用的物理块号。

删除文件:给出文件名,实现文件的删除(4)文件系统操作:显示文件列表、显示磁盘空间剩余大小、输出位示图。

三、系统功能结构(使用语言或者图形方式表示所实现的所有功能)进入Java简单的文件管理系统界面。

输入1,调用CiPan()函数,设置磁盘大小,指定大小的磁盘(设共1GB,每个块为1MB),建立位示图进行管理。

分块 n = disksize*1024/blocksize;输入2,调用ChuangJian()函数,创建新文件,输入文件名和大小,剩余内存等于原有内存减去创建的文件的大小,并在位示图中把占用的块置为1,标记插入的开头和结尾。

输入3,调用Delelte()函数,删除文件,输入要删除的文件名,在已经创建的文件中查找是否存在此文件,如果有则释放对应的文件及所占有的内存,剩余内存等于原有内存加上删除的文件的大小,并把位示图中对应的块置为0。

输入4,输出目录信息。

输入5,输出文件属性。

输入6,输出剩余的内存大小。

输入7,输出位示图。

四、主要数据结构(说明各种管理中所采用的方法,设计的数据结构的含义)设置磁盘大小和盘块大小时,需要对初始的变量进行赋值,对文件字符数组赋初值为空,创建的文件有数量限制。

创建文件时,需要对文件的名字进行标记,标记插入的位置和大小,剩余内存等于原有内存减去此文件的大小,中间的插入需要在位示图中寻找是否有空的盘块,如果有的话,则把对应的盘块置为1。

删除文件时,需要先去寻找要删除的文件所对应的块的位置和文件名所对应的数组。

如果找到了,显示删除成功,删除对应的块、名字,释放对应的内存空间,把对应的位示图所使用的盘块置为0;若果没找到,则显示此文件不存在。

目录,直接把name[]字符串数组里面的东西按顺序输出。

文件属性,把对应的name[]和arr[]输出。

剩余磁盘大小,在创建文件时,需要减去对应的文件的大小,在删除文件时,需要加上所删除的文件的大小。

输出位示图,在创建文件时,把对应的大小的数量在位示图上标记出来,使用了就标记为1,没有就是0;在删除文件时,把对应的文件的所使用的内存所对应的位示图的位置置为0,这样就在位示图上弄好了。

五、系统使用说明(通过文字和主要功能截图的方式,大致说明系统的使用方法)1、初始化,建立环境,输入磁盘大小和盘块大小(此处使用磁盘大小1GB和盘块大小1MB,用户可以随意改变参数)2、新建文件,输入文件名,大小。

(建立多个文件)3、输出目录4、输出属性5、输出剩余磁盘大小6、输出位示图7、删除文件六、课程设计中遇到的问题及解决方法刚开始我拿到这个操作系统课程设计的题目时是很迷茫的,感觉什么都不会,开始花了大量的时间用在做Java图形界面上,试了很多次,发现用Java做图形界面时,输入的文字保存有问题,但是单个模块测试却是没有问题的,点击确认按钮时,创建文件是跳不出来主界面的,试了3天后我已经放弃用图形界面,转换为控制台里输入和显示,这样就避免了跨类调用等的问题。

虽然是这样,但也是在之前的程序上把图形界面的程序删除了,然后精简到一个类中。

在这之中也遇到了一些小问题,输入的问题,我跟老师、同学交流了一下,那个同学用C语言做的,给了我很大的启发。

我就对着程序添添补补,把那些不要的程序删除了,加上一些好的程序。

就这样花了几个小时就完成了,虽然功能不是很完善,但是我已经尽力了!这次课程设计对我的影响很大,我第一次凭借自己的努力用Java写出来一个规模较小程序,累是累但是收获很大。

对我的人生产生了前进的动力。

在此感谢老师,感谢那位同学的意见!!!七、带注释的代码package a;import ;public class M {static int disksize; //磁盘容量static int blocksize; //块的大小static int row; //初始要插入位示图的行static 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 int[d]; //标记1为有文件,0为空的static int [][] arr = new int[d][1];//标记插入的大小static int [] wst = new int[2048];//位示图static String [] name = new String[d];//文件名字存放的位置static String [] name1 = new String[d];//文件名字删除存放的位置static int [] k1 = new int[d]; //记录文件开始存放的位置static int [] k2 = new int[d]; //记录文件结束的位置static int [] k3 = new int[1];static int [] k4 = new int[1];static int [] k5 = new int[1];static int [] k6 = new int[1];static int [] p1 = new int[d]; //记录目录下文件夹子目录是否为空public void CiPan(){//设置磁盘大小的模块"设置磁盘大小");"磁盘容量(G):");Scanner rea1 = new Scanner(System.in);disksize = rea1.nextInt();"块的大小(M):");Scanner rea2 = new Scanner(System.in);blocksize = rea2.nextInt();"请输入您所需要的系统多少位:");Scanner rea3 = new Scanner(System.in);column = rea3.nextInt();n = disksize*1024/blocksize;r = n;row = disksize*1024/column;for(int i = 0; i < d; i++){name[i] = "";}for(int j = 0; j < disksize*1024/blocksize; j++){ wst[j] = 0;}}public void MuLu() { //显示目录的模块" 目录 ");for(int i = 0; i < 10; i++){if(p1[i] == 1){" "+name[i]);}}}public void ChuangJian() { //创建文件的模块"请输入要创建的文件名称:");Scanner rsda = new Scanner(System.in);// 获得新文件的名称name[a] = rsda.nextLine();if(k < 10){if (name[a] != null) {// 创建新文件p1[k] = 1;"请输入要插入的其大小(M)");Scanner re3 = new Scanner(System.in);arr[a][0] = re3.nextInt();}"文件: "+name[a]+"序列是:"+a+";大小:"+arr[a][0]+"M");c[a] = 1;k3[0] = 1;k6[0] = 1;for(int j = 0; j < n; j++){if(wst[j] == 0){if(k6[0] > 0){k4[0] = j;k6[0] = 0;}}}k6[0] = 1;r = r-arr[a][0];for(int i = k4[0]; i <= (k4[0]+arr[a][0]-1) ; i++ ){ if(k3[0] == 1){wst[i] = 1;k1[a]=i;k3[0]--;}else if(k3[0] == 0){wst[i]= 1;k5[0]--;k2[a]=i;}}k3[0]=1;k++;a++;}}public void Delete(){ //删除文件的模块"请输入要删除的文件名称:");Scanner rcds = new Scanner(System.in);// 获得新文件的名称name1[b] = rcds.nextLine();if (name1[b] != null) {// 删除文件for (int i = 0; i < 10; i++) {// 查看删除的文件是否存在if(name1[b].equals(name[i])){kk = i;}}r = r+arr[kk][0];if(kk!=-1&&p1[kk]==1){p1[kk] = 0;c[kk] = 0;name[kk] = "";for(int j = k1[kk]; j <= k2[kk]; j++){wst[j] = 0;}"删除成功!");kk = -1;}else if(kk == -1){"此文件不存在!");}}}public void Show() { //查看属性"文件名"+" "+"大小(M)");for(int i = 0 ; i < d ; i++) {if(c[i] == 1){" "+name[i]+" "+arr[i][0]);}}}public void Remained(){//剩余大小"剩余大小为: "+r);}public void Bitmap(){ //输出位示图"位示图");for(int i = 0 ; i < n ; i++)if((i+1) % column != 0 ){" ");}else if((i+1) % column == 0){;}}public static void main(String args[]) { //主函数模块int k;while(true){" Java简单的文件管理系统 ");" 1.设置磁盘大小");" 2.创建文件");" 3.删除文件");" 4.文件目录");" 5.查看属性");" 6.显示磁盘剩余大小");" 7.输出位示图");;"请输入上面的编号:");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;文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.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;}}}}。

相关主题