文件管理系统

类别:编程语言 点击:0 评论:0 推荐:

/***********文 件 管 理 系 统***********/
#include <stdio.h>
#include <stdlib.h>                /*不容易归类的标准函数库*/
#include <conio.h>
#include <string.h>
#include <sys\stat.h>         
#include <fcntl.h>                 /*非标准文件输入输出操作的代码符号属性*/
#include <dos.h>
#include <io.h>

int init()                         /*初始化操作界面函数*/
{int i;
 clrscr();
 gotoxy(23,4);printf("* * * * * * * * * * * * * *");
 gotoxy(27,5);printf("FILE MANAGE SYSTEM");
 gotoxy(23,6);printf("* * * * * * * * * * * * * *");
 gotoxy(28,9);printf("1--Creat    File");
 gotoxy(28,10);printf("2--Delete   File");
 gotoxy(28,11);printf("3--OPen     File");
 gotoxy(28,12);printf("4--Write    File");
 gotoxy(28,13);printf("5--Locate   File");
 gotoxy(28,14);printf("6--Modify   File");
 gotoxy(28,15);printf("7--Copy     File");
 gotoxy(28,16);printf("8--Move     File");
 gotoxy(28,17);printf("9--Cataloge Manage");
 gotoxy(28,18);printf("10--Exit    File");
 gotoxy(25,21);
 printf("Please Choice:");
   scanf("%d",&i);
 return(i);                        /*选择相应的序号,执行相应的操作*/
}

main()
{int x,i,j,flag=1;
 char name[15],name1[15],name2[40];
 char choice,ch;
 int handle,status;                /*定义文件的指针和状态*/
 FILE *fp;
 while(flag)                       /*初始化系统界面*/
{i=init();
 getchar();
 switch(i)
  { case 1:label1:                 /*创建文件操作*/
    clrscr();
    gotoxy(27,5);printf("CREAT    FILE\n");
    for(j=0;j<40;j++)
      printf("= ");
    printf("\n\nPlease input the creating file name and routine:\n");
             scanf("%s",name);
    getchar();
    handle=creatnew(name,0);/*按指定的文件方式创建文件,若有同名文件返回错误代码*/
           if(handle==-1)
      { printf("\nSorry,the file already exists.");
          getchar();
        printf("\nInput again?(Y or N)");
   scanf("%c",&choice);getchar();
        if(choice=='Y'||choice=='y')
          goto label1;
      }
    else { printf("\nThe file is created.");
                  printf("Do you now input contentof the file?(Y or N):");
                  while(1)         /*输入创建文件的内容*/  
                    { scanf("%c",&choice);
                        if(choice=='y'||choice=='n'||choice=='Y'||choice=='N')
                          break;
                        else
                          printf("\nError!Please input again!");
                     }
                    if(choice=='y'||choice=='Y')
       { printf("\nNow input content to the file(End with '#'):\n\n");
                       fp=fopen(name,'w');/*把内容存放到fp指向的文件中去*/
                       ch=getchar();
                       while(ch!='#')
                          { fputc(ch,fp);
       ch=getchar();
                           }
   fclose(fp);getchar();/*关闭文件*/
                   }
    getchar();
    break;
    case 2:label2:                 /*删除文件的操作*/
    clrscr();
    gotoxy(25,5);printf("DELETE    FILE\n");
    for(j=0;j<40;j++)
      printf("= ");
    printf("\n\nPlease input the deleting file name and routine:\n");
      scanf("%s",name);     /*输入要删除的文件名*/
    getchar();
           printf("\n Are you sure?(Y or N):");
           while(1)
      { scanf("%c",&choice);
              if(choice=='y'||choice=='n'||choice=='Y'||choice=='N')
                break;
              else
                printf("\nError!Please input again!");
             }
            if(choice=='y'||choice=='Y')
             {status=access(name,0);/*获取文件的状态,是否存在*/
              if(status!=0)
                {printf("\nSorry the file doesn't exist!");
                   getchar();
   printf("\n\nInput again?(Y or N)");
     scanf("%c",&choice);getchar();
          if(choice=='Y'||choice=='y')
            goto label2;
         }
               else
                  {  status=access(name,02);/*获取文件的状态,是否存在并且是否只读*/
                     if(status!=0)
   { printf("\nSorry the file is only read!");
     getchar();
   }
       else
         {unlink(name);    /*从目录中删除一个文件函数,该函数在dos.h中*/  
   printf("\n\ndelete succefully!");
   getchar();
         }
                   }
               }
    getchar();
    break;
    case 3:label3:                 /*打开文件操作*/      
    clrscr();
    gotoxy(27,5);printf("OPEN    FILE\n");
    for(j=0;j<40;j++)
      printf("= ");
    printf("\n\nPlease input the opening file name and routine:\n");
             scanf("%s",name);
           status=access(name,0);/*获取文件的状态*/
           if(status!=0)
              {printf("\nSorry the file doesn't exist!");
                 getchar();
        printf("\n\nInput again?(Y or N)");
   scanf("%c",&choice);getchar();
        if(choice=='Y'||choice=='y')
          goto label3;
              }
           else
      { printf("\nNow begin to read the file:\n");
            fp=fopen(name,'r');
               ch=fgetc(fp);        /*读出文件到内存*/
               while(ch!=EOF)
                 {printf("%c",ch);
    ch=fgetc(fp);j++;
                 }
        fclose(fp);getchar();/*关闭文件*/
             }
           getchar();
    break;
    case 4:label4:                 /*写文件操作*/
    clrscr();
    gotoxy(27,5);printf("WRITE    FILE\n");
    for(j=0;j<40;j++)
      printf("= ");
    printf("\n\nPlease input the writing file name and routine:\n");
      scanf("%s",name);
           status=access(name,0);/*获取name指向的文件状态*/
           if(status!=0)
             {printf("\nSorry the file doesn't exist!");
               getchar();
       printf("\n\nInput again?(Y or N)");
  scanf("%c",&choice);getchar();
       if(choice=='Y'||choice=='y')
  goto label4;
              }
           else
             {fp=fopen(name,'w');/*以写入方式打开name 指向的文件*/
       printf("\nPlease input the information(end with '#'):\n");
              ch=getchar();        /*重写文件*/
              while(ch!='#')
                { fputc(ch,fp);
                  ch=getchar();
                 }
              fclose(fp);getchar();/*关闭文件*/
             }
           getchar();
    break;
    case 5:label5:                 /*定位文件操作*/
    clrscr();
    gotoxy(27,5);printf("LOCATE    FILE\n");
    for(j=0;j<40;j++)
      printf("= ");
    printf("\n\nPlease input the locating file name and routine:\n");
      scanf("%s",name);
           status=access(name,0);/*获取name文件指向的文件的状态*/
           if(status!=0)
             {printf("\nSorry the file doesn't exist!");
               getchar();
        printf("\n\nInput again?(Y or N)");
   scanf("%c",&choice);getchar();
        if(choice=='Y'||choice=='y')
   goto label5;
              }
           else
             {printf("\nPlease input the location:");
                scanf("%d",&x);
       handle=open(name,O_CREAT|O_RDWR,S_IREAD|S_IWRITE);/*打开由name指定的文件,name既可以是简单的文件名*/
       /*也可以是文件的路径名,O_CREAT表示了打开文件的存取代码,若文件不存在,则建立,否则无效。*/
       /*O_RDWR表示打开文件用于读写。S_IREAD|S_IWRITE允许读写*/
              lseek(handle,x,SEEK_SET);/*该函数把由handle指定的文件的文件指针,移到SEEK_SET(开始位置)再加上x偏移量的地方*/
              getchar();
             }
           getchar();
    break;
    case 6:label6:                 /*修改文件属性操作*/
    clrscr();
    gotoxy(27,5);printf("MODIFY    FILE\n");
    for(j=0;j<80;j++)
      printf("= ");
    printf("\n\nPlease input the modifying attribution file name and routine:\n");
             scanf("%s",name);
           status=access(name,0);/*获取文件的状态*/
           if(status!=0)
             {printf("\nSorry the file doesn't exist!");
               getchar();
        printf("\n\nInput again?(Y or N)");
   scanf("%c",&choice);getchar();
        if(choice=='Y'||choice=='y')
   goto label6;
              }
           else
              { printf("\nPlease choice:1--READ_ONLY    2--WRITE_ONLY");
               printf("\n\nPlease choice the attributione operation:");
                while(1)
                   { scanf("%d",&x);
                     if(x==1||x==2)
                       break;
                     else
                       printf("\nError!Please input again!");
                    }
                 if(x==1) { status=chmod(name,S_IREAD);/*修改文件为“只读”*/
                            if(status)
                              printf("\nSorry!Couldn't make the file read_only!");
                            else
         printf("\n===Made <%s> read_only===",name);
       getchar();
                          }
                 else if(x==2)     /*修改文件为“只写”*/
                         { status=chmod(name,S_IWRITE);
                           if(status)
                             printf("\nSorry!Couldn't make the file write_only!");
                           else
        printf("\n===Made <%s> write_only===",name);
      getchar();
    }
               }
          getchar();
          break;
   case 7:clrscr();                /*复制文件的操作*/
   gotoxy(27,5);printf("COPY    FILE\n");
   for(j=0;j<40;j++)
      printf("= ");
   printf("\n\nPlease input the copying file name and routine:\n");
            scanf("%s",name);
          getchar();
          printf("\nPlease input the copyed file name and routine:\n");
            scanf("%s",name1);
          getchar();
          strcpy(name2,"copy ");
          strcat(name2,name);
          strcat(name2," ");
          strcat(name2,name1);
          system(name2);           /*系统调用dos指令*/
          getchar();
          break;
  case 8:clrscr();                 /*移动文件操作*/
   gotoxy(27,5);printf("MOVE    FILE\n");
   for(j=0;j<40;j++)
      printf("= ");
   printf("\n\nPlease input the moving file name and routine:\n");
            scanf("%s",name);
          getchar();
          printf("\nPlease input the moving file name and routine:\n");
            scanf("%s",name1);
          getchar();
          strcpy(name2,"move ");
          strcat(name2,name);
          strcat(name2," ");
          strcat(name2,name1);
          system(name2);           /*系统调用dos指令*/
          getchar();
          break;
  case 9: label9:                  /*目录管理操作*/
          clrscr();
   gotoxy(27,5);printf("CATALOGUE    MANAGE\n");
   for(j=0;j<40;j++)
      printf("= ");
   gotoxy(13,9);
   printf("Please input the moving file name and routine:\n");
   gotoxy(25,11);printf("1--display catalogue");
   gotoxy(25,12);printf("2--creat catalogue");
   gotoxy(25,13);printf("3--detele catalogue");
   gotoxy(25,14);printf("4--copy catalogue");
   gotoxy(25,15);printf("5--move catalogue");
   gotoxy(25,16);printf("6--exit catalogue");
   gotoxy(26,20);
   printf("Please choice:");
            scanf("%d",&x);
   while(x<1||x>6)
              {printf("\nError!Please input again!\n");
                 scanf("%d",&x);
              }
          switch(x)
            { case 1: printf("\nPlease iuput the displaying catalogue:\n");
                        scanf("%s",name);/*县是目录操作*/
                      strcpy(name2,"dir ");/*复制dir命令*/
                      strcat(name2, name);
        printf("%s",name2);
        getchar();
        system(name2);/*系统调用*/
        getchar();
               break;
              case 2: printf("\nPlease iuput the creating catalogue:\n");
                        scanf("%s",name);/*创建目录操作*/
                      strcpy(name2,"md  ");/*复制md命令*/
                      strcat(name2,name);
                      system(name2);/*系统调用*/
        getchar();
        break;
              case 3: printf("\nPlease iuput the deleting catalogue:\n");
                        scanf("%s",name);/*删除目录操作*/
                      strcpy(name2,"rd  ");/*复制rd命令*/
                      strcat(name2,name);
                      system(name2);
        getchar();
        break;
              case 4: printf("\nPlease iuput the copying catalogue:\n");
                        scanf("%s",name);/*复制目录操作*/
                     printf("\nPlease iuput the displayed catalogue:\n");
                       scanf("%s",name1);
                     strcpy(name2,"xcopy ");/*复制xcopy命令*/
                     strcat(name2,name);
                     strcat(name2," ");
                     strcat(name2,name1);
                     strcat(name2,"/e");
                     system(name2);/*系统调用*/
       getchar();break;
             case 5: printf("\nPlease iuput the moving catalogue:\n");
                       scanf("%s",name);/*移动目录操作*/
                     printf("\nPlease iuput the moved catalogue:\n");
                       scanf("%s",name1);
                     strcpy(name2,"move  ");/*复制move命令*/
                     strcat(name2,name);
                     strcat(name2," ");
                     strcat(name2,name1);
                     system(name2);
       getchar();break;
      case 6:goto tag;       /*退出目录管理操作*/
   }
 printf("Input again?(Y or N)");
   scanf("%c",&choice);getchar();
 if(choice=='Y'||choice=='y')
          goto label9; 
 tag:getchar();
            break;
case 10:flag=0;exit(0);break;      /*退出文件管理系统程序*/
default: clrscr();
  printf("\n\n    Error!Please input again!\n");
  getchar();
  break;
    }
  }
 }
}


本文地址:http://com.8s8s.com/it/it29426.htm