文件系统实验报告 - 实验报告 - 书业网.doc
文本预览下载声明
文件系统实验报告 - 实验报告 - 书业网
篇一:实验四 文件系统实验报告
实验四 文件系统实验
一 .目的要求
1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
二 .例题:
1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。
3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
4、算法与框图:
因系统小,文件目录的检索使用了简单的线性搜索。
文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。
程序中使用的主要设计结构如下:
主文件目录和用户文件目录( MFD、UFD)
打开文件目录( AFD)(即运行文件目录)
文件系统算法的流程图如下:
三 . 实验题:
1、增加 2~3个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。
#include lt;stdio.hgt;
#include lt;malloc.hgt;
#include lt;string.hgt;
#include lt;conio.hgt;
#define MAXSIZE 100
#define ADDSIZE 50
#define PT elem+l-gt; length
#define N 4
typedef struct term{/*班级和学期的结构体*/
char class1[10];
char term1[10];
}term;
typedef struct student{/*学生成绩信息的结构体*/
term st;/*班级和学期结构体放于此结构体中*/
char num[10];
char name[12];
float course[4];
float total;
float average;
int bit;
}lnode,*stu;
typedef struct{
lnode *elem;/*指向上个结构体的指针*/
int size;/*最大能放lnode结构体成员的个数*/
int length;/*当前长度*/
}sqack,*sq;
sqack *l;
void init(void)/*动态分配存储空间*/
{
l-gt; elem=(stu)malloc(MAXSIZE*sizeof(lnode));
l-gt; length =0;
l-gt; size=MAXSIZE;
}
void input(void)/*输入学生的信息*/
{
lnode *newbase,*p;
char cla[10],ter[10],ch;
int n,i;
if(l-gt; lengthgt; =l-gt; size){
newbase=(stu)realloc(l-gt; elem,(l-gt; size +ADDSIZE)*sizeof(lnode));/*追加存储空间*/
l-gt; elem =newbase;
l-gt; size +=ADDSIZE;
}
p=l-gt; elem;
do
{
printf( quot;输入班级和学期(学期用这种格式,如2005年上学期 2005 1,2005年下学期 2005 2;先输入班级,回车后再输入学期)\n quot;);
gets(cla);
gets(ter);
printf( quot;要输入多少个名单? quot;);
scanf( quot;%d quot;,amp;n);
printf( quot;输入学生的成绩\n学号\t姓名\t科目1\t科目2\t科目3\t科目4\n quot;);
for(i=0;i lt;n;i++)
{
scanf( quot;%s%s%d%d%d%d quot;,p-gt; num ,p-gt; name,p-gt; course[0],p-gt; course[1],p-gt; course[2],p-gt; course[3]);
strcpy(p-gt; st.class1,cla);
显示全部