操作系统课程设计

break; //跳出 case 2: //新用户注册 if((fp=fopen(\如果登陆信息管理文件不存在 fp=fopen(\ //创建该信息管理文件 char name[12]; curuser = getspace(MFD); //用户申请空间 while(1) { cout<<\ *****新用户注册*****\ cout<<\用户名:\ cin>>name; //输入用户注册名 fp1 = fopen(\ //打开登陆文件,只允许读数据 while(!feof(fp1))//查看该用户名是否被别的用户占用 { fread(curuser,sizeof(MFD),1,fp1); //文件读取 if(strcmp(curuser->username,name) == 0) { cout<<\该用户已经存在,请重新输入!\该名称已经被使用 getch(); //读取结束符 break; //跳出 } } if(feof(fp1))//该名称没有被别的用户占用 { strcpy(curuser->username,name); //拷贝输入的用户名到用户名结构体 curuser->filepoint = NULL; //文件指针置空 fwrite(curuser,sizeof(MFD),1,fp); //用户信息写入文件 strcpy(user,curuser->username); //生成用户文件管理模块 strcat(user,\ //用于管理用户目录下的各个文件 fp2=fopen(user,\ //打开文件,允许读和写 fclose(fp2); //关闭fp2 cout<<\注册成功!\ //提示注册成功 LoginDisplay(); fclose(fp1); //关闭fp1 fclose(fp); //关闭fp break; } } fp = fopen(\ //显示当前注册用户的名称 while(1) { fread(curuser,sizeof(MFD),1,fp); //文件读取

if(feof(fp)) //检查是否最后用户 break; cout<username<

//------------------------------------------------------------------------------------------------ void DisplayUFD()//打印用户信息,包括用户的各个文件 //名称、长度和操作权限的设置信息 { if(curuser->filepoint == false) //当前用户目录下没有任何文件存在 cout<<\用户 \文件夹是空的\ else {//存在文件,将所有文件信息打印在终端 FILE *fp; //定义文件 char filename[12]; //定义文件名 strcpy(filename,curuser->username); //拷贝用户名到定义 strcat(filename,\ //扩展名.exe if((fp=fopen(filename,\ //打开用户文件信息管理模块 { cout<<\无法打开用户:\的文件!\ //显示 getch(); //读取结束符 return; } else { //读入并将用户全部文件信息打印在终端 cout<<\用户:\目录下的文件:\ UFD *ufd; //申请文件模块 int i=0; ufd = getspace(UFD); //申请存放用户文件模块的空间 while(1) { fread(ufd,sizeof(UFD),1,fp); //文件读取,把文件信息读到用户中 if(feof(fp)) //全部输出 break;

else //打印信息 cout<filename<<\ //输出文件信息 } } fclose(fp); //关闭文件 } }

//------------------------------------------------------------------------------------------------ void ByeFile(bool BOOL)//注销函数,调用次函数用户可以退出系统 { FILE *infile,*outfile; //定义文件 char out[50]; //定义数组out[50] strcpy(out,\ //拷贝信息到数组 if((infile=fopen(\检查是否保存 { cout<<\保存错误。\ //fclose(infile); return; } else { if((outfile=fopen(out,\//申请一个缓冲区管理模块 //存放用户更新后的全部信息 { cout<<\保存错误。\ fclose(infile); //关闭文件infile return; } else { MFD *mfd = getspace(MFD); //申请用户登陆管理并申请空间 while(1) { //将旧文件管理信息读出,并保存到新的文件信息管理模块中 fread(mfd,sizeof(MFD),1,infile); //文件读取,把文件信息读到用户管理中 if(feof(infile)) break; if((strcmp(mfd->username,curuser->username))==0)//判断是否与用户名相同 { if(BOOL)//更新当前用户信息的操作 fwrite(curuser,sizeof(MFD),1,outfile);//写文件 else continue; //如果用户想把注册目录从系统中彻底删除 //则执行该操作

} else fwrite(mfd,sizeof(MFD),1,outfile); //写入新的模块 } fclose(infile); fclose(outfile); //关闭文件 remove(\ //将旧的该用户的文件管理模块删除 rename(out,\ //将新的用户的文件管理模块重命名为用户目录下的 //管理模块 } } }

//------------------------------------------------------------------------------------------------ bool ClearUserFile()//用户要将自己的注册目录从系统彻底删除 //首先将该用户目录下的全部文件删除 { FILE *fp; char file[50]; //定义数组file[50] strcpy(file,curuser->username); //拷贝信息到数组 strcat(file,\ //扩展名.exe if((fp=fopen(file,\ //打开用户文件信息管理模块 { // fclose(fp); cout<<\该用户不存在!\ //显示 该用户不存在! return true; } else {//将该用户目录下的文件逐个从磁盘删除 UFD *ufd = getspace(UFD); //申请用户文件管理并申请内存 while(1) { fread(ufd,sizeof(UFD),1,fp); //文件读取,把文件信息读到用户中 if(feof(fp)) //判断是否有文件 break; else remove(ufd->filename); //删除文件 } fclose(fp); return true; } }

//------------------------------------------------------------------------------------------------ void ClearUserMes()//删除用户全部信息 { char name[50]; //定义数组name[50] strcpy(name,curuser->username); //拷贝用户名到数组 strcat(name,\ //扩展名.exe remove(name); //从磁盘中删除用户文件信息管理模块 ByeFile(false); //更新系统的用户登陆信息管理模块 }

//------------------------------------------------------------------------------------------------ void DeleteUser()//删除用户注册目录的操作 { int SELETE; //定义SELETE char ch; //定义ch cout<<\该操作将会是你在系统所有信息删除,下次登陆时你必须重新申请用户名!\ cout<<\你确定要删除你在系统中的注册信息吗?Y/N\ cin>>ch; //输入选择 switch(ch) //提示用户确认删除 { case 'Y': case 'y': if(ClearUserFile()) //如果用户的全部文件已经删除了 //则可以将该用户的文件信息管理模块也从磁盘中删除 //以免在没完全删除文件却删了该文件信息管理模块 //使得这些文件无法再进行管理造成磁盘空间的浪费 ClearUserMes(); //删除文件信息管理模块 break; default: cout<<\你取消了此操作!\ //显示 break; } }

//------------------------------------------------------------------------------------------------ void CreatFile()//在当前用户目录下创建文件 { FILE *fp; //定义文件

curuser->filepoint=true; //用户目录下的文件指针置真 if((fp=fopen(buffer,\//如果没有跟用户输入文件名相同的文件 { if((fp=fopen(buffer,\ //判断文件是否为空 {

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