操作系统课程设计 下载本文

char ch; switch(mod){ //告诉用户对该文件权限修改的结果,以便用户确认 case 30: cout<<\当前权限设置:其他用户对\既没读权也没写权!\ break; case 31: cout<<\当前权限设置:其他用户对\没读权但有写权!\ break; case 32: cout<<\当前权限设置:其他用户对\有读权但没写权!\ break; case 33: cout<<\当前权限设置:其他用户对\既有读权也有写权!\ break; default: break; } cout<<\确认按'Y',取消按'N':\ cin>>ch; //输入选择 switch(ch){ case 'Y': case 'y':flag1=false;break; default: flag1=true; } } } //更新文件信息管理模块,相关操作类似上面,不在赘述 if((infile=fopen(in,\ //打开文件判断是否为空 { cout<<\操作出现错误,对此我们表示歉意!\ return; } else{ if((outfile=fopen(out,\ //打开文件判断是否为空 { cout<<\操作出现错误,对此我们表示歉意!\ fclose(infile);//fclose(outfile); return; } else{ while(1) { fread(ufd,sizeof(UFD),1,infile); //读取文件 if(feof(infile)) //文件是否打开 break;

if((strcmp(ufd->filename,buffer))==0) //找到文件 ufd->safecode=mod; //修改权限值 fwrite(ufd,sizeof(UFD),1,outfile); //写文件 } fclose(infile);fclose(outfile); remove(in); //移除 rename(out,in); //重命名 } } }

//------------------------------------------------------------------------------------------------ void Execute(int i,int len,int cmdset)//执行命令函数 { int SELETE; int j=0; for(;i'||cmd[i]==' '){ // buffer[i] = '\\0'; break; } /* if(i==len-1) { buffer[j]=cmd[i]; buffer[j+1]='\\0'; break; }*/ buffer[j]=cmd[i];j++; //数组成员下一个 } buffer[j]='\\0'; strcat(buffer,\ //添加扩展名.txt switch(cmdset) { case 1: //退出 ByeFile(true); SELETE = LoginDisplay(); //返回登陆页面 if(SELETE==0) //如果选项是0 exit(0); //退出 Login(SELETE); //用户登陆,或者注册函数 break; case 2: //改变文件操作权限 if((strcmp(buffer,\ //比较文件 {

cout<<\输入命令出错!\ return; } ChangeMod(); //调用修改某文件的执行权限函数 break; case 3: //删除用户 DeleteUser(); SELETE = LoginDisplay(); //返回登陆页面 if(SELETE==0) //如果选项是0 exit(0); //退出 Login(SELETE); //用户登陆,或者注册函数//调用删除用户函数 break; case 4: //创建文件 if((strcmp(buffer,\ //比较文件 { cout<<\输入命令出错!\ return; } CreatFile(); //调用创建函数 break; case 5: //删除文件 if((strcmp(buffer,\ //比较文件 { cout<<\输入命令出错!\ return; } DeleteFile(); //调用删除文件函数 break; case 6: //列出该用户所有文件清单 ListAllFile(); break; case 7: //打开文件 if((strcmp(buffer,\ //比较文件 { cout<<\输入命令出错!\ return; } OpenFile(); //调用打开文件函数 break; case 8: //读文件 if((strcmp(buffer,\ //比较文件 { cout<<\输入命令出错!\ return;

} ReadFile(); //调用读文件函数 break; case 9: //写文件 if((strcmp(buffer,\ //比较文件 { cout<<\输入命令出错!\ return; } WriteFile(); //调用写文件函数 break; default: break; } }

//------------------------------------------------------------------------------------------------ void Command()//读取用户输入的命令,并将其转换成系统能识别的命令 { int len = 0,i,j; int cmdset; cout<<\ cout<<\ 用户注销命令 chmod 改变某个文件的执行权限命令\ cout<<\ 删除用户注册信息命令 create 在当前目录下创建一文件命令\ cout<<\删除当前用户目录下的一个文件命令 list 显示注册目录下的所有文件信息命令\ cout<<\ 在window界面下打开某个文件命令 read 读文件信息命令 \

cout<<\ 向某个文件写入新的信息命令\ cout<<\ while(1) { cmdset = 0; cout<<\ cin>>cmd; len = strlen(cmd); //计算长度 i=0;j=0; while(cmd[i]=='>'||cmd[i]==' '){i++;} //过滤空格键和'>' for(;i' || cmd[i]==' ' || i==len-1) //定位命令最后一个字符 { if(cmd[i]=='>' || cmd[i]==' ') buffer[j] = '\\0'; else

if(i==len-1) { buffer[j]=cmd[i]; buffer[j+1]='\\0'; } i++; j=0; int low=1,mid,high=keynum-1; bool BOOL = false; //置旗false while(low<=high){ //找到该命令关键字的内部识别码 mid=(low+high)/2; if (strcmp(buffer,KWORD[mid])<=0) high=mid-1; if (strcmp(buffer,KWORD[mid])>=0) low=mid+1; if(strcmp(buffer,KWORD[mid])==0){ BOOL = true; break; } } if(!BOOL) //判断是否是正确命令 { cout<<\不是系统定义的命令...\ cmdset = 0; break; } else {cmdset = mid;break;} } else{ buffer[j] = cmd[i]; j++; } } if(cmdset == 0) continue; while(cmd[i]=='>'||cmd[i]==' '){i++;} //过滤空格键和'>' buffer[0]='\\0'; Execute(i,len,cmdset); //执行该命令 } }

//------------------------------------------------------------------------------------------------ void main() { while(1){ int SELETE = LoginDisplay(); //调用登陆选项操作函数 if(SELETE==0) //如果选择0 exit(0); //退出系统 bool BOOL = Login(SELETE); //用户登陆,或者注册函数