模拟实现文件系统,操作系统课程设计要点

合集下载

操作系统课程设计通过模拟文件系统的实现

操作系统课程设计通过模拟文件系统的实现

目录一、课程设计题目和目的 (1)二、课程设计要求 (1)三、程序设计思想 (1)四、文件系统的实现 (1)1.数据结构设计 (1)2.程序功能图 (2)3.实体关系图 (3)4.数据流图.................................................. 错误!未定义书签。

5.程序流程图 (3)(1) .建立文件:create(文件名,记录长度) (4)(2) .写文件:write(文件名,开始位置,字符串) (5)(3) .读文件:read(文件名,开始位置,长度) (6)(4) .显示文件所有内容 type(文件名) ....................... 错误!未定义书签。

(5) .删除文件delete(文件名) .............................. 错误!未定义书签。

(6) .重命名文件ren(文件名,新文件名) ..................... 错误!未定义书签。

(7) .查询文件属性ask(文件名) ............................. 错误!未定义书签。

(8) .关闭文件close(文件名) ............................... 错误!未定义书签。

五、程序运行结果及分析 (8)六、课程设计总结 (10)七、参考文献 (11)八、附录 (12)一、课程设计题目和目的通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。

同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。

二、课程设计要求通过组长分工,我主要完成了如下几个功能的操作:1.创建文件:从命令中得到文件名,得到该文件的文件长度,建立文件。

修改目录表。

4.读文件:read [文件名] [显示开始字节] [显示的字节数] ,直接显示所需要的字节数。

操作系统课程设计-文件系统的模拟设计

操作系统课程设计-文件系统的模拟设计

操作系统课程设计报告题目:文件系统的模拟设计一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

二、设计内容(1)概述为Linux系统设计一个简单的二级文件系统。

要求做到以下几点:1.可以实现下列几条命令:login 用户登录dir 列目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件cd 进出目录2.列目录时要列出文件名,物理地址,保护码和文件长度3.源文件可以进行读写保护(2)设计原理和系统总体功能框架图1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

2、文件物理结构可采用显式链接或其他方法。

3、磁盘空闲空间的管理可选择位示图或其他方法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。

4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

5、对文件或目录的操作采用windows系统的API函数来实现。

6、设计一个较实用的用户界面,方便用户使用。

要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、复制文件、移动文件、返回根目录、退出。

功能结构图如图1.0所示:(3)详细设计及少数重要编码的说明这次课程设计中,我负责4个板块,分别是显示列表函数和目录、创建函数文件创建函数、打开文件函数和关闭文件系统函数。

①、显示列表函数和目录流程图如图1.1所示②、文件创建函数算法:查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。

申请inode空间(ialloc函数),申请硬盘block空间(balloc函数),申请失败则结束。

操作系统课程设计(文件系统管理)

操作系统课程设计(文件系统管理)

操作系统课程设计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),主要用以存放用户,可以增加存放密码的字符数组,本设计没有保密安全方面的忧虑,为了使用时操作更简单省去密码。

操作系统课程设计--基于Linux的模拟文件系统的设计与实现

操作系统课程设计--基于Linux的模拟文件系统的设计与实现

操作系统课程设计--基于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需求分析 (2)1.1 功能介绍 (2)1.2 ⽬的及意义 (4)1.2.1 ⽬的 (4)1.2.2 意义 (5)1.3 设计成果 (6)2总体设计 (7)2.1功能介绍 (7)2.2模块关联 (8)3详细设计 (11)3.1⽤户结构 (11)3.2数据结构说明 (11)3.3主要功能的关键代码 (12)4测试及运⾏结果 (17)4.1 测试定义 (17)4.2 测试⽬的 (17)4.3 测试结果 (18)4.3.1 ⽂件测试 (18)5⼼得 (40)1需求分析1.1 功能介绍基于Linux的模拟⽂件系统的设计与实现完成以下功能:(1)创建⽤户:⼿动的创建10个⽤户,都在界⾯上完成,输⼊⽤户名;每个⽤户最多可以保存10个⽂件。

操作系统课程设计—文件系统的实现

操作系统课程设计—文件系统的实现

课程设计报告( 20 --20 年度第学期)课程名称:操作系统实验课设题目:文件系统的实现院系:控制与计算机工程学院班级:姓名:指导教师:设计周数:一周成绩:20 年月日设计报告内容一、需求分析用C或C++编写和调试一个文件系统,功能使用命令行的方式实现。

模拟文件管理的工作过程。

加深理解文件系统的内部功能和内部实现。

用内存模拟磁盘用结构体数组描述个不同的磁盘区域。

磁盘的存取单元是磁盘块,一个盘块的大小是64字节。

每个目录项16个字节,目录项下只允许建立4个子目录或者文件。

i-node位图1块64个字节,共512位,可以描述512个i-node的使用情况。

i-node的长度是16字节。

文件超过两个盘块会用到一级索引。

每个以及索引盘块(64字节)可以包含16个盘块号。

文件包含目录文件和文本文件。

实现Format,Mkfile,Mkdir,Cd,Delfile,Deldir,Dir,Copy,Open,Viewinodebitmap,V iewblockbitmap等功能。

二、整体功能及设计(功能划分及流程图)1、数据结构:struct DirectoryEntry{ //目录项char name[8]; //文件或目录名int dirid; //目录标志(0为文件,1为目录)int inodenumber; //i-node编号};struct DirectoryEntryInBlock{DirectoryEntry de[4]; //每个目录项大小为16字节,64字节空间最多可以存储4个目录项int num; //磁盘块存储的目录项数目};struct indexaddressstruct{int indexaddress[16]; //每个索引块大小为4字节,64字节空间最多可以存储16个索引块号int num; //索引块存储的索引数目};union Block{ //单个盘块64个字节大小可以存储文件内容或者存储目录项或者存储索引块号char space[64]; //空间大小为64个字节用于存储文件内容DirectoryEntryInBlock deib;indexaddressstruct ias;};struct inodeStruct{ //i-node结构int blockamount; //盘块数int directblockaddress1,directblockaddress2; //直接盘块地址*2int stairindexaddress; //一级索引地址};struct DiskBlock{ //磁盘布局DirectoryEntry rootdirectory[4]; //根目录,最多4个目录项char inodebitmap[512]; //512个i-node状态char blockbitmap[1024]; //1024个磁盘块状态inodeStruct inode[512]; //512个i-node存储区Block datablock[1024]; //数据块存储区};static DiskBlock db; //全局磁盘变量int rootdirectoryamount; //用于记录根目录的使用数目,最大为4int inodeamount; //用于记录i-node的使用数目,最大为512int datablockamount; //用于记录数据块的使用数目,最大为1024int spaceamount; //用于记录数据块中64位字节的使用数目,最大为64DirectoryEntry filelist[500]; //用于记录文件方便遍历检索DirectoryEntry directorylist[500]; //用于记录目录方便int fileamount; //用于记录文件数目int directoryamount; //用于记录目录的数目char localposition[8]; //用于记录当前位置2、文件系统相关图(1)文件系统简单结构图如图1所示。

操作系统课程设计简单文件系统的实现

操作系统课程设计简单文件系统的实现

操作系统课程设计报告小组编号:小组成员:一、课程设计概述:1、题目:简单文件系统的实现2、实现内容(1)在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。

在退出该文件系统的使用时,应将该虚拟文件系统以一个Windows 文件的方式保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。

(2)文件存储空间的分配可采用显式链接分配或其他的办法。

(3)空闲磁盘空间的管理可选择位示图或其他的办法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,那么可以将位示图合并到FAT中。

(4)文件目录结构采用多级目录结构。

为了简单起见,可以不使用索引结点,其中的每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

(5)要求提供以下操作命令:my_format:对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。

my_mkdir:用于创建子目录。

my_rmdir:用于删除子目录。

my_ls:用于显示目录中的内容。

my_cd:用于更改当前目录。

my_create:用于创建文件。

my_open:用于打开文件。

my_close:用于关闭文件。

my_write:用于写文件。

my_read:用于读文件。

my_rm:用于删除文件。

my_exitsys:用于退出文件系统。

二、设计思路(主要算法描述、程序流程图等):1.系统主函数main()(1)对应命令:无(2)命令调用格式:无(3)函数设计格式:void main()(4)功能:系统主函数(5)输入:无(6)输出:无(7)函数需完成的工作:①对前面定义的全局变量进行初始化;②调用startsys()进入文件系统;③列出文件系统提供的各项功能及命令调用格式;④显示命令行提示符,等待用户输入命令;⑤将用户输入的命令保存到一个buf中;⑥对buf中的内容进行命令解析,并调用相应的函数执行用户键入的命令;⑦如果命令不是“my_exitsys”,则命令执行完毕后转④。

操作系统课程设计报告5——模拟文件系统

操作系统课程设计报告5——模拟文件系统

操作系统课程设计报告——模拟文件系统1实现功能实现了符合要求的文件系统。

实现了要求的文件系统接口。

2文件系统的实现2.1目录项结构体dirEntry文件系统中,使用dirEntry结构体表示一个目录项。

该结构体长64字节,其中记录了该项的FAT表入口位置start,文件名name(最长50字节)和长9字节的未用项unused(可用于扩展文件系统的功能,记录其他信息)。

系统中的目录实际上就是仅由dirEntry项构成的目录文件。

2.2文件描述符分配表项结构体filpEntry使用filpEntry结构体来表示一个已经打开的文件。

它长8个字节,记录的信息包括该文件的FAT表入口位置start,以及文件指针位置position。

fdPool数组提供了100个可用的filpEntry指针;minNotUsedFd变量储存当前最小未用的文件描述符。

每当打开一个文件时,要调用get_fd函数,它为文件分配一个描述符,增加一个filpEntry项,并调整minNotUsedFd的值。

当关闭文件时,需要调用free_fd函数,来释放一个文件描述符和对应的filpEntry。

2.3文件分配表FAT文件系统中,需要记录文件存储的块号的数据结构。

除了可以使用inode以外,还可以使用FAT。

FAT在使用过程中需要将整张表读入内存,而使用inode时,只需要将使用中的inode读入内存即可;故inode占用内存较少。

但inode数据结构复杂;尤其是当文件尺寸巨大,需要使用二级甚至三级间接表时,inode在磁盘和内存之间的读写过程会变得相当繁琐。

本项目中,选择使用方便的FAT。

当磁盘空间为250MB,块大小为1KB时,将有256000块;每块的号码需要使用一个int来表达。

故FAT表需要256000项,每项4字节,共1024000字节,即1000KB。

由于超级块已经占用块0,文件分配表将占用硬盘块1~1000。

FAT的每个表项的类型都是int。

操作系统课程设计模拟文件系统

操作系统课程设计模拟文件系统

操作系统课程设计模拟文件系统学院: 计算机科学技术专业: 计算机科学与技术(工)班级: 计10- 1班**: ***学号: ****************: ***2013年07月16日《操作系统原理》课程设计任务书(计算机科学与技术专业10-1)一、课程设计题目(任选一个题目)1.模拟进程管理2.模拟处理机调度3.模拟存储器管理4.模拟文件系统5.模拟磁盘调度二、设计目的和要求1.设计目的《操作系统原理》课程设计是网络工程专业实践性环节之一, 是学习完《操作系统原理》课程后进行的一次较全面的综合练习。

其目的在于加深对操作系统的理论、方法和基础知识的理解, 掌握操作系统结构、实现机理和各种典型算法, 系统地了解操作系统的设计和实现思路, 培养学生的系统设计能力, 并了解操作系统的发展动向和趋势。

2.基本要求:(1)选择课程设计题目中的一个课题, 独立完成。

(2)良好的沟通和合作能力(3)充分运用前序课所学的软件工程、程序设计、数据结构等相关知识(4)充分运用调试和排错技术(5)简单测试驱动模块和桩模块的编写(6)查阅相关资料, 自学具体课题中涉及到的新知识。

(7)课题完成后必须按要求提交课程设计报告, 格式规范, 内容详实。

三、设计内容及步骤1.根据设计题目的要求, 充分地分析和理解问题, 明确问题要求做什么。

2.根据实现的功能, 划分出合理的模块, 明确模块间的关系。

3.编程实现所设计的模块。

4.程序调试与测试。

采用自底向上, 分模块进行, 即先调试低层函数。

能够熟练掌握调试工具的各种功能, 设计测试数据确定疑点, 通过修改程序来证实它或绕过它。

调试正确后, 认真整理源程序及其注释, 形成格式和风格良好的源程序清单和结果;5.结果分析。

程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

目录1.课程设计的目的 (1)2.课程设计的要求 (1)3.需求分析 (1)3.1问题描述 (1)3.2数据结构 (2)3.2.1 类 (2)3.2.2 结构 (2)3.2.3 函数 (2)3.3系统运行环境 (3)4.概要设计 (3)4.1创建文件操作 (3)4.2删除文件操作 (4)4.3查看文件块号 (4)5 详细设计 (4)5.1创建文件 (4)5.2删除文件 (7)5.3查看文件块号 (10)6.总结 (12)参考文献 (13)附录 (15)1.课程设计的目的掌握模拟文件系统的设计方法, 具备初步的独立分析和设计能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

某某大学课程设计报告课程名称:操作系统课程设计设计题目:模拟实现文件系统系别:计算机系专业:计算机科学与技术组别:学生姓名: 学号:起止日期:指导教师:目录目录 0第一章需求分析 (1)1.1 课程设计题目 (1)1.2 课程任务及要求 (1)1.3课程设计思想: (1)1.4软硬件运行环境及开发工具: (2)第二章概要设计 (3)2.1流程图 (3)2.2用到的原理 (3)第三章详细设计 (4)第四章调试与操作说明 (9)4.1用户登陆界面 (9)4.2创建文件界面 (9)4.3删除文件界面 (10)4.4退出界面 (10)第五章课程设计总结与体会 (10)第六章致谢 (11)第七章参考文献 (11)第一章需求分析1.1 课程设计题目课程设计题目:模拟实现文件系统1.2 课程任务及要求要求:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能给出实现方案(包括数据结构和模块说明等)画出程序的基本结构框图和流程图分析说明每一部分程序的设计思路实现源代码按期提交完整的程序代码和可执行程序根据要求完成课程设计报告总结1.3课程设计思想:模拟实现文件系统问题是一个经典的关于文件的处理问题,包括:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能。

设计思想如下:1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

2.文件物理结构可采用显式链接或其他方法。

3.磁盘空闲空间的管理可选择位示图或其他方法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。

4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。

5.设计一个较实用的用户界面,方便用户使用。

要求提供以下相关文件操作:(1)具有login (用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建: create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete(9)列出文件目录:dir(10)退出:logout1.4软硬件运行环境及开发工具:a)程序设计语言:C++b)计算机及操作系统:PC机,WindowsXPc)开发平台:Microsoft Visual C++ 6.0d)运行平台:PC机,WindowsXP第二章概要设计2.1流程图模拟实现文件系统的主要流程图如下:2.2用到的原理1.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。

2.系统使用create,open,read,write,close,delete,dir和exit来创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。

3.程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。

另外,为打开文件设置了运行文件目录(AFD)。

4.为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作第三章详细设计本次课程设计采用的是c++语言编写,部分主要程序代码如下:#include "stdio.h"#include <stdlib.h>#include <conio.h>#include <string.h>#define getpch(type) (type*)malloc(sizeof(type))#define NULL 0#define UserNumber 10#define UserFNumber 10#define UserOFNumber 5struct fname{char fname[1];int flag;}fnameA[26]={'a',0,'b',0,'c',0,'d',0,'e',0,'f',0,'g',0,'h',0,'i',0,'j',0,'k',0,'l',0,'m',0,'n',0,'o',0,'p',0,'q',0,'r',0,'s',0,'t',0,'u',0,'v',0,'w',0,'x',0,'y',0,'z',0};struct afd {char opname[10];/* 打开文件名*/int flag;char opfprotect[3];/* 打开保护码*/int rwpoint;/* 读写指针*/} AFD[UserOFNumber];/* 用户打开的文件*/typedef struct {char fname[10];/* 用户文件名*/int flag;/* 文件存在标志*/int fprotect[3];/* 文件保护码r\w\t */int flength;} ufd,UF[UserFNumber];/* 用户文件*/struct mdf {char uname[10];/* 用户名*/UF Udir;/* 用户文件目录*/} UFD[UserNumber];/* 用户*/void intFSystem(){int i,j,k,l;strcpy(UFD[0].uname,"a");strcpy(UFD[1].uname,"b");strcpy(UFD[2].uname,"c");strcpy(UFD[3].uname,"d");strcpy(UFD[4].uname,"e");strcpy(UFD[5].uname,"f");strcpy(UFD[6].uname,"g");strcpy(UFD[7].uname,"h");strcpy(UFD[8].uname,"i");strcpy(UFD[9].uname,"j");for(i=0;i<10;i++) {for(k=0;k<5;k++){do j=rand()%26; while(fnameA[j].flag);strcpy(UFD[i].Udir[k].fname,fnameA[j].fname);fnameA[j].flag=1;UFD[i].Udir[k].flength=rand()%2048+1;UFD[i].Udir[k].flag=1;UFD[i].Udir[k].fprotect[0]=rand()%2;UFD[i].Udir[k].fprotect[1]=rand()%2;UFD[i].Udir[k].fprotect[2]=rand()%2;}for(j=0;j<26;j++) fnameA[j].flag=0;}for(l=0;l<5;l++){strcpy(AFD[i].opname,"");AFD[l].flag=0;AFD[l].opfprotect[0]=0;AFD[l].opfprotect[1]=0;AFD[l].opfprotect[2]=0;AFD[l].rwpoint=0;}}void Create(int i){ int k;for(k=0;k<10;k++) {if(!UFD[i].Udir[k].flag) break; }if(k>=10) {printf("一个用户不能拥有超过10个文件\n\n");return;}printf("请输入你想创建的文件名:");scanf("%s",UFD[i].Udir[k].fname);printf("请输入文件长度:");scanf("%d",&UFD[i].Udir[k].flength);printf("只读?(1 yes,0 no):");scanf("%d",&UFD[i].Udir[k].fprotect[0]);printf("可写?(1 yes,0 no):");scanf("%d",&UFD[i].Udir[k].fprotect[1]);printf("可执行?(1 yes,0 no):");scanf("%d",&UFD[i].Udir[k].fprotect[2]);UFD[i].Udir[k].flag=1;return;}void Delete(int i){char file[10]; int k;printf("请输入你想删除的文件名:");scanf("%s",file);for(k=0;k<10;k++) {if(UFD[i].Udir[k].flag&&!strcmp(UFD[i].Udir[k].fname,file)){UFD[i].Udir[k].flag=0;break;}else printf("出错\n");}return;}void main(){ int i,n=0;char m[10];char login[10];intFSystem();printf(" 欢迎使用\n");printf("1.本系统模拟文件管理2.系统已初始化10个用户,\n用户名分别是a~j,每个用户已分配五个文件\n");printf("**本系统的命令包括如下:\n");printf("**创建文件(create)\n");printf("**删除文件(delete)\n");printf("**打开文件(open)\n");printf("**关闭文件(close)\n");printf("**读取文件(read)\n");printf("**编写文件(write)\n");printf("**显示文件目录(printufd)\n");printf("**显示打开文件目录(dir)\n");printf("**退出(exit)\n");lgin: printf("请输入用户名(a~j):");scanf("%s",login);if(!strcmp(login,"exit")) return;for(i=0;i<10;i++){ if(!strcmp(UFD[i].uname,login)) break;}if(i>=10){ printf("该用户名不存在!"); goto lgin; }printUFD(i);for(;n!=1;){printf("请输入命令:");scanf("%s",&m);if(strcmp(m,"create")==0) Create(i);else if(strcmp(m,"delete")==0) Delete(i);else if(strcmp(m,"open")==0) Open(i);else if(strcmp(m,"close")==0) Close;else if(strcmp(m,"read")==0) Read();else if(strcmp(m,"write")==0) Write();else if(strcmp(m,"printufd")==0) printUFD(i);else if(strcmp(m,"dir")==0) printAFD();else if(strcmp(m,"exit")==0) n=1;else printf("出错\n");}printf("Saving....\n");printUFD(i);getch();return;}第四章调试与操作说明4.1用户登陆界面4.2创建文件界面4.3删除文件界面4.4退出界面第五章课程设计总结与体会在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。

相关文档
最新文档