SLIDE1

Thursday, April 30, 2015

code c++ phần mềm split and join file part,001,002

code c++ phần mềm split and join file part,001,002



#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
void layten(char *duongdan,char *ten)
{
 int d=0;
 for(int i=strlen(duongdan)-1;i>=0;i--)
  if(duongdan[i]!='/' && duongdan[i]!='\\') ten[d++]=duongdan[i];
  else break;
 ten[d]='\0';
 for(int i=0;i<strlen(ten)/2;i++)
 {
  char c=ten[i];
  ten[i]=ten[strlen(ten)-1-i];
  ten[strlen(ten)-1-i]=c;
 }
}
void bang(char *a,char *b)
{
 for(int i=0;i<strlen(b);i++) a[i]=b[i];
 a[strlen(b)-1]='\0';
}
int insertpass(char *duongdan,char *mk)
{
 FILE *t=fopen(duongdan,"rb+");
 FILE *f=fopen("logTKT.bin","wb+");
 if(t==NULL || f==NULL) return 0;
 fwrite(mk,8,1,f);
 char s[2];
 while(fread(s,1,1,t)) fwrite(s,1,1,f);
 rewind(t);rewind(f);
 while(fread(s,1,1,f)) fwrite(s,1,1,t);
 fcloseall();
 remove("logTKT.bin");
 return 1;
}
int pass_ok(char *s)
{
 int dem=0;
 for(int i=0;i<strlen(s);i++)
  if(s[i]>='0' && s[i]<='9') dem++;
 if(dem!=strlen(s) || dem!=6) return 0;
 s[6]=s[7]='#';
 s[8]='\0';
 return 1;
}
int split(char *duongdan,char *thumuc,int n)
{
 char ten[100],duongdan2[100],a[10],*s=new char[2];
 unsigned long dungluong,dem;
 int i;
 layten(duongdan,ten);
 strcat(thumuc,"/");
 strcat(thumuc,ten);
 strcat(thumuc,".partt");
 FILE *t=fopen(duongdan,"rb");
 if(t==NULL)
 {
  printf("\nduong dan file khong hop le!");
  return 0;
 }
 fseek(t,0,2);
 dungluong=ftell(t)/n;
 rewind(t);
 for(i=1;i<n;i++)
 {
  bang(duongdan2,thumuc);
  a[0]='\0';
  itoa(i,a,10);
  strcat(duongdan2,a);
  FILE *f=fopen(duongdan2,"wb");
  if(f==NULL)
  {
   printf("\nduong dan thu muc chua file ket qua khong hop le!");
   return 0;
  }
  dem=0;
  do{
   fread(s,1,1,t);
   fwrite(s,1,1,f);
   dem+=1;
  }while(dem!=dungluong);
  fclose(f);
 }
 bang(duongdan2,thumuc);
 a[0]='\0';
 itoa(n,a,10);
 strcat(duongdan2,a);
 FILE *f=fopen(duongdan2,"wb");
 if(f==NULL)
 {
  printf("\nduong dan thu muc chua file ket qua khong hop le!");
  return 0;
 }
 while(fread(s,1,1,t)) fwrite(s,1,1,f);
 fclose(f);
 delete []s;
 fclose(t);
 return 1;
}
int join(char *duongdan,char *thumuc)
{
 int i;
 char ten[100],duongdanketqua[100],a[10],s[2],dd[100];
 layten(duongdan,ten);
 for(i=strlen(ten)-1;i>=0;i--)
  if(ten[i]!='.') ten[i]='\0';
  else break;
 ten[i]='\0';
 duongdanketqua[0]='\0';
 strcat(duongdanketqua,thumuc);
 if(strlen(duongdanketqua)>0)strcat(duongdanketqua,"/");
 strcat(duongdanketqua,ten);
 FILE *t=fopen(duongdanketqua,"wb");
 if(t==NULL)
 {
  printf("\nduong dan thu muc chua file ket qua khong hop le!\n");
  return 0;
 }
 for(i=strlen(duongdan)-1;i>=0;i--)
  if(duongdan[i]>='0' && duongdan[i]<='9') duongdan[i]='\0';
  else break;
 i=1;
 while(1)
 {
  a[0]='\0';
  itoa(i++,a,10);
  bang(dd,duongdan);
  strcat(dd,"t");
  strcat(dd,a);
  FILE *f=fopen(dd,"rb");
  if(i==1 && f==NULL)
  {
   printf("\nduong dan file khong hop le!");
   return 0;
  }
  if(f==NULL) break;
  while(fread(s,1,1,f)) fwrite(s,1,1,t);
  fclose(f);
 }
 fclose(t);
 return 1;
}
int split2(char *duongdan,char *thumuc,char *dl)
{
 unsigned long dungluong=0,dem;
 int i;
 char a[100],ten[100],duongdan2[100],s[2];
 layten(duongdan,ten);
 if(strlen(thumuc)>0)strcat(thumuc,"/");
 strcat(thumuc,ten);
 strcat(thumuc,".partt");
 for(i=0;i<strlen(dl);i++)
  if(dl[i]>='0' && dl[i]<='9') a[i]=dl[i];
  else break;
 a[i]='\0';
 dungluong+=atol(a);
 if(dl[i]=='K') dungluong*=1024;
 if(dl[i]=='M') dungluong*=1024*1024;
 FILE *t=fopen(duongdan,"rb");
 if(t==NULL)
 {
  printf("\nduong dan file khong hop le!");
  return 0;
 }
 i=1;
 while(!feof(t))
 {
  bang(duongdan2,thumuc);
  a[0]='\0';
  itoa(i++,a,10);
  strcat(duongdan2,a);
  FILE *f=fopen(duongdan2,"wb");
  if(f==NULL)
  {
   printf("\nduong dan thu muc chua file ket qua khong hop le!");
   return 0;
  }
  dem=0;
  for(dem=1;dem<=dungluong;dem++)
   if(fread(s,1,1,t)) fwrite(s,1,1,f);
   else break;
  fclose(f);
 }
 return 1;
}
int co_pass(char *duongdan,char *pass)
{
 FILE *t=fopen(duongdan,"rb+");
 if(t==NULL) return -1;
 char s[10];
 fread(s,8,1,t);
 if(s[6]=='#' && s[7]=='#')
 {
  int i;
  for(i=0;i<6;i++) pass[i]=s[i];
  pass[i]='\0';  
  fclose(t);
  return 1;
 }
 fclose(t);
 return 0;
}
void xuly_pass(char *duongdan)
{
 FILE *t=fopen(duongdan,"rb");
 FILE *f=fopen("logTKT.bin","wb+");
 char s[10];
 fread(s,8,1,t);
 while(fread(s,1,1,t)) fwrite(s,1,1,f);
 rewind(f);fclose(t);
 t=fopen(duongdan,"wb");
 while(fread(s,1,1,f)) fwrite(s,1,1,t);
 fcloseall();
 remove("logTKT.bin");
}
void main()
{
 char duongdan[100],thumuc[100],dungluong[100],pass[100];
 int n,k=1,kt,kiemtrapass;
 while(k!=0)
 {
  system("cls");
  printf("\n\n________________MENU___________________\n");
  printf("| 1. chia file thanh n part.(split1)   |\n");
  printf("| 2. chia file theo dung luong.(split2)|\n");
  printf("| 3. gop file (join)                   |\n");
  printf("| 0. Thoat.                            |\n");
  printf("________________________________________\n");
  scanf("%d",&k);



  if(k==1)
  {
   kiemtrapass=0;
   printf("\nnhap vao DUONG DAN FILE chua file can Split: ");fflush(stdin);gets(duongdan);
   printf("\nnhap vao THU MUC chua file ket qua Split: ");fflush(stdin);gets(thumuc);
   printf("\nnhap vao SO PART can Split: N=");scanf("%d",&n);
   printf("\nDo you Set PassWord?? 1-yes; 0-no;  : ");scanf("%d",&kt);
   if(kt==1)
   {
    kiemtrapass=1;
    int kc,kl;
    do{
     kc=0;
     printf("\nnhap 6 chu so password: ");fflush(stdin);gets(pass);
     kl=pass_ok(pass);
     if(kl==0)
     {
      printf("\nnhap pass sai dinh dang! nhap lai!");
      kc=1;
     }
    }while(kc==1);
    printf("\ndang cai dat PassWord vao file! doi nhe! ...");
    kc=insertpass(duongdan,pass);
    if(kc==0)
    {
     printf("\nduong dan file khong hop le!");
     goto ketthuc1;
    }
   }
   printf("\nDANG XU LY! VUI LONG DOI! ...");
   kt=split(duongdan,thumuc,n);
   if(kiemtrapass==1)xuly_pass(duongdan);
   if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc1:;
   system("pause");
  }




  else if(k==2)
  {
   kiemtrapass=0;
   printf("\nnhap vao DUONG DAN FILE chua file can Split: ");fflush(stdin);gets(duongdan);
   printf("\nnhap vao THU MUC chua file ket qua Split: ");fflush(stdin);gets(thumuc);
   
   do{
    kt=0;
    printf("\nnhap vao DUNG LUONG 1 part can Split: dung luong =");fflush(stdin);gets(dungluong);
    int dem=0;
    for(int i=0;i<strlen(dungluong);i++)
     if((dungluong[i]>='0' && dungluong[i]<='9') || dungluong[i]=='B' || dungluong[i]=='K' || dungluong[i]=='M')
      dem++;
    if(dem!=strlen(dungluong))
    {
     printf("\nkhong hop le!");
     kt=1;
    }
   }while(kt);

   printf("\nDo you Set PassWord?? 1-yes; 0-no;  : ");scanf("%d",&kt);
   if(kt==1)
   {
    kiemtrapass=1;
    int kc,kl;
    do{
     kc=0;
     printf("\nnhap 6 chu so password: ");fflush(stdin);gets(pass);
     kl=pass_ok(pass);
     if(kl==0)
     {
      printf("\nnhap pass sai dinh dang! nhap lai!");
      kc=1;
     }
    }while(kc==1);
    printf("\ndang cai dat PassWord vao file! doi nhe! ...");
    kc=insertpass(duongdan,pass);
    if(kc==0)
    {
     printf("\nduong dan file khong hop le!");
     goto ketthuc2;
    }
   }
   printf("\nDANG XU LY! VUI LONG DOI! ...");
   kt=split2(duongdan,thumuc,dungluong);
   if(kiemtrapass==1)xuly_pass(duongdan);
   if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc2:;
   system("pause");
  }



  else if(k==3)
  {
   printf("\nnhap vao DUONG DAN FILE part1: ");fflush(stdin);gets(duongdan);
   printf("\nnhap vao THU MUC chua file ket qua: ");fflush(stdin);gets(thumuc);
   char lay_pass[100];
   printf("\ndang xu ly! ...");
   int mk=co_pass(duongdan,lay_pass);
   if(mk==-1)
   {
    printf("\nduong dan file khong hop le!");
    goto ketthuc3;
   }
   else if(mk==1)
   {
    char check_pass[100];
    printf("\nnhap PASS de join file: ");fflush(stdin);gets(check_pass);
    if(strcmp(lay_pass,check_pass)!=0)
    {
     printf("\nnhap pass sai!!!");
     goto ketthuc3;
    }
    else xuly_pass(duongdan);
   }
   printf("\nDANG XU LY! VUI LONG DOI! ...");
   kt=join(duongdan,thumuc);
   if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc3:;
   system("pause");
  }
  else printf("\n\nTAM BIET!\n");
 }
 getch();
}

Related Posts:

  • đề thi và code giải Olympia IT tuần 1 CPTTRƯỜNG ĐH CÔNG NGHỆ THÔNG TINCÂU LẠC BỘ LẬP TRÌNH CPTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc TPHCM, ngày  20 tháng 03 năm 2015Cuộc Thi Lập Trình Olympia ITĐề Chính Thức Tuần 1Câu 1. (6đ) Trong kho h… Read More
  • các toán tử trong lập trình ctoán tử gán:dùng để gán 1 giá trị nào đó cho biến.ví dụ: a = 5;gán giá trij5 cho biến a. vế trái là biến, còn vế phải có thể là hằng bất kì hây biến hay biểu thức.toán tử gán luôn luôn được hiện từ trái sang phải và không bao… Read More
  • đề thi lập trình olympia IT tuần 2TRƯỜNG ĐH CÔNG NGHỆ THÔNG TINCÂU LẠC BỘ LẬP TRÌNH CPTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc TPHCM, ngày  28 tháng 03 năm 2015Cuộc Thi Lập Trình Olympia ITĐề Chính Thức Tuần 2Câu 1. (6đ) Xâu biểu th… Read More
  • CÁC NGÔN NGỮ VÀ VÀI ỨNG DỤNG CỦA OOPIII. CÁC NGÔN NGỮ VÀ VÀI ỨNG DỤNG CỦA OOP Xuất phát từ tư tưởng của ngôn ngữ SIMULA67, trung tâm nghiên cứu Palo Alto (PARC) của hãng XEROR đã tập trung 10 năm nghiên cứu để hoàn thiện ngôn ngữ OOP đầu tiên với tên gọi l… Read More
  • [C++] điều khiển robot trong bản đồ Oxy U-D-L-R-T-BRobot đang đứng ở vị trí 0 0 trong bản đồ. Robot có thể nhận các lệnh L: về phía bên trái, R: về bên phải, U: tiến về phía trước, D: lùi ra sau, B: quay lại vị trí trước đó (lưu ý, nếu robot đã thực hiện lênh U, R, sau đó nhậ… Read More