Advertisement
weeez

C-s Bead most

Oct 19th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.94 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h> // for open()
  4. #include <errno.h> // for perror()
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <string.h> //for strcpy()
  8. #include <unistd.h> //for file write()
  9. #include <time.h>
  10.  
  11. struct Kivansag {
  12.   char date[100];
  13.   char name[100];
  14.   char city[100];
  15.   char address[100];
  16.   char gift[100];
  17. };
  18.  
  19. const char *FILE_NAME = "kivansagok";
  20.  
  21. int isCorrect(char *answer);
  22. int isGift(char *choice);
  23.  
  24. int main(){ //23
  25.   int list_size = 0;
  26.   FILE *list;
  27.   FILE *fileContents;
  28.   struct Kivansag gifts[1000];
  29.    
  30.     time_t     now;
  31.     struct tm *ts;
  32.     char       buf[100];
  33.  
  34.     //current time
  35.     now = time(NULL);
  36.  
  37.     //Format and print the time, "ddd yyyy-mm-dd hh:mm:ss zzz" */
  38.     ts = localtime(&now);
  39.     strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S (%a)", ts);
  40.  
  41.   if((fileContents= fopen(FILE_NAME, "rb")) == NULL){
  42.     if(errno == ENOENT){//if "kivansagok" file doesn't exists
  43.       printf("A file megnem letezik! Letrehozas...\n");
  44.       list = fopen(FILE_NAME,"wb");      
  45.       fwrite(&list_size, sizeof(list_size),1,list);
  46.       fclose(list);      
  47.     }else{
  48.       printf("Valami nagy hiba tortent! \n");
  49.       exit(1);
  50.     }
  51.     }else{
  52.     fread(&list_size, sizeof(list_size),1,fileContents);
  53.     if(list_size > 0){
  54.         int i; 
  55.  
  56.  
  57.        
  58.         for(i = 0; i < list_size; i++){
  59.           struct Kivansag kivansag;
  60.           fread(&kivansag, sizeof(kivansag),1,fileContents);
  61.           gifts[i] = kivansag;
  62.         }
  63.  
  64.     }
  65.     fclose(fileContents);  
  66.  
  67.      
  68.       char answer[10];
  69.       int check = 0;
  70.       do{
  71.      
  72.         printf("\n*********************************************************\n");
  73.         printf("Udv a Mikulas kivansag kezelojen! Az alabbiak kozul valaszthat:\n"
  74.         "  (1) Uj kivansag felvete (Regit felulirja ! )\n"
  75.         "  (2) Kivansagok listazasa\n"
  76.         "  (3) Szures adott varosra\n"
  77.         "  (4) Szures adott ajandekra\n"
  78.         "  (5) Kilepes\n");
  79.         fgets(answer,10, stdin);
  80.  
  81.         check = isCorrect(answer);
  82.  
  83.         if(check < 1 || check > 5){
  84.           printf("\nHibas adatbevitel!\n");
  85.         }else{   
  86.           if(check == 1){
  87.             int volt_e = 0;
  88.             int position = 0;
  89.             struct Kivansag kivansag;
  90.            
  91.             strcpy(kivansag.date,buf);
  92.            
  93.             printf("Kerem adja meg a nevet!\n");
  94.             fgets(kivansag.name,sizeof(kivansag.name),stdin);
  95.             char *pos;
  96.             if ((pos=strchr(kivansag.name, '\n')) != NULL)
  97.                 *pos = '\0';
  98.                
  99.             int i;
  100.             for(i = 0; i < list_size; i++){        
  101.                if(strcmp(kivansag.name,gifts[i].name)==0){
  102.                    volt_e = 1;
  103.                    position = i;
  104.                }           
  105.             }
  106.                
  107.            
  108.             printf("Kerem adja meg a varosat!\n");
  109.             fgets(kivansag.city,sizeof(kivansag.city),stdin);
  110.             if ((pos=strchr(kivansag.city, '\n')) != NULL)
  111.                 *pos = '\0';
  112.            
  113.             printf("Kerem adja meg a pontos cimet!\n");        
  114.             fgets(kivansag.address,sizeof(kivansag.address),stdin);
  115.             if ((pos=strchr(kivansag.address, '\n')) != NULL)
  116.                 *pos = '\0';
  117.            
  118.             char choice[10];
  119.             printf("Kerem valasszon ajandekot!\n"
  120.               "  (1) baba\n"
  121.               "  (2) auto\n"
  122.               "  (3) labda\n"
  123.               "  (4) kirako\n"
  124.               "  (5) szinezo\n"
  125.               "  (6) konyv\n");
  126.             fgets(choice, 10, stdin);
  127.             int result = isGift(choice);
  128.             while(result == -1){
  129.                 printf("Kerem valasszon ajandekot!\n"
  130.                   "  (1) baba\n"
  131.                   "  (2) auto\n"
  132.                   "  (3) labda\n"
  133.                   "  (4) kirako\n"
  134.                   "  (5) szinezo\n"
  135.                   "  (6) konyv\n"              
  136.                 );
  137.                 fgets(choice, 10, stdin);  
  138.                 result = isGift(choice);
  139.             }
  140.             switch(result){
  141.               case 1:
  142.                 strcpy(kivansag.gift,"baba");
  143.                 break;
  144.               case 2:
  145.                 strcpy(kivansag.gift,"auto");
  146.                 break;
  147.               case 3:
  148.                 strcpy(kivansag.gift,"labda");
  149.                 break;
  150.               case 4:
  151.                 strcpy(kivansag.gift,"kirako");
  152.                 break;
  153.               case 5:
  154.                 strcpy(kivansag.gift,"szinezo");
  155.                 break;
  156.               case 6:
  157.                 strcpy(kivansag.gift,"konyv");
  158.                 break;
  159.               default:
  160.                 printf("\nvalami hiba lesz itt\n");
  161.                 break;
  162.             }
  163.             if(volt_e == 1){
  164.                gifts[position]= kivansag;
  165.                 list = fopen(FILE_NAME, "wb");
  166.                 fwrite(&list_size, sizeof(list_size),1,list);
  167.                 fwrite(&gifts, sizeof(gifts),1,list);
  168.                 fclose(list);
  169.             }else{
  170.                 ++list_size;           
  171.                 gifts[list_size-1] = kivansag;
  172.                 //printf("teszt: %s", gifts[0].name);
  173.                 list = fopen(FILE_NAME, "wb");
  174.                 fwrite(&list_size, sizeof(list_size),1,list);
  175.                 fwrite(&gifts, sizeof(gifts),1,list);
  176.                 fclose(list);
  177.             }
  178.           }
  179.           if(check == 2){
  180.             list = fopen(FILE_NAME, "rb");
  181.             fread(&list_size, sizeof(list_size),1,list);
  182.             fread(&gifts, sizeof(gifts), 1,list);
  183.             int i;
  184.             printf("\n");
  185.             for(i = 0; i < list_size; i++){
  186.                printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",gifts[i].date,gifts[i].name,gifts[i].city,gifts[i].address,gifts[i].gift);
  187.             }
  188.             printf("Listaelemek szama: %d\n",list_size);           
  189.           }
  190.           if(check == 3){
  191.             char answer[100];
  192.             printf("Adja meg a listazando varos nevet!\n");
  193.             fgets(answer, 100, stdin);
  194.             char *pos;
  195.             if ((pos=strchr(answer, '\n')) != NULL)
  196.                 *pos = '\0';           
  197.            
  198.             struct Kivansag subList[1000];
  199.             int count = 0;
  200.             int i;
  201.             for(i = 0; i < list_size; i++){            
  202.                if(strcmp(gifts[i].city,answer) == 0){
  203.                  subList[count] = gifts[i];
  204.                  ++count;
  205.                }
  206.             }
  207.             if(count > 0){
  208.                 printf("\n");
  209.                 for(i = 0; i < count; i++){
  210.                    printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
  211.                 }
  212.                 printf("Szurt listaelemek szama: %d\n",count); 
  213.             }else{
  214.                 printf("Nem talaltam ilyen varost!\n");
  215.             }
  216.           }
  217.           if(check == 4){
  218.             char answer[100];
  219.             printf("Adja meg a listazando ajandek nevet!\n");
  220.             fgets(answer, 100, stdin);
  221.             char *pos;
  222.             if ((pos=strchr(answer, '\n')) != NULL)
  223.                 *pos = '\0';           
  224.            
  225.             struct Kivansag subList[1000];
  226.             int count = 0;
  227.             int i;
  228.             for(i = 0; i < list_size; i++){            
  229.                if(strcmp(gifts[i].gift,answer) == 0){
  230.                  subList[count] = gifts[i];
  231.                  ++count;
  232.                }
  233.             }
  234.             if(count > 0){
  235.                 printf("\n");
  236.                 for(i = 0; i < count; i++){
  237.                    printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
  238.                 }
  239.                 printf("Szurt listaelemek szama: %d\n",count); 
  240.             }else{
  241.                 printf("Nem talaltam ilyen ajandekot!\n"); 
  242.             }        
  243.          
  244.          
  245.           }
  246.         }
  247.       } while(check != 5);
  248.    
  249. }
  250.  
  251.  
  252.      
  253.   return 0;
  254. }//30
  255.  
  256. int isCorrect(char answer[10]){
  257.    if(*answer >48 && *answer < 54){
  258.      if(*answer == 49) return 1;
  259.      if(*answer == 50) return 2;
  260.      if(*answer == 51) return 3;
  261.      if(*answer == 52) return 4;
  262.      if(*answer == 53) return 5;
  263.    }
  264.    
  265.    return -1;
  266. }
  267.  
  268. int isGift(char answer[10]){
  269.    if(*answer >48 && *answer < 55){
  270.      if(*answer == 49) return 1;
  271.      if(*answer == 50) return 2;
  272.      if(*answer == 51) return 3;
  273.      if(*answer == 52) return 4;
  274.      if(*answer == 53) return 5;
  275.      if(*answer == 54) return 6;
  276.    }
  277.    
  278.    return -1;
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement