Advertisement
Guest User

Untitled

a guest
May 6th, 2016
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.12 KB | None | 0 0
  1. /*
  2. A "Best of ŰBER" társaság közösségi, telekocsi rendszerű utazás szervezéssel foglalkozik.
  3. A társaság Krakkóba, Prágába, Bécsbe indít "JÁRATOT", de igény esetén ezt a listát bővítheti vagy érdeklődés hiányában szűkítheti!
  4. Az érdeklődők válogathassanak a kínálatból. Minden városba csak a legközelebbi indulási időpontot tároljuk.
  5.  A jelentkezőknél rögzítsük a jelenkező nevét, a jelentkezési időt(ezt nem kell bekérni), a célállomást és a jelentkező telefonszámát!
  6.  
  7. Készítsünk C programot, amellyel lehessen célállomást listáztatni, újat felvenni, törölni.
  8. Tudjuk rögzíteni egy jelentkező adatait és tudjuk azt módosítani vagy törölni! Lehessen listázni tetszőleges járat információkat, utaslistával!
  9. Az adatokat fájlban tároljuk.*/
  10.  
  11. #include <stdlib.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14. #include <time.h>
  15. #include <unistd.h>
  16.  
  17.  
  18. struct Celallomas
  19. {
  20.     char nev[50];
  21. };
  22.  
  23. struct Jelentkezo
  24. {
  25.     char nev[50];    
  26.     char telefon[50];
  27.     time_t datum;
  28.     struct Celallomas jelentkezo_allomas;
  29.  
  30. };
  31.  
  32. struct Utazas
  33. {
  34.     struct Jelentkezo utazojelentkezo[50];
  35.     int eredmenyek[50];
  36.     int meret;
  37. };
  38.  
  39. void Menu();
  40. void Celallomas_listazfv();
  41. void Uj_celallomasfv();
  42. void Celallomas_torlesfv();
  43. void Jaratinformacio_utaslistavalfv();
  44. void Uj_jelentkezofv();
  45. void Jelentkezoadatok_modositasafv();
  46. void Jelentkezoadatok_torlesefv();
  47. void Utazas_inditasa();
  48.  
  49. int main()
  50. {
  51.     Menu();
  52.     return 0;
  53. }
  54.  
  55.  
  56. void Menu()
  57. {
  58.     int menu_szam;
  59.    
  60.  
  61.     do
  62.     {
  63.         printf("Valassz az alabbi menupontok kozul!\n");
  64.         printf("1. Celallomas listazasa\n");
  65.         printf("2. Uj celallomas\n");
  66.         printf("3. Celallomas torlese\n");
  67.         printf("4. Jaratinformaciok utaslistaval\n");
  68.  
  69.         printf("5. Jelentkezo rogzitese\n");
  70.         printf("6. Jelentkezo adatok modositasa\n");
  71.         printf("7. Jelentkezo adatok torlese\n");
  72.         printf("8. Utazás inditasa\n");
  73.         printf("9. Kilepes\n");
  74.  
  75.  
  76.         scanf("%i", &menu_szam);
  77.  
  78.         switch(menu_szam)
  79.         {
  80.             case 1: Celallomas_listazfv();
  81.             break;
  82.  
  83.             case 2: Uj_celallomasfv();
  84.             break;
  85.  
  86.             case 3: Celallomas_torlesfv();
  87.             break;
  88.  
  89.             case 4: Jaratinformacio_utaslistavalfv();
  90.             break;
  91.  
  92.             case 5: Uj_jelentkezofv();
  93.             break;
  94.  
  95.             case 6: Jelentkezoadatok_modositasafv();
  96.             break;
  97.  
  98.             case 7: Jelentkezoadatok_torlesefv();
  99.             break;
  100.            
  101.             case 8: Utazas_inditasa();
  102.             break;
  103.            
  104.  
  105.         }
  106.     }while(menu_szam != 10);
  107.  
  108. }
  109.  
  110. void Celallomas_listazfv()
  111. {
  112.     int allomasok_szama;
  113.     int osszes_celallomas = 50;
  114.     struct Celallomas celallomas[50];
  115.     FILE* fo;
  116.     fo = fopen("allomasok.db", "rb");
  117.     allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,fo);
  118.     if (celallomas == NULL || allomasok_szama == 0) {
  119.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  120.             exit(1);
  121.         }
  122.    
  123.     int i=0;
  124.     for(i; i< allomasok_szama; i++)
  125.     {
  126.         printf("%s\n",celallomas[i].nev);
  127.        
  128.     }
  129.     //return;
  130. }
  131. void Uj_celallomasfv()
  132. {  
  133.     struct Celallomas celallomas;
  134.     char* input = (char*)malloc(50 * sizeof(char));
  135.     FILE* f;
  136.     if((access("allomasok.db", W_OK) != 0))
  137.     {
  138.         f = fopen("allomasok.db", "ab+");
  139.         struct Celallomas krakko;
  140.         strcpy(krakko.nev, "Krakko");
  141.         fwrite(&krakko, sizeof(struct Celallomas), 1, f);
  142.         struct Celallomas praga;
  143.         strcpy(praga.nev, "Praga");
  144.         fwrite(&praga, sizeof(struct Celallomas), 1, f);
  145.         struct Celallomas becs;
  146.         strcpy(becs.nev, "Becs");
  147.         fwrite(&becs, sizeof(struct Celallomas), 1, f);
  148.         fclose(f);
  149.     }
  150.     f = fopen("allomasok.db", "ab+");
  151.    
  152.     printf("%s","\nAdja meg az allomas nevet!\n");
  153.     scanf("%s", celallomas.nev);    
  154.    
  155.     fwrite(&celallomas, sizeof(struct Celallomas), 1, f);
  156.     fclose(f);
  157.     free(input);
  158.    
  159. }
  160. void Celallomas_torlesfv()
  161. {
  162.     struct Celallomas allomastorlo;
  163.     int allomasok_szama;
  164.     int osszes_celallomas = 50;
  165.     struct Celallomas celallomas[50];
  166.     FILE* fo;
  167.     fo = fopen("allomasok.db", "rb");
  168.     allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,fo);
  169.     if (celallomas == NULL || allomasok_szama == 0) {
  170.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  171.             exit(1);
  172.         }
  173.    
  174.     printf("%s","\nAdja meg az allomas nevet!\n");
  175.     scanf("%s", allomastorlo.nev);
  176.     int i=0;
  177.     for(i; i< allomasok_szama; i++)
  178.     {
  179.         int eredmeny;
  180.         eredmeny = strcmp(celallomas[i].nev,allomastorlo.nev);
  181.         if(eredmeny == 0)
  182.         {
  183.             fo =freopen(NULL, "wb+",fo);
  184.             int j;
  185.             for(j=i; j< allomasok_szama-1; j++)
  186.             {
  187.                 celallomas[j]=celallomas[j+1];
  188.             }
  189.          break;        
  190.         }
  191.     }
  192.     fwrite(&celallomas, sizeof(struct Celallomas), allomasok_szama-1 , fo);
  193.     fclose(fo);
  194. }
  195.  
  196. void Jaratinformacio_utaslistavalfv()
  197. {
  198.     int jelentkezok_szama;
  199.     int allomasok_szama;
  200.     int osszes_jelentkezo = 50;
  201.     int osszes_celallomas = 50;
  202.     struct Jelentkezo jelentkezo[50];
  203.     struct Celallomas celallomas[50];
  204.     FILE* fo;
  205.     fo = fopen("jelentkezo.db", "rb");
  206.     FILE* f;
  207.     f = fopen("allomasok.db", "rb");
  208.     jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
  209.     allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,f);
  210.    
  211.    
  212.     if (jelentkezo == NULL || jelentkezok_szama == 0) {
  213.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  214.             exit(1);
  215.         }
  216.      if (celallomas == NULL || allomasok_szama == 0) {
  217.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  218.             exit(1);
  219.         }
  220.    
  221.     int i=0;
  222.     for(i; i< allomasok_szama; i++)
  223.     {
  224.         printf("%s\n",celallomas[i].nev);
  225.         int j=0;
  226.         for(j; j< jelentkezok_szama; j++)
  227.         {      
  228.         int eredmeny;
  229.         eredmeny = strcmp(celallomas[i].nev,jelentkezo[j].jelentkezo_allomas.nev);
  230.         if(eredmeny == 0)
  231.         {
  232.         printf("%s ",jelentkezo[j].nev);
  233.        
  234.         }
  235.     }
  236.     }
  237.     fclose(fo);
  238.     fclose(f);
  239.  
  240. }
  241. void Uj_jelentkezofv()
  242. {
  243.     struct Jelentkezo jelentkezo;
  244.     char* input = (char*)malloc(50 * sizeof(char));
  245.     FILE* f;
  246.     f = fopen("jelentkezo.db", "ab+");
  247.    
  248.     printf("%s","\nAdja meg nevet!\n");
  249.     scanf("%s", jelentkezo.nev);    
  250.     printf("%s","\nAdja meg a telefonszamat!\n");
  251.     scanf("%s", jelentkezo.telefon);
  252.     printf("%s","\nAdja meg az allomas nevet!\n");
  253.     scanf("%s", jelentkezo.jelentkezo_allomas.nev);  
  254.      
  255.     time(&(jelentkezo.datum));
  256.     fwrite(&jelentkezo, sizeof(struct Jelentkezo), 1, f);
  257.     fclose(f);
  258.     free(input);
  259. }
  260. void Jelentkezoadatok_modositasafv()
  261. {
  262.     char jelentkezo_modositas[50];
  263.    
  264.     printf("%s","\nKinek az adatait modositja?\n");
  265.     scanf("%s", jelentkezo_modositas);
  266.    
  267.     int jelentkezok_szama;
  268.     int osszes_jelentkezo = 50;
  269.     struct Jelentkezo jelentkezo[50];
  270.     FILE* fo;
  271.     fo = fopen("jelentkezo.db", "rb");
  272.     jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
  273.     if (jelentkezo == NULL || jelentkezok_szama == 0) {
  274.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  275.             exit(1);
  276.         }
  277.    
  278.     int i=0;
  279.     for(i; i< jelentkezok_szama; i++)
  280.     {
  281.         int eredmeny;
  282.         eredmeny = strcmp(jelentkezo[i].nev,jelentkezo_modositas);
  283.         if(eredmeny == 0)
  284.         {
  285.             fo =freopen(NULL, "wb+",fo);
  286.             char mitszeretne[50];
  287.             printf("Mit szeretne modositani? nev, telefon,celallomas\n");
  288.             scanf("%s", mitszeretne);
  289.             if(strcmp(mitszeretne,"nev")== 0)
  290.             {
  291.                 scanf("%s", jelentkezo[i].nev);
  292.             }else if(strcmp(mitszeretne,"telefon")== 0)
  293.             {
  294.                 scanf("%s", jelentkezo[i].telefon);
  295.             }else if (strcmp(mitszeretne,"celallomas")== 0)
  296.             {
  297.                 scanf("%s", jelentkezo[i].jelentkezo_allomas.nev);
  298.             }
  299.          break;        
  300.         }
  301.     }
  302.     fwrite(&jelentkezo, sizeof(struct Jelentkezo), jelentkezok_szama-1 , fo);
  303.     fclose(fo);
  304. }
  305. void Jelentkezoadatok_torlesefv()
  306. {
  307.     struct Jelentkezo jelentkezo_torlo;
  308.     int jelentkezok_szama;
  309.     int osszes_jelentkezo = 50;
  310.     struct Jelentkezo jelentkezo[50];
  311.     FILE* fo;
  312.     fo = fopen("jelentkezo.db", "rb");
  313.     jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
  314.     if (jelentkezo == NULL || jelentkezok_szama == 0) {
  315.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  316.             exit(1);
  317.         }
  318.    
  319.     printf("%s","\nAdja meg a jelentkezo nevet!\n");
  320.     scanf("%s", jelentkezo_torlo.nev);
  321.     int i=0;
  322.     for(i; i< jelentkezok_szama; i++)
  323.     {
  324.         int eredmeny;
  325.         eredmeny = strcmp(jelentkezo[i].nev,jelentkezo_torlo.nev);
  326.         if(eredmeny == 0)
  327.         {
  328.             fo =freopen(NULL, "wb+",fo);
  329.             int j;
  330.             for(j=i; j< jelentkezok_szama-1; j++)
  331.             {
  332.                 jelentkezo[j]=jelentkezo[j+1];
  333.             }
  334.          break;        
  335.         }
  336.     }
  337.     fwrite(&jelentkezo, sizeof(struct Jelentkezo), jelentkezok_szama-1 , fo);
  338.     fclose(fo);
  339. }
  340. void Utazas_inditasa()
  341. {  
  342.     int jelentkezok_szama;
  343.     int osszes_jelentkezo = 50;
  344.     struct Jelentkezo jelentkezo[50];
  345.     struct Utazas utazo;
  346.     FILE* fo;
  347.     fo = fopen("jelentkezo.db", "rb");
  348.     jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
  349.     if (jelentkezo == NULL || jelentkezok_szama == 0) {
  350.             printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
  351.             exit(1);
  352.         }
  353.    
  354.     printf("%s","\nAdja meg, hogy melyik utazás induljon!\n");
  355.     char mitinditsak[20];
  356.     scanf("%s", mitinditsak);
  357.     int i=0;
  358.     for(i; i< jelentkezok_szama; i++)
  359.     {
  360.         if(strcmp(jelentkezo[i].jelentkezo_allomas.nev, mitinditsak) == 0)
  361.         {
  362.             utazo.utazojelentkezo[i] = jelentkezo[i];
  363.         }
  364.     }
  365.     //PIPE KÉSZÍTÉS
  366.     int pipefd[2];
  367.     pid_t pid;
  368.    
  369.     if (pipe(pipefd) == -1)
  370.     {
  371.     perror("Hiba a pipe nyitaskor!");
  372.     exit(EXIT_FAILURE);
  373.     }
  374.    
  375.     pid = fork();
  376.    
  377.     if (pid == -1)
  378.     {
  379.        perror("Fork hiba");
  380.        exit(EXIT_FAILURE);
  381.     }
  382.    
  383.     if (pid == 0)
  384.       {
  385.        
  386.         printf("Szulo indul!\n");
  387.         int i=0;
  388.         for(i;i<jelentkezok_szama; i++)
  389.         {
  390.             if(strcmp(jelentkezo[i].jelentkezo_allomas.nev, mitinditsak) == 0)
  391.             {
  392.                 utazo.meret++;
  393.                 srand(time(NULL));
  394.                 int random_szam = rand() % 5 + 1;
  395.                 utazo.eredmenyek[i] = random_szam;
  396.             }
  397.         }
  398.                 close(pipefd[0]);
  399.                 write(pipefd[1], &utazo ,sizeof(utazo));
  400.                 close(pipefd[1]);
  401.                 printf("Szulo beirta az adatokat a csobe!\n");
  402.                 fflush(NULL);  
  403.                 wait();    
  404.     }
  405.     else
  406.      {  
  407.             int osszes =0;
  408.             sleep(3);
  409.             close(pipefd[1]);
  410.             printf("Gyerek elkezdi olvasni a csobol az adatokat!\n");
  411.             read(pipefd[0], &utazo,sizeof(utazo));
  412.             int k=0;
  413.             for(k;k<utazo.meret;k++)
  414.             {
  415.                  osszes+=utazo.eredmenyek[k];
  416.             }              
  417.                printf("Összértékelés: %s",osszes);
  418.            printf("\n");
  419.                close(pipefd[0]);
  420.                
  421.              //szülő
  422.              write(pipefd[1], "Befejezheted",13);
  423.              close(pipefd[1]);
  424.              printf("Gyerek beirta az adatokat a csobe!\n");
  425.             fflush(NULL);  
  426.             wait();
  427.             printf("Gyerek befejezte!");
  428.            }
  429. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement