Advertisement
weeez

zsolt

Mar 28th, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 14.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. #define MAX_SIZE 512
  7. #define MEGFIGYELO_MAX_MERET 100
  8. #define TELEPULES_MAX_MERET 70
  9. #define KOR_MAX_MERET 70
  10. #define IDO_MAX_MERET 80
  11.  
  12. typedef enum { false, true } bool;
  13.  
  14. typedef struct{
  15.         char megfigyelo_neve[MEGFIGYELO_MAX_MERET];
  16.         char telepules_nev[TELEPULES_MAX_MERET];
  17.         int nyuszi_db;
  18.         char nyuszi_kor[KOR_MAX_MERET];
  19.         char megfigyelesi_ido[IDO_MAX_MERET];
  20. }megfigyeles;
  21.  
  22. void menu();
  23. void get_time(char* buffer);
  24. void read_megfigyelesek_from_file(megfigyeles* megfigyelesek, int* megfigyelesek_size);
  25. void append_megfigyeles(megfigyeles* uj_megfigyeles);
  26. void uj_megfigyeles();
  27. void megfigyeles_modositas();
  28. void megfigyeles_torlese();
  29. void teljes_lista();
  30. void megfigyelo_alapjan_lista();
  31. void telepules_alapjan_lista();
  32. void ido_fuggvenyeben_darab();
  33.  
  34. int main(int argc, const char * argv[]) {
  35.         menu();
  36.         return 0;
  37. }
  38.  
  39. void menu() {
  40.    
  41.     char input[MAX_SIZE];
  42.    
  43.     while(true){
  44.                 printf("Menu:\n");
  45.                 printf("1\t - Nyuszimegfigyelés adatainak rögzítése.\n");
  46.                 printf("2\t - Megfigyelési adat modositása.\n");
  47.                 printf("3\t - Megfigyelési adat törlése.\n");
  48.                 printf("4\t - Megfigyelt adatok teljes listája.\n");
  49.                 printf("5\t - Megfigyelő alapján szűrt listája.\n");
  50.                 printf("6\t - Település alapján szűrt listája.\n");
  51.                 printf("7\t - Idő függvényében a nyuszik darabszáma.\n");
  52.                 printf("Kilépes:\t\t\tPress CTRL + C to exit!\n");
  53.                 scanf("%s",&input);
  54.                 if (strcmp(input, "1") == 0) {
  55.                                 uj_megfigyeles();
  56.                 }
  57.                 if (strcmp(input, "2") == 0) {
  58.                                 megfigyeles_modositas();
  59.                 }
  60.                 if (strcmp(input, "3") == 0) {
  61.                                 megfigyeles_torlese();
  62.                 }
  63.                 if (strcmp(input, "4") == 0) {
  64.                                 teljes_lista();
  65.                 }
  66.                 if (strcmp(input, "5") == 0) {
  67.                                 megfigyelo_alapjan_lista();
  68.                 }
  69.                 if (strcmp(input, "6") == 0) {
  70.                                 telepules_alapjan_lista();
  71.                 }
  72.                 if (strcmp(input, "7") == 0) {
  73.                                 ido_fuggvenyeben_darab();
  74.                 }
  75.         }
  76. }
  77.  
  78. void get_time(char* buffer) {
  79.    
  80.     time_t rawtime;
  81.     struct tm * timeinfo;
  82.    
  83.     time (&rawtime);
  84.     timeinfo = localtime (&rawtime);
  85.    
  86.     strftime (buffer,80,"%Y.%m.%d.-%H:%M:%S",timeinfo);
  87. }
  88.  
  89. void append_megfigyeles(megfigyeles* uj_megfigyeles) {
  90.    
  91.     FILE *f_megfigyelesek;
  92.    
  93.     f_megfigyelesek = fopen("MEGFIGYELESEK", "a");
  94.    
  95.     fprintf(f_megfigyelesek, "%s %s %d %s %s\n",
  96.         uj_megfigyeles->megfigyelo_neve,
  97.         uj_megfigyeles->telepules_nev,
  98.         uj_megfigyeles->nyuszi_db,
  99.         uj_megfigyeles->nyuszi_kor,
  100.         uj_megfigyeles->megfigyelesi_ido);
  101.     fclose(f_megfigyelesek);
  102.    
  103. }
  104.  
  105. void read_megfigyelesek_from_file(megfigyeles* megfigyelesek, int* megfigyelesek_size) {
  106.    
  107.     FILE *f_megfigyelesek;
  108.     *megfigyelesek_size = 0;
  109.    
  110.     f_megfigyelesek = fopen("MEGFIGYELESEK", "r");
  111.     char output[MAX_SIZE];
  112.    
  113.     while (fgets(output, 100, f_megfigyelesek) != NULL) {      
  114.         megfigyeles mf;
  115.         sscanf (output, "%s %s %d %s %s",
  116.                 mf.megfigyelo_neve,
  117.                 mf.telepules_nev,
  118.                 &mf.nyuszi_db,
  119.                 mf.nyuszi_kor,
  120.                 mf.megfigyelesi_ido);
  121.         megfigyelesek[*megfigyelesek_size] = mf;
  122.         ++(*megfigyelesek_size);      
  123.     }
  124.    
  125.     fclose(f_megfigyelesek);
  126.    
  127. }
  128.  
  129. void teljes_lista() {
  130.     megfigyeles megfigyelesek[MAX_SIZE];
  131.     int megfigyelesek_size;  
  132.     int* megfigyelesek_size_p = &megfigyelesek_size;
  133.     read_megfigyelesek_from_file(megfigyelesek, megfigyelesek_size_p);
  134.    
  135.     int i;
  136.     for (i = 0; i < megfigyelesek_size; ++i) {      
  137.         printf("%s %s %d %s %s\n",
  138.                 megfigyelesek[i].megfigyelo_neve,
  139.                 megfigyelesek[i].telepules_nev,
  140.                 megfigyelesek[i].nyuszi_db,
  141.                 megfigyelesek[i].nyuszi_kor,
  142.                 megfigyelesek[i].megfigyelesi_ido);
  143.     }
  144.     printf("\n");
  145. }
  146.  
  147. void uj_megfigyeles(){
  148.         char input[MAX_SIZE];
  149.     bool done = false;
  150.    
  151.     while (!done) {
  152.         printf("Kérem adja meg az új megfigyeles adatait.\n");
  153.         printf("<megfigyelo_neve> <telepules_nev> <nyuszi_db> <nyuszi_kor>\n");
  154.         printf("<nyuszi_kor> értékei:\n0 - fiatal\n1 - felnott\n2 - oreg\n");      
  155.        
  156.                 megfigyeles uj_mf;
  157.         int uj_mf_kor;
  158.         scanf("%s %s %d %d",
  159.                 uj_mf.megfigyelo_neve,
  160.                 uj_mf.telepules_nev,
  161.                 &uj_mf.nyuszi_db,
  162.                 &uj_mf_kor);
  163.        
  164.         bool valid = false;
  165.         if (uj_mf_kor == 0) {
  166.             strcpy(uj_mf.nyuszi_kor, "fiatal");
  167.             valid = true;      
  168.         }else if (uj_mf_kor == 1) {
  169.             strcpy(uj_mf.nyuszi_kor, "felnott");
  170.             valid = true;      
  171.         }else if (uj_mf_kor == 2) {
  172.             strcpy(uj_mf.nyuszi_kor, "oreg");
  173.             valid = true;    
  174.         }  
  175.         if (valid == true) {
  176.                         get_time(uj_mf.megfigyelesi_ido);
  177.             append_megfigyeles(&uj_mf);
  178.             printf("\nFelvitel sikerült!\n");
  179.         }else{
  180.             printf("\nFelvitel nem sikerült! Rosszul adta meg a <nyuszi_kor> értékét!\n");
  181.         }
  182.        
  183.         fseek(stdin,0,SEEK_END);
  184.         printf("\nAkar újabb megfigyelest felvenni? (y/n)\t");
  185.         scanf("%s", input);        
  186.         if (strcmp(input, "n") == 0) {
  187.             done = true;
  188.         }
  189.     }
  190. }
  191.  
  192. void megfigyeles_modositas() {
  193.     megfigyeles mfek[MAX_SIZE];
  194.     int mfek_size;
  195.     char t_megfigyelo_neve[MEGFIGYELO_MAX_MERET];
  196.         char t_telepules_nev[TELEPULES_MAX_MERET];
  197.         printf("Kérem adja meg a modositani kivánt megfigyelés adatait.\n");
  198.     printf("<megfigyelo_neve> <telepules_nev>\n");
  199.         scanf("%s %s", t_megfigyelo_neve, t_telepules_nev);
  200.         read_megfigyelesek_from_file(mfek, &mfek_size);
  201.     FILE *f_mf;  
  202.     f_mf = fopen("MEGFIGYELESEK", "w");
  203.    
  204.     int i;
  205.         int seged = 0;
  206.     for (i = 0; i < mfek_size; ++i) {
  207.                 if (strcmp(mfek[i].megfigyelo_neve, t_megfigyelo_neve) == 0 &&
  208.                         strcmp(mfek[i].telepules_nev, t_telepules_nev) == 0) {
  209.             ++seged;
  210.                         printf("Kérem adja meg az megfigyeles új adatait.\n");
  211.                         printf("<nyuszi_db> <nyuszi_kor>\n");
  212.                         printf("<nyuszi_kor> értékei:\n0 - fiatal\n1 - felnott\n2 - oreg\n");
  213.                         int uj_mf_db;
  214.                         int uj_mf_kor;
  215.                         scanf("%d %d",
  216.                         &uj_mf_db,
  217.                         &uj_mf_kor);
  218.                         mfek[i].nyuszi_db = uj_mf_db;
  219.                         bool valid = false;
  220.                        
  221.                         if (uj_mf_kor == 0) {
  222.                                 strcpy(mfek[i].nyuszi_kor, "fiatal");
  223.                                 valid = true;          
  224.                         }else if (uj_mf_kor == 1) {
  225.                                 strcpy(mfek[i].nyuszi_kor, "felnott");
  226.                                 valid = true;          
  227.                         }else if (uj_mf_kor == 2) {
  228.                                 strcpy(mfek[i].nyuszi_kor, "oreg");
  229.                                 valid = true;          
  230.                         }
  231.                        
  232.                         if (valid == true) {
  233.                                 fprintf(f_mf, "%s %s %d %s %s\n",
  234.                                 mfek[i].megfigyelo_neve,
  235.                                 mfek[i].telepules_nev,
  236.                                 mfek[i].nyuszi_db,
  237.                                 mfek[i].nyuszi_kor,
  238.                                 mfek[i].megfigyelesi_ido);      
  239.                         }else{
  240.                                 printf("\nModositas nem sikerült! Rosszul adta meg a <nyuszi_kor> értékét!\n");
  241.                         }
  242.         }
  243.                  else {
  244.                                 fprintf(f_mf, "%s %s %d %s %s\n",
  245.                                 mfek[i].megfigyelo_neve,
  246.                                 mfek[i].telepules_nev,
  247.                                 mfek[i].nyuszi_db,
  248.                                 mfek[i].nyuszi_kor,
  249.                                 mfek[i].megfigyelesi_ido);      
  250.         }
  251.     }
  252.        
  253.     if(seged==0){
  254.                 printf("Modositas sikertelen. Nem találhato ilyen bejegyzes.\n\n");
  255.         }
  256.         else{
  257.                 printf("Modositas sikerult.\n\n");
  258.         }
  259.        
  260.     fclose(f_mf);  
  261. }
  262.  
  263. void megfigyeles_torlese() {
  264.     megfigyeles mfek[MAX_SIZE];
  265.     int mfek_size;
  266.     char t_megfigyelo_neve[MEGFIGYELO_MAX_MERET];
  267.         char t_telepules_nev[TELEPULES_MAX_MERET];
  268.         printf("Kérem adja meg a törölni kivánt megfigyelés adatait.\n");
  269.     printf("<megfigyelo_neve> <telepules_nev>\n");
  270.         scanf("%s %s", t_megfigyelo_neve, t_telepules_nev);
  271.         read_megfigyelesek_from_file(mfek, &mfek_size);
  272.     FILE *f_mf;  
  273.     f_mf = fopen("MEGFIGYELESEK", "w");
  274.    
  275.     int i;
  276.         int seged = 0;
  277.     for (i = 0; i < mfek_size; ++i) {
  278.         if (strcmp(mfek[i].megfigyelo_neve, t_megfigyelo_neve) != 0 ||
  279.                         strcmp(mfek[i].telepules_nev, t_telepules_nev) != 0) {
  280.                                 fprintf(f_mf, "%s %s %d %s %s\n",
  281.                                 mfek[i].megfigyelo_neve,
  282.                                 mfek[i].telepules_nev,
  283.                                 mfek[i].nyuszi_db,
  284.                                 mfek[i].nyuszi_kor,
  285.                                 mfek[i].megfigyelesi_ido);      
  286.         }
  287.                 else{
  288.             ++seged;
  289.         }
  290.     }
  291.        
  292.     if(seged==0){
  293.                 printf("Törlés sikertelen. Nem találhato ilyen bejegyzes.\n\n");
  294.         }
  295.         else{
  296.                 printf("Törlés sikerult.\n\n");
  297.         }
  298.        
  299.     fclose(f_mf);  
  300. }
  301.  
  302. void megfigyelo_alapjan_lista(){
  303.         megfigyeles megfigyelesek[MAX_SIZE];
  304.     int megfigyelesek_size;
  305.     char megfigyelo_neve[MEGFIGYELO_MAX_MERET];
  306.     int* megfigyelesek_size_p = &megfigyelesek_size;
  307.     read_megfigyelesek_from_file(megfigyelesek, megfigyelesek_size_p);
  308.     printf("Kérem adja meg a megfigyelo nevet.\n");
  309.         scanf("%s", megfigyelo_neve);
  310.     int i;
  311.     for (i = 0; i < megfigyelesek_size; ++i) {
  312.         if (strcmp(megfigyelesek[i].megfigyelo_neve, megfigyelo_neve) == 0) {
  313.                         printf("%s %s %d %s %s\n",
  314.                         megfigyelesek[i].megfigyelo_neve,
  315.                         megfigyelesek[i].telepules_nev,
  316.                         megfigyelesek[i].nyuszi_db,
  317.                         megfigyelesek[i].nyuszi_kor,
  318.                         megfigyelesek[i].megfigyelesi_ido);
  319.                 }
  320.     }
  321.     printf("\n");
  322. }
  323.  
  324. void telepules_alapjan_lista(){
  325.         megfigyeles megfigyelesek[MAX_SIZE];
  326.     int megfigyelesek_size;
  327.    
  328.         char telepules_nev[TELEPULES_MAX_MERET];
  329.     int* megfigyelesek_size_p = &megfigyelesek_size;
  330.     read_megfigyelesek_from_file(megfigyelesek, megfigyelesek_size_p);
  331.     printf("Kérem adja meg a telepules nevet.\n");
  332.         scanf("%s", telepules_nev);
  333.     int i;
  334.     for (i = 0; i < megfigyelesek_size; ++i) {
  335.         if (strcmp(megfigyelesek[i].telepules_nev, telepules_nev) == 0) {
  336.                         printf("%s %s %d %s %s\n",
  337.                         megfigyelesek[i].megfigyelo_neve,
  338.                         megfigyelesek[i].telepules_nev,
  339.                         megfigyelesek[i].nyuszi_db,
  340.                         megfigyelesek[i].nyuszi_kor,
  341.                         megfigyelesek[i].megfigyelesi_ido);
  342.                 }
  343.     }
  344.     printf("\n");
  345. }
  346.  
  347. void ido_fuggvenyeben_darab(){
  348.         megfigyeles megfigyelesek[MAX_SIZE];
  349.     int megfigyelesek_size;
  350.     char* parts;
  351.         char ido[IDO_MAX_MERET];
  352.         char telepules_nev[TELEPULES_MAX_MERET];
  353.         char ido2[IDO_MAX_MERET];
  354.         int db = 0;
  355.         int i;
  356.         int j = 0;
  357.     int* megfigyelesek_size_p = &megfigyelesek_size;
  358.     read_megfigyelesek_from_file(megfigyelesek, megfigyelesek_size_p);
  359.     printf("Kérem adja meg a telepules nevet.\n");
  360.         scanf("%s", telepules_nev);
  361.        
  362.  
  363.         while(j < megfigyelesek_size){
  364.                 if (strcmp(megfigyelesek[j].telepules_nev, telepules_nev) == 0){
  365.                         parts = strtok(megfigyelesek[j].megfigyelesi_ido, ".");
  366.                         strcpy(ido2, &parts[0]);
  367.                         parts = strtok(&parts[5], ".");
  368.                         strcat(ido2, parts);
  369.                         break;
  370.                 }
  371.                 j++;
  372.         }
  373.  
  374.     for (i = 0; i < megfigyelesek_size; ++i) {
  375.                 parts = strtok(megfigyelesek[i].megfigyelesi_ido, ".");
  376.                 strcpy(ido, &parts[0]);
  377.                 parts = strtok(&parts[5], ".");
  378.                 strcat(ido, parts);
  379.         if (strcmp(megfigyelesek[i].telepules_nev, telepules_nev) == 0) {
  380.                         if(strcmp(ido2, ido) == 0){
  381.                                 db += megfigyelesek[i].nyuszi_db;
  382.                         }
  383.                         else{
  384.                                 printf("%s. %d darab nyuszi volt megfigyelve.\n",
  385.                                 ido2,
  386.                                 db);
  387.                                 db = megfigyelesek[i].nyuszi_db;
  388.                                 strcpy(ido2,ido);
  389.                         }
  390.                 }
  391.     }
  392.         printf("%s. %d darab nyuszi volt megfigyelve.\n",
  393.                         ido2,
  394.                         db);
  395.     printf("\n");
  396. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement