Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- A "Best of ŰBER" társaság közösségi, telekocsi rendszerű utazás szervezéssel foglalkozik.
- 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!
- Az érdeklődők válogathassanak a kínálatból. Minden városba csak a legközelebbi indulási időpontot tároljuk.
- 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!
- Készítsünk C programot, amellyel lehessen célállomást listáztatni, újat felvenni, törölni.
- 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!
- Az adatokat fájlban tároljuk.*/
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #include <unistd.h>
- struct Celallomas
- {
- char nev[50];
- };
- struct Jelentkezo
- {
- char nev[50];
- char telefon[50];
- time_t datum;
- struct Celallomas jelentkezo_allomas;
- };
- struct Utazas
- {
- struct Jelentkezo utazojelentkezo[50];
- int eredmenyek[50];
- int meret;
- };
- void Menu();
- void Celallomas_listazfv();
- void Uj_celallomasfv();
- void Celallomas_torlesfv();
- void Jaratinformacio_utaslistavalfv();
- void Uj_jelentkezofv();
- void Jelentkezoadatok_modositasafv();
- void Jelentkezoadatok_torlesefv();
- void Utazas_inditasa();
- int main()
- {
- Menu();
- return 0;
- }
- void Menu()
- {
- int menu_szam;
- do
- {
- printf("Valassz az alabbi menupontok kozul!\n");
- printf("1. Celallomas listazasa\n");
- printf("2. Uj celallomas\n");
- printf("3. Celallomas torlese\n");
- printf("4. Jaratinformaciok utaslistaval\n");
- printf("5. Jelentkezo rogzitese\n");
- printf("6. Jelentkezo adatok modositasa\n");
- printf("7. Jelentkezo adatok torlese\n");
- printf("8. Utazás inditasa\n");
- printf("9. Kilepes\n");
- scanf("%i", &menu_szam);
- switch(menu_szam)
- {
- case 1: Celallomas_listazfv();
- break;
- case 2: Uj_celallomasfv();
- break;
- case 3: Celallomas_torlesfv();
- break;
- case 4: Jaratinformacio_utaslistavalfv();
- break;
- case 5: Uj_jelentkezofv();
- break;
- case 6: Jelentkezoadatok_modositasafv();
- break;
- case 7: Jelentkezoadatok_torlesefv();
- break;
- case 8: Utazas_inditasa();
- break;
- }
- }while(menu_szam != 10);
- }
- void Celallomas_listazfv()
- {
- int allomasok_szama;
- int osszes_celallomas = 50;
- struct Celallomas celallomas[50];
- FILE* fo;
- fo = fopen("allomasok.db", "rb");
- allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,fo);
- if (celallomas == NULL || allomasok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- int i=0;
- for(i; i< allomasok_szama; i++)
- {
- printf("%s\n",celallomas[i].nev);
- }
- //return;
- }
- void Uj_celallomasfv()
- {
- struct Celallomas celallomas;
- char* input = (char*)malloc(50 * sizeof(char));
- FILE* f;
- if((access("allomasok.db", W_OK) != 0))
- {
- f = fopen("allomasok.db", "ab+");
- struct Celallomas krakko;
- strcpy(krakko.nev, "Krakko");
- fwrite(&krakko, sizeof(struct Celallomas), 1, f);
- struct Celallomas praga;
- strcpy(praga.nev, "Praga");
- fwrite(&praga, sizeof(struct Celallomas), 1, f);
- struct Celallomas becs;
- strcpy(becs.nev, "Becs");
- fwrite(&becs, sizeof(struct Celallomas), 1, f);
- fclose(f);
- }
- f = fopen("allomasok.db", "ab+");
- printf("%s","\nAdja meg az allomas nevet!\n");
- scanf("%s", celallomas.nev);
- fwrite(&celallomas, sizeof(struct Celallomas), 1, f);
- fclose(f);
- free(input);
- }
- void Celallomas_torlesfv()
- {
- struct Celallomas allomastorlo;
- int allomasok_szama;
- int osszes_celallomas = 50;
- struct Celallomas celallomas[50];
- FILE* fo;
- fo = fopen("allomasok.db", "rb");
- allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,fo);
- if (celallomas == NULL || allomasok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- printf("%s","\nAdja meg az allomas nevet!\n");
- scanf("%s", allomastorlo.nev);
- int i=0;
- for(i; i< allomasok_szama; i++)
- {
- int eredmeny;
- eredmeny = strcmp(celallomas[i].nev,allomastorlo.nev);
- if(eredmeny == 0)
- {
- fo =freopen(NULL, "wb+",fo);
- int j;
- for(j=i; j< allomasok_szama-1; j++)
- {
- celallomas[j]=celallomas[j+1];
- }
- break;
- }
- }
- fwrite(&celallomas, sizeof(struct Celallomas), allomasok_szama-1 , fo);
- fclose(fo);
- }
- void Jaratinformacio_utaslistavalfv()
- {
- int jelentkezok_szama;
- int allomasok_szama;
- int osszes_jelentkezo = 50;
- int osszes_celallomas = 50;
- struct Jelentkezo jelentkezo[50];
- struct Celallomas celallomas[50];
- FILE* fo;
- fo = fopen("jelentkezo.db", "rb");
- FILE* f;
- f = fopen("allomasok.db", "rb");
- jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
- allomasok_szama = fread(celallomas,sizeof(struct Celallomas),osszes_celallomas,f);
- if (jelentkezo == NULL || jelentkezok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- if (celallomas == NULL || allomasok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- int i=0;
- for(i; i< allomasok_szama; i++)
- {
- printf("%s\n",celallomas[i].nev);
- int j=0;
- for(j; j< jelentkezok_szama; j++)
- {
- int eredmeny;
- eredmeny = strcmp(celallomas[i].nev,jelentkezo[j].jelentkezo_allomas.nev);
- if(eredmeny == 0)
- {
- printf("%s ",jelentkezo[j].nev);
- }
- }
- }
- fclose(fo);
- fclose(f);
- }
- void Uj_jelentkezofv()
- {
- struct Jelentkezo jelentkezo;
- char* input = (char*)malloc(50 * sizeof(char));
- FILE* f;
- f = fopen("jelentkezo.db", "ab+");
- printf("%s","\nAdja meg nevet!\n");
- scanf("%s", jelentkezo.nev);
- printf("%s","\nAdja meg a telefonszamat!\n");
- scanf("%s", jelentkezo.telefon);
- printf("%s","\nAdja meg az allomas nevet!\n");
- scanf("%s", jelentkezo.jelentkezo_allomas.nev);
- time(&(jelentkezo.datum));
- fwrite(&jelentkezo, sizeof(struct Jelentkezo), 1, f);
- fclose(f);
- free(input);
- }
- void Jelentkezoadatok_modositasafv()
- {
- char jelentkezo_modositas[50];
- printf("%s","\nKinek az adatait modositja?\n");
- scanf("%s", jelentkezo_modositas);
- int jelentkezok_szama;
- int osszes_jelentkezo = 50;
- struct Jelentkezo jelentkezo[50];
- FILE* fo;
- fo = fopen("jelentkezo.db", "rb");
- jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
- if (jelentkezo == NULL || jelentkezok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- int i=0;
- for(i; i< jelentkezok_szama; i++)
- {
- int eredmeny;
- eredmeny = strcmp(jelentkezo[i].nev,jelentkezo_modositas);
- if(eredmeny == 0)
- {
- fo =freopen(NULL, "wb+",fo);
- char mitszeretne[50];
- printf("Mit szeretne modositani? nev, telefon,celallomas\n");
- scanf("%s", mitszeretne);
- if(strcmp(mitszeretne,"nev")== 0)
- {
- scanf("%s", jelentkezo[i].nev);
- }else if(strcmp(mitszeretne,"telefon")== 0)
- {
- scanf("%s", jelentkezo[i].telefon);
- }else if (strcmp(mitszeretne,"celallomas")== 0)
- {
- scanf("%s", jelentkezo[i].jelentkezo_allomas.nev);
- }
- break;
- }
- }
- fwrite(&jelentkezo, sizeof(struct Jelentkezo), jelentkezok_szama-1 , fo);
- fclose(fo);
- }
- void Jelentkezoadatok_torlesefv()
- {
- struct Jelentkezo jelentkezo_torlo;
- int jelentkezok_szama;
- int osszes_jelentkezo = 50;
- struct Jelentkezo jelentkezo[50];
- FILE* fo;
- fo = fopen("jelentkezo.db", "rb");
- jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
- if (jelentkezo == NULL || jelentkezok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- printf("%s","\nAdja meg a jelentkezo nevet!\n");
- scanf("%s", jelentkezo_torlo.nev);
- int i=0;
- for(i; i< jelentkezok_szama; i++)
- {
- int eredmeny;
- eredmeny = strcmp(jelentkezo[i].nev,jelentkezo_torlo.nev);
- if(eredmeny == 0)
- {
- fo =freopen(NULL, "wb+",fo);
- int j;
- for(j=i; j< jelentkezok_szama-1; j++)
- {
- jelentkezo[j]=jelentkezo[j+1];
- }
- break;
- }
- }
- fwrite(&jelentkezo, sizeof(struct Jelentkezo), jelentkezok_szama-1 , fo);
- fclose(fo);
- }
- void Utazas_inditasa()
- {
- int jelentkezok_szama;
- int osszes_jelentkezo = 50;
- struct Jelentkezo jelentkezo[50];
- struct Utazas utazo;
- FILE* fo;
- fo = fopen("jelentkezo.db", "rb");
- jelentkezok_szama = fread(jelentkezo,sizeof(struct Jelentkezo),osszes_jelentkezo,fo);
- if (jelentkezo == NULL || jelentkezok_szama == 0) {
- printf(" Nincs semmi az adatbázisban, ezért nem lehet olvasni\n");
- exit(1);
- }
- printf("%s","\nAdja meg, hogy melyik utazás induljon!\n");
- char mitinditsak[20];
- scanf("%s", mitinditsak);
- int i=0;
- for(i; i< jelentkezok_szama; i++)
- {
- if(strcmp(jelentkezo[i].jelentkezo_allomas.nev, mitinditsak) == 0)
- {
- utazo.utazojelentkezo[i] = jelentkezo[i];
- }
- }
- //PIPE KÉSZÍTÉS
- int pipefd[2];
- pid_t pid;
- if (pipe(pipefd) == -1)
- {
- perror("Hiba a pipe nyitaskor!");
- exit(EXIT_FAILURE);
- }
- pid = fork();
- if (pid == -1)
- {
- perror("Fork hiba");
- exit(EXIT_FAILURE);
- }
- if (pid == 0)
- {
- printf("Szulo indul!\n");
- int i=0;
- for(i;i<jelentkezok_szama; i++)
- {
- if(strcmp(jelentkezo[i].jelentkezo_allomas.nev, mitinditsak) == 0)
- {
- utazo.meret++;
- srand(time(NULL));
- int random_szam = rand() % 5 + 1;
- utazo.eredmenyek[i] = random_szam;
- }
- }
- close(pipefd[0]);
- write(pipefd[1], &utazo ,sizeof(utazo));
- close(pipefd[1]);
- printf("Szulo beirta az adatokat a csobe!\n");
- fflush(NULL);
- wait();
- }
- else
- {
- int osszes =0;
- sleep(3);
- close(pipefd[1]);
- printf("Gyerek elkezdi olvasni a csobol az adatokat!\n");
- read(pipefd[0], &utazo,sizeof(utazo));
- int k=0;
- for(k;k<utazo.meret;k++)
- {
- osszes+=utazo.eredmenyek[k];
- }
- printf("Összértékelés: %s",osszes);
- printf("\n");
- close(pipefd[0]);
- //szülő
- write(pipefd[1], "Befejezheted",13);
- close(pipefd[1]);
- printf("Gyerek beirta az adatokat a csobe!\n");
- fflush(NULL);
- wait();
- printf("Gyerek befejezte!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement