基于Linux的文件系统设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

无敌操作系统课程设计说明书学院、系:软件学院专业:软件工程学生姓名:学号:设计题目:基于Linux的模拟文件系统的设计与实现起迄日期:指导教师:11.需求分析1.1功能介绍基于Linux的模拟文件系统的设计与实现完成以下功能:(1)创建用户:创建多个用户,输入用户名;每个用户最多可以保存多个文件。(2)用户登录:手动的登录已经创建的用户,正确输入用户名即可成功登录。(3)创建二级文件目录(MD):手动的输入目录名称,(即设置主目录(MFD)和用户文件目录(UFD))。(4)显示目录(show_content):将用户创建的目录显示在界面上。(5)删除目录(delete_content):手动输入目录的名称即可删除已经创建的目录。(6)进入目录:进入目录内部,可以进行文件的各种操作。(7)复制目录(modify_content):在用户登录后,输入要修改的目录名称,对其进行修改,输入新的目录名并保存。(8)建立一个文件(create):在目录中手动输入文件名,可以创建新的文件,在创建的同时输入文件的保护码,对文件内容进行保护,防止信息泄露。2(9)删除一个文件(delete):手动输入已经创建的文件的名称,即可删除此文件。(10)写文件(write):手动的在文件中写入内容。(11)读文件(read):查看文件中的已经写入的内容。(12)修改文件属性(modifyfile):通过修改属性改变文件类型。基于其低廉成本与高度可设定性,Linux常常被应用于嵌入式系统,例如机顶盒、移动电话及行动装置等。在移动电话上,Linux已经成为与SymbianOS、WindowsMobile系统并列的三大智能手机操作系统之一;而在移动装置上,则成为WindowsCE与PalmOS外之另一个选择。目前流行的TiVo数位摄影机使用了经过定制化后的Linux。此外,有不少硬件式的网络防火墙及路由器,例如部份LinkSys的产品,其内部都是使用Linux来驱动、并采用了操作系统提供的防火墙及路由功能。1.2目的及意义Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Window图形用户界面,如同我们使用WindowsNT一样,允许3我们使用窗口、图标和菜单对系统进行操作。Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操作系统的人都可以从Linux中获益。在Linux操作系统中实现文件的各种操作,即创建、删除、修改、写入、读取等。基于Linux的模拟文件系统的设计与实现,实现了采用用户登录机制,可以查看文件信息,管理文件及文件夹。在界面中用户可以手动的进行操作,每一步都有操作成功或失败的提示,清晰的展示每一步的操作过程,用户可以方便的实现对文件的操作,例如:创建、修改、删除等。经过几天的努力完成了基于Linux的模拟文件系统的设计与实现这一课题,按照具体的要求,将每个功能实现并附上温馨提示,主要的功能有:展示了添加用户、用户登录、创建二级目录、修改目录名、删除目录、显示全部目录、创建文件、修改文件名、删除文件、写入文件、读取文件等功能。1.3设计成果基于Linux的模拟文件系统的设计与实现,实现了采用用户登录机制,可以查看文件信息,管理文件及文件夹。在界面中用户可以手动的进行操作,每一步都有操作成功或失败的提示,清晰的展示每一4步的操作过程,用户可以方便的实现对文件的操作,例如:创建、修改、删除等。经过几天的努力完成了基于Linux的模拟文件系统的设计与实现这一课题,按照具体的要求,将每个功能实现并附上温馨提示,主要的功能有:展示了用户登录、创建二级目录、修改目录名、删除目录、显示全部目录、创建文件、修改文件名、删除文件、写入文件、读取文件等功能。2.总体设计2.1功能介绍本系统包括用户管理、目录管理、文件管理共3个模块。在用户管理模块中,包括创建用户,输入用户名;用户登录等功能。在目录管理模块中,包括创建二级文件目录,输入文件的目录名称;显示目录,输入文件目录的名字,显示出对应的目;删除目录;进入目录主要是为了操作目录内部的文件。文件管理模块,包括文件的创建,在进入目录后可以按照提示输入文件的名称,输入密码,创建新的文件并添加文件的保护码;打开一个文件,在目录中按照提示输入文件的名称,便可以打开目录中对应的文件;打开全部文件,进入目录后,按照提示输入相应的操作,即可打开本目录下所有的文件;删除一个文件,进入目录按照提示选择相应的操作,输入文件名称,即可删除此文件;写入文件,在目录中打开一个文件,写入内容;读取文件,在目录中打开文件,查看文件的内容。修改保护码,进入目录输入文5件的名称,按照提示修改文件的保护码。形象展示见下图2.1:图2.12.2模块关联在系统中各个模块之间有着一定的联系,系统中创建多个用户,每一个用户可以创建多个目录,在目录中最多创建10个文件。用户与目录之间存在一对多的关系,目录与文件之间也存在一对多的关系,用户与文件之间也存在一对多的关系。具体描述见下图:创建用户用户登录创建目录显示目录删除目录创建文件打开一个文件打开全部文件删除一个文件写入文件基于Linux的模拟文件系统的设计与实现用户管理目录管理文件管理读取文件6图2.2图2.3nn111n用户名目录用户目录名文件属性文件名文件文件内容是否显示删除打开删除创建读取写入用户登录验证创建目录创建文件用户退出7图2.43.详细设计3.1文件的复制intcopy_file(){charfrom[20];charto[20];printf(请输入源目录:\n);scanf(%s,from);printf(请输入目标目录:\n);scanf(%s,to);charbuffer[1024];//缓冲区是否遍历i节点区要删除的文件是否存在释放文件对应的i节点区释放两个磁盘块文件是否大于的一块释放一个磁盘块是否开始结束删除文件8FILE*in,*out;//文件流if((in=fopen(from,r))==NULL){//fopen打开文件,指向该流的文件指针就会被返回printf(源文件不存在,请检查路径输入是否存在!\n);exit(1);}if((out=fopen(to,w+))==NULL){//打开目标文件的文件流printf(创建目标文件流失败!\n);exit(1);}intlen;//len为fread读到的字节长while((len=fread(buffer,1,1024,in))0){//从源文件中读取数据并放到缓冲区中fwrite(buffer,1,len,out);//将缓冲区的数据写到目标文件中}fclose(out);fclose(in);return0;}3.2文件的权限查看voidpower(){9charptr[20];inta,b;printf(请输入您要查看的文件名!\n);scanf(%s,ptr);a=access(ptr,R_OK);b=access(ptr,W_OK);if(a==0)printf(拥有读%s的权限!\n,ptr);elseprintf(不拥有读%s的权限!\n,ptr);if(b==0)printf(拥有写%s的权限!\n,ptr);elseprintf(不拥有写%s的权限!\n,ptr);structstatst;if(stat(ptr,&st)==-1){perror(stat);}else{printf(文件所有者UID=%ld\n,(long)st.st_uid);printf(文件创建时间%s,ctime(&st.st_ctime));}}103.3文件的删除voiddelete_file(){charptr[20];printf(请输入您要删除的文件名\n);scanf(%s,ptr);if(unlink(ptr)==1){printf(文件删除失败\n);}else{printf(文件删除成功\n);}}4.运行截图4.1文件的删除:图4.1114.2查看文件权限图4.24.3复制文件图4.3125.心得体会通过本次课程设计我对文件系统有了更深的了解。在现代操作系统中,几乎毫无例外地是通过文件系统来组织和管理在计算机中所存储的大量程序和数据的。此次课程设计实现的文件系统主要是通过其管理功能来呈现给大家的。我们从网上找了很多资料,参照网上的资料编写程序代码。那些链表指针修改的顺序稍微不对功能就可能实现不了甚至是整个程序都会出错。任何程序都离不了增删改查四个基本操作,我们此次的课程设计也如此。性,任何程序的运行都离不开操作系统。文件系统,其实就存在于我们的生活当中。以前很多人都说学校里学到知识不实用,但我看不然,学校知识与我们的生活息息相关,在学校认真学习知识,在以后的工作和生活中都会用到。13附录:#includesys/stat.h//调用系统函数#includesys/types.h#includestdio.h#includeunistd.h#includedirent.h#includestdlib.h#includeerrno.h#includefcntl.h#includestring.h#includetime.hvoidadd_content();voiddelete_content();//创建目录voidadd_content(){charptr[20];inta;printf(请输入您要创建的目录的名字!\n);scanf(%s,ptr);a=mkdir(ptr,S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);14if(a==0)printf(创建成功\n);elseprintf(该目录已经存在,创建失败\n);}voidcd_content(){charcurdir[30];//当前目录chardirname[10];//改变目录printf(当前路径为:\n);strcpy(curdir,getcwd(NULL,0));printf(%s\n,curdir);printf(请输入改变的目录\n);scanf(%s,dirname);if(chdir(dirname)==0){printf(进入子目录成功,);//改变目录strcat(curdir,/);//连接strcat(curdir,dirname);printf(改变后的目录为:\n);printf(%s\n,curdir);}15else{printf(该子目录不存在!请核对后输入。\n);}}voidrcd_content(){charcurdir[500]={'\0'};//当前目录chardirname[500]={'\0'};//改变目录printf(当前路径为:\n);strcpy(curdir,getcwd(NULL,0));printf(%s\n,curdir);inti=499,n=0;for(;i=0;i--){if(curdir[i]=='/')break;}for(;ni;n++){dirname[n]=curdir[n];}if(chdir(dirname)==0){16printf(返回上级目录成功!\n);printf(当前路径为:\n%s\n,dirname);}else{printf(返回上级目录失败\n);}}//删除目录voiddelete_content(){charptr[20];printf(请输入您要删

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功