您好,欢迎访问三七文档
东莞理工学院课程设计11问题要求及任务描述1.1题目要求1)问题描述模拟和实现一个小型文件系统,文件系统包括文件和目录两个内容,文件描述有文件的名称,长度和创建时间;目录描述包括目录名,子文件个数,子目录个数,目录创建时间,子文件和子目录。2)基本要求A、文件系统初始化B、文件的创建,删除和修改文件属性C、目录的创建,删除和目录属性的修改D、根据名字查找目录或文件1.2主要任务完成主函数和题目所要求的所有函数及附加功能的所有函数;调试每个函数的功能,发现并解决每个函数的缺陷之处;分析了解每个算法的思想并加以改善和提高;完成课程设计报告;从实际实践中学到一些知识,并总结不足之处,完善自己的知识面;2解决问题的主要思路和方法2.1关键问题及拟采用解决问题的方法1.了解题目的要求:此题包含了两个主要内容:目录和文件;理清两者之间的关系,应该是目录下面包含了文件,文件从属于目录;2.开始菜单的设计开始界面总共设置7个可选功能,(创建,删除,编辑,初始化,浏览,关于及退出)其中一些功能下面同时包含其他算法相同的功能;(如创建,删除和编辑);界面的总体设计以简洁为主,只显示有用信息,尽量避免花哨及一些不必要的输出语句;功能的选择是使用switch语句;3.目录的创建目录的创建,同时也得伴随文本的输入输出保存功能;目录下面包含文件,因此在创建目录的同时应该询问用户是否在此目录下创建文件;一条目录创建完成后,应该根据用户的需要进行询问是否继续创建目录;若需要则进行循环,不需要则运行下一步;东莞理工学院课程设计24.文件的创建目录的创建,同时也得伴随文本的输入输出保存功能;因为每条文件都从属于所对应的目录,因此在创建文件之前询问用户是否为此条文件创建目录,或是在所有已存在的目录中选择其中一条当作此文件所从属的目录;一条文件创建完成后,应该根据用户的需要进行询问是否继续创建文件;若需要则进行循环,不需要则运行下一步;5.目录的删除目录的删除应该伴随文本操作,首先应该从目录所在的文本文档中读出相应数据,并把值赋给所创立的链表,然后根据用户所输入的想要删除的目录的名称跟已经赋值的链表逐一进行匹配,当匹配到时,锁定对应链表节,删除此链表节,然后以写的方式重新打开目录的文本文档,重新在文本文档中打印删除对应链表节的链表,以此删除所想删的目录;同时应该考虑目录下面包含所属的文件,因此删除目录的同时应该同时删除其底下的所有文件;6.文件的删除文件的删除应该伴随文本操作,首先应该从文件所在的文本文档中读出相应数据,并把值赋给所创立的链表,然后根据用户所输入的想要删除的文件的名称跟已经赋值的链表逐一进行匹配,当匹配到时,锁定对应链表节,删除此链表节,然后以写的方式重新打开文件的文本文档,重新在文本文档中打印删除对应链表节的链表,以此删除所想删的文件;7.文件的编辑文件的编辑应该伴随文本操作,首先应该从文件所在的文本文档中读出相应数据,并把值赋给所创立的链表,然后根据用户所输入的想要编辑的文件的名称跟已经赋值的链表逐一进行匹配,当匹配到时,锁定对应链表节,跟着请求用户输入此文件的最新信息,依据所输入的信息对链表节进行修改,再以写的方式打开文本文档,最后将修改后的链表打印在打开的文本文档中;至此编辑所需修改的文件信息;8.目录的编辑目录的编辑应该伴随文本操作,首先应该从目录所在的文本文档中东莞理工学院课程设计3读出相应数据,并把值赋给所创立的链表,然后根据用户所输入的想要编辑的目录的名称跟已经赋值的链表逐一进行匹配,当匹配到时,锁定对应链表节,跟着请求用户输入此目录的最新信息,依据所输入的信息对链表节进行修改,再以写的方式打开文本文档,最后将修改后的链表打印在打开的文本文档中;至此编辑所需修改的目录信息;9.初始化初始化即是将目录和文件的文本文档里面的数据全部清零;两个文本文档都以写的方式打开,则数据会清空;短暂停留后返回主菜单;10.关于输出关于课程设计的完成者的个人信息;然后用getchar()吸收用户下一步输入的任意操作,最后返回主菜单;11.退出使用exit(0)函数进行正常退出;12.文件与目录的关联此问题是解决此课程设计的关键问题,文件从属于目录,因此文件与目录之间必存在某种联系,因此在创建文件和目录的结构体需要加上int型的i;当作文件与目录之间的关联项;其中每个目录之间的i必须要不同,但从属于同一目录的文件之间的i必须相同;考虑到当每次运行创建目录时,i的值都必须是一个不同于其他目录的整型数,因此此处应该运用到文件保存功能;当第一次运行此程序时,将i的值设为1,每创建一个目录,则i的值加一,当用户终止创建目录时,将此时的i运用文件操作,写入独立的文本文档中。当用户再次运行此程序时,将以读的方式打开原先储存的文本文档,读出i的值停止创建目录后继续保存在文本文档中;东莞理工学院课程设计43.1程序实现时应考虑的问题3.2主要源代码及说明主函数:intmain(void)开始创建删除编辑初始化浏览关于退出目录文件文件目录文件目录是否继续创建是否继续编辑是否继续删除是是是是是是开始开始开始否否否东莞理工学院课程设计5{intx,y=0;intj=0,k=0,m;inta;charc,d,l;charname[10];structdirectory*head=NULL,*p=NULL,*pr=NULL;struct_file*head1=NULL,*p1=NULL,*pr1=NULL;FILE*fp=fopen(e:\\标记txt,r),*fp1;if(fp==NULL){a=1;}else{fscanf(fp,%d,&a);}system(colorf4);do{printf(欢迎使用文件系统\n);printf(请选择:\n);printf(1.创建\n);printf(2.删除\n);printf(3.编辑\n);printf(4.初始化\n);printf(5.浏览\n);printf(6.关于\n);printf(7.退出\n);scanf(%d,&x);}while(x1||x7);switch(x){东莞理工学院课程设计6case1:do{system(cls);printf(请问你是想创建目录还是文件?\n);printf(1.目录\n);printf(2.Î文件\n);printf(3.返回\n);scanf(%d,&y);}while(y1||y3);if(y==1){system(cls);printf(是否创建目录(y/n)\n);scanf(%c,&c);while(c=='y'||c=='Y'){system(cls);head=app(head,a);printf(是否在此目录下创建文件?(y/n)\n);scanf(%c,&d);while(d=='y'||d=='Y'){head1=app1(head1,a);printf(是否继续创建文件?(y/n)\n);scanf(%c,&d);}printf(是否继续创建目录?(y/n)\n);scanf(%c,&c);a++;}fp1=fopen(e:\\标记.txt,w);fprintf(fp1,%d,a);delem1(head1);东莞理工学院课程设计7delem(head);main();}if(y==2){system(cls);printf(创建文件前请先创建目录或是写入已存在的目录下\n);printf(1先创建目录\n);printf(2.写入已存在的目录下\n);printf(3.返回\n);scanf(%d,&j);if(j==1){printf(是否创建目录?(y/n)\n);scanf(%c,&c);while(c=='y'||c=='Y'){head=app(head,a);printf(是否在此目录下创建文件?(y/n)\n);scanf(%c,&d);while(d=='y'||d=='Y'){head1=app1(head1,a);printf(是否继续创建文件?\n);scanf(%c,&d);}delem1(head1);printf(是否继续创建目录?(y/n)\n);scanf(%c,&c);a++;}fp1=fopen(e:\\标记.txt,w);fprintf(fp1,%d,a);delem(head);东莞理工学院课程设计8}if(j==2){d_show();printf(请输入目录名:\n);scanf(%s,&name);k=biao(name);printf(是否在此条目录下创建文件?(y/n)\n);scanf(%c,&l);while(l=='y'||l=='Y'){head1=app1(head1,k);printf(是否继续创建文件?\n);scanf(%c,&l);}delem1(head1);}main();if(j==3){main();}else{main();}}elsemain();fclose(fp1);break;case2:system(cls);东莞理工学院课程设计9_delete();break;case3:system(cls);compile();break;case4:l_in();main();break;case5:system(cls);printf(1\n);printf(ÊäÈë2²é¿´Îļþ\n);scanf(%d,&m);if(m==1){printf(Ŀ¼\n);d_show();printf(ÈÎÒâ¼ü·µ»Ø\n);getchar();getchar();system(cls);main();}if(m==2){printf(Îļþ\n);f_show();printf(ÈÎÒâ¼ü·µ»Ø\n);getchar();getchar();system(cls);main();东莞理工学院课程设计10}elsemain();break;case6:system(cls);printf(数据结构课程设计n);printf(文件系统的实现\n);printf(软件工程2班\n);printf(201241404207\n);printf(刘春涛n\n\n);printf(任意键返回\n);getchar();getchar();main();break;case7:system(cls);printf(感谢使用!再见!\n);Sleep(1000);exit(0);break;default:main();}}在主函数中,用户可以根据自己的需要,选择相应的功能;创建目录函数:structdirectory*app(structdirectory*head,intj){structdirectory*p=NULL;structdirectory*pr=head;charname[10];intyear;东莞理工学院课程设计11intmonth;intday;inta=j;FILE*fp=fopen(e:\\目录.txt,a+);p=(structdirectory*)malloc(sizeof(structdirectory));if(fp==NULL){printf(´ò¿ª´íÎó!);exit(0);}else{system(cls);if(p==NULL){printf(打开错误!/n);exit(0);}if(head==NULL){head=p;}else{while(pr-next!=NULL){pr=pr-next;}pr-next=p;}pr=p;printf(请输入目录的:\n);printf(名称:\n);scanf(%s,&name);东莞理工学院课程设计12strcpy(pr-name,name);printf(创建时间:年,月,日:\n\n);scanf(%d%d%d,&year,&month,&day);pr-year=year;pr-month=month;pr-day=day;pr-i=a;fpr
本文标题:文件系统管理C语言
链接地址:https://www.777doc.com/doc-2336577 .html