2022年文件系统实验报告 .pdf
《2022年文件系统实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年文件系统实验报告 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、篇一:实验四文件系统实验报告实验四文件系统实验一 . 目的要求1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。2、要求设计一个 n 个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件, 对文件必须设置保护措施,且至少有 create 、delete 、open、close 、read 、write等命令。二 . 例题:1、设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5个文件。2、程序采用二级文件目录(即设置主目录mfd )和用户文件目录(ued) 。另外,
2、为打开文件设置了运行文件目录(afd ) 。3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。4、算法与框图:因系统小,文件目录的检索使用了简单的线性搜索。文件保护简单使用了三位保护码:允许读写执行、对应位为 1 ,对应位为0,则表示不允许读写、执行。程序中使用的主要设计结构如下:主文件目录和用户文件目录( mfd 、ufd )打开文件目录( afd ) (即运行文件目录)文件系统算法的流程图如下:三 . 实验题:1、增加 2 3 个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。#include <
3、;stdio.h> #include <malloc.h> #include <string.h> #include <conio.h> #define maxsize 100 #define addsize 50 #define pt elem+l-> length #define n 4 typedef struct term/*班级和学期的结构体*/ char class110; char term110; term; typedef struct student/*学生成绩信息的结构体*/ term st;/*班级和学期结构体放于此结构体
4、中*/ char num10; char name12; float course4; float total; float average; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - int bit; lnode,*stu; typedef struct lnode *elem;/*指向上个结构体的指针*/ int size;/*最大能放lnode 结构体成员的个数*/ int length;/*当前长度 */ sqa
5、ck,*sq; sqack *l; void init(void)/*动态分配存储空间*/ l-> elem=(stu)malloc(maxsize*sizeof(lnode); l-> length =0; l-> size=maxsize; void input(void)/*输入学生的信息*/ lnode *newbase,*p; char cla10,ter10,ch; int n,i; if(l-> length> =l-> size) newbase=(stu)realloc(l-> elem,(l-> size +addsize)*
6、sizeof(lnode);/*追加存储空间 */ l-> elem =newbase; l-> size +=addsize; p=l-> elem; do printf( 输入班级和学期 (学期用这种格式,如 2005 年上学期 2005 1,2005 年下学期 2005 2; 先输入班级,回车后再输入学期)n ); gets(cla); gets(ter); printf( 要输入多少个名单? ); scanf( %d ,&n); printf( 输入学生的成绩n 学号 t姓名 t科目 1t科目 2t科目 3t科目 4n ); for(i=0;i <n;i
7、+) scanf( %s%s%d%d%d%d ,p-> num ,p-> name,p-> course0,p-> course1,p-> course2,p-> course3); strcpy(p-> st.class1,cla); strcpy(p-> st.term1,ter); +l-> length ; printf( 要继续吗? (y/n) );ch=getchar();while(ch= y |ch= y ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
8、名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - void change()/*修改学生的信息*/ lnode *p; lnode e; int flag=1,i; char s110,num110; printf( 输入学期和学号( 输入学期以后按回车再输入学号):n ); gets(s1); gets(num1); p=l-> elem ; while(p <=(l-> elem+l-> length ) && flag=1)/*查找要修改的学生的信息 */ if(strcmp(p-> nu
9、m,num1)=0&&strcmp(p-> st.term1,s1)=0) flag=0;/*找到了 */ p+; p-; if(flag=1) printf( 找不到此学号!n ); printf( %s %s ,p-> num,p-> name); for(i=0;i <n;i+) printf( %d ,p-> coursei); printf( n ); printf( 输入修改信息n ); scanf( %s%s%s%s ,e.st.class1,e.st.term1,&e.num,e.name); for(i=0;i <n
10、;i+) scanf( %d ,&e.coursei); *p=e; void same(char *t1,char *t2,lnode *t,int *k) /*把学期和班级相同的学生信息放在结构体数组tt中 */ int i=0; lnode *p,*q; q=t; p=l-> elem ; while(p <=l-> elem+l-> length ) if(strcmp(p-> st.term1,t1)=0&&strcmp(p-> st.class1 ,t2)=0) *q=*p;q+; i+; p+; 名师资料总结 - - -
11、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - *k=i; void sort(lnode *p,int *k)/*按学生成绩从高到低排序函数*/ int i; lnode *q,temp; for(q=p;q <p+ *k;q+) q-> total =0; for(i=0;i <n;i+) q-> total =q-> total +q-> course i; q-> average =q-> to
12、tal /n; for(i=0;i <*k-1;i+) for(q=p;q <p+*k-1-i;q+) if(q-> total <(q+1)-> total) temp=*q;*q=*(q+1);*(q+1)=temp; void print(lnode *q,int *k)/*输出学生的成绩*/ lnode *p; p=q; for(p=q;p <q+*k;p+) printf( %s %s ,p-> num,p-> name); for(int i=0;i <n;i+) printf( %d ,p-> coursei); pri
13、ntf( %d %f ,p-> total,p-> average); printf( n ); void stat()/*统计学生的成绩*/ lnode tt50; char ter10,clas10; int i,k; printf( 请输入学期和班级( 输入学期后按回车再输入班级):n ); for(i=0;teri!= n ;i+) teri=getchar(); for(i=0;clasi!= n ;i+) clasi=getchar(); same(ter,clas,tt,&k);/*把学期和班级相同的学生信息放在结构体数组tt中 */ 名师资料总结 - - -
14、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - sort(tt,&k);/*按学生成绩从高到低排序函数*/ print(tt,&k);/*输出学生的成绩*/ void search1()/*按学号查 */ lnode *p; char ter110; int i,flag=1; p=l-> elem; printf( 输入学号: ); gets(ter1); for(p=l-> elem;p <l-> pt;p
15、+) if(strcmp(p-> num,ter1)=0) flag=0; printf( %s %s ,p-> st.term1,p-> st.class1); printf( %s %s ,p-> num,p-> name); for(i=0;i <n;i+) printf( %d ,p-> coursei); printf( %d %3.1f ,p-> total,p-> average); printf( n ); if(flag) printf( 没有找到! ); void search2()/*按姓名查 */ lnode *p;
16、 char ter110; int i,flag=1; p=l-> elem; printf( 输入姓名: );gets(ter1); for(p=l-> elem;p <l-> pt;p+) if(strcmp(p-> name,ter1)=0) flag=0; printf( %s %s ,p-> st.term1,p-> st.class1); printf( %s %s ,p-> num,p-> name); for(i=0;i <n;i+) printf( %d ,p-> coursei); printf( %d %f
17、 ,p-> total,p-> average); printf( n ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - if(flag) printf( 没有找到! ) ; void search()/*查找学生的成绩*/ char ch; do printf( 1 按学号查询 n2 按姓名查询 n ); ch=getchar(); switch(ch) case 1 : search1(); break;
18、case 2 : search2(); break; default: printf( 错误! n ); printf( 要继续查找吗?(y/n) ); ch=getchar(); while(ch= y | ch= y ); void fail()/*查找不及格及学生名单*/ int i; lnode *p; for(p=l-> elem;p <l-> pt;p+) for(i=0;i <n;i+) if(p-> coursei <60) printf( %s %s ,p-> st.class1,p-> st.term1); for(i=0;i
19、 <n;i+) printf( %d ,p-> coursei); printf( %d %f ,p-> total,p-> average); printf( n ); void output()/*按班级输出学生的成绩单*/ lnode tt50; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - int k; char clas10,ter110; printf( 输入要查询的班级和学期(输入班级后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年文件系统实验报告 2022 文件系统 实验 报告
限制150内