/*textattr(BLACK*16|WHITE);*/
/*clrscr();*//*clearscreen*/
LoginF();/*userlogin*/
/*clrscr();*/
if(loginsuc==1)/*LoginSuccessfully*/
{
while
(1)
{
wgetchar=0;
if(choiceend==1)
{
printf("\n\nC:
\\%s>",strupr(dirname));
}
elseprintf("Badcommandorfilename.\nC:
\\%s>",strupr(username));
gets(choice);
strcpy(choice,ltrim(rtrim(strlwr(choice))));
if(strcmp(choice,"dir")==0)choice1=1;
elseif(strcmp(choice,"create")==0)choice1=2;
elseif(strcmp(choice,"delete")==0)choice1=3;
elseif(strcmp(choice,"attrib")==0)choice1=4;
elseif(strcmp(choice,"open")==0)choice1=5;
elseif(strcmp(choice,"close")==0)choice1=6;
elseif(strcmp(choice,"read")==0)choice1=7;
elseif(strcmp(choice,"modify")==0)choice1=8;
elseif(strcmp(choice,"exit")==0)choice1=9;
elseif(strcmp(choice,"cls")==0)choice1=10;
elseif(strcmp(choice,"cd")==0)choice1=11;
elseif(strcmp(choice,"help")==0)choice1=20;
elsechoice1=12;
switch(choice1)
{
case1:
DirF();choiceend=1;break;
case2:
CreateF();choiceend=1;if(!
wgetchar)getchar();break;//创建文件
case3:
DeleteF();choiceend=1;if(!
wgetchar)getchar();break;//删除文件
case4:
ModifyFM();choiceend=1;if(!
wgetchar)getchar();break;//修改文件
case5:
choiceend=1;OpenF();if(!
wgetchar)getchar();break;//打开文件case6:
choiceend=1;CloseF();if(!
wgetchar)getchar();break;//关闭文件
case7:
choiceend=1;ReadF();if(!
wgetchar)getchar();break;//读文件
case8:
choiceend=1;WriteF();if(!
wgetchar)getchar();break;//写文件
case9:
printf("\nYouhaveexitedthissystem.");//提示你已经退出这个系统了
QuitF();exit(0);break;//退出系统
case10:
choiceend=1;clrscr();break;//清屏
case11:
CdF();choiceend=1;break;
case20:
help();choiceend=1;break;//帮助
default:
choiceend=0;
}
}
}
elseprintf("\nAccessdenied.");
}
voidhelp(void)
{
printf("\nTheCommandList\n");
/*printf("\nCdAttribCreateModifyReadOpenClsDeleteExitClose\n");*/
printf("Create:
Createafile(Youcaninitializefile'sattributeandcontent.)\n");
printf("Open:
Openafiletomodify\n");
printf("Close:
Closeafile.\n");
printf("Modify:
Modifytheopenedfile.\n");
printf("Delete:
Deleteexistedfiles.\n");
printf("CD:
Changecurrentdirectory.\n");
printf("Exit:
Exitthisprogram.\n");
}
char*rtrim(char*str)/*removethetrailingblanks.*/
{
intn=strlen(str)-1;
while(n>=0)
{
if(*(str+n)!
='')
{
*(str+n+1)='\0';
break;
}
elsen--;
}
if(n<0)str[0]='\0';
returnstr;
}
char*ltrim(char*str)/*removetheheadingblanks.*/
{
char*rtrim(char*str);
strrev(str);
rtrim(str);
strrev(str);
returnstr;
}
voidLoginF()/*LOGINFileSystem*/
{
charloginame[MAXNAME],loginpw[9],logincpw[9],str[50];
inti,j,flag=1;
chara[25];
intfindout;/*loginusernotexist*/
char*rtrim(char*str);/*removethetrailingblanks.*/
char*ltrim(char*str);/*removetheheadingblanks.*/
voidInputPW(char*password);/*inputpassword,use'*'replace*/
voidSetPANo(intRorW);/*Setphysicaladdressnum*/
while
(1)
{
findout=0;
printf("\n\nLoginName:
");
gets(loginame);
ltrim(rtrim(loginame));
fp_mfd=fopen("c:
\\osfile\\mfd","rb");
for(i=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!
=0;i++)
if(strcmp(strupr(ufd_lp.ufdname),strupr(loginame))==0)
{
findout=1;
strcpy(logincpw,ufd_lp.ufdpword);
}
fclose(fp_mfd);
if(findout==1)/*userexist*/
{
printf("LoginPassword:
");
InputPW(loginpw);/*inputpassword,use'*'replace*/
if(strcmp(loginpw,logincpw)==0)
{
strcpy(username,strupr(loginame));
strcpy(dirname,username);
fp_mfd=fopen("c:
\\osfile\\mfd","rb");
for(j=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!
=0;j++)
{
strcpy(str,"c:
\\osfile\\");
strcat(str,ufd_lp.ufdname);
ufd[j]=(OSUFD*)malloc(sizeof(OSUFD));
strcpy(ufd[j]->ufdname,strupr(ufd_lp.ufdname));
fp_ufd=fopen(str,"rb");
fcount[j]=0;
for(i=0;fread(&ufd[j]->ufdfile[i],sizeof(OSFILE),1,fp_ufd)!
=0;i++,fcount[j]++)
{
ifopen[j][i].ifopen=0;
ifopen[j][i].openmode=4;
}
fclose(fp_ufd);
}
fclose(fp_mfd);
ucount=j;
SetPANo(0);
printf("\n\nLoginsuccessful!
WelcometothisFileSystem\n\n");
loginsuc=1;
return;
}
else
{
printf("\n\n");
flag=1;
while(flag)
{
printf("LoginFailed!
PasswordError.TryAgain(Y/N):
");
gets(a);
ltrim(rtrim(a));
if(strcmp(strupr(a),"Y")==0){loginsuc=0;flag=0;}
elseif(strcmp(strupr(a),"N")==0){loginsuc=0;flag=0;return;}
}
}
}
else
{
printf("NewPassword(<=8):
");
InputPW(loginpw);/*inputnewpassword,use'*'replace*/
printf("\nConfirmPassword(<=8):
");/*inputnewpassword,use'*'replace*/
InputPW(logincpw);
if(strcmp(loginpw,logincpw)==0)
{
strcpy(ufd_lp.ufdname,strupr(loginame));
strcpy(ufd_lp.ufdpword,loginpw);
fp_mfd=fopen("c:
\\osfile\\mfd","ab");
fwrite(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd);
fclose(fp_mfd);
strcpy(username,strupr(loginame));
strcpy(dirname,loginame);
strcpy(str,"c:
\\osfile\\");
strcat(str,username);
if((fp_ufd=fopen(str,"rb"))==NULL)
{
fp_ufd=fopen(str,"wb");
fclose(fp_ufd);
}
fp_mfd=fopen("c:
\\osfile\\mfd","rb");
for(j=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!
=0;j++)
{
strcpy(str,"c:
\\osfile\\");
strcat(str,ufd_lp.ufdname);
ufd[j]=(OSUFD*)malloc(sizeof(OSUFD));
strcpy(ufd[j]->ufdname,strupr(ufd_lp.ufdname));
fp_ufd=fopen(str,"rb");
for(i=0;fread(&ufd[j]->ufdfile[i],sizeof(OSFILE),1,fp_ufd)!
=0;i++,fcount[j]++)
{
ifopen[j][i].ifopen=0;
ifopen[j][i].openmode=4;
}
fclose(fp_ufd);
}
fclose(fp_mfd);
ucount=j;
SetPANo(0);
printf("\n\nLoginSuccessful!
WelcometothisSystem\n\n");
loginsuc=1;
return;
}
else
{
printf("\n\n");
flag=1;
while(flag)
{
printf("LoginFailed!
PasswordError.TryAgain(Y/N):
");
gets(a);
ltrim(rtrim(a));
if(strcmp(strupr(a),"Y")==0){loginsuc=0;flag=0;}
elseif(strcmp(strupr(a),"N")==0){loginsuc=0;flag=0;return;}
}
}
}
}
}
voidSetPANo(intRorW)/*Setphysicaladdressnum,0-read,1-write*/
{
inti,j;
if(RorW==0)
{
if((fp_file_p=fopen("c:
\\osfile\\file\\file_p","rb"))==NULL)
{
fp_file_p=fopen("c:
\\osfile\\file\\file_p","wb");
fclose(fp_file_p);
}
fp_file_p=fopen("c:
\\osfile\\file\\file_p","rb");
for(i=0;fread(&j,sizeof(int),1,fp_file_p)!
=0;i++)
fpaddrno[j]=1;
/*for(i=1;iif((i%13)==0)fpaddrno[i]=1;*/
}
else
{
fp_file_p=fopen("c:
\\osfile\\file\\file_p","wb");
/*for(i=1;iif((i%13)==0)fpaddrno[i]=0;*/
for(i=