h〉
#include〈conio。
h>
#include〈string。
h〉
#definegetpch(type)(type*)malloc(sizeof(type))
#defineNULL0
#defineUserNumber10
#defineUserFNumber10
#defineUserOFNumber5
structfname{
charfname[1];
intflag;
}fnameA[26]={'a',0,’b',0,’c’,0,’d’,0,'e',0,'f',0,'g’,0,'h',0,’i’,0,’j’,0,’k',0,’l’,0,
’m',0,’n',0,'o',0,'p’,0,’q’,0,'r',0,'s',0,’t’,0,'u',0,'v’,0,'w',0,'x’,0,'y’,0,'z',0};
structafd{
charopname[10];/*打开文件名*/
intflag;
charopfprotect[3];/*打开保护码*/
intrwpoint;/*读写指针*/
}AFD[UserOFNumber];/*用户打开的文件*/
typedefstruct{
charfname[10];/*用户文件名*/
intflag;/*文件存在标志*/
intfprotect[3];/*文件保护码r\w\t*/
intflength;
}ufd,UF[UserFNumber];/*用户文件*/
structmdf{
charuname[10];/*用户名*/
UFUdir;/*用户文件目录*/
}UFD[UserNumber];/*用户*/
voidintFSystem(){
inti,j,k,l;
strcpy(UFD[0]。
uname,”a");
strcpy(UFD[1].uname,"b”);
strcpy(UFD[2].uname,"c”);
strcpy(UFD[3]。
uname,”d");
strcpy(UFD[4]。
uname,"e”);
strcpy(UFD[5].uname,”f");
strcpy(UFD[6]。
uname,"g”);
strcpy(UFD[7]。
uname,”h");
strcpy(UFD[8].uname,”i");
strcpy(UFD[9].uname,"j”);
for(i=0;i〈10;i++){
for(k=0;k〈5;k++){
doj=rand()%26;while(fnameA[j]。
flag);
strcpy(UFD[i]。
Udir[k]。
fname,fnameA[j]。
fname);
fnameA[j]。
flag=1;
UFD[i]。
Udir[k]。
flength=rand()%2048+1;
UFD[i]。
Udir[k]。
flag=1;
UFD[i]。
Udir[k]。
fprotect[0]=rand()%2;
UFD[i]。
Udir[k].fprotect[1]=rand()%2;
UFD[i]。
Udir[k].fprotect[2]=rand()%2;
}
for(j=0;j<26;j++)fnameA[j]。
flag=0;
}
for(l=0;l<5;l++){
strcpy(AFD[i].opname,”");
AFD[l].flag=0;
AFD[l]。
opfprotect[0]=0;
AFD[l]。
opfprotect[1]=0;
AFD[l].opfprotect[2]=0;
AFD[l]。
rwpoint=0;
}
}
voidCreate(inti){intk;
for(k=0;k<10;k++){if(!
UFD[i]。
Udir[k]。
flag)break;}
if(k>=10){printf("一个用户不能拥有超过10个文件\n\n");return;}
printf("请输入你想创建的文件名:
");
scanf("%s",UFD[i]。
Udir[k].fname);
printf("请输入文件长度:
”);
scanf("%d”,&UFD[i].Udir[k]。
flength);
printf("只读?
(1yes,0no):
”);
scanf(”%d",&UFD[i]。
Udir[k]。
fprotect[0]);
printf("可写?
(1yes,0no):
");
scanf("%d",&UFD[i].Udir[k].fprotect[1]);
printf(”可执行?
(1yes,0no):
”);
scanf(”%d",&UFD[i]。
Udir[k].fprotect[2]);
UFD[i]。
Udir[k]。
flag=1;
return;}
voidDelete(inti){charfile[10];intk;
printf("请输入你想删除的文件名:
”);
scanf("%s”,file);
for(k=0;k〈10;k++){
if(UFD[i]。
Udir[k].flag&&!
strcmp(UFD[i].Udir[k]。
fname,file))
{
UFD[i]。
Udir[k].flag=0;break;}
elseprintf("出错\n”);
}
return;}
voidmain(){inti,n=0;
charm[10];
charlogin[10];
intFSystem();
printf("欢迎使用\n”);
printf(”1.本系统模拟文件管理2。
系统已初始化10个用户,\n用户名分别是a~j,每个用户已分配五个文件\n");
printf(”**本系统的命令包括如下:
\n");
printf("**创建文件(create)\n");
printf(”**删除文件(delete)\n");
printf("**打开文件(open)\n”);
printf("**关闭文件(close)\n");
printf("**读取文件(read)\n");
printf("**编写文件(write)\n");
printf(”**显示文件目录(printufd)\n");
printf(”**显示打开文件目录(dir)\n");
printf(”**退出(exit)\n");
lgin:
printf("请输入用户名(a~j):
”);
scanf("%s",login);
if(!
strcmp(login,"exit”))return;
for(i=0;i〈10;i++){if(!
strcmp(UFD[i]。
uname,login))break;}
if(i>=10){printf(”该用户名不存在!
”);gotolgin;}
printUFD(i);
for(;n!
=1;){
printf(”请输入命令:
”);
scanf(”%s",&m);
if(strcmp(m,”create”)==0)Create(i);
elseif(strcmp(m,"delete”)==0)Delete(i);
elseif(strcmp(m,"open”)==0)Open(i);
elseif(strcmp(m,”close”)==0)Close;
elseif(strcmp(m,”read")==0)Read();
elseif(strcmp(m,"write”)==0)Write();
elseif(strcmp(m,”printufd”)==0)printUFD(i);
elseif(strcmp(m,"dir”)==0)printAFD();
elseif(strcmp(m,”exit”)==0)n=1;
elseprintf("出错\n");
}
printf(”Saving.。
。
。
\n”);
printUFD(i);
getch();
return;
}
第四章调试与操作说明
4。
1用户登陆界面
4。
2创建文件界面
4。
3删除文件界面
4.4退出界面
第五章课程设计总结与体会
在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。
在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便。
总的来说通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,对操作系统有了更深一层的了解,同时也提高了编程语言的应用能力,由于时间紧,故还有很多的方面需要改进。
以后的学习还得更加努力。
课程设计的目的就是使自己对学过的知识的理解得到加深,同时巩固对知识的掌握,最终要把知识转化为实际的应用。
在本次课程设计的过程中,我充分的感受到了学习一种新的知识以及把这种新的知识消化为己之所有,特别是要转化为实际应用根本是两个不同层次的概念,这也启迪了我今后无论学习什么,都应该在知其然的基础上深入研究,要知其所以然,如果要更进一步就要积极的把知识转化为应用。
第六章致谢
在这次课程设计中,我得到了同学的热忱帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题.同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学
第七章参考文献
[1]汤子瀛《计算机操作系统》(修订版)西安电子科技大学出版社2001
[2]张尧学史美林《计算机操作系统教程》实验指导清华大学出版社2000
[3]费翔林,骆斌。
操作系统教程(第4版)[M].北京:
高等教育出版社,2009.