操作系统课程设计

15. void ReadFile()//读文件函数

Begin QueryMod(False)(图12) N True? Y Buffer Y EOF? N Putchar(ch) Fgetchar(buffer) N Cout error Y End 图15 ReadFile

16. void ChangeMod()//修改某文件的执行权限

Begin Search UFD(图2.1) N True? Y Scanf Mod Printf Mod Test Scanf ch ?Y?||?y? Cout error Ch Other Update UFD(图4.1) Remove username.exe outfilelocate.exe->username.exe End 图16 ChangeMod

17. int Execute(int i,int len,int cmdset)//执行命令函数

Begin N Buffer[i]=Cmd[i] Y Cmd[i]!=0 N Buffer? Y Cout error cmdset 1 2 ChangeMod(图16) 3 4 CreatFile (图8) 5 6 ListAllFile ByeFile(图4) DeleteUser(图7) DeleteFile (图9) 9 WriteFile (图14) 8 7 OpenFile ReadFile (图15) Return Temp End 图17 Execute

18. void Command()//读取用户输入的命令,并将其转换成系统能识别的命令

Begin 1 Y Scanf cmd N Buffer[i]=cmd[i] ?>?||? ?||len-1 Y 二分查找命令编号 Cmdset=0||mid N Cmdset Y Execute(图17) EndIt? Y End N 图18 Command

五、实验运行结果

/***************************************************************** * 文件名: Simple_file_system.c

* 功 能: 简单文件管理系统模拟程序

*******************************************************************/ #include #include #include #include #include \#include

#define NULL 0 #define keynum 10

#define getspace(type) (type*)malloc(sizeof(type)) //宏定义 申请内存

char cmd[64]; //存放用户输入命令 char buffer[36];//

char user[32];//存放当前登陆的用户名

typedef char ALFA[12]; ALFA KWORD[keynum];

//------------------------------------------------------------------------------------------------ struct UFD{//用户文件管理模块 char filename[32]; //文件名 int safecode; //文件保护码 long length; //文件长度 }*curfile = NULL;

//------------------------------------------------------------------------------------------------ struct MFD{//用户登陆信息管理模块 char username[32]; //用户名 bool filepoint; //用户目录下的文件指针,false表示目录为空,true为该用户目录中有文件

}*curuser = NULL,*elseuser=NULL; typedef UFD UFD; //重命名 typedef MFD MFD; void main();

//------------------------------------------------------------------------------------------------ void KeyWord()//初始化命令关键字 { strcpy(KWORD[ 1],\ //用户注销命令 strcpy(KWORD[ 2],\ //改变文件的执行权限 strcpy(KWORD[ 3],\//删除用户注册信息 strcpy(KWORD[ 4],\ // 在当前目录下创建一个文件 strcpy(KWORD[ 5],\ //删除当前用户目录下的一个文件 strcpy(KWORD[ 6],\ //显示当前注册目录下的所有文件信息 strcpy(KWORD[ 7],\ //打开文件 strcpy(KWORD[ 8],\ //读文件信息 strcpy(KWORD[ 9],\ //向文件写入新的信息 }

//------------------------------------------------------------------------------------------------ int LoginDisplay() //登陆选项操作函数 { int SELETE_1 = 0; //定义整型数存放选项 do //循环控制 { cout<<\ *****请选择操作*****\\n1、用户登陆 2、用户注册 0、退出\

//显示登陆选项界面 cin>>SELETE_1; //输入要选择的命令 }while(SELETE_1<0 || SELETE_1>2); //选项判断 system(\ //清屏 return SELETE_1; //返回选项数 }

//------------------------------------------------------------------------------------------------ bool Login(int SELETE)//用户登陆,注册函数 { FILE *fp,*fp1,*fp2; //定义文件 char name[12]; //定义数组存放登录名 switch(SELETE) //switch选择 { case 1://用户登陆 if((fp = fopen(\打开用户注册目录管理文件 { cout<<\错误:不能打开登陆文件。\ //显示错误 getch(); //读取结束符 system(\ //清屏 return false; //返回 } curuser = getspace(MFD); //用户名申请空间 cout<<\登陆*****\\n用户名:\ //显示 cin>>name; //输入用户登陆名 while(!feof(fp)) //检查该用户是否合法 { fread(curuser,sizeof(MFD),1,fp); //文件读取 if(strcmp(curuser->username,name)==0) //比较输入用户名是否与存在用户名相同 break; } if(feof(fp)) //如果没有找到跟当前登陆用户名相同的管理信息,执行下列代码 { cout<<\错误:该用户不存在。\ //显示“错误:该用户不存在” fclose(fp); //关闭文件 return false; //返回 } else { fclose(fp); //关闭文件 return true; //返回 }

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4