资源简介
这是一份操作系统的课程设计,是关于模拟一个文件管理系统的
代码片段和文件信息
#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
- 上一篇:傻瓜式的图片去水印下载
- 下一篇:红外接收头资料(各种品牌的红外接收头参数对比)
相关资源
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
- 操作系统课程设计 二级文件管理系统
- 加快Windows XP操作系统开机速度
- 操作系统教程课后答案华中科技大学
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
- 计算机操作系统课后_汤小丹_第四版
- 计算机操作系统(第四版)汤小丹课
- 计算机操作系统复习材料(看了必过
- 北京大学操作系统PPT课件,陈向群
- Linux操作系统课件PPT
- 《操作系统原理及应用Linux》PPT
- 机器人操作系统ROS2
- 计算机操作系统
- 嵌入式实时操作系统μC/OS-II与eCos的
- 嵌入式实时操作系统在DATU中的应用
- 嵌入式实时操作系统μC/OS-II下通用驱
- 嵌入式实时操作系统μC/OS-II在ARM上的
- 嵌入式操作系统的解析
- SAC型液压支架控制器检测平台的设计
- 基于MSP430单片机的实时多任务操作系
- 湖南大学操作系统实验报告
评论
共有 条评论