文档详情

文件系统实验报告 - 实验报告 - 书业网.doc

发布:2016-08-14约1.23万字共26页下载文档
文本预览下载声明
文件系统实验报告 - 实验报告 - 书业网 篇一:实验四 文件系统实验报告 实验四 文件系统实验 一 .目的要求 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);
显示全部
相似文档