资源简介
C++ os课程设计 连续文件、串联文件、索引文件
有报告
程序很简单
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
#define size 64
//*************************定义结构体******************
//定义连续文件结构体
struct lxfcb
{
int length;//文件长度
string name;//文件名
int head;//文件首地址
int kong;//1代表被占用,0代表未被占用
};
//定义串联文件结构体
struct clfcb
{
int length;//文件长度
string name;//文件名
int head;//文件首地址
int tail;// 文件尾地址
int kong;//1代表被占用,0代表未被占用
};
//定义索引文件结构体
struct indexfcb
{
string name;
int in[8];
int address;
int length;
int kong;//1代表被占用,0代表未被占用
};
//物理空间的结构体
struct block
{
int xinxi;//0表示未被占用,1表示已被占用
int next;//下一物理块的地址
};
//************************定义结构体*******************
int size1;
int count;
block a[size];//物理空间
lxfcb le[8];
clfcb c[8];
indexfcb ind[8];
void menu();//显示主菜单
void empty();//显示剩余空间
void display();//显示存储空间内的文件及存储地址
void creat();//创建新文件
void lianxu(string nint lint head);//创建连续文件
void chuanlian(string nint l);//创建串联文件
void index(string nint l);//创建索引文件
void init();//初始化
int checkname(string nameint type);//检查重名
int main()
{
srand(time(NULL));
size1=rand()%64;
count=size1;
init();
menu();
return 0;
}
void menu()
{
cout<<“****************模拟物理文件的存储过程***************“< cout<<“***** 1.显示剩余存储空间 **********“< cout<<“***** 2.显示存储空间内的文件及存储地址******“< cout<<“***** 3.创建新文件 ******“< cout<<“***** 4.退出 ******“< cout<<“*****************************************************“< int m;
while(1)
{
cin>>m;
if(m==1) empty();
else if(m==2) display();
else if(m==3) creat();
else if(m==4) exit(1);
else
{
cout<<“Error“< return;
};
menu();
}
}
void init()
{
int ij;
for(i=0;i a[i].xinxi =0;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
ind[i].in[j]=-1;
le[i].kong =0;
c[i].kong =0;
ind[i].kong=0;
}
}
void empty()//显示剩余空间
{
int j=0;
cout<<“剩余空间的大小是“< cout<<“剩余空间的地址是“< for(int i=0;i if(a[i].xinxi==0)
{
j++;
cout< if(j%8==0)
cout< }
cout< }
int checkname(string nameint type)
{
int i;
if(type==1)
{
for(i=0;i<8;i++)
if(le[i].kong ==1)
if(!strcmp(le[i].name.c_str()name.c_str()))
return 0;
return 1;
};
if(type==2)
{
for(i=0;i<8;i++)
if(le[i].kong ==1)
if(!strcmp(c[i].name.c_str()name.c_str()))
return 0;
return 1;
};
if (type==3)
{
for(i=0;i<8;i++)
if(ind[i].kong ==1)
if(!strcmp(ind[i].name.c_str()name.c_str()))
return 0;
return 1;
};
}
void display()//显示物理空间中所有的文件
{
int ijhe;
cout<<“连续文件目录“< cout<<“名称\t起始位置\t长度\t存储空间“< for(i=0;i<8;i++)
if(le[i].kong ==1)
{
cout< c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 132096 2009-06-22 11:06 os\Debug\vc60.idb
文件 110592 2009-01-10 14:27 os\Debug\vc60.pdb
文件 561240 2009-01-10 14:27 os\Debug\xitong.exe
文件 805228 2009-01-10 14:27 os\Debug\xitong.ilk
文件 290726 2009-01-10 14:27 os\Debug\xitong.obj
文件 43520 2009-01-10 14:24 os\Debug\xitong.opt
文件 2067060 2009-01-10 14:22 os\Debug\xitong.pch
文件 1123328 2009-01-10 14:27 os\Debug\xitong.pdb
文件 168960 2009-06-22 11:09 os\os.doc
文件 7437 2009-01-10 14:26 os\xitong.cpp
文件 3401 2009-01-08 23:55 os\xitong.dsp
文件 520 2009-01-08 23:57 os\xitong.dsw
文件 58368 2009-06-22 11:09 os\xitong.ncb
文件 48640 2009-06-22 11:09 os\xitong.opt
文件 1296 2009-01-10 14:27 os\xitong.plg
目录 0 2009-04-10 21:43 os\Debug
目录 0 2009-06-22 11:09 os
----------- --------- ---------- ----- ----
5422412 17
- 上一篇:ogre3d的vs2010插件
- 下一篇:数字信号处理课设报告 低比特率图像压缩
评论
共有 条评论