操作系统课程设计-基于Linux地模拟文件系统地设计与实现_第1页
操作系统课程设计-基于Linux地模拟文件系统地设计与实现_第2页
操作系统课程设计-基于Linux地模拟文件系统地设计与实现_第3页
操作系统课程设计-基于Linux地模拟文件系统地设计与实现_第4页
操作系统课程设计-基于Linux地模拟文件系统地设计与实现_第5页
已阅读5页,还剩37页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统课程设计说 明 书学院、系:软件学院专业:软件工程学生 姓 名:学 号:设计 题 目:基于Linux的模拟文件系统的设计与实现起迄日期:指导教师:前言简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intelx86系列CPU的计算机上个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码便修改和扩充操作系统或应用程序的功能对WindowsNT、Windows98、MS-DOS或OS等商品化操作系统来说是无法做到的。Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用IPCHAINSTABLE网络治理工具可构建NAT及功能全面的防火墙。Linux是在GNU公共许可权限下免费获得的一个符合POSIX标准的操作系统inux操作系统软件包不仅包括完整的Linux操作系统且还包括了文本编辑器级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用WindowsNT一样,允许我们使用窗口、图标和菜单对系统进行操作。目录1需求分析 31.1功能介绍 31.2目的及意义 51.2.1目的 51.2.2意义 61.3设计成果 72总体设计 82.1功能介绍 82.2模块关联 93详细设计 123.1用户结构 123.2数据结构说明 123.3主要功能的关键代码 134测试及运行结果 184.1测试定义 184.2测试目的 184.3测试结果 194.3.1文件测试 195心得 411需求分析1.1功能介绍基于Linux的模拟文件系统的设计与实现完成以下功能:(1)创建用户:手动的创建10个用户,都在界面上完成,输入用户名;每个用户最多可以保存10个文件。(2)用户登录:手动的登录已经创建的用户,正确输入用户名即可成功登录。(3)显示所有用户:首先会创建很多用户,为了清晰、便捷的查看用户,所以在界面上可以显示所有的用户,这一功能的实现,主要是针对忘记自己用户名的用户,可以通过查看全部用户来查找自己的用户名。(4)创建二级文件目录(:手动的输入目录名称(即设置主目录(F)和用户文件目录(F。(5)显示目录:将用户创建的目录显示在界面上。(6)删除目录:手动输入目录的名称即可删除已经创建的目录。(7)进入目录:进入目录内部,可以进行文件的各种操作。(8)修改目录:在用户登录后,输入要修改的目录名称,对其进行修改,输入新的目录名并保存。(9)建立一个文件(create目录中手动输入文件名,可以创建新的文件,在创建的同时输入文件的保护码,对文件内容进行保护,防止信息泄露。(10)打开全部文件(openall:将已经创建的文件夹全部显示在界面上。(11)删除一个文件(delete:手动输入已经创建的文件的名称,即可删除此文件。(12)写文件(rite:手动的在文件中写入内容。(13)读文件(read:查看文件中的已经写入的内容。(14动文件户可以将某个目录下的文件移动到其它的目录中为了整理文件,便于查询,使用。(15)改文件的保护码(change:手动修改文件的密码(保护码。基于以上的功能,可以使用户选择操作,模拟文件系统的设计与实现;此类功能都是在页面上手动操作完成。1.2目的及意义1.2.1目的通过课程设计深对操作系统各资源管理模块的理解握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。基于Linux的模拟文件系统的设计与实现悉基本的网络命令以及他们的使用方法会Linux多用户的特点悉网络配置文件的配置方法系统是基于linux平台运行在终端上的虚拟二级文件管理系统。模拟真正的文件管理系统,并采用用户登录机制对文件和目录进行创建,增加内容,修改,删除的操作。对于目录而言,可以进行创建删除新添文件的操作;对于文件而言,可以创建,修改,删除。删除目录时,同时删除相应目录下的文件以及文件中的内容。采用用户登录使得用户管理文件更方便,并形成了二级的文件管理模式。操作系统()是重要的计算机系统软件,同时也是最活跃的学科之一,其发展极为迅速。它是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要的地位;而其它的诸如汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。操作系统已成为现代计算机系统、多处理机系统、计算机网络、多媒体系统以及嵌入式系统中都必须配置的、最重要的系统软件。课程设计是学习的总结过课程设计温习我们已经学到的知识并加以运用可以了解到其它的知识,来充实自己,充分掌握操作系统的基本原理及各方面知识。1.2.2意义基于其低廉成本与高度可设定性,Linux常常被应用于嵌入式系统,例如机顶盒、移动电话及行动装置等。在移动电话上,Linux已经成为与Syan、ndowsle系统并列的三大智能手机操作系统之一;而在移动装置上,则成为ndows与Palm外之另一个选择。目前流行的数位摄影机使用了经过定制化后的Linux。此外,有不少硬件式的网络防火墙及路由器,例如部份LinkSys的产品,其内部都是使用Linux来驱动、并采用了操作系统提供的防火墙及路由功能。Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的x特性,具有多任务、多用户的能力。Linux是在公共许可权限下免费获得的,是一个符合IX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的ndow图形用户界面同我们使用ndows一样许我们使用窗口标和菜单对系统进行操作。Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有x的全部功能,任何使用x操作系统或想要学习x操作系统的人都可以从Linux中获益。在Linux操作系统中实现文件的各种操作,即创建、删除、修改、写入、读取等。通过课程设计让我们进一步了解操作系统习操作系统的各方面知识深对操作系统的认识,温习课上学过的知识,明确操作系统的作用。可以在不同的角度来观察操作系统的作用。从一般客户的观点把操作系统看做是用户与计算机硬件系统之间的接口资源管理的观点看,则可把操作系统视为计算机系统资源的管理者。另外,操作系统实现了对计算机资源的抽象,隐藏了对硬件操作的细节,使用户能更方便地使用机器。1.3设计成果基于Linux的模拟文件系统的设计与实现现了采用用户登录机制以查看文件信息,管理文件及文件夹。在界面中用户可以手动的进行操作,每一步都有操作成功或失败的提示,清晰的展示每一步的操作过程,用户可以方便的实现对文件的操作,例如:创建、修改、删除等。经过几天的努力完成了基于Linux的模拟文件系统的设计与实现这一课题照具体的要求,将每个功能实现并附上温馨提示,主要的功能有:展示了添加用户、用户登录、创建二级目录、修改目录名、删除目录、显示全部目录、创建文件、修改文件名、删除文件、写入文件、读取文件、修改文件保护码等功能。2总体设计2.1功能介绍本系统包括用户管理、目录管理、文件管理共3个模块。在用户管理模块中,包括创建用户,输入用户名;用户登录等功能。在目录管理模块中,包括创建二级文件目录,输入文件的目录名称;显示目录,输入文件目录的名字,显示出对应的目;删除目录;进入目录主要是为了操作目录内部的文件。文件管理模块,包括文件的创建,在进入目录后可以按照提示输入文件的名称,输入密码,创建新的文件并添加文件的保护码;打开一个文件,在目录中按照提示输入文件的名称,便可以打开目录中对应的文件;打开全部文件,进入目录后,按照提示输入相应的操作,即可打开本目录下所有的文件;删除一个文件,进入目录按照提示选择相应的操作,输入文件名称,即可删除此文件;写入文件,在目录中打开一个文件,写入内容;读取文件,在目录中打开文件,查看文件的内容。修改保护码,进入目录输入文件的名称,按照提示修改文件的保护码。形象展示见下图2.1基基于Linux的模拟文件系统的设计与实现用户管理目录管理文件管理创建用户用户登录创建目录显示目录删除目录创建文件打开一个文件打开全部文件删除一个文件写入文件读取文件图2.12.2模块关联在系统中各个模块之间有着一定的联系,系统中创建10个用户,每一个用户可以创建多个目录,在目录中最多创建10个文件。用户与目录之间存在一对多的关系,目录与文件之间也存在一对多的关系,用户与文件之间也存在一对多的关系。具体描述见下图:n1用户名 目录名n1用户用户目录文件11nn保护码 文件名 文件内容图2.2用户登录打开打开创建目录保护码读取验证写入否创建文件删除是显示删除用户退出图2.3打开文件 读文件开始 开始将打开文件信息写入打开文件信息表将打开文件信息写入打开文件信息表要打开的文件是否存在否是遍历i节点区提示输入打开模式文件是否已经打开否是模式是否为可读是提示输入开始位置和读字节数否遍历打开文件表调用读块操作,读出块内字符结束 结束删除文件开始要要删除的文件是否存否是释放文件对应的i节点区文件是否大于的一是否释放一个磁盘遍历i节点区释放两个磁盘结束图2.4删除目录开始删除目录或文删除目录或文件否是待删除目录吗?是是是空目录吗?否遍历子目录是子目录为空吗?否是是文件吗?否否是是空目录吗?遍历i节点区结束创建目录否是否有空的否是否有空的i节点否是遍历i节点区分配一个目录i节点要创建的目录是否存在要创建的目录是否存在是遍历i节点区结束图2.53详细设计3.1用户结构typedefstructuser{charname[10];Content*con;structuser*next;}User;本系统可以创建10个用户户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。do{

printf("输入新用户名:;scanf("%s",name);exist=0;head=user->next;while(head!=NULL){if(strcmp(head->name,name)==0){exist=1;break;}head=head->next;}if(exist==1)printf("用户名已存在!请重新输入:");}while(exist==1);3.2数据结构说明a)文件结构链表structfnode{charfilename[FILENAME_LENGTH];intisdir;intisopen;charcontent[255];fnode*parent;fnode*child;fnode*prev;fnode*next;};b)函数介绍voidzengjiayonghu();/增加新用户voidnewfile(Content*con);/创建新文件intdisplay_files(Content*con);/展示所有文件voiddufile(Content*con);/读取文件voidwritefile(Content*con);/写入文件voidshanchufile(Content*con);删除文件voidyidongfile(User*u,Content*con);/移动文件intzhankaiallconcent(User*u);/展示所有文件voidnewcontentname(Content*c,charname[]);/更改目录名称voidnewconcent(User*u);/增加新目录voidshanchuconcent(User*u);/删除目录voidxiugaiconcentname(User*u);/修改目录名称voidchange_filepassword(Content*con);/修改文件保护码intreadall_files(Content*con);/读取所有文件3.3主要功能的关键代码a)创建文件在用户成功的创建目录后可以创建文件了建新的文件时首先判断文件名是否已经存在果存在则提示重新输入则提请输入文件保护码输入文件保护码后,将创建新的文件成功。关键代码:do{

exist=0;printf("请输入新文件名:");scanf("%s",f_name);strcat(f_name,tail);if(is_exist_file(con->file,f_name))exist=1;if(exist==1)printf("文件名已存在!;}while(exist==1);printf("请输入文件保护码:;scanf("%s",password);q=fopen(f_name,"w");fclose(q);while(file->next!=NULL)file=file->next;new_f=(File*)malloc(sizeof(File));strcpy(new_f->name,f_name);strcpy(new_f->password,password);new_f->next=NULL;file->next=new_f;con->filenum++;printf("添加文件成功!\n",f_name);}b)读取文件读取文件即查看文件中的内容输入要读取的文件名后行判断文件名称是否存在,若存在则打开文件看文件的内容侧提文件名不存在新选择读取的文件名,进行下一步的操作。关键代码:strcat(name,tail);while(file!=NULL){if(strcmp(name,file->name)==0){find=1;break;}file=file->next;}if(find==0){printf("文件名不存在!;return;}c)写入文件在正常的操作中,用户创建文件主要是保存一些信息;在此系统中,用户创建文件后可以在文件中写入一些内容,发挥文件的作用。首先判断用户输入的文件名是否存在,再判断用户输入的保护码是否正确,正确进入文件后便可以进入文件,进行写操作。关键代码:strcat(name,tail);while(file!=NULL){if(strcmp(name,file->name)==0){find=1;break;}file=file->next;}if(find==0){printf("抱歉,文件名不存在\n");return;}do{

printf("请输入保护码:");scanf("%s",password);if(strcmp(password,file->password)==0)login=1;if(login==0)printf("保护码错误!请重新输入:");}while(login==0);printf("现在文件已经被打开了...\n");write(name);printf("\n文件%s写入成功!\n",name);d)移动文件移动文件是很常用的操作户经常整理自己的文件一些文件移动到其它的目录下,此操作首先输入要移动的文件的名称认用户输入的文件存在后输入移动的目标目录,进行判断后将文件移动到此处,并提示“移动成功关键代码:do{

exist=1;printf("请输入你想要移动的文件名:");scanf("%s",name);strcat(name,tail);if(!is_exist_file(con->file,name))exist=0;if(exist==0)printf("该文件名不存在!;}while(exist==0);printf("移动中...\n");file=con->file;f=file->next;while(f!=NULL){if(strcmp(f->name,name)==0)break;file=file->next;f=f->next;}temp_f=f;file->next=f->next;printf("请输入您想要移动到的目标目录名:");scanf("%s",c_name);c=u->con;while(c->next!=NULL){if(strcmp(c->name,c_name)==0)break;c=c->next;}f=c->file;while(f->next!=NULL)f=f->next;f->next=temp_f;temp_f->next=NULL;printf("移动成功!;e)删除文件有时一些文件对用户来说是没有什么意义的,便可以将其删除,在用户登录成功后,进入目录选择删除文件操作,输入要删除的文件名,系统进行判断文件名是否存在,当文件存在时可以执行删除操作,提示“文件删除成功!关键代码:if(display_files(con)==0)printf("抱歉,你没有文件可删除!;else{do{

exist=1;printf("请输入您想要删除的文件名:");scanf("%s",name);strcat(name,tail);if(!is_exist_file(con->file,name))exist=0;if(exist==0)printf("抱歉,该文件不存在!;}while(exist==0);printf("文件删除中...");file=con->file;f=file->next;while(f!=NULL){if(strcmp(f->name,name)==0)break;file=f;f=f->next;}f)修改文件的保护码保护码是文件的安全保护在的信息技术不断增强有很多人通过获取其它人的文件来盗用他人重要资料或信息以很多人采取密保来防止自己的文件内容泄露时人们会随意的设置自己的密码能在设置后需要修改更加严密的密码次我们设计了修改文件保护码,方便用户的更改。用户选择要修改的文件,系统判断文件名是否存在,若存在则提示输入原文件的保护码,再次进行判断保护码是否输入正确,最后输入新的保护码,并进行保存,提示“密码修改成功关键代码:voidchange_filepassword(Content*con){intlogin=0;charname[10];chartail[]=".txt";intfind=0;charpassword[10];charnewpassword[10];File*file=con->file->next;printf("请输入要修改保护码的文件名:");scanf("%s",name);strcat(name,tail);while(file!=NULL){if(strcmp(name,file->name)==0){find=1;break;}file=file->next;}if(find==0){printf("啊噢文件名不存在;return;}do{

printf("请输入原密码:");scanf("%s",password);if(strcmp(password,file->password)==0)login=1;if(login==0)printf("真是悲哀,原密码输入错误!请重新输入:");}while(login==0);printf("请输入新密码:");scanf("%s",newpassword);strcpy(file->password,newpassword);printf("\n密码修改成功!;}以上是每个模块的具体的操作介绍并附加关键代码键代码对一个系统来说是非常重要的时候我们可以通过关键代码以及注释等来理解系统中的各种功能此系统中主要展示了添加用户、用户登录、创建二级目录、修改目录名、删除目录、显示全部目录、创建文件、修改文件名、删除文件、写入文件、读取文件、修改文件保护码等功能。4测试及运行结果4.1测试定义任何项目的开发成功都离不开测试明测试起着重要的作用试使用人工或者自动手段来运行或测试某个系统的过程目的在于检验它是否满足规定的去求或弄清楚预期结果与实际结果之间的差别。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)完全度(ceteness)和质量(quality)的软件过程;是S的重要子域。(1)测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效果和有效性;(3)没有发现错误的测试也是有价值的,完成的测试是评定软件质量的一种方法。(4)测试可以分为黑盒测试和白盒测试,测试的方法不同,测试的结果、重点也不相同,选择合适的测试方法对项目的承重有着重要的作用。4.2测试目的如果测试的目的是为了尽可能多地找出错误么测试就应该直接针对软件比较复杂的部分或者以前出错比较多的位置果测试的目的是为了给最终用户提供具有一定可信度的质量评价么测试就应该直接针对在实际应用中会经常用到的商业假设然测试的目的不仅仅如此,也不会只针对某个部分进行测试,而忽略其它部分,测试必须要全面。(1)测试是为了发现错误而执行的过程;(2)测试是为了证明程序有错,而不是证明程序无错误;(3)一个好的测试用例是在于它能发现至今未发现的错误;(4)一个成功的测试是发现了至今未发现的错误的测试。4.3测试结果4.3.1文件测试用户的操作对象是文件先创建文件输入文件名时试文件名输入的是否正确,输入的文件名已经存在时,会出现提示信息;在文件中写入内容时,测试输入任何字符都可以,像普通的记事本一样;在读取文件时,可以正常的读取出文件中存在的内容;删除文件时,输入文件名,测试文件名是否输入正确,在文件名不存在时,界面出现提示信息;修改文件保护码,测试输入的初始文件保护码是否输入正确,显示提示信息,当输入正确时,可以对保护码进行修改,并修改成功。测试的结果是正确的。成功创建文件界面设计:示图4.3.1图4.3.1写入文件界面设计:示图4.3.2图4.3.2读取文件界面设计:示图4.3.3图4.3.3删除文件界面设计:示图4.3.4图4.3.4修改文件保护码界面设计:示图4.3.5图4.3.5移动文件界面设计:示图4.3.6图4.3.6显示所有文件界面设计:示图4.3.7图4.3.74.4测试总结经过测试,按照要求进行测试,确保功能的完整性,是否有不正确或遗漏了的功能;在接口上输入能否正确接受?能否输出正确的结果?是否有数据结构错误或外部信例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?黑盒测试发现程序中的错误须在所有可能的输入条件和输出条件中确定厕所是数据检查程序是否都能产生正确的输出。在系统开发的过程中行每一步的调试保每一个方法句都被执行到发后,针对具体的要求,进行测试,测试出系统中的功能能正常运行,切每一步不合理的操作,界面上都有提示信息,便于用户的操作、使用。经过测试,在此系统中的所有功能都是按照要求实现的,且都附有操作提示,避免用户操作失误而导致不必要的麻烦。4.4详细代码(在Linux环境下可运行成功)ncludeys/stat.h> //调用系统函数ncludeys/types.h>ncludetdio.h>nclude<unistd.h>nclude<dirent.h>ncludetdlib.h>ncluderrno.h>ncludecntl.h>ncludetring.h>structFlie{inted; //判断是否正存放文件charf_na[8]; //文件名charf_c[8];//存放文件内容intatt;//文件属性0为只读//用于指向文件内容模块}fa[8],fg[8];intx; //全局变量/*文件块数据结构*///typedefstruct_Fileble//{// char*File; //文件名// intstrat; //文件在磁盘存储空间的起始地址// intlength; //文件内容长度// intxlength; //文件的最大长度// charFilend[3]; //文件的属性——读写方式//structtm*tiinfo;//openFlag; //判断是否有进程打开了该文件// struct_fileble*next;//}Fileble;structFile1{char*filena; //用户文件夹名intid; //文件夹编号};structFile1file[10]; //10个用户文件intI; //全局变量,用来控制用户文件数目intinit();//初始化界面voidcheck();//密码认证voidfileopera(); //文件操作intcontent(void); //目录操作voidadd_content(void); //创建目录voiddelete_content(); //删除目录voidcreatefile(); //创建文件操作voiddeletefile(); //删除文件的操作voidopenfile() ; //打开文件操作voiditefile(); //写文件voidcatalogue(); //目录管理子程序voidfyfile(); //修改属性操作voidcopyfile(); //复制文件操作intshow_content(inta,charargv[10]); //显示目录intin(void){while(1){intn;printf("******************************\n");printf("*******1.目录管理*********\n");printf("*******2.文件管理*********\n");printf("*******3.退出*********\n");printf("******************************\n");printf("请选择\n");scanf(",;stch(n){case1:content(); //调用目录管理函数break;case2:fileopera(); //调用文件管理函数case3:exit(0);default:printf("您的输入有误,退出!\n");printf("\n");}}}intcontent(void){while(1){intprintf("******************************\n");printf("*******1.创建目录*********\n");printf("*******2.删除目录*********\n");printf("*******3.显示目录*********\n");printf("*******4.退出 *********\n");printf("******************************\n");printf("请选择\n");scanf(",;stch({case1:add_content(); //创建目录break;case2:delete_content(); //删除目录break;case3:show_content(2,"/lii"); //显示目录break;case4://exit(0); //退出目录管理return0;default:printf("您的输入有误,退出!\n");return0;}}}voidadd_content(void){charptr[20];inta;while(I){if(I){printf("请输入您所要创建的主目录:\n");scanf("",ptr);a=dir(ptr,S_I|S_I|S_I|S_I|S_I|S_I;if(a){printf("主目录创建成功!\n");file[I.filena=ptr;break;}else{printf("目录创建失败!\n");break;}}printf("请输入您所要创建的用户目录:\n");scanf("",ptr);a=dir(ptr,S_I|S_I|S_I|S_I|S_I|S_I;if(a){printf("目录创建成功!\n");file[I.filena=ptr;break;}else{printf("目录创建失败!\n");break;}//将目录保存if(I>10)printf("已经有10个用户文件目录,不能再创建了!\n");}}//删除目录voiddelete_content(){R*dir;charptr[20];inta,i;printf("请输入你要删除的目录:\n");scanf("",ptr);for(i;i<10;i{if((strcfile[i.filena,ptr))){dir=opendir(ptr); //打开目录if(dir!{if(readdir(dir)){ar(ptr); //执行删除操作if(a){printf(" 目 录 删 除 成 功 !\n");I--;file[i.filenabreak;}else{printf("目录删除失败!\n");break;}}}else{printf("文件目录不存在!\n");break;}}else printf("没有该目录!");break;}}intshow_content(intargc,charargv[10]){R*dp;structdirent*dirp;intn=0;if(argc!=2){printf("asingleargntisrequired\n");exit(0);}if((dp=opendir(argv))printf("can'topen\n",argv);while(((dirp=readdir(dp))!=){printf("0s",dirp->d_na); //输出结果中有两个特殊的文件“.”和“..”其中文件“.”表示当前目录的入口,文件“..”表示父目录的入口}printf("\n");closedir(dp);}voidcheck()//密码认证{intcheck,a;charpin1[]an";//设定口令charpin[20];while(a){printf("****************************\n");printf(" * 文件管理系统用户登录*\n");printf("****************************\n");printf("请选择用户:\n");printf(" 1.nistrator 2.st 3.退出系统\n");scanf(",);if(x){break;}printf("密码");scanf("",pin);check=strcpin,pin1);if(check!){}else{

printf("\n密码错误!请从新输入:\n");a;}}}voidcreatefile()//创建文件操作{inthandle,a,check,i,j,h;charna[8],pin[8];printf("****************************\n");printf(" *创建文件*\n");printf("****************************\n");printf("请输入所以创建的文件名称:\n");scanf("",na);if(x){for(i;i;i{for(j;j;jpin[j]a[i].f_na[j];check=strcpin,na);if(check!){}else{printf("\n创建文件错误!文件已经存在!");handle;break;}}if(handle){for(h=0;h<8;if(fa[h].e){strcpy(fa[h].f_na,na);while(1){printf("\n请选择文件属性(0.只读-1.只写):");scanf(",);if(a||a){}else

fa[h].att;printf("\n创建文件成功.\n");fa[h].ed=1;break;printf("错误!请从新输入:\n");}break;}}}if(x){for(i;i;i{for(j;j;jpin[j]g[i].f_na[j];check=strcpin,na);if(check!){}else{printf("\n创建错误!文件已经存在!");handle;break;}}if(handle){for(h=0;h<8;if(fa[h].e){strcpy(fg[h].f_na,na);while(1){printf("\n请选择文件属性(0.只读-1.只写):");scanf(",);if(a||a){}else

fg[h].att;printf("\n创建文件成功.\n");fg[h].ed=1;//getchar();break;}break;}

printf("错误!请从新输入:\n");}}}voiddeletefile() //删除文件的操作{intstatus,j,i,check,choice;charna[8],pin[8];while(1){printf("****************************\n");printf(" * 删除文件*\n");printf("****************************\n");if(x){printf("请输入所要删除的文件名称:\n");scanf("",na); //输入要删除的文件printf("\n请确认(0-1):");scanf(",hoice);getchar();if(choice){for(i;i;i{for(j;j;jpin[j]a[i].f_na[j];check=strcpin,na);if(check!){}else{status;if(fa[i].att) //获取文件的状态,是否存在并且是否只读j;if(j){printf("\n删除错误!文件为只读文件!");//只读文件}elseif(j!) //从目录中删除一个文件{strcpy(fa[i].f_na," ");strcpy(fa[i].f_c," ");fa[i].ed=0;printf("\n删除文件成功.");}getchar();break;}}if(status!){printf("\n 删除错误! 所要删除的文件不存在!\n");/*λ/getchar();}}break;}if(x){printf("请输入所要删除的文件名称:\n");scanf("",na); //输入要删除的文件printf("\n请确认(0-1):");scanf(",hoice);getchar();if(choice){for(i;i;i{for(j;j;jpin[j]g[i].f_na[j];check=strcpin,na);if(check!){}else{status;if(fg[i].att) //获取文件的状态,是否存在并且是否只读j;if(j){printf("\n删除错误!文件为只读!");//只读文件}elseif(j!) //从目录中删除一个文件{strcpy(fg[i].f_na," ");strcpy(fg[i].f_c," ");fg[i].ed=0;printf("\n删除文件成功.");break;}getchar();break;}}if(status!){printf("\n删除错误!所要删除的文件不存在!");//文件不存在getchar();}}}break;}}voidopenfile() //打开文件操作{inti,a,j,check;charna[8],pin[8];printf("****************************\n");printf(" * 打开文件*\n");printf("****************************\n");printf("请输入您要打开的文件名称:\n");scanf("",na);getchar();if(x){for(i;i;i{for(j;j;jpin[j]a[i].f_na[j];check=strcpin,na);if(check!){}else{}}if(a!)

printf("",fa[i].f_c);a;printf("文件夹不存在!");getchar();}elseif(x){for(i;i;i{for(j;j;jpin[j]g[i].f_na[j];check=strcpin,na);if(check!){}else{}}if(a!)

printf("",fg[i].f_c);a;printf("文件不存在!");getchar();}}voiditefile()//写文件{inti,j,check,b=1;charch=0,a,na[8],c[8],pin[8];while(b){printf("****************************\n");printf(" * 书写文件*\n");printf("****************************\n");printf("输入要书写的文件名称:\n");scanf("",na);if(x){for(i;i;i//获取文件的状态{for(j;j;jpin[j]a[i].f_na[j];check=strcpin,na);if(check!){}else{if(fa[i].att){printf("书写错误!只读文件!\n");a;}b=0;

getchar();getchar();break;printf("请输入文件的内容:\n");scanf("",c);strcpy(fa[i].f_c,c);printf("文件书写成功.\n");a;getchar();getchar();break;}//break;}if(a!){printf("文件不存在!");getchar();getchar();break;}break;}getchar();if(x){for(i;i;i//获取文件的状态,是否存在{for(j;j;jpin[j]g[i].f_na[j];check=strcpin,na);if(check!){}else{if(fa[i].att){printf("书写文件错误!只读文件!\n");a;getchar();break;}printf("输入文件的内容:\n");scanf("",c);strcpy(fg[i].f_c,c);printf("书写文件成功.\n");a;getchar();getchar();break;}}if(a!){printf("文件不存在!");break;}}break;}}voidfyfile()//修改属性操作{intstatus,a,i,j,check;charchoice,na[8],pin[8];while(1){printf("****************************\n");printf(" * 修改属性*\n");printf("****************************\n");if(x){printf("请输入所要修改属性的文件的名称:\n");scanf("",na);getchar();for(i;i;i{for(j;j;jpin[j]a[i].f_na[j];check=strcpin,na);if(check!){}else{printf(".只读--1.只写n");printf("请选择文件属性:");while(1){scanf(",);getchar();if(x||)break;elseprintf("错误!请从新输入:\n");}fa[i].att;printf("修改属性成功.\n");status;break;}} //获取文件的状态if(status!){printf("错误!文件不存在!");getchar();printf("是否从新输入?(Y-\n");scanf("",hoice);getchar();if(choice||choicen')break;}getchar();break;}if(x){printf("请输入所要修改属性的文件的名称:\n");scanf("",na);getchar();for(i;i;i{for(j;j;jpin[j]g[i].f_na[j];check=strcpin,na);if(check!){}else{printf(".只读--1.只写n");printf("请选择文件属性:");while(1){scanf(",);getchar();if(x||)break;elseprintf("错误!请从新输入:\n");}fg[i].att;printf("修改属性成功.\n");break;}if(i){status;break;}} //获取文件状态if(status){printf("错误!文件不存在!");getchar();printf("是否从新输入?(Y-\n");scanf("",hoice);getchar();if(choice||choicen')break;}getchar();}}}voidcatalogue() //目录管理子程序{intn,a;charna[8];while(a) //目录管理操作{printf("********

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论