《操作系统》课程设计-文件管理系统-李XX小组
操作系统课程设计-文件系统目录管理
操作系统课程设计-文件系统目录管理目录第一章课程设计目的和要求 (1)1 课程设计目的 (1)2 课程设计要求 (1)2.1 课程设计思想原理 (1)2.2 课程题目 (1)2.3 提交课程设计报告 (2)第二章课程设计内容 (3)1 文件管理系统结构 (3)2 文件系统采用索引文件结构 (3)2.1 磁盘模拟 (3)2.2文件的逻辑结构 (3)2.3目录结构 (3)2.4用户接口 (5)第三章详细设计 (7)1 程序功能模块图 (7)2 实体关系图 (7)3 数据流图 (8)4 数据结构设计 (8)5 程序流程图 (11)5.1 建立文件目录(mkdir)程序流程图 (11)5.2 删除文件目录(rmdir)程序流程图 (12)第四章程序运行与测试 (13)1 程序运行主界面 (13)2 用mkdir [dirname] 命令创建子目录 (13)3用ls命令显示当前目录下信息 (13)4 用rmdir [dirname] 命令删除子目录 (14)5 用cd [dirname] 命令改名当前目录 (14)第五章课程设计总结 (16)附录Ⅰ参考文献 (17)附录Ⅱ程序清单 (18)第一章课程设计目的和要求1 课程设计目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。
本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。
同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
2 课程设计要求2.1 课程设计思想原理阅读操作系统方面的书籍,了解操作系统的文件系统原理。
结合分析课程设计要求,确定实体以及它们之间的关系。
操作系统课程设计-文件管理
目 录一、基本想 .............................................. - 0 -1.1编写目的 ................................................. - 1 -1.2简单描述 ................................................. - 1 -二、公共变量及数据结构 .................................. - 1 -2.1公共变量 ................................................. - 1 -2.2数据结构 ................................................. - 1 -三、主要函数的过程描述 .................................. - 2 -3.1 路径显示 ................................................. - 2 -3.2右键快捷菜单操作 ......................................... - 3 -3.3命令窗口 ................................................. - 3 -3.4创建文本文档 ............................................. - 4 -3.5创建可执行文件 ........................................... - 4 -3.5.1指令选择 ............................................... - 4 -3.5.2已选指令删除 ........................................... - 5 -3.5.3创建可执行文件 ......................................... - 5 - 四、运行截图 ............................................ - 6 -4.1主界面 ................................................... - 6 - 4.2树形结构及右键快捷菜单 ................................... - 6 - 4.3创建文本文档 ............................................. - 7 - 4.4创建可执行文件 ........................................... - 8 - 五、使用说明 ............................................ - 8 -5.1功能说明 ................................................. - 8 -5.2操作说明 ................................................. - 8 -5.2.1快捷菜单及命令窗口 ..................................... - 8 -5.2.2创建文本文档 ........................................... - 9 -5.2.3创建可执行文件 ......................................... - 9 -5.2.4删除文件 ............................................... - 9 -六、总结 ................................................ - 9 -一、基本思想装订线1.1编写目的通过课程设计,加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统,设计、构造和开发现代操作系统的基本能力。
【精选】操作系统课程设计(文件系统管理)文件
评定等级操作系统课程设计文件系统管理学院计算机学院专业计算机科学与技术班级姓名学号2013年1月8日广东工业大学计算机学院制文件系统管理一、实验目的模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。
通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。
二、实验内容和要求编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。
在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。
以下报告主要包括:1.可行性分析2.需求分析3.概要设计4.详细设计5.测试6.总结三、可行性分析1、技术可行性对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。
利用大二期间学习的数据结构可以模拟出此课程设计的要求。
2、经济可行性课程设计作为本课程的练习及进一步加深理解。
与经济无关,可以不考虑。
(零花费,零收益)3.法律可行性自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。
四、需求分析编写程序实现文件系统,主要有以下几点要求:1、实现无穷级目录管理及文件管理基本操作2、实现共享“别名”3、加快了文件检索五、概要设计为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD (User File Directory )。
这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。
此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录的指针。
本设计主要实现下面几个数据结构:M D F U F D A F D 用户名文件名打开文件名文件目录指针保护码打开保护码用户名文件长度读写指针文件目录指针文件名···总体的流程图如下:六、详细设计主要数据结构:1.MFD (Master File Directory ),主要用以存放用户,可以增加存放密码的字符数组,本设计没有保密安全方面的忧虑,为了使用时操作更简单省去密码。
《操作系统》课程设计
《操作系统》课程设计一、课程目标知识目标:1. 让学生掌握操作系统的基本概念,包括进程、线程、内存管理、文件系统等核心知识;2. 了解操作系统的历史发展,掌握不同类型操作系统的特点及使用场景;3. 掌握操作系统的性能评价方法和常用的调度算法。
技能目标:1. 培养学生运用操作系统知识解决实际问题的能力,如分析系统性能瓶颈、优化系统资源分配等;2. 培养学生具备基本的操作系统编程能力,如进程创建、线程同步、文件操作等;3. 提高学生的团队协作能力和沟通能力,通过小组讨论和项目实践,学会共同解决问题。
情感态度价值观目标:1. 培养学生对操作系统学科的兴趣,激发学生的学习热情,使其形成积极向上的学习态度;2. 培养学生具备良好的信息素养,尊重知识产权,遵循法律法规;3. 培养学生的创新精神和批判性思维,敢于质疑、勇于探索,形成独立思考的能力。
课程性质:本课程为计算机科学与技术专业的核心课程,旨在让学生掌握操作系统的基本原理和实现方法,提高学生的系统分析和编程能力。
学生特点:学生具备一定的编程基础和计算机系统知识,具有较强的逻辑思维能力和动手实践能力。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,通过案例分析和项目实践,帮助学生将所学知识内化为具体的学习成果。
在教学过程中,关注学生的学习进度和反馈,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 操作系统概述:介绍操作系统的定义、发展历程、功能、类型及特点,对应教材第一章内容。
- 操作系统的起源与发展- 操作系统的功能与类型- 操作系统的主要特点2. 进程与线程:讲解进程与线程的概念、状态、调度算法,对应教材第二章内容。
- 进程与线程的定义与区别- 进程状态与转换- 进程调度算法3. 内存管理:分析内存管理的基本原理、策略和技术,对应教材第三章内容。
- 内存分配与回收策略- 虚拟内存技术- 页面置换算法4. 文件系统:介绍文件系统的基本概念、结构、存储原理,对应教材第四章内容。
操作系统课程设计---文件管理
printf("| num | name | sex |\n");
printf("---------------------------------------\n");
struct linkr *headlink;
struct linkt *next;
};
struct linkf mfd[5];
struct links *ufd,*p2,*q2;
struct linkr *p,*q;
struct linkt *afd,*p3,*q3;
if(afd==NULL) afd=p3; else q3->next=p3;
strcpy(p3->filename,X);
p3->length=p2->length;
p3->headlink=p2->headlink;
q2=q2->next;
if(strcmp(q2->filename,X)==0)
{printf("File has already been created!\n");
return;
}
}
p2=(struct links *)malloc(sizeof(struct links));
scanf("%s",X);
p3=afd;
if(p3!=NULL)
{ while((strcmp(p3->filename,X)!=0)&&(p3->next!=NULL))
{ q3=p3;
操作系统课程设计-文件管理系统的设计与实现(附源程序)
需要全套设计请联系QQ174320523 各专业都有课程设计课程名称___操作系统课程设计_ __题目名称文件管理系统的设计与实现学生学院_ 计算机学院__________专业班级____ 04级软件工程2班_____学号学生姓名指导教师____ ______________2007年1月5日广东工业大学课程设计任务书题目名称文件管理系统的设计与实现学生学院计算机学院专业班级04级软件工程2班姓名学号一、课程设计的内容通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。
编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。
二、课程设计的要求与数据1.设计多用户文件系统,采用多级文件目录。
2.至少要有十个以上的实用命令,应设置文件保护措施。
3.设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入冗长的命令。
三、课程设计应完成的工作1.每位同学必须认真完成设计内容,并按照要求撰写课程设计说明书1份(不少于3000字)。
在最后截止时间前提交电子和打印文档两部分内容。
2.电子部分以电子邮件方式或者U盘拷贝方式提交给班长。
把设计内容压缩为一个文件,文件名应为:“序号”+“姓名”。
内容包括:源文件、可执行文件、演示运行结果、课程设计报告,最后由班长以班为单位刻录两张光盘,统一交给任课教师。
3.每人自己打印操作系统课程设计报告的纸质文档,装订后交给班长,班长收齐清点后统一交给任课教师。
课程设计论文具体包括以下内容:(1)设计思想说明(5%);(2)系统结构的说明(15%);(3)数据结构的说明(5%);(4)各模块的算法流程图(5%);(5)程序运行及清单(共60%,其中书面源程序占20%,光盘的源程序在计算机上实现程度占40%)(6)使用说明书(即用户手册)(内容包含如何登录、退出、读、写、等操作说明)(5%分)(7)体会,建议(5%)四、课程设计进程安排五、应收集的资料及主要参考文献《计算机操作系统》(修订版),汤子瀛,西安电子科技大学出版社;《计算机操作系统学习指导与题解》,汤子瀛,西安电子科技大学出版社;《操作系统实验与设计指导》,傅秀芬,广东工业大学;《Unix实验上机指导》,林小平,李立希,广东工业大学;发出任务书日期: 2006年 10 月 13 日指导教师签名:申建芳计划完成日期: 2007年 1 月 5 日基层教学单位责任人签章:主管院长签章:摘要和关键字(400字):摘要:课程设计内容是要完成一个多用户的文件系统.使用的设计语言是C++,开发环境是C++BUILDER6.参考资料有<<C++Builder6程序设计>>,<<C++编程开发实例>>,<<Java案例开发集锦>>,<<JBuilder9编程思想与实践>>.因为在学习JAVA的过程中,发现其中有很多东西很有用,而且发各种语言虽然有很大的不同,但是也有很多共同的东西,之前可以相互参考.所以在用一门语言开发时,我们也可以参考下其它的语言,这个可能对我们的开发有很大帮助.而且可以扩大我们的知识面.开发目标,利用C++Builder完成一个同WindowsXP的文件管理器有相似界面,符合设计要求的图形窗口的程序.这样的设计是为了能够方便用户操作,而WindowsXP是人们非常熟悉的操作系统,而文件管理器同样是人们非常熟悉的.开发的过程,学过软件工程后,我明白了采用软件工程的方法来设计软件重要性,同时也方便我们的开发使我们的设计更加容易,更加快,更容易维护,更容易调试.C++Builder也是这样一种优秀的编译器,提供可视化的编程环境,和模块化设计的思想,在设计过程中,不仅扩展了知识面而且提高了编程的能力.总的来说,有了很大的提高.关键字:多用户的文件系统, C++Builder, 文件管理器, , 图形窗口,可视化的编程环境, 模块化设计一、设计思想说明:本程序是根据WindwowXP 的文件管理系统来篇的。
文件管理系统课程设计
课程名称:操作系统实验题目:文件管理系统1、课程设计选题 (3)1.1主要设计内容 31.2主要设计思路 32、课程设计需求分析 33、概要设计 (4)3.1整体设计框架 43.2各模块的基本功能 44、系统实现 5 4.1原理 6 4.2各模块算法思想 6 4.3流程图描述 94.4代码描述 105、系统测试 115.1系统主界面 115.2子系统功能测试 116、总结 197、参考文献样式 191、课程设计选题1.1主要设计内容本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文件管理系统。
通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
1.2主要设计思路首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。
2、课程设计需求分析本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登陆来对文件或是文件进行操作。
多用户功能可以满足不同用户不同的需求,同时也起到了很好的保密作用。
文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文件。
为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。
另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。
模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。
系统建立了文件目录树,存储文件系统中的所有文件。
对于用户名下的文件,用文件目录树的分枝来存贮。
采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。
操作系统课程设计文件管理系统
操作系统课程设计文件管理系统1. 引言文件管理是操作系统中的一个重要模块,负责对计算机中的文件进行管理和组织。
在操作系统课程设计中,设计一个文件管理系统是一个很有挑战性的任务,需要考虑到文件的创建、打开、读取、写入、删除等功能,并且要确保文件的安全性和可靠性。
本文将详细介绍文件管理系统的设计与实现。
2. 需求分析为了满足用户对文件管理的需要,我们需要对文件管理系统的需求进行分析。
在这个文件管理系统中,用户应该能够执行以下操作:•文件的创建和命名•文件的打开和关闭•文件的读取和写入•文件的删除和修改•文件的搜索和查找除此之外,还要考虑到对文件权限的管理,可以设置不同用户对文件的不同访问权限,以保障文件的安全性。
3. 概要设计概要设计是对文件管理系统的整体架构和功能进行规划和设计。
文件管理系统可以采用层次结构的设计方式,分为用户界面、文件管理模块和存储管理模块。
3.1 用户界面用户界面是用户与文件管理系统进行交互的接口,可以通过命令行或者图形界面来实现。
在用户界面中,用户可以输入相关指令来执行对文件的操作,如创建文件、打开文件、读取文件等。
3.2 文件管理模块文件管理模块是文件管理系统的核心模块,负责对文件进行创建、打开、读取、写入、删除等操作。
在文件管理模块中,需要维护一个文件目录表来记录文件的基本信息,如文件名、文件大小、文件权限等。
还需要考虑到文件的分配和回收,可以使用位示图等方式进行实现。
3.3 存储管理模块存储管理模块负责对文件进行存储和管理,包括磁盘空间的分配和回收。
在存储管理模块中,可以采用文件分配表或者索引节点进行存储方式的选择。
4. 详细设计在详细设计阶段,需要对概要设计中的每个模块进行详细设计,并确定各个模块之间的接口和数据结构。
4.1 用户界面设计用户界面设计可以采用命令行方式进行实现。
用户可以通过命令输入来执行相应的文件管理操作。
可以设计一系列命令,如create用于创建文件,open用于打开文件,read用于读取文件等。
操作系统课设报告文件管理系统
目录一.课程设计目的及要求 (1)二.相关知识 (2)三题目分析 (3)四.概要设计 (4)五.代码及流程 (5)六.运行结果 (20)七.设计心得 (23)八.参考文献 (24)一.课程设计目的及要求深入了解文件管理系统,初步掌握文件管理系统的实现方法。
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
编写一程序,模拟一个简单的文件管理系统。
树型结构,目录下可以是目录,也可以是文件。
在此文件管理系统,可实现的操作有:改变目录:格式:cd <目录名>显示目录:格式:dir <目录名>创建目录:格式:md <目录名>删除目录:格式:rd <目录名>新建文件:格式:edit <文件名>删除文件:格式:del <文件名>退出文件系统:exit二.相关知识1.文件结构体struct FileNode{char filename[FILENAME_LEN];//文件名/目录名int isdir;//目录文件识别标志int i_nlink;//文件的链接数int adr;//文件的地址struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向//后一个兄弟的指针.};整个文件系统采用二叉树型存储结构,初始化文件树如下:图 2-1 初始目录树2.所使用函数及其功能int Main(); //主函数void Init();//初始化文件树int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名void ExecuteCommand();//执行命令,分别执行cd,edit,md,del,rd, dir,exit命令int cdComd(); //改变目录功能处理int editComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑int mdComd(); //创建目录int delComd();//处理del命令,即删除指定文件,不存在是给出错误信息int dirComd();//处理dir命令,显示目录int rdComd(); //删除目录int FindFilename(char Para2[]);//查找文件名struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//创建结点int GetInput(char* buffer,unsigned int buffer_len);//获取输入3.所使用的变量struct FileNode *cp, *tp, *root;// *cp, *tp, *root是根目录节点char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径charPara1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存储输入的命令,para2数组存储输入的文件名char filename[FILENAME_LEN],tmp;unsigned int i,j;三题目分析1.文件系统采用二叉树型存储结构,结点结构如下:struct FileNode{char filename[FILENAME_LEN];//文件名/目录名int isdir;//目录、文件的识别标志(0为文件,1为目录)int i_nlink;//文件的链接数//int adr;//文件的地址struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向后一个兄弟的指针.};2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3.功能具体描述:改变目录:改变当前工作目录,目录不存在时给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。
操作系统课程设计文件管理--正文
模拟操作系统—文件管理1.1设计目的:通过模拟操作系统的实现,加深对操作系统工作原理的理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力2.1设计原理:2.1.1文件管理和用户接口:文件管理和用户接口部分实现的主要是单用户的磁盘管理部分,包括文件的逻辑结构,物理结构,目录,磁盘分配回收,文件的保护和用户的接口实现。
系统中有2种文件,一种是存放任意字符的文件,一种是用来存放可以执行的文件,可以执行的文件内容就是模拟系统内进程的程序体。
文件要有一种特定的命令的可以执行的文件(可以建立一个 .exe文件里面写指令)他的内容很简单,就是:x=?;给X赋一个值(一位数),x++;X--;!??(第一个?为ABC中某个设备,第二个?为一位数,表示设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假如一个数,随着数的系统时间减少到0结束));end(表示文件结束,同时写入文件out,包括文件名字和路径和X的值)。
用户接口:用户接口提供用户命令接口,创建文件,删除文件,复制文件,粘贴文件,显示文件,编辑文件,建立目录,删除空目录,删除目录等等。
2.1.2磁盘模拟:用一个文件disk模拟磁盘,磁盘的每一个块64个字节,模拟磁盘工128个块,第0,1块存放文件分配表,第2个存放根目录,期于存放子目录和文件。
磁盘分配磁盘分配采用链式结构,系统采用文件分配表的方式记录磁盘空间的使用情况和链式结构的指针。
2.1.3目录内容:目录内容才用树型目录结构(1)目录项内容:8个字节:目录名,文件名(3个字节),扩展名(1个字节),末路。
文件属性(1个字节),起始磁盘号(1个字节),文件长度(2个字节),(2)根目录:根目录位置固定,为磁盘第2块,大小固定,工8项,站用第2块。
(3)子目录:位置不变,大小不固定。
2.1.4.存储管理:存储管理部分主要实现贮存和空间的分配和回收,存储的保护。
操作系统课程设计(文件系统管理)
操作系统课程设计Array文件系统管理学院计算机学院专业计算机科学与技术班级姓名学号2013年1月8日广东工业大学计算机学院制文件系统管理一、实验目的模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。
通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。
二、实验内容和要求编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。
在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。
以下报告主要包括:1.可行性分析2.需求分析3.概要设计4.详细设计5.测试6.总结三、可行性分析1、技术可行性对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。
利用大二期间学习的数据结构可以模拟出此课程设计的要求。
2、经济可行性课程设计作为本课程的练习及进一步加深理解。
与经济无关,可以不考虑。
(零花费,零收益)3.法律可行性自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。
四、需求分析编写程序实现文件系统,主要有以下几点要求:1、实现无穷级目录管理及文件管理基本操作2、实现共享“别名”3、加快了文件检索五、概要设计为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。
这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。
此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录的指针。
本设计主要实现下面几个数据结构:总体的流程图如下:六、详细设计主要数据结构:1.MFD(Master File Directory),主要用以存放用户,可以增加存放密码的字符数组,本设计没有保密安全方面的忧虑,为了使用时操作更简单省去密码。
操作系统原理课程设计文件管理系统
操作系统原理课程设计文件管理系统院系:计算机学院三系班级:计软05 – 1班姓名:韩宇学号: 3 5 号指导教师:李益民2007 年7 月4 日操作系统原理课程设计任务书一、题目:文件系统管理二、设计要求(1)由鲁建成,韩宇,肖鹏完成设计与实现。
(2)查阅相关资料,自学具体课题中涉及到的新知识。
(3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。
(4)所设计的程序应有输入、输出。
一.(5)按要求写出课程设计报告,并于设计结束后1周内提交。
其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、需求分析、概要设计、详细设计、软件的调试、总结、启谢、附录:带中文注释的程序清单、参考文献。
报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。
总体设计应配合软件总体模块结构图来说明软件应具有的功能。
详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。
三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。
四、课程设计工作计划2007年6月18日,指导教师讲课,学生根据题目准备资料;2007年6月19日,进行总体方案设计;2007年6月20日~2007年6月25日,完成程序模块并通过独立编译;2007年6月26日~2007年6月27日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2007年6月27日~2007年6月29日,验收、撰写报告;2007年6月29日下午,验收或总结。
指导教师签章:教研室主任签章操作系统原理课程设计指导教师评语与成绩目录一概述------------------------------------------------------------5二需求分析------------------------------------------------------71)问题获取2)分析三概要设计------------------------------------------------------8 四详细设计------------------------------------------------------91)具体功能概述2)程序流程图3)程序代码五程序的调试与运行结果说明------------------------------32六用户使用说明------------------------------------------------351)引言2)功能介绍七启谢-------------------------------------------------------------36八参考资料-------------------------------------------------------36一概述1.课程设计的目的1.理解重要数据结构的意义2.掌握文件系统的工作原理3.通过本次课程设计加深文件系统内部功能及内部实现的理解2.课程设计的要求1.需要的基本知识:文件:一组带标志的在逻辑上有完整意义的信息项的序列,这个标识为文件名。
操作系统文件管理系统 课程设计
操作系统文件管理系统课程设计
操作系统文件管理系统课程设计一般包括以下内容:
1. 基本概念和原理:介绍文件管理系统的基本概念和原理,包括文件、目录、文件系统、文件操作等。
2. 设计需求分析:明确设计需求,包括基本功能、用户需求、性能要求等。
3. 文件存储结构的设计:设计文件存储结构,包括文件分配方式、文件存储结构、文件目录结构、文件保护等。
4. 文件操作的实现:实现文件的创建、打开、读写、删除等基本操作,以及文件的复制、移动、重命名等高级操作。
5. 目录管理的实现:实现目录的创建、删除、重命名等操作,以及目录的遍历和搜索等功能。
6. 文件系统的实现:实现文件系统的格式化、挂载、卸载等操作,以及文件系统的安全性和可靠性保障。
7. 用户界面的设计:设计用户界面,包括命令行界面和图形界面,以方便用户进行文件管理操作。
8. 系统测试和调试:对系统进行测试和调试,包括单元测试、集成测试、性能测试等,以确保系统的稳定性和可靠性。
9. 报告撰写和展示:根据课程设计的要求,编写设计报告和展示文稿,介绍系统的设计思路、实现方法和成果。
以上是一个基本的操作系统文件管理系统课程设计的内容,具体可以根据教师的要求和课程的安排进行适当调整和扩展。
操作系统课程设计说明书 (文件管理)
中北大学操作系统课程设计说明书学院、系:软件学院专业: 软件工程学生姓名:学号:设计题目:基于Linux的模拟文件系统的设计与实现起迄日期:指导教师:薛海丽前言简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。
这个系统是由世界各地的成千上万的程序员设计和实现的.其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。
用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。
可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。
这对Windows NT、Windows98、MS-DOS或OS/2等商品化操作系统来说是无法做到的。
Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。
其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。
在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用IPCHAINS/IPTABLE网络治理工具可构建NAT及功能全面的防火墙。
Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。
Linux 操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。
它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。
目录1需求分析31.1 功能介绍31。
操作系统课程方案二文档管理系统
青 岛 科 技 大 学操 作 系 统 课 程 设 计学生班级__________________________ 学生学号__________________________ 学生姓名________________________________年 ___月 ___日操作系统课程设计(二级文件管理系统>一、课程设计要求从所给题目中选择一个,分析设计要求,给出解决方案,建立必要的数据结构,设计总体流程<包括界面),详细设计必要的算法,测试结果。
基于Windows 或Linux 操作系统都可以,编程语言不限。
二、设计目的深入了解文件管理系统,初步掌握文件管理系统的实现方法。
三、选择题目设计一个简单的二级文件系统设计内容:编写程序模拟实现一个简单的文件管理系统,设计一个较实用的用户界面,方便用户使用。
设计要求:提供以下相关文件操作: <1)具有login (用户登录>0908010209Angelo 20186 26 计算机092<2)系统初始化<建文件卷、提供登录模块)<3)文件的创建: create<4)文件的打开:open<5)文件的读:read<6)文件的写:write<7)文件关闭:close<8)删除文件:delete<9)创建目录<建立子目录):mkdir<10)列出文件目录:dir<11)退出:loyout四、程序设计(1)开发环境Ubuntu 11.10 GCC<GNU Compiler Collection,GNU编译器套装)C语言编程(2)设计思想文件管理仅针对相应用户,用户注册时,自动分配对应的文件空间,该用户所有的文件保存在该用户空间下。
用户只有对自己空间中的目录或文件具有权限。
文件管理系统,模拟Linux文件管理指令格式,模拟实现ls、cat、rm、cd、mkdir等基础文件管理指令,并具有较明朗的操作界面。
(完整word版)操作系统二级文件管理课程设计
(完整w o r d版)操作系统二级文件管理课程设计-CAL-FENGHAI.-(YICAI)-Company One1操作系统二级文件管理课程设计课程设计名称:二级文件管理系统专业班级:软件工程计083-1学生姓名:李晓斌学号: 20082553103指导教师:任满杰设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
设计内容:为Linux系统设计一个简单二级文件管理系统一、实验内容描述1 实验目标本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现.2 实验要求为linux系统设计一个简单的二级文件系统.要求做到以下几点:①可以实现下列命令:login 用户登录dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件②列目录时要列出文件名、物理地址、保护码和文件长度.③源文件可以进行读写保护.程序设计(1)设计思想本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户账号下的文件。
另外,为了简便文件系统未考虑文件共享,文件系统安全以及管理文件与设备文件等特殊内容。
(2)主要数据结构A 磁盘块结构体:typedef struct distTable{int maxlength;int start;int useFlag;distTable *next;}diskNode;diskNode *diskHead;B 文件块结构体:struct fileTable //文件块结构体{char fileName[10];int strat; //文件在磁盘存储空间的起始地址int length; //文件内容长度int maxlength; //文件的最大长度char fileKind[3]; //文件的属性——读写方式struct tm *timeinfo;bool openFlag; //判断是否有进程打开了该文件//fileTable *next;};C 两级目录结构体typedef struct user_file_directory //用户文件目录文件UFD{//char fileName[10];fileTable *file;user_file_directory *next;}UFD;//UFD *headFile;typedef struct master_file_directory //主文件目录MFD{char userName[10];char password[10];UFD *user;}MFD;(3)函数如下;void userCreate(){char c;char userName[10];int i;if(used<MaxUser){printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elseuserName[i]=c;printf("%c",c);}userName[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,userName)) {printf("\n");printf("该用户名已存在,创建用户失败\n"); system("pause");return;}}strcpy(userTable[used].userName,userName); printf("\n");printf("请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elseuserTable[used].password[i]=c;printf("*");}userTable[userID].password[i]='\0';printf("\n");printf("创建用户成功\n");used++;system("pause");}else{printf("创建用户失败,用户已达到上限\n"); system("pause");}fflush(stdin); //清除文件缓冲区}int login(){char name[10],psw[10];char c;int i,times;printf("请输入用户名:");for(i=0;c=getch();i++){if(c==13) break;elsename[i]=c;printf("%c",c);}name[i]='\0';for(i=0;i<used;i++){if(!strcmp(userTable[i].userName,name))break;}if(i==used){printf("\n您输入的用户名不存在\n");system("pause");return -1;}for(times=0;times<3;times++){memset(psw,'\0',sizeof(psw)); //将psw数组内的内容设置为空printf("\n请输入密码:");for(i=0;c=getch();i++){if(c==13) break;elsepsw[i]=c;printf("*");}printf("\n");for(i=0;i<used;i++){if(!strcmp(psw,userTable[i].password)){printf("用户登录成功\n");system("pause");break;}}if(i==used){printf("您输入的密码错误,您还有%d次输入机会\n",2-times); if(times==2) exit(0);}else break;}fflush(stdin);return i;}int requestDist(int &startPostion,int maxLength){int flag=0; //标记是否分配成功diskNode *p,*q,*temp;p=diskHead;while(p){if(p->useFlag==0&&p->maxlength>maxLength){startPostion=p->start;q=(diskNode *)malloc(sizeof(diskNode));q->start=p->start;q->maxlength=maxLength;q->useFlag=1;q->next=NULL;diskHead->start=p->start+maxLength;diskHead->maxlength=p->maxlength-maxLength;flag=1;temp=p;if(diskHead->next==NULL) diskHead->next=q;else{while(temp->next) temp=temp->next;temp->next=q;}break;}p=p->next;}return flag;}void fileCreate(char fileName[],int length,char fileKind[]) //创建文件{//int i,j;time_t rawtime;int startPos;UFD *fileNode,*p;for(p=userTable[userID].user->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName)){printf("文件重名,创建文件失败\n");system("pause");return;}}if(requestDist(startPos,length)){fileNode=(UFD *)malloc(sizeof(UFD));fileNode->file=(fileTable *)malloc(sizeof(fileTable)); //这一步必不可少,因为fileNode里面的指针也需要申请地址,否则fileNode->file指向会出错strcpy(fileNode->file->fileName,fileName);strcpy(fileNode->file->fileKind,fileKind);fileNode->file->maxlength=length;fileNode->file->strat=startPos;fileNode->file->openFlag=false;time(&rawtime);fileNode->file->timeinfo=localtime(&rawtime);fileNode->next=NULL;if(userTable[userID].user->next==NULL)userTable[userID].user->next=fileNode;else{p=userTable[userID].user->next;while(p->next) p=p->next;p->next=fileNode;}printf("创建文件成功\n");system("pause");}else{printf("磁盘空间已满或所创建文件超出磁盘空闲容量,磁盘空间分配失败\n");system("pause");}}void freeDisk(int startPostion){diskNode *p;for(p=diskHead;p!=NULL;p=p->next){if(p->start==startPostion)break;}p->useFlag=false;}void fileDel(char fileName[]){UFD *p,*q,*temp;q=userTable[userID].user;p=q->next;while(p){if(!strcmp(p->file->fileName,fileName)) break;else{p=p->next;q=q->next;}}if(p){if(p->file->openFlag!=true) //先判断是否有进程打开该文件 {temp=p;q->next=p->next;freeDisk(temp->file->strat); //磁盘空间回收free(temp);printf("文件删除成功\n");system("pause");}else{printf("该文件已被进程打开,删除失败\n");system("pause");}}elseprintf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileCat(char fileName[]) //查看文件内容{int startPos,length;int k=0;UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){startPos=p->file->strat;length=p->file->length;p->file->openFlag=true; //文件打开标记printf("*****************************************************\n ");for(int i=startPos;k<length;i++,k++){if(i%50==0) printf("\n"); //一行大于50个字符换行printf("%c",disk[i]);}printf("\n\n*************************************************** **\n");printf("%s已被read进程打开,请用close命令将其关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}void fileWrite(char fileName[]) //写入{UFD *p,*q;q=userTable[userID].user;int i,k,startPos;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){if(!strcmp(p->file->fileKind,"r")) //判断文件类型是否允许写入 {printf("该文件是只读文件,写入失败\n");system("pause");return;}char str[500];printf("please input content:\n");gets(str);startPos=p->file->strat;p->file->openFlag=true; //文件打开标记p->file->length=strlen(str);if(p->file->length>p->file->maxlength){printf("写入字符串长度大于该文件的总长度,写入失败\n"); system("pause");return;}for(i=startPos,k=0;k<(int)strlen(str);i++,k++)disk[i]=str[k];printf("文件写入成功,请用close命令将该文件关闭\n");system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n"); system("pause");}}void fileDir(char userName[]) //显示某一用户的所有文件{UFD *p;int i,k;for(i=0;i<MaxUser;i++){if(!strcmp(userTable[i].userName,userName)){k=i;break;}}if(i==MaxUser){printf("没有找到该用户,请检查输入用户名是否正确\n");system("pause");return;}else{p=userTable[k].user->next;printf("******************************************************* *************************\n");printf("文件名文件长度文件在磁盘的起始地址文件类型创建时间\n");for(;p!=NULL;p=p->next)printf("%s %d %d %s %s",p->file->fileName,p->file->maxlength,p->file->strat,p->file->fileKind,asctime(p->file->timeinfo));printf("******************************************************* *************************\n");system("pause");}}void diskShow() //文件在磁盘上的属性{diskNode *p;int i=0,unusedDisk=0;printf("******************************************************* ********************\n");printf(" 盘块号起始地址容量(bit) 是否已被使用\n");for(p=diskHead;p!=NULL;p=p->next,i++){if(p->useFlag==false) unusedDisk+=p->maxlength;printf(" %d %d %d %d \n",i,p->start,p->maxlength,p->useFlag);}printf("***************************************************************************\n");printf("磁盘空间总容量:512*1024bit 已使用:%dbit 末使用:%dbit\n\n",MaxDisk-unusedDisk,unusedDisk);system("pause");}void fileClose(char fileName[]) //文件关闭{UFD *p,*q;q=userTable[userID].user;for(p=q->next;p!=NULL;p=p->next){if(!strcmp(p->file->fileName,fileName))break;}if(p){p->file->openFlag=false;printf("%s文件已关闭\n",p->file->fileName);system("pause");}else{printf("没有找到该文件,请检查输入的文件名是否正确\n");system("pause");}}心得体会在设计程序之前,我先花费了一天多的时间思考设计该程序的思路,熟悉了一下学过的课本,把以前忘了的东西又熟悉了一下,然后就通过操作系统要求开始设计程序了,我采用了一个模块一测试,成功之后在写另一个模块,刚开始创建文件,显示你创建成功了,可是却在指定路径中没有该文件,只有一个二级文件目录,经过我认真的查看,发现我用的函数是创建目录的,而非创建文件。
操作系统课程设计---文件管理系统设计
课程设计任务书计算机科学与技术专业年级班一、设计题目文件管理系统设计二、主要内容设计一个简单的文件管理系统来模拟文件操作命令的执行三、具体要求设计和调试一个简单的文件管理系统来模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。
具体要求如下:⑴设计一个支持n个用户的文件系统,每个用户可拥有多个文件;⑵采用二级或二级以上的多级文件目录管理;⑶对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写”等;⑷系统的外部特征应接近于真实系统,可设置下述文件操作命令:建立文件、打开文件、关闭文件、删除文件、读文件、写文件、复制文件、查询目录。
⑸通过键盘(或鼠标)使用该文件系统,系统应显示操作命令的执行结果。
四、进度安排2012-9-3-----2012-9-6 确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;2012-9-6-----2012-9-12 编写程序代码并调试,再将调试通过的各个子模块进行集成调试;2012-2-12----2012-9-16 归纳文档资料,完成课程设计说明书,参加课程设计答辩五、完成后应上交的材料在课程设计完成后需要提交的成果和有关文档资料包括:1、课程设计的说明书。
2、课程设计有关源程序及可运行程序(光盘或电子邮件)。
六、总评成绩:指导教师签名日期年月日系主任审核日期年月日一、本设计目的及基本思想本课程设计目的是实现树型目录结构文件系统,在实现过程中利用了二叉树,其中每个节点都有父指针,子指针和兄弟指针,其中子指针指向该目录下的第一个子节点,而该子节点的父指针则指向它的上级目录。
目录下各子节点用兄弟指针连接起来。
文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛出。
文件打开则把文件的名称及其父指针写到文件列表同时置文件打开标志为1,文件关闭则把文件从打开列表中删除,同时置文件打开指针为0,文件读取和写入都要检查文件是否在文件打开列表中,未打开文件不能读写,只读文件不能写,只写文件不能读。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河海大学《操作系统》课程设计设计名称:模拟文件管理系统课程设计负责人:课程设计成员:河海大学计算机与信息学院二〇一一年十二月目录Contents第一部分:课程设计目的 (3)第二部分:设计要求 (3)第三部分:运行环境 (3)第四部分:实验内容 (4)4.1前期知识巩固 (4)4.2设计任务 (5)4.3详细设计部分 (10)4.3.1数据结构 (10)4.3.2主要函数 (11)4.3.3系统流程图 (11)第五部分:调试分析 (13)5.1用户登录 (13)5.2创建文件 (14)5.3查看文件 (15)5.4删除文件 (15)5.5修改文件夹位置 (16)第六部分:参考文献 (16)第七部分:附录 (17)7.1心得体会 (17)7.2源代码(代码文字已缩小) (17)第一部分:课程设计目的本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。
具体指在内存中开辟一个虚拟的磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。
在退出这个文件系统时应将该文件系统保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。
第二部分:设计要求(1)对进行认真分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据。
(2)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
(3)程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD)。
另外,为打开文件设置了运行文件目录(AFD)。
(4)文件保护简单使用三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
(5)以完整的论文形式提交原始代码、设计文档和可运行程序。
提交的文档应当包括:设计题目,程序清单,运行结果分析,算法及其优缺点,以及通过上机取得了哪些经验。
程序清单要求格式规范,注意加注释(包含关键字、方法、变量等),在每个模块前加注释。
(6)本组交一份设计文档的同时每名组员交一份实践体会。
第三部分:运行环境windows xp 系统,windows 7 旗舰版系统编译器:Microsoft Visual C++ 6.0编辑语言:c++第四部分:实验内容4.1前期知识巩固A、文件系统:文件系统是操作系统的五大功能模块之一,主要实现操作系统对程序、数据、设备等的管理。
文件系统的主要功能:完成文件存储空间管理,实现文件名到物理地址的映射,实现文件和目录的操作管理,提供文件共享能力和安全措施等功能。
B、文件文件是信息的一种组织形式,是存储在外存上的带有标识号的一组相关信息的集合,而这个集合既可以由相关联的字符流组成,也可以由相关联的记录组成。
文件的构成:文件控制块(FCB)、数据。
FCB是系统在管理文件时所需信息的数据结构,是文件存在的惟一标志。
包括了文件的基本属性,大致有文件名、地址、存取控制信息(如文件所有者、同组用户、访问权限)以及使用信息(如创建日期、修改日期)。
C、文件目录文件控制块的有序集合称为文件目录。
文件目录的基本功能是实现文件名与其存放位置的映射。
D、文件的物理结构常用的结构有顺序结构、链接结构、文件分配表结构FAT、索引结构、多级索引结构。
E、文件操作文件的操作就是创建/删除文件、打开/关闭文件、读/写文件等F、磁盘空间管理文件系统的一个重要任务是对磁盘空间进行管理。
磁盘空间管理的关键问题是磁盘空闲空间的管理。
常用的空闲块管理方法有:空闲文件目录法、空闲块链法、位示图法、空闲块成组链接法。
4.2设计任务建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux 文件系统。
a、在现有机器硬盘上开辟1M的硬盘空间,模拟作为作为设定的硬盘空间。
b、编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求:(1)盘块大小1k(2)空闲盘块的管理:Linux位图法(3)结构:超级块, i结点区, 根目录区c、该文件管理程序的功能要求如下:Format:对文件存储器进行格式化mkdir:用于创建子目录dir:用于显示目录cd:更改当前目录create:创建文件write:写文件read:读文件del:删除文件access: 权限d、程序的总体流程为:(1)初始化文件目录;(2)输出提示符,等待接受命令,分析键入的命令;(3)对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
总体流程图如下所示:以下是各功能模块流程图:初始化函数format ( )改变当前目录cd()显示目录dir()创建目录mkdir()创建文件creat()删除文件del()打开文件open() 读文件read()写文件write() 关闭文件close()删除目录树rd()判断权限access()分配磁盘块get_blk()释放磁盘块release_blk(int)4.3详细设计部分 4.3.1数据结构写磁盘块write_blk(int)读磁盘块read_blk(int)4.3.2主要函数4.3.3系统流程图(1)Login 用户登录用户输入用户名和密码,在passwd文件中查找是否有此用户,核对密码。
正确则登陆成功,当前目录设定到当前用户文件夹下。
(2)format 格式化初始化超级块,初始化主目录,初始化管理员admin 目录,初始化用户目录,初始化用户passwd文件。
(3)create 创建文本文件查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。
申请硬盘空间,申请失败则结束。
将文件内容写入硬盘空间。
修改当前目录的结构,修改超级块。
(4)cdir 创建文件夹查找当前目录下是否有同名文件,是则退出,否则,申请硬盘空间,申请失败则结束。
将文件夹内容写入硬盘空间。
修改当前目录的结构,修改超级块,写入模拟硬盘。
(5)read edit –读取和追加文本文件(6)Read----查找当前目录下是否该文件,没有则退出,否则调用access ()权限判断,有权限则判断是不是文件,不是则退出,是文件则读取文件并显示。
(7)Edit----调用读取文件模块,读取成功则用户输入追加的内容,如果追加的内容大于一个硬盘分配空间则申请分配空间,失败则退出,申请成功则保存文件。
(8)access(文件名)权限判断先判断当前目录是否有该文件,在当前目录的硬盘空间找到该文件,判断当前登录用户是哪个组,判断是否该用户创建,判断该文件的可见级别。
如果是该用户创建的则有读写权限如果当前用户是管理员组的也具有读写权限如果该文件是用户可查看文件则都具有权限。
(9)cd –进入子目录或上级目录查找当前目录是否有该子目录,没有则退出,调用access()判断当前用户是否有权限,无则退出,有则读取该子目录的目录,将当前目录指向该目录。
(10)attr(文件名)查看文件或者文件夹的属性先查找当前目录下是否有该文件或目录,有则判断文件是否系统文件,是否文本文件,是否目录,由谁创建,属于什么组,占用的空间和目录。
将其全部显示出来。
(11)del 删除文件或目录查找当前目录是否有该文件名,没有则退出,有则调用access()判断是否有权限,有则判断是否为系统文件,是则无法删除,不是则判断是否是文件,是文件则直接删除,不是则判断是否文件夹,是文件夹则判断该文件夹下是否有文件,有文件则无法删除。
提示用户是否删除,确认则删除文件,修改当前文件夹目录和硬盘空间结构,修改超级块,写入模拟硬盘。
(12)Dir 列文件目录(列出文件名、物理地址、保护码和文件长度)第五部分:调试分析5.1用户登录初始登陆界面,根据注册用户的信息,每次登陆有三次登陆机会,如果失败即结束并退出,用户名和验证码与注册的信息一致则进入系统,下图显示的是登陆时失败的画面:登陆成功后画面显示:5.2创建文件创建文件并输入文件内容,我们的创建文件模式为“CREAT +文件名称”,下图的名称为123,之后系统显示输入文件内容,同时会提醒内容以“###”结尾,此便于系统识别,具体画面如下所示:下面是创建文件夹,文件夹不需要输入文件信息。
5.3查看文件根据之前创建的文件,可以查看当前文件夹中已经创建文件的信息。
命令“dir”。
5.4删除文件创建文件夹并删除,创建文件夹的命令为“CDIR+文件夹名称”,下图以123为例;删除命令为DEL+文件夹名称/文件名称,下图还以AAA文件夹为例,如下图所示:删除后查看,可以验证文件已经删除。
5.5修改文件夹位置第六部分:参考文献[1] 罗宇等 . 《操作系统(第2版)》.电子工业出版社[2] 谭浩强 .《C++程序设计》.清华大学出版社[3] 宁正元等 . 《算法与数据结构》.清华大学出版社[4] 林锐 . 《高质量程序设计》.电子工业出版社[5] 张乃孝 .《算法与数据结构-c语言描述》(第二版).高等教育出版社[6] 严蔚敏等.《数据结构(C语言版)》.清华大学出版社[7] 苏仕华等.《数据结构课程设计》.机械工业出版社[8]/ds/ds2/wangshangketang/index.htm第七部分:附录7.1心得体会在本次课程设计刚刚开始时,不知道怎么设计,只知道大概的结构。
后来认真阅读课本有关的知识,知道怎样设计结构体才方便文件操作。
知道怎样设计后,写程序时也遇到很多的障碍,特别是指针的改接和指向和出错处理。
此时深感自己编程能力的不足,经过多次修改,终于设计好了该设计。
通过该课程设计,使我们更了解了课本知识,巩固了课本知识,同时也使我们的编程能力有了一定的提高,最重要的是我们深切体会到团队的重要,怎么配合和分工才能更快更好的完成任务。
7.2源代码(代码文字已缩小)#include<iostream>#include <time.h>#include <string>#include <fstream>#include <sstream>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <iomanip>#include <io.h>#include <malloc.h>#include <dos.h>#include <conio.h>#include <windows.h>#define BOOL intusing namespace std;const unsigned FILE_SYS_SIZE = 1024 * 1024; //模拟文件系统的容量设为1Mconst unsigned BITMAP_LEN = 64; //位示图的长度 512/8const unsigned BLOCK_SIZE = 512; //一个文件块的大小const unsigned BLOCK_COUNT = 512; //文件系统中文件块的数量const unsigned NAME_LEN = 15; //最长文件名的长度const unsigned PASSWORD_LEN = 15; //用户密码的最大长度const unsigned LOGIN_COUNT = 3; //用户登录尝试次数const unsigned COMMAND_LEN = 200; //命令行最大长度const unsigned PRO_SET_COMM_COU = 11; //预设命令数const unsigned USER_NAME_SIZE=15;//最大用户名长度const unsigned USER_PASSWORD_SIZE=15;//最大用户密码长度const unsigned MAX_USER_NUMBER=10;//最多用户数目const unsigned MAX_FILE_SIZE=200;//最大文本字符数目const char *PRO_SET_COMM[] = {"creat", "format", "read", "write", "logout", "del", "cdir", "cd", "dir", "exit","help"};//文件元素可供操作性权限typedef enum{pub, //任何人可做任何操作(公共文件,所有人都可查看)protect, //非创建者或ADMIN,只可以察看(保护,只有自己和管理员可查看)pri //非创建者或ADMIN,不可以做任何操作(系统文件)} FileAccess;//文件元素类型typedef enum{file, //文件dir //文件夹} FileType;//表示文件状态typedef enum FileStatus{closed,opened,reading,writing} ;//一个文件索引结构(文件节点)struct FileIndexElement{unsigned Index; //文件元素索引编号char FileName[NAME_LEN]; //文件元素名char ParentName[NAME_LEN]; //父节点名unsigned FileBlockId; //文件元素所在物理块编号unsigned FileLevel; //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置char creatTime[18];//文件创建时间char *filecontent;//文件内容BOOL effect; //是否有效,0-无效,1-有效FileType Type; //识别文件还是目录};//文件索引结构或目录表项(文件目录结构)struct FileIndex{FileIndexElement *FIStart; //文件系统中的文件索引起始位置unsigned FILen; //文件索引的最大长度unsigned FICount; //文件索引数量};//文件块的结构(存储数据块结构)struct FileBlock;typedef struct FileBlock *pFileBlock;struct FileBlock{unsigned FileBlockId; //文件块编号unsigned BLOCK_SIZE; //文件块的容量char *FileBlockAddr; //文件块地址pFileBlock next; //下一个文件块的地址};//文件系统的位示图结构(用于显示分配的存储器分配情况)struct BitMap{unsigned BITMAP_LEN; //文件位示图长度char *BMStart; //位示图的起始指针};//文件系统结构(超级块的结构,全局变量)struct SuperBlock{char *FSStart; //文件系统的起始地址unsigned SuperBlockSize; //文件系统的容量BitMap bm; //文件系统中的位示图unsigned BLOCK_COUNT; //文件系统中文件块的数量pFileBlock head; //文件系统中文件块首地址FileIndex FI; //文件系统中的文件索引};//登陆用户的数据结构(用户的数据结构)struct User;typedef struct User *pUser;struct User{char *UserName; //用户名称char *password; //用户密码int isAdmin; //用户类型,1表示管理员,0表示用户pUser NextUser;};struct LoginStruct{int User_Login_tims;int UserNum;pUser pUserList;};//文件系统中的元素结构,包括文件和文件夹(逻辑文件的定义,树形结构)struct FSElement;typedef struct FSElement *pFSElement;struct FSElement{pFSElement parent; //指向自己的父亲节点unsigned FileLevel; //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置char FileName[NAME_LEN]; //文件元素名unsigned FileBlockId; //文件元素所在物理块编号unsigned FileElemLen; //文件元素的长度FileType Type; //文件元素类型FileAccess Access; //文件元素可供操作的权限User Creator; //文件创建者char CreateTime[18]; //创建时间,日期格式:MM/DD/YY HH:MI:SSchar LastModTime[18]; //最后一次修改时间char *FileData; //一个文件的数据开始地址,文件夹时该值为NULLFileStatus fileStu; //如果是一个文件表示文件当前的状态};//系统当前状态struct CurrentStatus{User CurrentUser; //当前用户unsigned FileLevel; //用户所在文件系统层FSElement *CurrParent; //当前层的父节点char *CurrentPath; //当前路径};SuperBlock FS; //一个全局文件系统的变量CurrentStatus CS; //当前系统状态FSElement *base; //文件元素的根LoginStruct LoginS;//用户列表,在登录的时候用到,以链表形式存储bool InitFileSys(); //(初始化文件函数)//============================================================================= ===========//函数说明:权利声明void Right(void){cout<<"文件管理系统 [版本1.4]\n";cout<<"版权所有 (c) 2011 计算机4班。