⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 模拟文件系统6.c

📁 操作系统课程实训源代码 模拟操作系统的文件管理系统
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>
#include <stdlib.h>                /*不容易归类的标准函数库*/
#include <string.h>
        
struct Flie
{
	int ed;        //判断是否正存放文件
	char f_name[8];  //文件名
	char f_c[8];    //存放文件内容
	int att ;      // 文件属性 0为只读 1为只写   //用于指向文件内容模块
}fa[8],fg[8];

int x;           //全局钥匙

void check() //密码认证
{
	int check,a=1;
	char pin1[]="admin"; //此处设定用户口令
	char pin[20];
    while(a)
	{
		printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("              *  文件管理系统用户登录 *\n");
		printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("请选择用户:\n");
		printf("   1.Administrator       2.Guest       3.退出系统\n");
        while(1)
        {
           scanf("%d",&x);
		   getchar();
           if(x>3)
              printf("\n选择错误! 请重新输入:\n");
           else
              break; 
        }      
   		if(x==3)
		{
			system("cls");
			break;
		}
		printf("密  码:");
		scanf ("%s",pin);
		check=strcmp(pin,pin1);
		if (check!=0)
		{
		  	system("cls");
			printf("\n密码错误! 请重新输入:\n");
		}
		else
		{
			system("cls");
			a=0;
		}
	}

}
void createfile() /*创建文件操作*/
{
	int handle=1,a,check,i,j,h;
	char name[8],pin[8];
	while(1)
	{ 
		printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("                    *  创建文件 *\n");
        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("请输入所要创建的文件名称:\n");
		scanf("%s",name);
		if(x==1)
		{
			for( i=0;i<8;i++)//判断是否有相同的文件 
			{
				for(j=0;j<8;j++)
				   pin[j]=fa[i].f_name[j];
				check=strcmp(pin,name);
		        if (check!=0){}
		        else
				{
				    printf("\n创建错误!文件已经存在!");
					handle=0;
					getchar();
					break;
				}
			}  
 			if(handle==1)
			{
				for(h=0;h<8;h++)
					if(fa[h].ed==0)
					{
						strcpy(fa[h].f_name,name);
				        while(1)
						{
					        printf("\n请选择文件属性(0.只读 - 1.只写):");
			                scanf("%d",&a);
					        getchar();
					        if(a==0||a==1)
							{
						        fa[h].att=a;
						        printf("\n创建文件成功.\n");
								fa[h].ed=1;
						        break;
							}
					        else
						    printf("错误! 请重新输入:\n");
							
						}
						break;
					}
				
			}
			getchar();
			break;
		}
		if(x==2)
		{
			for( i=0;i<8;i++)
			{
				for(j=0;j<8;j++)
				   pin[j]=fg[i].f_name[j];
				check=strcmp(pin,name);
		        if (check!=0){}
		        else
				{
				    printf("\n创建错误!文件已经存在!");
					handle=0;
					break;
				}
			  }
 			if(handle==1)
			{ 
				for(h=0;h<8;h++)
					if(fa[h].ed==0)
					{
						strcpy(fg[h].f_name,name);
				        while(1)
						{
					        printf("\n请选择文件属性(0.只读 - 1.只写):");
			                scanf("%d",&a);
				        	getchar();
					        if(a==0||a==1)
							{
						        fg[h].att=a;
						        printf("\n创建文件成功.\n");
						        fg[h].ed=1;
						        getchar();
						        break;
							}
					        else
						    printf("错误! 请重新输入:\n");
					   }
                    break;
					}
				
			}
			break;
		}
	}
}

void deletefile()                      /*删除文件的操作*/
{
	int status=0,j=0,i,check,choice;
	char name[8],pin[8];
	while(1)
	{
		system("cls");
		printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("                    *  删除文件 *\n");
        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		if(x==1)
		{
			printf("请输入所要删除的文件名称:\n");
		    scanf("%s",name);                           /*输入要删除的文件名*/
		    printf("\n请确认(0 - 1):");
			scanf("%d",&choice);
		    getchar();
			if(choice==1)
			{
			    for( i=0;i<8;i++)
				{
				    for(j=0;j<8;j++)
				       pin[j]=fa[i].f_name[j];
				    check=strcmp(pin,name);
		            if (check!=0){}
		            else
					{ 
						status=1;
						if(fa[i].att==0)   /*获取文件的状态,是否存在并且是否只读*/
					       j=1;
				        if(j==1)
						{ 
					        printf("\n删除错误! 文件为只读文件!"); //只读文件						
                            }
				        else if(j!=0)      //从目录中删除一个文件						
                        {
				            strcpy(fa[i].f_name,"        ");
		                    strcpy(fa[i].f_c,"        ");
							fa[i].ed=0;
					        printf("\n删除文件成功.");
						}
					   getchar();
					    break;
					}
				}                          
				if(status!=1)
				{
					printf("\n删除错误! 所要删除的文件不存在!\n");/*文件不存在*/
					getchar();
				}
			}
		   break;
		}
		if(x==2)
		{
			printf("请输入所要删除的文件名称:\n");
		    scanf("%s",name);                    /*输入要删除的文件名*/
		    printf("\n请确认(0 - 1):");
			scanf("%d",&choice);
		    getchar();
			if(choice==1)
			{
			    for( i=0;i<8;i++)
				{
				    for(j=0;j<8;j++)
				       pin[j]=fg[i].f_name[j];
				    check=strcmp(pin,name);
		            if (check!=0){}
		            else
					{ 
						status=1;
						if(fg[i].att==0)   /*获取文件的状态,是否存在并且是否只读*/
					       j=1;
				        if(j==1)
						{ 
					        printf("\n删除错误! 文件为只读文件!"); //只读文件
						}
				        else if(j!=0)      //从目录中删除一个文件函数						
                        {
				            strcpy(fg[i].f_name,"        ");
		                    strcpy(fg[i].f_c,"        ");
							fg[i].ed=0;
					        printf("\n删除文件成功.");
							break;
						}
					   getchar();
					    break;
					}
				}                          
				if(status!=1)
				{
					printf("\n删除错误! 所要删除的文件不存在!");/*文件不存在*/
					getchar();
				}
			}
		}
		break;
	}
}
void openfile()                                      /*打开文件操作*/
{
	int i,a=0,j,check;
	char name[8],pin[8];
	printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
    printf("                    *  打开文件 *\n");
    printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
	printf("请输入您所要打开文件的名称: \n");
	scanf("%s",name);
	getchar();
	if(x==1)
	{
		for( i=0;i<8;i++)
		{
			for(j=0;j<8;j++)
			    pin[j]=fa[i].f_name[j];
				check=strcmp(pin,name);
		        if (check!=0){}
		        else
				{ 
					printf("%s",fa[i].f_c);
					a=1;
				}
		}
		if(a!=1)
			printf("文件不存在!");
		getchar();
			
	}
	else if(x==2)
	{
		for( i=0;i<8;i++)
		{
			for(j=0;j<8;j++)
			    pin[j]=fg[i].f_name[j];
				check=strcmp(pin,name);
		        if (check!=0){}
		        else
				{ 
					printf("%s",fg[i].f_c);
					a=1;
				}
		}
		if(a!=1)
			printf("文件不存在!");
		getchar();
			
	}
}
void writefile() /*书写文件*/
{
	int i,j,check,b=1;
	char ch=0,a=0,name[8],c[8],pin[8];
	while(b)
	{  
		printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("                    *  书写文件 *\n");
        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		printf("请输入要书写的文件的名称:\n");
		scanf("%s",name);
		if(x==1)
		{
			for( i=0;i<8;i++)                          /*获取文件的状态,是否存在*/
			{
			    for(j=0;j<8;j++)
			        pin[j]=fa[i].f_name[j];
				    check=strcmp(pin,name);
		        if (check!=0){}
		        else
				{
					if(fa[i].att==0)
					{
			            printf("书写错误!只读文件!\n");
						a=1;
						getchar();
						getchar();
			            break;
					}
		            printf("请输入文件的内容: \n");
		            scanf("%s",c);
			        strcpy(fa[i].f_c,c);
		            printf("书写文件成功.\n");
		            a=1;
					b=0;
					getchar();
					getchar();
					break;
				}
				break;
			}
			if(a!=1)
			{
				printf("文件不存在!");
				getchar();
				getchar();
				break;
			}
			break;

		}
		getchar();
	   if(x==2)
		{
			for( i=0;i<8;i++)                          /*获取文件的状态,是否存在*/
			{
			    for(j=0;j<8;j++)
			        pin[j]=fg[i].f_name[j];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -