文件管理实验4Word文件下载.docx
《文件管理实验4Word文件下载.docx》由会员分享,可在线阅读,更多相关《文件管理实验4Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
![文件管理实验4Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/24/448b3519-eccc-4c08-96df-75d68588441f/448b3519-eccc-4c08-96df-75d68588441f1.gif)
//文件长度
charfpw[20];
//文件保护码
structUserFile*link;
//全局变量
intshoudsave;
//存储标记
intusingnum;
//当前用户标记
structMasterFileMFD[20];
//主目录
structUserFileUFD[20][20];
//用户目录
//寻找主目录空闲区
structMasterFile*MoveMFDToLast()
{
for(inti=0;
i<
20;
i++){
if(MFD[i].flag==0)
usingnum=i;
return&
MFD[i];
}
returnNULL;
}
//查找用户
structMasterFile*SearchMFD(charstr[]){
if(strcmp(str,MFD[i].username)==0){
return&
}
//寻找用户目录空闲区
structUserFile*MoveUFDToLast(){
if(UFD[usingnum][i].flag==0)
UFD[usingnum][i];
//查找用户文件
structUserFile*SearchUFD(intnum){
if(UFD[usingnum][i].fnum==num)
//删除用户文件目录
voidLeftMoveUFD(intnum){
if(UFD[usingnum][i].fnum==num){
for(intj=i;
j<
19;
j++){
UFD[usingnum][i].flag=UFD[usingnum][i+1].flag;
UFD[usingnum][i].flength=UFD[usingnum][i+1].flength;
strcpy(UFD[usingnum][i].fname,UFD[usingnum][i+1].fname);
UFD[usingnum][i].fnum=UFD[usingnum][i+1].fnum;
strcpy(UFD[usingnum][i].fpw,UFD[usingnum][i+1].fpw);
UFD[usingnum][i].link=UFD[usingnum][i+1].link;
}
//用户登陆
voidLogin(){
charflag1,flag2,flag3;
charstr1[20],str2[20],str3[20],str4[20];
structMasterFile*p;
printf("
你是已有用户吗(y/n)?
"
);
scanf("
%s"
&
flag1);
if(flag1=='
n'
){//新用户登录
printf("
请创建新的用户:
(y/n)"
scanf("
flag2);
if(flag2=='
){
printf("
你已退出了系统!
\n"
exit
(1);
}else{
请输入你的用户名:
scanf("
str1);
请输入口令:
str2);
p=MoveMFDToLast();
strcpy(p->
username,str1);
password,str2);
p->
flag=1;
%d"
MFD[usingnum].flag);
next=NULL;
shoudsave=1;
}else{//旧用户登录
while
(1){
//输入用户名
str3);
p=SearchMFD(str3);
if(p==NULL){
printf("
对不起,你输入的用户名不存在!
继续(y)还是放弃(n)?
scanf("
flag3);
if(flag3=='
y'
)continue;
else{
printf("
exit
(1);
}
}else{
while
(1){
//输入口令
scanf("
str4);
if(strcmp(str4,p->
password)!
=0){
printf("
对不起,你输入的口令不正确,请重新输入.\n"
continue;
}elsebreak;
}break;
//菜单
voidmenu(){
\n********************************************************************************"
\t1列文件目录\t\t\t\t\t2创建文件\n"
\t3删除文件\t\t\t\t\t4读文件\n"
\t5写文件\t\t\t\t\t\t0退出系统\n"
********************************************************************************\n"
//列文件目录
voidDir(){
if(MFD[usingnum].next==0)
目前你不存在任何文件!
else{
for(inti=0;
if(UFD[usingnum][i].flag==1)
文件编号\t%d\t文件名\t%s\t文件长度\t%d\t保护码\t%s\n"
UFD[usingnum][i].fnum,UFD[usingnum][i].fname,UFD[usingnum][i].flength,UFD[usingnum][i].fpw);
//创建文件
voidCreate(){
FILE*fp;
intnum;
structUserFile*f;
charstr1[20],str2[20];
请输入你要创建的文件名:
//输入文件信息
请输入文件编号:
num);
请输入文件保护码:
fp=fopen(str1,"
w"
//创建文件
f=MoveUFDToLast();
//寻找用户目录空闲区
if(&
UFD[usingnum][0]==f)//连接主目录
MFD[usingnum].next=(structMasterFile*)f;
f->
link=(structUserFile*)fp;
//设置用户目录
MFD[usingnum].next=(structMasterFile*)&
UFD[usingnum][0];
strcpy(f->
fname,str1);
fpw,str2);
fnum=num;
flength=0;
fclose(fp);
shoudsave=1;
//设置存储标记
文件已创建!
//删除文件
voidDelete(){
请输入你要删除的文件编号:
f=SearchUFD(num);
//查找用户文件
if(f==NULL){
你要删除的文件不存在!
}else{
LeftMoveUFD(num);
//删除用户文件目录
文件已删除!
//读文件
voidRead(){
charch;
请输入你要读的文件的编号:
//查找文件
if(f==NULL){
你输入的文件不存在!
if((fp=fopen(f->
fname,"
r"
))==NULL){//打开指定文件
不能打开该文件!
exit(0);
ch=fgetc(fp);
//输出文件内容
while(ch!
=EOF){
putchar(ch);
ch=fgetc(fp);
//关闭文件
文件已读完毕!
//写文件
voidWrite(){
请输入你要写的文件的编号:
wr"
请按字符输入内容(以'
#'
表示结束符)"
//写入文件
ch);
='
fwrite(&
ch,1,1,fp);
文件写入完毕!
//保存
voidSave(){
FILE*fpm,*fpu;
intflag=1,count=0;
fpm=fopen("
F:
\\MasterFile.txt"
"
wb"
//打开主文件
if(fpm==NULL){
\n提示:
重新打开主文件信息文件时发生错误!
exit
(1);
i++)
MFD[i],sizeof(structMasterFile),1,fpm);
//保存主文件目录信息
fclose(fpm);
主文件目录信息保存完毕!
fpu=fopen("
\\UserFile.txt"
//打开用户文件
if(fpu==NULL){
重新打开用户目录信息文件时发生错误!
for(intj=0;
j++)//保存用户文件目录信息
UFD[j],sizeof(structUserFile),20,fpu);
fclose(fpu);
用户文件目录信息保存完毕!
//主函数
intmain(){
\n\n\t\t*********************************************\t\t\n"
\t\t\t\t实验四文件管理\n"
\t\t*********************************************\t\t\n"
\n\n\n\t\t\t\t\t计算机1206\n"
\t\t\t\t\t王成义\n"
\t\t\t\t\t1030412612\n"
\t\t\t\t\t完成时间:
2015/5/28\n\n\n\n"
\t\t\t\tWelcome\n\n"
//文件指针
intsel;
charjian;
\t\t\t\t文件管理系统\n\t\t\t\t\n"
D:
rb"
//打开主文件目录信息文件
if(fpm==NULL){
主文件目录信息文件还不存在,是否创建?
(y/n)\n"
jian);
if(jian=='
||jian=='
Y'
)
fpm=fopen("
//创建主文件目录的文件
elseexit(0);
//打开用户文件目录信息文件
用户文件目录信息文件还不存在,是否创建?
fpu=fopen("
//创建用户文件目录的文件
文件正在打开,请稍等..."
i++)//读取主文件目录信息
fread(&
//将文件的内容放入接点中
//关闭文件
while(!
feof(fpu)){//读取用户目录文件信息
if(fread(&
UFD[i][0],sizeof(structUserFile),20,fpu))//将文件的内容放入接点中
MFD[i].next=(structMasterFile*)&
UFD[i][0];
\n文件已导入完毕!
Login();
//用户登录
while
(1){//菜单操作
menu();
请你选择操作:
sel);
if(sel==0){//保存文件信息
if(shoudsave==1){
getchar();
\n资料已经改动,是否将改动保存到文件中(y/n)?
%c"
if(ch=='
||ch=='
Save();
\n你已经退出系统,再见!
break;
switch(sel){
case1:
Dir();
//列文件目录
case2:
Create();
case3:
Delete();
//删除文件
case4:
Read();
//读文件
case5:
Write();
//写文件
default:
你输的选项有误,请重新输入!
system("
PAUSE"
return0;
}
5.运行情况
6.实验体会
通过编写和调试此次文件系统,加深了对各种文件操作命令的实质内容和执行过程的了解。
对文件系统有了更深的了解。
教师评价
优
良
中
及格
不及格
教师签名
日期