文件系统管理 C语言Word文件下载.docx
《文件系统管理 C语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《文件系统管理 C语言Word文件下载.docx(46页珍藏版)》请在冰豆网上搜索。
2.开始菜单的设计
开始界面总共设置7个可选功能,(创建,删除,编辑,初始化,浏览,关于及退出)
其中一些功能下面同时包含其他算法相同的功能;
(如创建,删除和编辑);
界面的总体设计以简洁为主,只显示有用信息,尽量避免花哨及一些不必要的输出语句;
功能的选择是使用switch语句;
3.目录的创建
目录的创建,同时也得伴随文本的输入输出保存功能;
目录下面包含文件,因此在创建目录的同时应该询问用户是否在此目录下创建文件;
1条目录创建完成后,应该根据用户的需要进行询问是否继续创建目录;
若需要则进行循环,不需要则运行下一步;
4.文件的创建
目录的创建,同时也得伴随文本的输入输出保存功能;
因为每条文件都从属于所对应的目录,因此在创建文件
之前询问用户是否为此条文件创建目录,或是在所有已
存在的目录中选择其中一条当作此文件所从属的目录;
一条文件创建完成后,应该根据用户的需要进行询问是
否继续创建文件;
若需要则进行循环,不需要则运行下
一步;
5.目录的删除
目录的删除应该伴随文本操作,首先应该从目录所在的文本文档中
读出相应数据,并把值赋给所创立的链表,然后根据用户所输入的
想要删除的目录的名称跟已经赋值的链表逐一进行匹配,当匹配到
时,锁定对应链表节,删除此链表节,然后以写的方式重新打开目录
的文本文档,重新在文本文档中打印删除对应链表节的链表,以此
删除所想删的目录;
同时应该考虑目录下面包含所属的文件,因此
删除目录的同时应该同时删除其底下的所有文件;
6.文件的删除
文件的删除应该伴随文本操作,首先应该从文件所在的文本文档中
想要删除的文件的名称跟已经赋值的链表逐一进行匹配,当匹配到
时,锁定对应链表节,删除此链表节,然后以写的方式重新打开文件
删除所想删的文件;
7.文件的编辑
文件的编辑应该伴随文本操作,首先应该从文件所在的文本文档中
想要编辑的文件的名称跟已经赋值的链表逐一进行匹配,当匹配到
时,锁定对应链表节,跟着请求用户输入此文件的最新信息,依据
所输入的信息对链表节进行修改,再以写的方式打开文本文档,最后
将修改后的链表打印在打开的文本文档中;
至此编辑所需修改的文件
信息;
8.目录的编辑
目录的编辑应该伴随文本操作,首先应该从目录所在的文本文档中
想要编辑的目录的名称跟已经赋值的链表逐一进行匹配,当匹配到
时,锁定对应链表节,跟着请求用户输入此目录的最新信息,依据
至此编辑所需修改的目录
9.初始化
初始化即是将目录和文件的文本文档里面的数据全部清零;
两个文本文档都以写的方式打开,则数据会清空;
短暂停留后
返回主菜单;
10.关于
输出关于课程设计的完成者的个人信息;
然后用getchar()吸收
用户下一步输入的任意操作,最后返回主菜单;
11.退出
使用exit(0)函数进行正常退出;
12.文件与目录的关联
此问题是解决此课程设计的关键问题,文件从属于目录,因此文件与目录
之间必存在某种联系,因此在创建文件和目录的结构体需要加上int型的i;
当作文件与目录之间的关联项;
其中每个目录之间的i必须要不同,但从属
于同一目录的文件之间的i必须相同;
考虑到当每次运行创建目录时,i的值
都必须是一个不同于其他目录的整型数,因此此处应该运用到文件保存功能;
当第一次运行此程序时,将i的值设为1,每创建一个目录,则i的值加一,
当用户终止创建目录时,将此时的i运用文件操作,写入独立的文本文档中。
当用户再次运行此程序时,将以读的方式打开原先储存的文本文档,读出i的值
停止创建目录后继续保存在文本文档中;
3.1程序实现时应考虑的问题
是
否
3.2主要源代码及说明
主函数:
intmain(void)
{
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"
请选择:
\n"
1.创建\n"
2.删除\n"
3.编辑\n"
4.初始化\n"
5.浏览\n"
6.关于\n"
7.退出\n"
scanf("
x);
}while(x<
1||x>
7);
switch(x)
case1:
do{
system("
cls"
printf("
请问你是想创建目录还是文件?
1.目录\n"
2.Î
文件\n"
3.返回\n"
scanf("
y);
}while(y<
1||y>
3);
if(y==1)
{
system("
是否创建目录(y/n)\n"
%c"
c);
while(c=='
y'
||c=='
Y'
)
{
system("
head=app(head,a);
printf("
是否在此目录下创建文件?
(y/n)\n"
scanf("
d);
while(d=='
||d=='
{
head1=app1(head1,a);
printf("
是否继续创建文件?
scanf("
}
是否继续创建目录?
a++;
}
fp1=fopen("
\\标记.txt"
w"
fprintf(fp1,"
a);
delem1(head1);
delem(head);
main();
}
if(y==2)
创建文件前请先创建目录或是写入已存在的目录下\n"
1先创建目录\n"
2.写入已存在的目录下\n"
j);
if(j==1)
是否创建目录?
while(c=='
head=app(head,a);
while(d=='
{
head1=app1(head1,a);
printf("
scanf("
}
delem1(head1);
a++;
fp1=fopen("
delem(head);
if(j==2)
d_show();
请输入目录名:
%s"
name);
k=biao(name);
是否在此条目录下创建文件?
l);
while(l=='
||l=='
head1=app1(head1,k);
delem1(head1);
if(j==3)
else
else
fclose(fp1);
break;
case2:
_delete();
case3:
compile();