资源简介

操作系统课程设计 设计便于直接存取的索引文件结构,混合索引(含源代码,设计报告)

资源截图

代码片段和文件信息

                   #include
#include
#include
#include//调用system()malloc()
#include//调用setw(n)时需要该头文件, 设域宽为n个字符
#define N 100
int a;//传递索引结点编号
int freespace=100;//空闲盘块初始值为0
int filenumber=0;//文件数量初始值为0
int p[100];//该数组作标记用
int q[100];//该数组作标记用

struct MENU// 目录信息项数据结构
{
char filename[5];//文件名
int indexPoint;//索引结点编号
};
MENU menu[50];
struct INDEX//索引表信息数据结构
{
int iaddr[5];
int singleindirect;
int s[10];
int doubleindirect;
int d[15];
int filelength;
};
INDEX index[50];
//写文件
void w1(int tint i)
{
    int j;
  for(i=0;i    for(j=0;j if(p[j]==0)//是否存放标记
{
 index[a].iaddr[i]=j;
p[j]=1;
break;
}
}
void w2(int tint i)
{
 int j;
 for(i=0;i for(j=0;j if(p[j]==0)
{
index[a].s[i]=j;
p[j]=1;
break;
}
}
void w3(int tint i)
{
    int j;
  for(i=0;i for(j=0;j if(p[j]==0)
{

index[a].d[i]=j;
p[j]=1;
break;
}
}
void write(char *tmpnameint tmplengthint *p)
{
int ij;
if(tmplength<1||tmplength>30)
{cout<<“请注意输入的文件长度必须在1~30范围之内!“<     cout<<“请重新输入文件长度:“;
     cin>>tmplength;}
for(i=0;i if(strcmp(menu[i].filenametmpname)==0)//判断是否文件重名
{
cout<<“存在重名文件!“< cout<<“文件写入失败!“ < system(“pause“);
return;
}
if(tmplength>freespace)//判断磁盘空间是否足够
{
cout<<“磁盘空间不足!“< cout<<“文件写入失败!“< system(“pause“);
}
for(i=0;i if(q[i]==0)
{
a=i;
q[i]=1;//标记置1
break;
}
strcpy(menu[a].filenametmpname);//复制文件名给目录的文件名
menu[a].indexPoint=a;//赋值给索引结点编号
index[a].filelength=tmplength;//赋值给文件长度
if(tmplength<=5)//直接索引
w1(tmplengthi);
else if(tmplength>5&&tmplength<=15)//一级
{
w1(5i);
for(j=0;j       if(p[j]==0)
 {
   index[a].singleindirect=j;//j的值分配给一级地址块
   p[j]=1;
       break;
  }
w2(tmplength-5i);
freespace--;
}
else if(tmplength>15)//二级以上
{
w1(5i);
for(j=0;j  if(p[j]==0)
{
 index[a].singleindirect=j;
p[j]=1;
break;
 }
w2(10i);
for(j=0;j  if(p[j]==0)
{
index[a].doubleindirect=j;
p[j]=1;
break;
}
w3(tmplength-15i);
   freespace=freespace-2;
}
 
freespace-=tmplength;
filenumber++;//文件数量加1
cout<<“文件已成功写入!“< system(“pause“);
}
//删除文件
void d1(int tint iint r)
{
    int j;
  for(j=0;j {
    r=index[i].iaddr[j];
    p[r]=0;//标记置0
 }
}
void d2(int tint iint r)
{
   int j;
   for(j=0;j    {
      r=index[i].s[j];
      p[r]=0;
     }
}
void d3(int tint iint r)
{
   int j;
   for(j=0;j    {
      r=index[i].d[j];
      p[r]=0;
     }
}

void remove(char *rnameint *p)
{
int ij;
int r0r1r2r3r4;
    for(i=0;i {
if(strcmp(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8830  2013-06-09 13:10  操作系统课程设计  便于直接存取的索引文件结构\100811113.cpp

     文件       8834  2013-06-09 00:45  操作系统课程设计  便于直接存取的索引文件结构\新建文本文档.txt

     文件     978432  2013-06-30 13:18  操作系统课程设计  便于直接存取的索引文件结构\设计报告.doc

     目录          0  2013-06-30 13:19  操作系统课程设计  便于直接存取的索引文件结构

----------- ---------  ---------- -----  ----

               996096                    4


评论

共有 条评论