📄 sugar girls-3.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 + -