⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3104007253.c

📁 编写并调试一个树型目录结构的文件系统
💻 C
📖 第 1 页 / 共 2 页
字号:
            if(strcmp(p->wj[i]->name,qq->name)==0){printf("该文件已存在!\n\n");return;};   /*判断该文件是否存在*/
         }}


      strcpy(qq->usr,p->usr);

      qq->parent=p;

              /*保存最后修改时间*/
         gettime(&t);

         qq->time[0]=t.ti_hour;
         qq->time[1]=t.ti_min;
         qq->time[2]=t.ti_sec;

         printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);

      for(i=0;i<10;i++){
          if(p->wj[i]==0){p->wj[i]=qq;p->wj_nu+=1;return;}
         }


}



/*******************************************************************************/
 RM(){                    /*删除文件函数*/
           char a[15];
      MULU *qq;
      int i,j=100;

      scanf("%s",a);
      for(i=0;i<10;i++){
         if(p->wj[i]!=0){
          if(strcmp(p->wj[i]->name,a)==0){qq=p->wj[i];j=i;}
        }}


      if(j==100){
         printf("操作失败,文件不存在!\n\n");return;
        }
       if(j!=100)p->wj[j]=0;
       p->wj_nu-=1;
       free(qq);
        printf("操作成功!\n\n");


}



/******************************************************************************/
 COPY(){               /*复制文件函数*/
     struct time t;
     char a[15];
     char b[15];
     int i;
     int j=100;
     WJ *qq;
     scanf("%s %s",a,b);
     for(i=0;i<10;i++){
        if(strcmp(a,p->wj[i])==0)j=i;
       }
     if(j==100){printf("%s不存在!\n\n",a);return;}         /*判断当前目录下源文件是否存在*/
     if(strcmp(a,b)==0){printf("格式出错!\n\n");return;}   /*如果源文件名和目标文件名相同将出错*/
     if(p->wj_nu>=10){printf("该目录下文件已达到最大数目\n\n"); return ;}

     for(i=0;i<10;i++){
       if(p->wj[i]!=0){
         if(strcmp(p->wj[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标文件已存在也将出错*/
         }}

     qq=getpch(WJ);


     strcpy(qq->name,b);
     qq->parent=p;
     strcpy(qq->usr,p->wj[j]->usr);


    /*保存最后修改时间*/
     gettime(&t);

     qq->time[0]=t.ti_hour;
     qq->time[1]=t.ti_min;
     qq->time[2]=t.ti_sec;

     printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);

     for(i=0;i<10;i++){
        if(p->wj[i]==0){p->wj[i]=qq;p->wj_nu+=1;return;}
         }

}






/******************************************************************************/
void HELP(){                /*获取系统帮助*/
     printf("\n 本系统所使用命令:\n");
     printf(" pwd命令     显示目录路径.由于本系统设计时已实现了在命令提示符前显示路径,\n");
     printf("             因而该功能作用不大! 命令格式:pwd\n");
     printf(" cd命令      改变工作目录 命令格式:cd .      切换到上一级目录\n");
     printf("                          命令格式:cd 目录名 切换到下一级目录\n");
     printf(" ls    命令  目录列表  命令格式:ls\n");
     printf(" mkdir 命令  创建目录  命令格式:mkdir 目录名\n");
     printf(" rmdir 命令  删除目录  命令格式:rmdir 目录名\n");
     printf(" vi    命令  创建文件  命令格式:vi 文件名\n");
     printf(" rm    命令  删除文件  命令格式:rm 文件名\n");
     printf(" copy  命令  复制文件  命令格式:copy 源文件名 目标文件名(当前目录下)\n");
     printf(" mv    命令  文件重命名命令格式:mv 源文件名 目标文件名\n");
     printf(" mvdir 命令  目录重命名命令格式:mv 源目录名 目标目录名\n");
     printf(" cls   命令  清屏命令  命令格式:cls\n");
     printf(" msd   命令  系统信息  命令格式:msd\n");
     printf(" help  命令  获取帮助  命令格式:help\n");
     printf(" logout命令  注销用户  命令格式:logout\n");
     printf("                                                   2007年1月13日\n");
     printf("                                            04网络3班 李水生 3104007253 \n");
}




/******************************************************************************/
void MV(){      /*文件重命名功能*/
     char a[15];
     char b[15];
     struct time t;
     WJ *qq;
     int i;
     int j=100;
     scanf("%s %s",a,b);
     for(i=0;i<10;i++){
        if(strcmp(a,p->wj[i])==0)j=i;
       }
     if(j==100){printf("%s不存在!\n\n",a);return;}         /*判断当前目录下源文件是否存在*/

     for(i=0;i<10;i++){
       if(p->wj[i]!=0){
         if(strcmp(p->wj[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标文件已存在也将出错*/
         }}

      strcpy(p->wj[j]->name,b);

     qq=p->wj[j];
    /*保存最后修改时间*/
     gettime(&t);

     qq->time[0]=t.ti_hour;
     qq->time[1]=t.ti_min;
     qq->time[2]=t.ti_sec;

     printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);

 }

/******************************************************************************/
void MVDIR(){      /*目录重命名功能*/
     char a[15];
     char b[15];
     struct time t;
     MULU *pp;
     int i;
     int j=100;
     scanf("%s %s",a,b);

     for(i=0;i<10;i++){
        if(strcmp(a,p->son[i])==0)j=i;
       }
     if(j==100){printf("%s不存在!\n\n",a);return;}         /*判断当前目录下源目录是否存在*/

     for(i=0;i<10;i++){
       if(p->son[i]!=0){
         if(strcmp(p->son[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标目录已存在也将出错*/
         }}


      strcpy(p->son[j]->name,b);

      pp=p->son[j];


      /*保存最后修改时间*/
     gettime(&t);

     pp->time[0]=t.ti_hour;
     pp->time[1]=t.ti_min;
     pp->time[2]=t.ti_sec;

     printf("文件于%d:%d:%d创建成功!\n\n",pp->time[0],pp->time[1],pp->time[2]);

 }




/******************************************************************************/


void CLS(){ clrscr();printf("\n");}                        /*清屏功能*/



/******************************************************************************/

void MSD(){                                                /*列系统属性*/
     struct date d;
     struct time t;
     getdate(&d);
     gettime(&t);
     printf("当前日期%4d-%2d-%2d  时间%2d:%02d:%02d\n",d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min, t.ti_sec);
     printf("当前用户是:%s\n\n",user);
  }
/******************************************************************************/


main(){
   char a[15];
   char b[30];
   char d;
   int i;      /*i用作计数*/
   int j=1;    /*j为下面循环标记用*/
   long int k;


   ROOT();                                            /*打印界面信息*/

   printf("\n\n\n\n\n\n                   广东工业大学<<操作系统>>课程设计\n\n");
   printf("                      设计题目:模拟文件管理系统\n\n\n");
   printf("                          学    院: 计 算 机\n");
   printf("                          专    业: 网络工程\n");
   printf("                          年    级: 04级 3班\n");
   printf("                          学    号: 3104007253\n");
   printf("                          姓    名: 李 水 生\n");
   printf("                          指导老师: 林    穗\n\n");
   printf("                             (2007-01-13)");

    d=getch();
    clrscr();
      printf("\n\n    ********************************************************************\n");
      printf("                           欢迎使用文件管理系统                         \n");
      printf("    ********************************************************************\n");
      printf("         本系统模拟UNIX终端工作方式,系统命令功能参照了UNIX终端的功能,用\n");
      printf("     户键入命令后即可得到相应的操作.但有些命令并没有实现UNXI终端下的功能,\n");
      printf("     如本系统的vi命令只是作为新建文件使用,新用户在使用时应先了解本系统的\n");
      printf("     命令集和各命令的格式,以免在操作过程中出错.在使用过程中用户也可以键\n");
      printf("     入help命令获取帮助!\n");
    d=getch();
    clrscr();

      HELP();



      d=getch();

   while(j){
     while(j){
      clrscr();

      printf("\n\n    ********************************************************************\n");
      printf("                           欢迎使用文件管理系统                         \n");
      printf("    ********************************************************************\n");
      printf("         本系统模拟UNIX终端工作方式,系统命令功能参照了UNIX终端的功能,用\n");
      printf("     户键入命令后即可得到相应的操作.但有些命令并没有实现UNXI终端下的功能,\n");
      printf("     如本系统的vi命令只是作为新建文件使用,新用户在使用时应先了解本系统的\n");
      printf("     命令集和各命令的格式,以免在操作过程中出错.在使用过程中用户也可以键\n");
      printf("     入help命令获取帮助!\n\n");
      printf("\n  登陆---1\n  注册---2\n  退出---3\n\n请选择:");
      scanf("%s",b);
      if(b[0]=='1'){
          if(LOGIN()==0)continue;
            else break;}
      if(b[0]=='2'){
         if( NEWUSER()==0)continue;
            else break;}
      if(b[0]=='3')j=0;     /*赋j为0值将退出所有循环结束程序*/
      }


     while(j){             /*循环命令输入*/
      for(i=0;i<lj;i++){printf("%s/",lujing[i]);}
      scanf("%s",a);
      if(strcmp(a,cmd[0])==0||strcmp(a,cmd[1])==0){CLS();continue;}
      if(strcmp(a,cmd[2])==0||strcmp(a,cmd[3])==0){ PWD();continue; }
      if(strcmp(a,cmd[4])==0||strcmp(a,cmd[5])==0){ LS(); continue;}
      if(strcmp(a,cmd[6])==0||strcmp(a,cmd[7])==0){ MKDIR();continue; }
      if(strcmp(a,cmd[8])==0||strcmp(a,cmd[9])==0){ RMDIR(); continue;}
      if(strcmp(a,cmd[10])==0||strcmp(a,cmd[11])==0){ CD(); continue;}
      if(strcmp(a,cmd[12])==0||strcmp(a,cmd[13])==0){ VI();continue; }
      if(strcmp(a,cmd[14])==0||strcmp(a,cmd[15])==0){ RM();continue; }
      if(strcmp(a,cmd[16])==0||strcmp(a,cmd[17])==0){ COPY(); continue;}
      if(strcmp(a,cmd[18])==0||strcmp(a,cmd[19])==0){ MV(); continue;}
      if(strcmp(a,cmd[20])==0||strcmp(a,cmd[21])==0){ HELP(); continue;}
      if(strcmp(a,cmd[24])==0||strcmp(a,cmd[25])==0){MSD();continue;}
      if(strcmp(a,cmd[26])==0||strcmp(a,cmd[27])==0){MVDIR();continue;}

      if(strcmp(a,cmd[22])==0||strcmp(a,cmd[23])==0){
          printf("请确认注销(y/n):");
          scanf("%s",b);
          if(b[0]=='y'||b[0]=='Y'){
             lj=1;

         strcpy(user,0);
                   

       /*注销个性化设置*/

        for(i=0;i<4;i++){
         gotoxy(1,25);
         printf("|   \r");
         gotoxy(1,25);
         for(k=0;k<20000000;k++){}
         printf("/   \r");
         gotoxy(1,25);
         for(k=0;k<20000000;k++){}
         printf("-   \r");
         gotoxy(1,25);
         for(k=0;k<20000000;k++){}
         gotoxy(1,25);
         printf("\   \r");
         for(k=0;k<20000000;k++){}

           }
         break;

             }

         printf("\n");continue;
           };

     printf("'%s'不是合法命令.你可以键入help获取帮助!\n\n",a);
            }
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -