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

📄 sugar girls-3.cpp

📁 一个小型的嵌入式文件系统
💻 CPP
字号:
#include <iostream.h>
#include <string.h>
#include <dos.h>
#include <time.h>

struct inode
{
	char NAME[5];//文件名
	int  stock;//文件占几个磁盘块
	long int DATE;//文件创建日期(4位)
	int p;//指向存储块
	int sign;//磁盘块标志位:0表示未存储文件,空间为1
};

void diskout();
void diskplay();
void CreatFile(inode *m);
void input(inode *m);
void output(inode *m);
int find(char name[5]);//对一个文件进行写操作
void delet(inode *m);//删除文件 
void listfile();//目录
void format();//进行磁盘格式化
void diskclear();//磁盘整理

char disklayout[10][40];
int n=0;//显示文件地址

char disk[10];//十个磁盘块

inode m[10];//十个头节点
void init()//初始化
{
	for(int k=0;k<10;k++)
	disk[k]='1';
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<20;j++)
			disklayout[i][j]=' ';
	}
}



void diskout()//显示磁盘块情况
{
	for(int i=0;i<10;i++)
		cout<<disk[i];
}

void display()//显示磁盘空间情况
{

		for(int i=0;i<10;i++)
		{
	         for(int j=0;j<40;j++)			
				cout<<disklayout[i][j];
		        cout<<endl;
		}
}
void CreatFile(inode *m)//创建一个文件
{

	char name[5]="";
    char content[10]="";//字符串变量
	time_t t1;
	time(&t1);
	m->p=n;
	m->stock=1;
	m->sign=0;
	m->DATE=t1;
	struct tm* tt=localtime(&m->DATE);
	cout<<"请输入文件名称:"<<endl;
    
	cin>>name;
	
     for(int j=0;j<5;j++)
	 {
		 m->NAME[j]=name[j];
		 disklayout[n][j]=name[j];
	 }
	 
	//返回系统当前时间	 
     cout<<"返回系统当前时间:"<<tt->tm_year+1900 <<"-"<<tt->tm_mon<<"-"<<tt->tm_mday<<";"<<tt->tm_hour<<":"<<tt->tm_min<<":"<<tt->tm_sec<<endl;
	 for(int l=0;l<10;l++)
	 {
		  if(disklayout[l][0]!=' ')
			  disk[l]='0';
	 }
	 cout<<"输入文件内容(空格或回车为结束符):"<<endl;
	
		cin>>content;
		for(int k=15,t=0;k<40&&t<10;k++,t++)
		{
				disklayout[m->p][k]=content[t];
		}

	
	 n++;

}


void output(inode *m)//将文件内容输出
{
     	char name[5];
		int i=0;
			cout<<"输入要输出的文件名:";
		
				cin>>name;
				i=find(name);
		
        cout<<"文件内容:"<<endl;
		
		
			for(int j=15;j<40;j++)
			{
				if(disklayout[i][j]!=' ')
					
				  cout<<disklayout[i][j];
			}
		
}

int find(char name[])//对一个文件进行查找操作
{
	
    
	
	int x=0;

	for(int i=0;i<10;i++)
	{
		
		if(m[i].sign==0&&strcmp(m[i].NAME,name)==0)	 //添加标志位
		{
			cout<<"文件查找成功,所在的磁盘块"<<i<<endl;
		    x=i;
			 break;
		}
	    
	
	}
	if(i==10)
	{
	
		cout<<"文件不存在!"<<endl;	
		return -1;
	}
		
  else
	  return x;

}


void delet()//删除文件 
{   
	char name[5];
	int i=0;
	cout<<"请输入要删除的文件名称:"<<endl;
	cin>>name;
	i=find(name);
	
	for(;i<10&&m->stock>0;)
	{
		 m[i].sign=1;//表示文件已经被删除,空间为1
		 disk[i]='1';
		 cout<<"删除成功"<<endl;
		 break;
	}
}

void listfile()//目录
{   
	time_t t1;
	time(&t1);
	struct tm* tt=localtime(&m->DATE);
	int i=0;
	cout<<"roots:/";
	for(;i<=n;i++)
	{
		for(int j=0;j<5;j++)
		{
			cout<<m[i].NAME[j];
		}
		
	}
	    cout<<"返回系统当前时间:"<<tt->tm_year+1900 <<"-"<<tt->tm_mon<<"-"<<tt->tm_mday<<";"<<tt->tm_hour<<tt->tm_min<<";"<<tt->tm_sec<<endl;
}

void diskclear()//磁盘整理
{   
	int t=0;
	int k=0;

	for(int i=0;i<10;i++)
	{
		if(disk[i]=='0')
		{

			for(int j=0;j<40;j++)
			{
			
				disklayout[t][j]=disklayout[i][j];

				if(i!=t)
				{
     		 	     disklayout[i][j]=' ';
				}

			disk[i]='1';
			disk[t]='0';
		    }
		
			m[t].p=m[i].p;
			m[i].p=NULL;
     
			m[t].sign=0;
			m[i].sign=1;

			for(k=0;k<5;k++)
			{
				//m[t].NAME[k]=m[i].NAME[K];
				//m[i].NAME[k]=NULL;
			}

		
		
				m[t].DATE=m[i].DATE;
				m[i].DATE=NULL;
		

			m[t].stock=m[i].stock;
			m[i].stock=1;
			
	
			t++;	
		}
		 	
	}

}

void format()//进行磁盘格式化
{
    for(int i=0;i<=10;i++)
	{
		for(int j=0;j<5;j++)
		m[i].NAME[j]=NULL;
	}
	for(int k=0;k<10;k++)
	{
	disk[k]='1';
	}

	for(int l=0;l<10;l++)
	{
		for(int z=0;z<40;z++)
			disklayout[l][z]=' ';
	}
	cout<<"格式化成功!"<<endl;
}



void main()
{
	int choice;
	//int k=0;
	char name[5]="";
	init();

    cout<<"               sugar girls team"<<endl;
	cout<<endl;
	cout<<endl;
	cout<<"请按提示输入您所要的操作的序号"<<endl;
	cout<<"1.创建一个文件"<<endl;
	cout<<"2.输出文件内容"<<endl;
	cout<<"3.查找文件"<<endl;
    cout<<"4.删除文件"<<endl;
    cout<<"5.陈列文件目录 "<<endl;
	cout<<"6.磁盘格式化"<<endl;
	cout<<"7.磁盘整理"<<endl;
    cout<<"8.显示磁盘块情况"<<endl;
    cout<<"9.显示磁盘块存储情况"<<endl;


	cout<<"0.退出系统"<<endl;

	while(1)
	{
		cout<<"请输入所选操作序号";
		cin>>choice;

		switch(choice)
		{
		case 1:CreatFile(&m[n]);
			break;
		case 2: output(&m[n]);
			break;
		case 3:	
	           cout<<"输入要查找的文件名:";
	  
		       cin>>name;
			
			find(name);
			break;
		case 4:delet();
			break;
		case 5:listfile();
			break;
	    case 6:format();
			break;
		case 7:diskclear();
			break;
		case 8:diskout();
			break;
        case 9:display();
			break;

		case 0:cout<<"操作完毕,版权所有:sugar girls team!"<<endl;
			break;
		default:cout<<"选择错误,请选择0~8项操作数:"<<endl;
		}
	}
   



}

⌨️ 快捷键说明

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