-
大小: 487KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-06
- 語(yǔ)言: 其他
- 標(biāo)簽: 操作系統(tǒng)??課程設(shè)計(jì)??
資源簡(jiǎn)介
操作系統(tǒng)課程設(shè)計(jì) 設(shè)計(jì)便于直接存取的索引文件結(jié)構(gòu),混合索引(含源代碼,設(shè)計(jì)報(bào)告)

代碼片段和文件信息
???????????????????#include
#include
#include
#include//調(diào)用system()malloc()
#include//調(diào)用setw(n)時(shí)需要該頭文件,?設(shè)域?qū)挒閚個(gè)字符
#define?N?100
int?a;//傳遞索引結(jié)點(diǎn)編號(hào)
int?freespace=100;//空閑盤塊初始值為0
int?filenumber=0;//文件數(shù)量初始值為0
int?p[100];//該數(shù)組作標(biāo)記用
int?q[100];//該數(shù)組作標(biāo)記用
struct?MENU//?目錄信息項(xiàng)數(shù)據(jù)結(jié)構(gòu)
{
char?filename[5];//文件名
int?indexPoint;//索引結(jié)點(diǎn)編號(hào)
};
MENU?menu[50];
struct?INDEX//索引表信息數(shù)據(jù)結(jié)構(gòu)
{
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)//是否存放標(biāo)記
{
?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<<“請(qǐng)注意輸入的文件長(zhǎng)度必須在1~30范圍之內(nèi)!“< ?????cout<<“請(qǐng)重新輸入文件長(zhǎng)度:“;
?????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;//標(biāo)記置1
break;
}
strcpy(menu[a].filenametmpname);//復(fù)制文件名給目錄的文件名
menu[a].indexPoint=a;//賦值給索引結(jié)點(diǎn)編號(hào)
index[a].filelength=tmplength;//賦值給文件長(zhǎng)度
if(tmplength<=5)//直接索引
w1(tmplengthi);
else?if(tmplength>5&&tmplength<=15)//一級(jí)
{
w1(5i);
for(j=0;j ??????if(p[j]==0)
?{
???index[a].singleindirect=j;//j的值分配給一級(jí)地址塊
???p[j]=1;
???????break;
??}
w2(tmplength-5i);
freespace--;
}
else?if(tmplength>15)//二級(jí)以上
{
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++;//文件數(shù)量加1
cout<<“文件已成功寫入!“< system(“pause“);
}
//刪除文件
void?d1(int?tint?iint?r)
{
????int?j;
??for(j=0;j ?{
????r=index[i].iaddr[j];
????p[r]=0;//標(biāo)記置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(
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????8830??2013-06-09?13:10??操作系統(tǒng)課程設(shè)計(jì)??便于直接存取的索引文件結(jié)構(gòu)\100811113.cpp
?????文件???????8834??2013-06-09?00:45??操作系統(tǒng)課程設(shè)計(jì)??便于直接存取的索引文件結(jié)構(gòu)\新建文本文檔.txt
?????文件?????978432??2013-06-30?13:18??操作系統(tǒng)課程設(shè)計(jì)??便于直接存取的索引文件結(jié)構(gòu)\設(shè)計(jì)報(bào)告.doc
?????目錄??????????0??2013-06-30?13:19??操作系統(tǒng)課程設(shè)計(jì)??便于直接存取的索引文件結(jié)構(gòu)
-----------?---------??----------?-----??----
???????????????996096????????????????????4
評(píng)論
共有 條評(píng)論