操作系统文件系统课程设计实验

上传人:zhu****ng 文档编号:164006343 上传时间:2022-10-24 格式:DOCX 页数:65 大小:195.51KB
返回 下载 相关 举报
操作系统文件系统课程设计实验_第1页
第1页 / 共65页
操作系统文件系统课程设计实验_第2页
第2页 / 共65页
操作系统文件系统课程设计实验_第3页
第3页 / 共65页
点击查看更多>>
资源描述
操作系统原理课程设计任务书题目:文件系统实现学生姓名: 学号: 班级:_ 题目类型:软件工程(R) 指导教师: 一、设计目的学生通过该题目的设计过程,可以初步掌握操作系统中有关文件系统的原理、软件开发方法并提高解决实际问题的能力。二、设计任务用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。三、设计要求1. 分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。2. 设计合适的测试用例,对得到的运行结果要有分析。3. 设计中遇到的问题,设计的心得体会。4. 文档:课程设计打印文档每个学生一份,并装在统一的资料袋中,资料袋前面要贴有学校统一的资料袋封面。 四、提交的成果1. 课程设计说明书内容包括(1) 封面(学院统一印制);(2) 课程设计任务书;(3) 中文摘要150字;关键词3-5个;(4) 目录;(5) 正文;(设计思想;各模块的伪码算法;函数的调用关系图;测试结果等)(6) 设计总结;(7) 参考文献;(8) 致谢等。注:每一部分是单独的一章,要另起一页写。2. 排版要求(1) 所有一级标题为宋体三号加粗(即上面写的28部分,单独一行,居中)(2) 所有二级标题为宋体四号加粗(左对齐)(3) 所有三级标题为宋体小四加粗(左对齐)(4) 除标题外所有正文为宋体小四,行间距为固定值22磅,每个段落首行缩进2字符(5) 目录只显示3级标题,目录的最后一项是无序号的“参考文献资料”。3. 其他要求(班长负责,务必按照以下方式建文件夹 )(1) 以班级为单位刻录光盘一张,光盘以班级命名,例如:“10级计算机科学与技术1班”;(2) 光盘内每人一个文件夹,以学号姓名命名如“10730101 陈映霞”,内容包括任务书、设计文档。五、各阶段时间安排(共2周)根据教学计划安排,于2015年12月8日 2015年12月19日安排为期二周的操作系统课程设计。周次日期内容地点完成情况教师签字第1周星期一二教师讲解设计要求查找参考资料教室图书馆星期三五算法设计,编程实现教室第2周星期一三算法设计,编程实现教室星期四五检查程序,答辩教室六、考勤、纪律及注意事项1每日准时教室设计,不得无故缺席、早退。2独立、按时完成课程设计任务,准时上交资料。七、主要参考文献1. 汤子瀛,哲凤屏.计算机操作系统M.西安:西安电子科技大学学出版社.1996年2. 王万森.计算机操作系统原理M.北京:高等教育出版社.2001年3. 周长林,左万历. 计算机操作系统教程M.北京:高等教育出版社.1994年4. 黄廷辉,王宇英.计算机操作系统实践教程M.北京:清华大学出版社. 2007年5月5. 殷兆麟.计算机操作系统M.北京:清华大学出版社.2007年3月 6. 张尧学,史美林,张高.计算机操作系统教程M.北京:清华大学出版社.1993年摘要文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。本次课程设计是为了让我深入了解文件系统的基本结构和学习文件的各种管理方法,加深理解文件系统的内部功能及内部实现,理解文件管理系统的工作过程,加深各种文件操作命令的实质内容和执行过程的了解,更加深刻的理解编程模拟一个简单的文件系统,以实现对文件系统的管理和控制功能,支持用户对自己文件创建、删除、打开、关闭、读取、写入等命令。关键字:文件系统;操作系统;1.1设计目的课程设计目的是熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用操作系统专业知识的能力。1.2设计内容1本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。2.系统使用create,open,read,write,close,delete, exit来创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。3程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UED)另外,为打开文件设置了运行文件目录(AFD)。4为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。1.3设计思想随着信息化进程,文件管理越来越受到重视,并且逐渐成为国内外业界研究的热点。在现有的操作系统中,几乎都是通过文件系统来组织和管理计算机中所存储的程序和数据等大量的文件。在现代OS中,几乎是通过文件系统来组织和管理在计算机中存储和大量程序和数据的,文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。而文件则是指具有文件名的若干相关元素的集合,元素通常是记录,而记录又是一组有意义的数据项的集合。通过分析,可知文件系统对大多数文件的操作,过程大致都是这样两步第一步是通过检索文件目录来找到指定文件的属性及其在外存上的位置.第二步是对文件实施相应的操作,如读文件或写文件。为了便于管理和控制文件,根据系统管理员或用户所规定的存取控制属性,将文件分为只读文件、读写文件和只执行文件三类。而文件系统的模型主要分为三个层次,分别是对象及其属性、对对象的操纵和管理的软件集合、文件系统接口,对象及其属性,中间层对对象进行操纵和管理的软件集合,最高层是文件系统提供给用户的接口。用户通过文件系统所提供的系统调用实施对文件的操作,如创建文件、删除无文件、读文件、写文件等,为了方便用户使用文件而提供了更多对文件的操作,如打开和关闭文件。1.4需求分析功能划分:本模拟系统主要针对文件的管理和操作名主要有:创建用户、文件、文件夹,读文件,写文件,执行文件,关闭文件,删除用户、文件夹、文件的功能。创建用户、文件、文件夹:在对系统发出操作命令之前必须先登录用户,然而登录之前必须创建该用户。在创建完后,可通过登录用户来创建文件和文件夹。在创建文件时可设置文件的属性和输入文件的内容。读文件:读取任何已创建的只读或读写文件的内容;如果所要读的文件不是可读文件时,系统会显示该文件不可读;如果所读文件不存在,系统会显示文件不存在。写文件用户可写或重写读写文件中的内容,并保存文件中的重写内容,以供下次读取;当所要写的文件不是可写的文件时,系统会显示该文件不可写;当所要写的文件并不存在时,系统会显示该文件不存在。执行文件:登录用户后,用户可执行系统中已创建的执行文件;当该文件不是可执行文件时,系统会显示该文件不可执行;当该文件不存在时,系统将会显示该文件不存在。关闭文件:可通过选择关闭文件的功能选项,来关闭系统中所有打开的文件,如果没有文件被打开,则系统会显示没有文件打开。删除用户、文件、文件夹:用户可通过选择删除的功能选项来删除不想再保存的文件和文件夹,删除后,用户会自动注销;当选择删除用户的功能选项时,系统会删除该用户,以及该用户所创建的所有文件和文件夹。1.5小组分工组长:苏颜回负责概述和概要设计两个模块并积极寻找各种书籍资料。组员:苏晓东负责程序详细设计,总结,参考文献,以及程序的调试,并将文档模块总合在一起。2概要设计2.1总体设计思路运行程序时,首先系统要进行初始化,然后等待输入操作类型,但是在创建用户之前,只能进行显示目录和退出的操作。当用户创建成功后,即可通过登录用户来创建文件和文件夹。在输入操作选项之后,必须先登录用户,当确认用户身份正确后,系统才能根据指定的命令进行操作,否则,不能进行操作,必须创建用户后,才能以该用户的身份进行操作。操作完之后,用户会自动退出,每发出一个操作命令,用户必须登录一次。只有在发出的命令是显示目录或退出或返回上级目录时,才不需要用户的登录。2.2总体流程图图2.1 总体流程图2.3部分子模块程序流程图(1)打开文件的程序流程图: 图2.2 打开文件流程图打开文件:首先输入文件名程序判断文件是否存在,若不存在程序错误提示,若存在則提示是否打开,打开文件程序运行完成。(2)关闭文件的程序流程图: 图2.3 关闭文件流程图关闭文件:可通过选择关闭文件的功能选项,来关闭程序中所有打开的文件,如果没有文件被打开,则程序错误提示。(3)写文件的程序流程图:图2.4 系统开始程序写文件:用户可写或重写读写文件中的内容,并保存文件中的重写内容,以供下次读取;当所要写的文件不是可写的文件时,系统会显示该文件不可写;当所要写的文件并不存在时,系统会显示该文件不存在。(4)删除文件的程序流程图:图2.5 删除文件流程图删除文件:用户可通过选择删除的功能选项来删除不想再保存的文件和文件夹,删除后,用户会自动注销;当选择删除用户的功能选项时,系统会删除该用户,以及该用户所创建的所有文件和文件夹。3详细设计3.1实现原理本程序是一个文件系统模拟程序,模拟文件管理的工作过程。本程序设计一个最多有10个用户的文件系统,实现文件系统的模拟管理过程,可以进行创建用户、删除用户、创建文件、删除文件、创建文件夹、删除文件夹、读文件、写文件、执行文件、打开文件、关闭文件、显示目录等操作。程序设置了主目录MFD、用户文件目录UFD和用户文件夹目录UDD,为打开文件设置了运行目录AFD。文件保护简单使用了保护码:只读为r,读写为wr,只执行为do,其他则表示不允许读写、执行。3.2数据结构说明Typedef struct fund是文件的数据结构,即用户文件目录。Typedef struct udd是文件夹的数据结构,即用户文件夹目录。Typedef struct mfd是用户的数据结构,即主文件目录。Typedef struct afd是运行中文件的数据结构。Typedef struct sfile是指向文件的索引节点的数据结构。3.2.1用户的数据结构typedef struct mfdchar username10;/*用户名*/struct ufd *link;/*指向该用户的第一个文件*/struct udd *clink;/*指向该用户的第一个文件夹*/用户的信息的结点,包含用户名、指向用户文件和文件夹的两个指针。所以的结点都存放在一个名字为file system的数组中。3.2.2文件夹的数据结构typedef struct uddchar foldername10;/*文件夹名*/struct ufd *clink;/*指向该文件夹的第一个文件*/struct udd *cnext;/*指向该文件夹的第一个文件夹*/struct udd *link;/*指向同级文件夹*/用来描述文件夹的信息的结点。3.2.3文件的数据结构typedef struct ufdchar filename10;/*文件名*/char filecon100;/*文件内容*/char procode8;/*属性*/int length;/*文件长度*/struct ufd *nextfile;/*指向下一个文件*/用来描述文件信息的数据结构,用户的文件结点用一条链链接在一起。3.2.4运行文件的数据结构typedef struct afd/*运行文件目录*/char filename10;/*打开文件名*/char filecon100;/文件内容char procode4;/属性int rwpointer;/*读写指针*/存放运行文件的信息,标示着某文件正在执行,当关闭文件时,释放结点。3.2.5共享文件的结点的数据结构typedef struct sfilechar username10; /用户名 struct ufd *file; /共享的文件struct sfile *next; /指向下一个共享文件的指针每一个文件都有一个共享的结点,该节点存放文件的信息、文件的创造者的名字和指向下一个共享文件的指针,所有文件的共享结点链接在一起,由share file指针指向该共享链。3.3重要函数说明void displayall file()是用于显示目录的函数;在实验中,我将创建的所有用户都存储在一个结点数组中,每个用户结点都有指向其文件和文件夹的指针,通过遍历结点数组来遍历用户,通过用户的指针来遍历用户的文件和文件夹。void create user()是用于创建用户的函数;将创建的用户以mfd结点的结构存储在file system数组中。int find username(char * username)是用户查找用户的函数,当找到函数时返回保存用户的节点的下标;当返回值大于等于用户个数时,表示找不到用户。void deleteuser()是用于删除用户的函数;在filesystem数组中寻找指定名字的用户,当找到该用户时,将用户从数组中删除,并将数组中该用户后面的其他用户的下标往前移一位,如果找不到指定用户,则输出:“用户不存在!删除失败!”。sfile* findsharefile(char *filename)是用于查找共享文件的函数,当找到共享文件锁时返回指向该文件的节点指针,如果找不到,则返回空。UFD * findfilename(char *filename,UFD *filepointer)是查找文件的函数,返回指向特定文件名的指针,或返回值为NULL。UDD * findfoldername(char *foldername,UDD *folderpointer)是查找文件夹的函数,返回指向特定文件名的指针,或返回值为NULL。void displayfile(UFD *link)是用于显示文件属性的函数。void createfile()是用于创建文件的函数;当要创建文件时,首先输入登录的用户名,如果该用户不存,输入是否创建用户,否则退出,是的话则创建用户,然后再创建文件;当用户存在时,则直接创建文件。创建文件时,若该登录的用户的文件中没有同名文件,则直接创建,否则输出:“文件名已存在,请输入新的文件名!”,通过输入新的文件名后再创建文件。创建一个文件,都会为文件创建一个共享结点,添加到共享链中。void createfolder()是用于创建文件夹的函数;首先输入登陆的用户名,然后再创建,步骤与穿件文件相似,只是没有共享结点。void deletefile()是用于删除文件的函数;首先查找文件所属用户,然后再查找文件,找到则删除,否则删除失败。void deletefolder()是用于删除文件夹的函数。AFD * openfile()是用于打开文件的函数,当找到文件时打开文件,创建该文件的运行文件结点,并返回;找不到文件时,返回值为NULL;当要打开一个文件之前,首先登录,如果登录的用户不存在则不能打开文件,如果用户存在,输入需要打开的文件名,如果用户没有创建该文件则寻找共享文件中是否存在其他用户创建的该文件,有则打开,为文件创建运行文件的结点,没有则输出不存在该文件。在对文件的所有操作之前都需要先调用该函数打开文件,才能进行操作。void closefile()是用于关闭文件的函数;关闭文件时释放文件的运行文件结点。void readfile()是用于读文件的函数;打开文件后首先判断文件是否可读,如果是可读文件则读出文件中的内容,否则输出文件不可读。void writefile()是用于写文件的函数;首先打开文件,判断文件是否可写。void executefile()是用于执行文件的函数。/菜单,即有关用户界面的函数void menu()是主菜单,程序执行时就会显示该菜单,初始化界面,并通过该菜单选择相应的功能选项。void menu1()是menu的子菜单,包含了所有的创建功能选项和返回上级菜单的选项;void menu2()是menu的子菜单,包含了所有的删除功能选项和返回上级菜单的选项;void menu3()是menu的子菜单,包含了对文件的各种操作选项、返回上级菜单的选项和显示目录的选项。4调试分析4.1测试结果图4.1创建用户、文件夹、文件: 从文件系统中找到存放文件的空间,在目录中为该文件添加新目录项读文件(read)给出文件名以及内存地址,用于存放读出的下一个文件块,文件系统查找目录,找到对应的文件目录项,系统保存一个读指针指出下一个操作开始的位置:读指针每个进程都不一样写文件(write) 给出文件名和需要写入文件的信息,文件系统查找目录,从文件目录项中找到文件的位置,文件系统保存了一个写指针,指出下一个写操作开始的位置。删除文件、用户(delete)查找文件的目录所在,找到给定文件名对应的目录项,释放文件所占用的所有空间,删除对应的目录或用户。4.2系统优缺点分析文件系统优点:保存形式外存,可随时更改;无需知道实际地址;既可顺序存取,也可直接存取;以记录为单位;界面明朗用户操作方便;文件系统缺点:数据重复时程序容易自动关闭,程序简单只能完成基本的操作,写入过于庞大的数据应用程序会崩溃。总 结通过做操作系统课程设计,怎样如何打开硬盘上的文件、如何读取硬盘上的文件、如何将创建的文件和文件夹保存到硬盘,通过百度、翻阅书籍查找资料,学习了如何打开文件、关闭文件、查找文件和删除文件的函数。用文件夹的方式保存用户,一个用户用一个文件夹来表示,这样就能把用户保存在硬盘上,但是如果为文件创建一个索引节点的话又该如何保存节点,而且如何保存保存指向节点的指针。想通了一个问题又有另一个问题出现,实在没办法,就只能用虚拟的形式来实现了。这次课程设计,我学习操作系统的文件系统,学会了调试之外,也更好地了解了文件系统和文件系统对文件的操作,如何实现共享,通过翻阅相关书籍和网上查询相关资料,了解了更多有关C的以前没用过的函数,也对VC+6.0有了进一步的了解。参考文献1. 汤子瀛计算机操作系统M.西安:西安电子科技大学学出版社.1996年2. 王万森.计算机操作系统原理M.北京:高等教育出版社.2001年3. 左万历. 计算机操作系统教程M.北京:高等教育出版社.1994年4. 黄廷辉,王宇英.计算机操作系统实践教程M.北京:清华大学出版社. 2007年5月5. 殷兆麟.计算机操作系统M.北京:清华大学出版社.2007年3月6. 史美林,张高.计算机操作系统教程M.北京:清华大学出版社.1993年致谢操作系统的课程设计马上要结束了,在操作系统课程设计期间,马老师和陈老师给了我极大的帮助,不断给我们指出错误,纠正错误,一遍遍不厌其烦的给我们修改代码,才使得我们能够在规定的时间内保质保量完成题目要求。同时也要感谢友好,乐于助人的同学帮助,给予我指导和帮助。通过和同学的共同努力,我深刻的认识到团队的力量就是知识,同时学习到了操作系统课程设计给我的启发和知识点的完善。通过老师的教导和提示,在本次课设中我学习到了很多东西,并通过查阅资料我学习到了操作系统更深层次的知识。附录:源程序#include#include#include#include#include#pragma winning(disable:4996)int choice; /*操作类型*/int ex,num;typedef struct ufdchar filename10;/*文件名*/char filecon100;/*文件内容*/char procode8;/*属性*/int length;/*文件长度*/struct ufd *nextfile;/*指向下一个文件*/*typedef struct uddchar foldername10;/*文件夹名struct ufd *clink;/*指向该文件夹的第一个文件struct udd *cnext;/*指向该文件夹的第一个文件夹struct udd *link;/*指向同级文件夹typedef struct mfdchar username10;/*用户名*/struct ufd *link;/*指向该用户的第一个文件*/struct udd *clink;/*指向该用户的第一个文件夹*typedef struct protected_flagchar code4;typedef struct afd/*运行文件目录*/char filename10;/*打开文件名*/char filecon100;char procode4;int rwpointer;/*读写指针*/PRO flag3=1,/*只读*/2,/*读写*/3/*可执行*/;UFD *rw_pointer;/*读写指针*/AFD *afd=NULL;MFD filesystem10;void displayallfile()int i;UFD *p;/*UDD *q;*/system(cls);/*清屏*/printf(t* * * * * * * * * * * * * * * *n);printf(tt显示目录n); printf(t* * * * * * * * * * * * * * * *n);for(i=0;ifilename);printf(文件属性: %st|,p-procode);printf(文件长度: %dn,p-length);p=p-nextfile;/*while(q) printf(t文件夹名: %sn,q-foldername);q=q-link;*/*-建立用户-*/void createuser()int i;char username10;system(cls);/*清屏*/printf(t* * * * * * * * * * * * * * * *n);printf(tt建立用户n); printf(t* * * * * * * * * * * * * * * *n);if(num=10)/*用户文件目录已满,创建文件失败*/printf(用户已满n创建文件失败!n);return;printf(输入用户名:n);scanf(%s,username);for(i=0;inum;i+)if (!strcmp(filesystemi.username,username)printf(用户名已存在,请输入新用户名!n);scanf(%s,username); strcpy(filesystemnum.username,username);num+;printf(用户已创建!n);/*-查找用户-*/int findusername(char * username)/返回用户名下标,当I=NUM时,用户不存在*/int i;i=0;while(i=num)printf(用户不存在!n删除失败!n);return ;elseprintf(是否删除用户%s及用户%s下所有东西?(y/n),filesystemi.username,filesystemi.username);cscanf(%c,&cs);if(cs=y)p1=p2=filesystemi.link;while(p2)p2=p2-nextfile;free(p1);p1=p2;for(i;ifilename)k=k-nextfile;return k;/*- 查找文件夹-*/*UDD * findfoldername(char *foldername,UDD *folderpointer)/返回指向特定文件名的指针,返回值或为k=folderpointer;while(k&strcmp(foldername,k-foldername)k=k-link;return k;/*-*/void displayfile(UFD *link)UFD *p;p=link;if(!p)printf(n此目录没有该文件!);return;printf(n用户文件如下:n);while(p)printf(%st|,p-filename);printf(%st|,p-procode);printf(%dnn,p-length);p=p-nextfile;/*-创建文件-*/void createfile()char cx;char username10;char filename10;int i,j;UFD *p1,*p2,*newfile;system(cls);/*清屏*/printf(t* * * * * * * * * * * * * * * *n);printf(tt创建文件n); printf(t* * * * * * * * * * * * * * * *n);if(num=10)/*用户文件目录已满,创建文件失败*/printf(用户文件目录已满n创建文件失败!n);return;printf(输入用户名:n);scanf(%s,username);i=findusername(username);/*返回用户名下标*/if(i=num)/*如果该用户不存在,且用户个数不小于10,先创建用户再建立用户文件*/printf(用户不存在,是否建立用户?(y/n);cscanf(%c,&cx); printf(n); if(cx=y)strcpy(filesystemnum.username ,username);/*创建用户目录*/num+;/*为刚创建的用户建立文件*/newfile =(UFD *)malloc(sizeof(UFD);newfile-nextfile=NULL;filesystemnum-1.link=newfile;printf(文件名:);scanf(%s,filesystemnum-1.link-filename);printf(属性(1只读,2读写,3可执行):);scanf(%s,filesystemnum-1.link-procode);printf(长度:);scanf(%d,&(filesystemnum-1.link-length);printf(文件已创建!n);elsereturn;else/*为已存在的用户建立文件*/p1=p2=filesystemi.link ;printf(输入文件名:);scanf(%s,filename);if(!p1)newfile=(UFD *)malloc(sizeof(UFD); newfile-nextfile=NULL; strcpy(newfile-filename,filename); printf(属性(1只读,2读写,3可执行):); scanf(%s,newfile-procode); printf(长度:); scanf(%d,&(newfile-length); filesystemi.link=newfile;else while(p2) if (!strcmp(p2-filename,filename) printf(文件名已存在,请输入新文件名!n); scanf(%s,filename); p1=p2;p2=p2-nextfile; newfile=(UFD *)malloc(sizeof(UFD); newfile-nextfile=NULL; strcpy(newfile-filename,filename); printf(属性(1只读,2读写,3可执行):); scanf(%s,newfile-procode); printf(长度:); scanf(%d,&(newfile-length); p1-nextfile=newfile;printf(文件已创建!n); printf(是否输入文件内容?(y/n);cscanf(%c,&cx);printf(n);if(cx=y)printf(请输入文件内容,用“#”键结束n);cscanf(%c,&newfile-filecon0);for(j=0;newfile-fileconj!=#;j+)cscanf(%c,&newfile-fileconj+1); newfile-length=j;elseprintf(n);/displayallfile();/*-创建文件夹-*/*void createfolder()char cx;char username10;char foldername10;int i;UDD *p1,*p2,*newfolder;system(cls);/*清屏printf(t* * * * * * * * * * * * * * * *n);printf(tt创建文件夹n); printf(t* * * * * * * * * * * * * * * *n);if(num=10)/*用户文件目录已满,创建文件夹失败printf(用户文件目录已满n创建文件失败!n);return;printf(输入用户名:n);scanf(%s,username);i=findusername(username);/*返回用户名下标*/*if(i=num)/*如果该用户不存在,且用户个数不小于10,先创建用户再建立用户文件夹*printf(用户不存在,是否建立用户?(y/n);cscanf(%c,&cx); printf(n); if(cx=y)strcpy(filesystemnum.username ,username);/*创建用户目录*/*num+;/*为刚创建的用户建立文件夹*newfolder =(UDD *)malloc(sizeof(UDD);newfolder-cnext=NULL;newfolder-clink=NULL;newfolder-link=NULL;filesystemnum-1.clink=newfolder;printf(文件夹名:);scanf(%s,filesystemnum-1.clink-foldername);printf(文件夹已创建!n);elsereturn;else/*为已存在的用户建立文件夹*p1=p2=filesystemi.clink ;printf(输入文件夹名:);scanf(%s,foldername);if(!p1)newfolder=(UDD *)malloc(sizeof(UDD);newfolder-cnext=NULL;newfolder-clink=NULL;newfolder-link=NULL; strcpy(newfolder-foldername,foldername); filesystemi.clink=newfolder;else while(p2) if (!strcmp(p2-foldername,foldername) printf(文件夹名已存在,请输入新文件夹名!n); scanf(%s,foldername); p1=p2;p2=p2-link; newfolder=(UDD *)malloc(sizeof(UDD);newfolder-cnext=NULL;newfolder-clink=NULL;newfolder-link=NULL; strcpy(newfolder-foldername,foldername); p1-link=newfolder;printf(文件夹已创建!n);/*-*/void displayuser()/显示用户目录*/int i;if(num=0)return;printf(n用户目录如下! );for(i=0;i=num)printf(用户不存在!n删除失败!);return ;elseprintf(n输入文件名:);scanf(%s,filename);p1=p2=filesystemi.link;while(p2&strcmp(p2-filename,filename)p1=p2;p2=p2-nextfile;if(!p2)printf(n文件不存在!n删除失败!n);else printf(是否删除文件%s?(y/n),p2-filename); cscanf(%c,&cy); if(cy=y)if(p1=p2)filesystemi.link=p1-nextfile; elsep1-nextfile=p2-nextfile;free(p2);printf(n文件已删除!n);elsereturn;/*-删除文件夹-*/*void deletefolder()int i;char cy;char username10;char foldername10;UDD *p1,*p2;system(cls);/*清屏*printf(t* * * * * * * * * * * * * * * *n);printf(tt删除文件夹n); printf(t* * * * * * * * * * * * * * * *n);printf(n输入用户名:n);scanf(%s,username);i=findusername(username);/*返回用户名下标*if(i=num)printf(用户不存在!n删除失败!);return ;elseprintf(n输入文件夹名:);scanf(%s,foldername);p1=p2=filesystemi.clink;while(p2&strcmp(p2-foldername,foldername)p1=p2;p2=p2-link;if(!p2)printf(n文件夹不存在!n删除失败!n);else printf(是否删除文件夹%s及文件夹%s下所有东西?(y/n),p2-foldername,p2-foldername); cscanf(%c,&cy); if(cy=y)if(p1=p2)filesystemi.clink=p1-link; elsep1-link=p2-link;free(p2);printf(n文件夹已删除!n);elsereturn;/*-打开文件-*/AFD * openfile()char username10;char filename10;int i;UFD *p=NULL; /*AFD *k=NULL;/为打开的文件设置了运行文件目录*/system(cls);/*清屏*/switch(choice)case 7:printf(t* * * * * * * * * * * * * * * *n); printf(tt读文件n); printf(t* * * * * * * * * * * * * * * *n);break;case 8:printf(t* * * * * * * * * * * * * * * *n); printf(tt写文件n); printf(t* * * * * * * * * * * * * * * *n);break;case 9:printf(t* * * * * * * * * * * * * * * *n); printf(tt执行文件n); printf(t* * * * * * * * * * * * * * * *n);break;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!