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

📄 lwd.cpp

📁 有关操作系统文件管理的一份课程设计
💻 CPP
📖 第 1 页 / 共 2 页
字号:
# include <stdio.h>
# include <time.h>
# include <string.h>
# include <stdlib.h>
# define Num 100    //设定数据库最大存储数据量
char user[20];
struct fil
{
 char name[10];
 unsigned long int size;
 char type[3];
 unsigned long int editime;
 char content[210];
 char handlers[10];
 unsigned long int overdue;
} fil_list[Num];

void init_list();
void add();
void dele();
void list();
void save();
void load();
void help();
void edit();
void search();
void overdue_del();
int find();
int menu();
int menu_list();
int menu_search();

void check()               //密码认证
{
 int check;
 char  pin1[]="admin";  //此处设定用户口令
 char  pin[20];
aga:
 printf("\n * ============================================== *");
 printf("\n *                                                *");
 printf("\n ************  文件管理系统--用户登录   ***********");
 printf("\n *                                                *");
 printf("\n * ============================================== *");
 printf("\n \1 请输入用户名:");
 scanf ("%s",user);
 printf(" \2 请输入密码:");
 scanf ("%s",pin);
 check=strcmp(pin,pin1);
 if (check!=0)
 {
 system("cls");
 printf("\n * Sorry,  密码有误,请重新输入!   *");
 goto aga;
 }
 else system("cls");
}
void ok()                 //系统主菜单
{
 char choice;
 init_list();
 load();
 printf("\n * ============================================ *");
 printf("\n *                                              *");
 printf("\n *              欢迎使用文件管理系统            *");
 printf("\n *                                              *");
 printf("\n * ============================================ *");
 printf("\n *                                              *");
 printf("\n *               自动获取系统时间               *");
 printf("\n *                                              *");
 printf("\n *                                              *");
 printf("\n *==============================================*");
 for( ; ; )
 {
  choice = menu();
  switch(choice)
  {
  case 1: add();
       break;
  case 2: edit();
       break;
  case 3: dele();
       break;
  case 4: list();
       break;
  case 5: save();
    break;
  case 6: load();
    break;
  case 7: search();
    break;
  case 8: overdue_del();
    break;
  case 9: help();
    break;
  case 0: exit(0);
  }
 }
}

void main()  //主程序
{
 check();
 ok();
}

void init_list()  //序列定位
{
 register int t;
 for(t=0; t<Num; t++)
  fil_list[t].name[0] = '\0';
}

int time()  //获取系统时间
{  
   long int data;
   time_t t;  
   struct tm *tm;
   char timea[30];
   t = time(NULL);  
   tm = localtime(&t);  
   strcpy(timea,asctime(tm));
   data=(timea[20]-48)*10000000+(timea[21]-48)*1000000+(timea[22]-48)*100000+(timea[23]-48)*10000+(timea[8]-48)*10+(timea[9]-48);
   if (timea[4]=='J'&&timea[5]=='a') data+=1*100; 
   if (timea[4]=='F') data+=2*100;
   if (timea[4]=='M'&&timea[6]=='r') data+=3*100;
   if (timea[4]=='A'&&timea[5]=='p') data+=4*100;
   if (timea[4]=='M'&&timea[6]=='y') data+=5*100;
   if (timea[4]=='J'&&timea[6]=='n'&&timea[5]=='u') data+=6*100;
   if (timea[4]=='J'&&timea[6]=='l'&&timea[5]=='u') data+=7*100;
   if (timea[4]=='A'&&timea[6]=='g') data+=8*100;
   if (timea[4]=='S') data+=9*100;
   if (timea[4]=='O') data+=10*100;
   if (timea[4]=='N') data+=11*100;
   if (timea[4]=='D') data+=12*100;
   return data;
}  

void more()  //查看更多信息模块
{
  register int n;
agai:
 printf("\n");
 printf(" 输入文件编号,您可以查询文件的详细信息(或键入0返回主菜单):");
 scanf ("%d",&n);
 if (n==0||n>=Num) goto end;
    else 
 {
 system("cls"); 
	printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
	printf(" ┃文件管理系统v1.8          ┃\n");
	printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
    printf(" 文件编号: %d\n", n);
	printf(" 文件名: %s\n", fil_list[n-1].name);
	printf("  文件大小: %ld\n", fil_list[n-1].size);
	printf("  文件类型: %s\n", fil_list[n-1].type);
	printf("  修改日期: %ld\n", fil_list[n-1].editime);
	printf("  操作者: %s\n", fil_list[n-1].handlers);
	printf("  过期日期: %ld\n", fil_list[n-1].overdue);
	printf("  文件说明: %s\n", fil_list[n-1].content);
	printf(" _______________________________________________\n");
        goto agai;
 }
end:  system("cls");
}

void add()  //添加
{
 int slot;
 char str[80];
 slot = find();
    if(slot == -1)
 printf("\n \6 系统储存容量已满                  ");
 system("cls");
 printf("       文件管理系统                          \n");
    printf("\n \1 当前添加的文件自动编号为 %d\n \5 请您输入文件信息\n\n",slot+1);
 printf(" \1 文件名称(10字符以内): ");
 scanf ("%s",fil_list[slot].name);
 printf(" \2 文件大小(以K为单位,最大不超过1000000000K): ");
 scanf ("%s",str);
 fil_list[slot].size = strtoul(str, '\0', 10);
 printf(" \1 文件类型(请用3个字符表示,如exe,zip,rar...): ");
 scanf ("%s",fil_list[slot].type);
 fil_list[slot].editime = time();
 
 printf(" \2 文件相关说明(100字以内): ");
 scanf ("%s",fil_list[slot].content);
 strcpy (fil_list[slot].handlers,user);
 printf(" \1 文件过期日期(用8位数字表示,例如2004年9月3日即为20040903): ");
 scanf ("%s",str);
 fil_list[slot].overdue = strtoul(str, '\0', 10);
 save();
}

void dele()  //删除
{
 register int slot,t,a;
 char str[80];
agai:
    system("cls");
  printf("                 文件管理系统                    \n");
 printf(" ___________ __________________________________\n");
    printf("  编号   文件名            大小      修改日期       操作者\n");
 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);
  }
 }
 printf("\n");
 printf(" 请选择,您需要删除文件的编号(或键入0返回主菜单):");
    scanf("%s",str);
 slot = atoi(str)-1;
 if (slot<0||slot>=Num) goto end;
 else
 {
 system("cls"); 
   printf("                  文件管理系统                     \n");
 printf(" _____________________ _____________________________________\n");
     printf("  文件编号: %d\n", slot+1);
  printf("  文件名: %s\n", fil_list[slot].name);
  printf("  文件大小: %ld\n", fil_list[slot].size);
  printf("  文件类型: %s\n", fil_list[slot].type);
  printf("  修改日期: %ld\n", fil_list[slot].editime);
  printf("  操作者: %s\n", fil_list[slot].handlers);
  printf("  过期日期: %ld\n", fil_list[slot].overdue);
  printf("  文件说明: %s\n", fil_list[slot].content);
  printf(" _______________________________________________________\n");
  printf(" 请键入1, 确认删除此文件记录, 或键入其它取消操作:");
  scanf("%d",&a);
  if (a==1)
  {
   fil_list[slot].name[0]='\0';
   save();
   load();
  }
  else goto agai;
 }
end:  system("cls");
}

void edit()  //修改
{
 register int t;
 int slot,n;
 char str[80];
    system("cls"); 
 printf("                  文件管理系统               \n");
 printf(" ____________________________________________\n");
    printf(" 编号  文件名  大小    修改日期     操作者\n");
 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);
  }
 }
 printf("\n");
aga1:
 printf(" 请选择您要修改文件的编号(或键入0返回主菜单):");
 scanf ("%d",&n);
 if (n<=0||n>=Num) goto end;
 slot = find();
 if(slot < n)  {printf("\n \6 您输入的文件编号不对,请重新输入\n\n");goto aga1;}
    else 
 {
 system("cls"); 
 printf("                 文件管理系统                     \n");
        printf("\n  原文件信息:\n");
 printf(" _______________ _________________________________\n");
     printf("  文件编号: %d\n", n);
  printf("  文件名: %s\n", fil_list[n-1].name);
  printf("  文件大小: %ld\n", fil_list[n-1].size);
  printf("  文件类型: %s\n", fil_list[n-1].type);
  printf("  修改日期: %ld\n", fil_list[n-1].editime);
  printf("  操作者: %s\n", fil_list[n-1].handlers);
  printf("  过期日期: %ld\n", fil_list[n-1].overdue);
  printf("  文件说明: %s\n", fil_list[n-1].content);
  printf(" _________________ _______________________________________\n");

    printf("\n \1 当前修改的文件编号为 %d\n \5 请您修改文件信息\n\n",n);
 printf(" \1 文件名称(10字符以内): ");
 scanf ("%s",fil_list[n-1].name);
 printf(" \2 文件大小(以K为单位,最大不超过999999999K): ");
 scanf ("%s",str);
 fil_list[n-1].size = strtoul(str, '\0', 10);
 printf(" \1 文件类型(请用3个字符表示,如exe,zip,rar...): ");
 scanf ("%s",fil_list[n-1].type);
 strcpy (fil_list[n-1].handlers,user);
 
 printf(" \2 文件相关说明(100字以内): ");
 scanf ("%s",fil_list[n-1].content);
 strcpy (fil_list[n-1].handlers,user);
 printf(" \1 文件过期日期(用8位数字表示,例如2004年8月3日即为20040803): ");
 scanf ("%s",str);
 fil_list[n-1].overdue = strtoul(str, '\0', 10);
 save();
 }
end:  system("cls");
}

void list_size()  //按文件大小列表
{
 register int t;
 struct fil temp;
    int i,j,number;
 number=find();
    for(i=0;i<number-1;i++)
    for(j=0;j<number-i-1;j++)
    if(fil_list[j].size>fil_list[j+1].size)
 {temp=fil_list[j];
    fil_list[j]=fil_list[j+1];
    fil_list[j+1]=temp;}
    system("cls");
  printf("                  文件管理系统                    \n");
 printf(" _____________________________________________________\n");
    printf("  编号   文件名      大小    修改日期    操作者\n");
 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);
  }
 }
   more();
}

void list_editime()  //按修改时间列表
{
 register int t;
 struct fil temp;
    int i,j,number;
 number=find();
    for(i=0;i<number-1;i++)
    for(j=0;j<number-i-1;j++)
    if(fil_list[j].editime<fil_list[j+1].editime)
 {temp=fil_list[j];
    fil_list[j]=fil_list[j+1];
    fil_list[j+1]=temp;}
    system("cls"); 
	printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
	printf(" ┃          文件管理系统                   ┃\n");
	printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
	printf(" ┃ 编号    文件名    大小      修改日期    操作者 ┃\n");
	printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
  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);
  }
 }
   more();
}
 
void list() //列表
{
    char choice;
    register int t,a;
    system("cls");
  printf("                 文件管理系统                          \n");
 printf(" _____________________________________________________\n");
    printf("  编号    文件名      大小    修改日期     操作者\n");

⌨️ 快捷键说明

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