资源简介

这是一份操作系统的课程设计,是关于模拟一个文件管理系统的

资源截图

代码片段和文件信息

#include
#include
#include
#include

typedef struct mfd{
  char username[14];///用户名 14B
  char password[14]; // 密码14B
  int ufd_id;  //该用户的UFD所在的物理块号(2B)
}MFD;

typedef struct ufd{
 char filename[14];  //文件名14B;
 int mode;  ///文件权限0-readonly;1-writeonly;2-read/write
 int length; ///文件长度(总块数)
 int addr;//该文件的第1个文件块对应的物理块号
}UFD;   

typedef struct uof{
 char filename[14];  //文件名14B;
 int mode;  ///文件权限0-readonly;1-writeonly;2-read/write
 int length; ///文件长度(总块数)
 int addr;//该文件的第1个文件块对应的物理块号
 int state;//0-建立,1-打开
 int readptr;
 int writeptr;
}UOF; 

typedef struct disk{
int id;
char flag;//0-空闲,1-已分配
int next;
}DISK;

MFD mfdlist[16];
UFD ufdlist[16];
UOF uoflist[16];
DISK disklist[99];
char command[10]parameter1[14]parameter2[512];//用来存放命令和参数
MFD cur_mfd;//当前用户的mfd
char cur_user[14];//当前用户的用户名
/*初始化函数——
从disk.txt中读取mfd表的内容
*/
initial_mfd()
{
ifstream input_file;//创建输入文件
ofstream output_file;//创建输出文件

char name[14];
char pass[14];
char ch1ch2;
int idtemp1temp2;
input_file.open(“disk.txt“ios::binary|ios::ate);//以二进制“文件指针位于文件尾”的方式打开文件
if(!input_file){
cout<<“open file error!\n“;
return 1;
}
input_file.seekg(513ios::beg);//mfdlist存放在1#盘块
for(int k=0;k<16;k++)
{
for(int i=0;i<14;i++)
{
input_file.get(name[i]);
if(name[i]==‘ ‘)
{
name[i]=‘\0‘;
break;
}
}
input_file.seekg(13-iios::cur);
for(int j=0;j<14;j++)
{
input_file.get(pass[j]);
if(pass[j]==‘ ‘)
{
pass[j]=‘\0‘;
break;
}
}
input_file.seekg(13-jios::cur);

input_file.get(ch1);
input_file.get(ch2);
temp1=int(ch1)-48;//将字符转为int
temp2=int(ch2)-48;
if(ch2!=‘ ‘)
{
id=temp1*10+temp2;//十位数
}
else
{
id=temp1;//个位数
}
strcpy(mfdlist[k].usernamename);
strcpy(mfdlist[k].passwordpass);
mfdlist[k].ufd_id=id;

}
input_file.close();//关闭文件
return 0;
}
/*格式化硬盘-disk.txt
100个盘块,每个盘块大小是512字节数据+\n
并且第0#盘块存放disklist,初始化disklist每一项的flag=0
next=0,id<=0~99*/
void format(){
ofstream output_file;//创建输出文件
output_file.open(“disk.txt“ios::binary|ios::ate);//以二进制“文件指针位于文件尾”的方式打开文件
output_file.seekp(0ios::beg);
for(int j=0;j<100;j++)
{
for(int i=0;i<512;i++)
{
output_file<<‘ ‘;
}
output_file<<‘\n‘;
}
output_file.seekp(0ios::beg);
for(int i=0;i<100;i++)
{
output_file< if(i<10)
{
output_file<<‘ ‘;
}
output_file<<‘0‘;
output_file<<0;
output_file<<‘ ‘;
}
output_file.close();
for(int k=0;k<16;k++)
{
strcpy(mfdlist[k].username““);
strcpy(ufdlist[k].filename““);
}
cout<<“成功格式化系统!\n“;
}

/*找到一个空闲盘块,返回它的盘块号id*/
int getdisk()
{
for(int i=34;i<100;i++)
{
if(disklist[i].flag==‘0‘)
{
     disklist[i].flag=‘1‘;
return disklist[i].id;
}
}
return 0;
}

//从mfd中找user的条目
int findmfd(char user[]){
int i=0;
while(strcmp(mfdlist[i].username““)!=0&&strcmp(mfdlist[i].

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

     文件       3399  2009-06-22 20:41  526813模拟一个文件管理系统\程序\all_sj.dsp

     文件        520  2009-06-22 20:41  526813模拟一个文件管理系统\程序\all_sj.dsw

     文件        798  2004-12-21 15:43  526813模拟一个文件管理系统\程序\all_sj.h

     文件      33792  2009-06-22 20:41  526813模拟一个文件管理系统\程序\all_sj.ncb

     文件      48640  2009-06-22 20:41  526813模拟一个文件管理系统\程序\all_sj.opt

     文件        246  2009-06-22 20:41  526813模拟一个文件管理系统\程序\all_sj.plg

     文件      51300  2009-06-30 02:14  526813模拟一个文件管理系统\程序\Debug\disk.txt

     文件      50176  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\vc60.idb

     文件      61440  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\vc60.pdb

     文件     241780  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\模拟文件系统.exe

     文件     308132  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\模拟文件系统.ilk

     文件      73809  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\模拟文件系统.obj

     文件     291304  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\模拟文件系统.pch

     文件     599040  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug\模拟文件系统.pdb

     文件      51300  2005-06-29 23:10  526813模拟一个文件管理系统\程序\disk.txt

     文件      22843  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.cpp

     文件       3475  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.dsp

     文件        532  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.dsw

     文件      50176  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.ncb

     文件      48640  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.opt

     文件        778  2009-06-30 02:16  526813模拟一个文件管理系统\程序\模拟文件系统.plg

     目录          0  2009-06-30 02:16  526813模拟一个文件管理系统\程序\Debug

     目录          0  2009-06-30 02:16  526813模拟一个文件管理系统\程序

     目录          0  2009-06-23 12:16  526813模拟一个文件管理系统

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

              1942120                    24


评论

共有 条评论