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

📄 lwd.cpp

📁 有关操作系统文件管理的一份课程设计
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 for(t=0; t<Num; t++)
 {
  if(fil_list[t].name[0])
  {
   printf("%4d     %-10s  %10ld      %8ld        %s \n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
  }
 }
 
 for( ; ; )
 {
  choice = menu_list();
  switch(choice)
  {
  case 1: more();
       break;
  case 2: list_editime();
       break;
  case 3: list_size();
       break;
  case 0: ok();
  }
 }
}
void save()   //文件保存
{
 FILE *fp;
 register int i;
 if((fp=fopen("data.dat", "wb"))==NULL)
  printf("载入文件失败!\n");
 for(i=0; i<Num; i++)
  if(*fil_list[i].name)
   if(fwrite(&fil_list[i], sizeof(struct fil), 1, fp)!=1)
    printf("保存文件失败!\n");
 system("cls");
 printf("*************************");
 printf("*系统:成功保存数据文件!*");
 printf("*************************");
 fclose(fp);
}
void load()   //载入
{
 FILE *fp;
 register int i;
 if((fp=fopen("data.dat", "rb"))==NULL)
  printf("载入文件失败!\n");
    init_list();
 for(i=0; i<Num; i++)
  if(fread(&fil_list[i], sizeof(struct fil), 1, fp)!=1)
  {
   if(feof(fp))
    break;
   printf("载入文件失败!\n");
  }
 system("cls"); 
 printf("\n *                       系统:成功载入数据文件!                         *");
 fclose(fp);
}
void help()    //帮助
{
 printf("\n *                                                                       *");
 printf("\n *                                                                       *");
 printf("\n * ====================================================================  *");
 printf("\n *                                                                       *");
 printf("\n *                                                                       *");
}
int menu() //主菜单
{
 char str[10];
 int c;
 printf("\n * ============================================== *");
 printf("\n * 1.添加 2.修改 3.删除 4.列表 5.保存 6.载入 7.查找 8.清理 9.帮助 0.退出 *");
 printf("\n * ============================================== *");
 do{
  printf("\n \2 请输入您的选择:");
 scanf ("%s",str);
  c = atoi(str);
 } while(c<0 || c>9);
 system("cls"); 
 return c;
}
int menu_list() //列表菜单
{
 char str[10];
 int c;
 printf("\n * ===================================================================== *");
 printf("\n *  1.查看文件详细信息  2.按文件修改日期排列  3.按文件大小排列   0.返回  *");
 printf("\n * ===================================================================== *");
 do{
  printf("\n \2 请输入您的选择:");
 scanf ("%s",&str);
  c = atoi(str);
 } while(c<0 || c>3);
 return c;
}
int find() //检查容量
{
 register int t;
 for(t=0; fil_list[t].name[0]&&t<Num; t++);
 if(t==Num) 
  return -1;
 return t;
}
int menu_search() //查找菜单
{
 char str[80];
 int c;
 printf("\n * ======================================================================= *");
 printf("\n *              欢迎使用 文件管理系统之'文件查找功能'                      *");
 printf("\n * ======================================================================= *");
 printf("\n *1.按文件名查找\n  2.按修改日期查找\n  3.按过期日期查找\n  4.按类型查找   *");
 printf("\n *5.按文件说明内容查找(关键字查找)\n  6.按操作用户名称查找\n  0.返回主菜单 *");
 printf("\n *=========================================================================*");
 do{
  printf("\n \2 请输入您的选择:");
 scanf ("%s",str);
  c = atoi(str);
 } while(c<0 || c>6);
 
 return c;
}
void search_name() //查找模块1
{
  register int t,flag=0;
  char sname[20];
  system("cls"); 
  printf("\n * ================================================================= *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能                *");
  printf("\n * ================================================================= *");
  printf("\n *\2 请输入您要查找文件的名称:");
  scanf ("%s",&sname);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                                    *");
  printf("\n * ================================================================= *");
  for(t=0; t<Num; t++)
  {
  if(strcmp(fil_list[t].name,sname)==0)
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                查找结果:   没有找到相应文件!                          *");
   printf("\n *                                                                       *");
   }
  else more();
}
void search_editime()    //查找模块2
{
  register int t,flag=0;
  unsigned long int time_a,time_b;
  system("cls"); 
  printf("\n * ================================================================ *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能               *");
  printf("\n * ================================================================ *");
  printf("\n \2 请输入查找文件的修改日期范围(用8位数字表示,如2004年8月3日即为20040803)");
  printf("\n \1 首先请输入开始日期:");
  scanf ("%d",&time_a);
  printf(" \2 然后请输入结束日期:");
  scanf ("%d",&time_b);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                                   *");
  printf("\n * ================================================================ *");
  for(t=0; t<Num; t++)
  {
  if(fil_list[t].editime>=time_a&&fil_list[t].editime<=time_b)
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                 *");
   printf("\n *                查找结果:   没有找到相应文件!                    *");
   printf("\n *                                                                 *");
   }
  else more();
}
void search_overdue() //查找模块3
{
  register int t,flag=0;
  unsigned long int time_a,time_b;
  system("cls"); 
  printf("\n * ================================================================ *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能               *");
  printf("\n * ================================================================ *");
  printf("\n \2 请输入查找文件的过期日期范围(用8位数字表示,如2004年8月3日即为20040803)");
  printf("\n \1 首先请输入开始日期:");
  scanf ("%d",&time_a);
  printf(" \2 然后请输入结束日期:");
  scanf ("%d",&time_b);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                                  *");
  printf("\n * =============================================================== *");
  for(t=0; t<Num; t++)
  {
  if(fil_list[t].overdue>=time_a&&fil_list[t].overdue<=time_b)
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                查找结果:   没有找到相应文件!                          *");
   printf("\n *                                                                       *");
   }
  else more();
}
void search_type() //查找模块4
{
  register int t,flag=0;
  char stype[20];
  system("cls"); 
  printf("\n * ======================================================= *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能      *");
  printf("\n * ======================================================= *");
  printf("\n \2 请输入您要查找文件的类型:");
  scanf ("%s",stype);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                          *");
  printf("\n * ======================================================= *");
  for(t=0; t<Num; t++)
  {
  if(strcmp(fil_list[t].type,stype)==0)
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                查找结果:   没有找到相应文件!                          *");
   printf("\n *                                                                       *");
   }
  else more();
}
void search_handlers() //查找模块5
{
  register int t,flag=0;
  char shandlers[20];
  system("cls"); 
  printf("\n * ================================================================ *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能               *");
  printf("\n * ================================================================ *");
  printf("\n \2 请输入您要查找文件的操作用户名称:");
  scanf ("%s",shandlers);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                                   *");
  printf("\n * ================================================================ *");
  for(t=0; t<Num; t++)
  {
  if(strcmp(fil_list[t].handlers,shandlers)==0)
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                查找结果:   没有找到相应文件!                          *");
   printf("\n *                                                                       *");
   }
  else more();
}
void search_content() //关键字查找模块
{
  register int t,flag=0,flag1;
  int a,b,c,d=0;
  char scontent[20];
  system("cls"); 
  printf("\n * ================================================================ *");
  printf("\n *                欢迎使用 文件管理系统之文件查找功能               *");
  printf("\n * ================================================================ *");
  printf("\n \6 文件说明内容关键字查找,请输入关键字或词(8个字以内):");
  scanf ("%s",scontent);
  system("cls");
  printf("\n * 找到以下文件符合你的查找要求:                                   *");
  printf("\n * ================================================================ *");
  for(b=0;scontent[b]!='\0';)  {b++;}
    for(t=0; t<Num; t++)
     for(a=0,flag1=0;fil_list[t].content[a]!='\0';a++)
  {
  d=0;
  for(c=0; c<b; c++) {if(scontent[c]==fil_list[t].content[a+c]) d++;}
  if(d==b&&flag1==0) 
  {printf("\n    编号:%-4d  名称:%-10s\n", t+1,fil_list[t].name);
  flag=1;flag1=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                查找结果:   没有找到相应文件!                          *");
   printf("\n *                                                                       *");
   }
  else more();
}
void overdue_del() //文件清理
{
  register int t,a,flag=0;
  unsigned long int soverdue;
  system("cls"); 
  printf("\n * ================================================================ *");
  printf("\n *              欢迎使用 文件管理系统之[过期文件清理功能            *");
  printf("\n * ================================================================ *");
  printf("\n * 根据当前计算机时间,系统查找出以下文件已经过期:                  *");
  printf("\n * ================================================================ *");
  soverdue=time();
  for(t=0; t<Num; t++)
  {
  if(fil_list[t].overdue<soverdue&&fil_list[t].overdue>0)
  {printf("\n    编号:%-4d  名称:%-10s", t+1,fil_list[t].name);
  flag=1;}
  }
  if(flag==0)
   {
      system("cls");
   printf("\n *                                                                       *");
   printf("\n *                清理结果: 没有过期文件!                                *");
   printf("\n *                                                                       *");
   }
  else
  {
   printf("\n\n   请键入1,删除全部过期文件(谨慎操作,不可恢复) , 或键入其它取消操作: ");
  scanf("%d",&a);
  if (a==1)
  {
   for(t=0; t<Num; t++) 
   { if(fil_list[t].overdue<=soverdue&&fil_list[t].overdue>0) fil_list[t].name[0]='\0';}
   save();
   load();
  }
  else system("cls");
  }
}
void search() //查找
{
 char ch;
 for( ; ; )
 {
  ch = menu_search();
  switch(ch)
  {
  case 1: search_name();
       break;
  case 2: search_editime();
       break;
  case 3: search_overdue();
       break;
  case 4: search_type();
    break;
  case 6: search_handlers();
    break;
  case 5: search_content();
    break;
  case 0: ok();
  }
 }
}

⌨️ 快捷键说明

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