#include
struct linkf
{char username[16];
struct links *next;
};
struct linkr
{char name[16];
int sex;
struct linkr *next;
};
struct links
{char filename[16];
struct linkr *headlink;
int length;
struct links *next;
};
struct linkt
{char filename[16];
int flag;
int length;
struct linkr *headlink;
struct linkt *next;
};
struct linkf mfd[5];
struct links *ufd,*p2,*q2;
struct linkr *p,*q;
struct linkt *afd,*p3,*q3;
char X[16],s,username[16];
int r,i,w,n,m,j,t,flag;
void print1()
{int i,j;
printf("\n MFD:\n");
printf("----------------\n");
for(i=0;i
{printf("| %s",mfd.username);
printf("\n----------------\n");
}
}
void print2()
{int i;
for(i=0;i
if (flag==i && ufd!=NULL)
{printf("\n MFD__[%s]\n",mfd.username);
p2=mfd.next;
printf("+_UFD-Filename_+_ Length _+\n");
while(p2!=NULL)
{printf("|%10s | %4d |\n",p2->filename,p2->length);
p2=p2->next;
printf("+--------------+--------------+\n");
}
}
if(ufd==NULL) printf("\nUFD_[%s] is NULL\n",username);
if(afd!=NULL)
{p3=afd;
printf("\n\nAFD_[%s]\n",username);
printf("+-----Filename-----+----length---+\n");
while(p3!=NULL)
{printf("|%12s | %d |\n",
p3->filename,p3->length);
p3=p3->next;
printf("+------------------|-------------+\n");
}
}
else printf("\n\nAFD_[%s] is NULL\n",username);
}
void print3()
{int i;
char sex[8];
p3=afd;
printf("Input printing-filename:"); scanf("%s",X);
if(p3!=NULL)
{while((strcmp(p3->filename,X)!=0)&&(p3->next!=NULL))
p3=p3->next;
if(strcmp(p3->filename,X)!=0)
printf("The file hasn't opened!\n");
else
if(p3->headlink==NULL) printf("The file is NULL!\n");
else {p=p3->headlink; i=1;
printf("| num | name | sex |\n");
printf("---------------------------------------\n");
while (p!=NULL)
{if(p->sex==1) strcpy(sex,"man");
else strcpy(sex,"woman");
printf("|%5d |%10s | %6s |\n",
i,p->name,sex);
i++; p=p->next;
printf("---------------------------------------\n");
}
}
} else printf("The file hasn't opened!\n");
}
void pcreate()
{ printf("Input create filename:");scanf("%s",X);
q2=ufd;
if(q2!=NULL)
{while((strcmp(q2->filename,X)!=0)&&(q2->next!=NULL))
q2=q2->next;
if(strcmp(q2->filename,X)==0)
{printf("File has already been created!\n");
return;
}
}
p2=(struct links *)malloc(sizeof(struct links));
if(ufd==NULL) ufd=p2; else q2->next=p2;
strcpy(p2->filename,X);
p2->length=0; p2->next=NULL; p2->headlink=NULL;
printf("Create File Finished!\n");
}
void popen()
{ p2=ufd;
printf("Input Open filename:");scanf("%s",X);
if(p2!=NULL)
{while((strcmp(p2->filename,X)!=0)&&(p2->next!=NULL))
p2=p2->next;
if(strcmp(p2->filename,X)==0)
{q3=afd;
if(afd!=NULL)
{while((strcmp(q3->filename,X)!=0)&&(q3->next!=NULL))
q3=q3->next;
if(strcmp(q3->filename,X)==0)
{printf("The file \"%s\" has been opened.\n",X);
return;
}
}
p3=(struct linkt *)malloc(sizeof(struct linkt));
if(afd==NULL) afd=p3; else q3->next=p3;
strcpy(p3->filename,X);
p3->length=p2->length;
p3->headlink=p2->headlink;
p3->flag=0;
p3->next=NULL;
printf("The file \"%s\"has been opened.\n",X);
return;
}
}
printf("Can't find \"%s\" file in \"%s\" USER.\n",X,username);
}
void pclose()
{if(afd!=NULL)
{printf("Input close filename:");scanf("%s",X);
q3=p3=afd;
while((strcmp(q3->filename,X)!=0)&&q3->next!=NULL)
{ p3=q3;q3=q3->next; }
if(strcmp(q3->filename,X)==0)
{ if(q3==afd) afd=q3->next; else p3->next=q3->next;
if (q3->flag==1)
{ p2=ufd;
while(strcmp(p2->filename,q3->filename)!=0&&p2->next!=NULL)
p2=p2->next;
if(strcmp(p2->filename,q3->filename)==0)
{p2->length=q3->length; p2->headlink=q3->headlink;}
}
free(*q3);
printf("\n The file is closed.\n");
return;
}
}
printf(" You hasn't opened file %s.\n",X);
}
void pdelete()
{ printf("Input filename to be deleted:");scanf("%s",X);
if(afd!=NULL)
{ p3=q3=afd;
while((strcmp(q3->filename,X)!=0)&&q3->next!=NULL)
{p3=q3;q3=q3->next;}
if(strcmp(q3->filename,X)==0)
{if(q3==afd) afd=q3->next; else p3->next=q3->next;
if (q3->flag==1)
{p2=ufd;
while(strcmp(p2->filename,q3->filename)!=0&&p2->next!=NULL)
p2=p2->next;
if(strcmp(p2->filename,q3->filename)==0)
{p2->length=q3->length; p2->headlink=q3->headlink;}
}
free(*q3);
}
}
if(ufd!=NULL)
{p2=q2=ufd;
while((strcmp(q2->filename,X)!=0)&&q2->next!=NULL)
{p2=q2; q2=q2->next;}
if(strcmp(q2->filename,X)==0)
{if(q2==ufd)
if(q2->next==NULL) ufd=NULL; else ufd=q2->next;
else p2->next=q2->next;
q=q2->headlink;
while(q!=NULL) {p=q; q=q->next; free(*p);}
free(*q2);
printf("The file is deleted!\n");
return;
}
}
printf("The filename \"%s\"is wrong!",X);
}
close()
{while (afd!=NULL)
{p3=afd; afd=afd->next; p2=ufd;
while(strcmp(p2->filename,p3->filename)!=0
&&p2->next!=NULL) p2=p2->next;
if(strcmp(p2->filename,p3->filename)==0&&p3->flag==1)
{p2->length=p3->length; p2->headlink=p3->headlink;}
free(p3);
}
}
pread()
{
}
pwrite()
{
}
main()
{ afd=NULL; ufd=NULL;
for (i=0;i<5;i++)
{strcpy(mfd.username," ");
mfd.next=NULL;
}
printf("User number N(N<=5)=");scanf("%d",&n);
for(i=0;i
{w=0;
printf("User MFD username X[%d]=",i+1);scanf("%s",X);
for (j=0;j
if (strcmp(mfd[j].username,X)==0) w=1;
if(w==0) strcpy(mfd.username,X);
else
{ printf("\nThe Username has been Created!\n");i--;}
}
do
{ print1();
do
{ printf("Input user name you want to operate:");
scanf("%s",username);
for(i=0;(i
if(i>=n) {printf("Not found Username!\n");}
} while(i>=n);
t=0; flag=i; ufd=mfd.next;
do
{ printf("\n------------------------------------\n");
printf(" 1--Creat 2--Open 3--Delete\n");
printf(" 4--cLose 5--Read 6--Write\n");
printf(" 7--disPlay 8--fileplay 9--Quit\n");
printf("------------------------------------\n");
printf(" Select[ ]\b\b");
scanf("%s",&s);
switch(s)
{case '1':pcreate();break;
case '2':popen();break;
case '3':pdelete();break;
case '4':pclose();break;
case '5':pread();break;
case '6':pwrite();break;
case '7':print2();break;
case '8':print3();break;
case '9':t=1;close();
}
mfd.next=ufd;
} while(!t);
printf("\n---------------------------------------\n");
printf("| 1--Edit other user , 2--Quit |\n" );
printf("---------------------------------------\n");
printf(" Select[ ]\b\b");
scanf("%d",&m);
if(m==2) r=1;
else r=0;
} while(!r);
}
2012-12-20 13:42
+2
版规,发帖可获2无忧币
2012-12-21 09:41
分享至: