Advertisement
Matqux

Gepjarmunyilvantartas_final

Dec 8th, 2019
550
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 21.06 KB | None | 0 0
  1. //*****************************************//
  2. //---Gépjármű nyilvántartó szoftver    ---//
  3. //---Megbízó: Wheelmos és Társa Kft.    ---//
  4. //---Készítette: Tószegi Máté          ---//
  5. //---Dátum: 2019.12.08                 ---//
  6. //*****************************************//
  7.  
  8. //megjegyzes: a megvalositas soran strazsa nelkuli listat alkalmazunk
  9.  
  10. #include <stdio.h>
  11. //#include <stdlib.h>
  12. #include <string.h>
  13. #include <math.h>
  14. #include <limits.h>
  15.  
  16. //a jarmu struktura definialasa
  17. typedef struct jarmu
  18. {
  19.     //adatok
  20.     char rendszam[7 + 1];
  21.     char gyarto[7 + 1];
  22.     char tipus[7 + 1];
  23.     int evjarat;
  24.     char szin[7 + 1];
  25.     int ferohely;
  26.     int hengerur;
  27.     int teljesitmeny;
  28.  
  29.     //jellemzok
  30.     char szarmazas[7 + 1];
  31.     int kilometer;
  32.     int hibakod;
  33.     int allapot;
  34.     int elado;
  35.     int ar;
  36. }jarmu;
  37.  
  38. //egy listaelem definialasa
  39. typedef struct listelem
  40. {
  41.     jarmu data;
  42.     struct listelem* next;
  43.  
  44. }listelem;
  45.  
  46. //fuggveny a hatra beszurashoz, ket bemeno parametere
  47. listelem* beszurHatra(listelem* list, jarmu data)
  48. {
  49.     if (list == NULL) //ha ures a lista, akkor felepitjuk az első elemet
  50.     {
  51.         listelem* uj = (listelem*)malloc(sizeof(listelem));
  52.         uj->next = NULL;
  53.         uj->data = data;
  54.         return uj;
  55.     }
  56.     else //egyebkent beszurunk a vegere
  57.     {
  58.         listelem* p = list;
  59.         while (p->next != NULL)
  60.         {
  61.             p = p->next;
  62.         }
  63.  
  64.         listelem* uj = (listelem*)malloc(sizeof(listelem));
  65.         uj->next = NULL;
  66.         uj->data = data;
  67.         p->next = uj;
  68.         return list;
  69.  
  70.     }
  71. }
  72.  
  73.  
  74. //fuggveny, mely megadja, hogy egy adott elem megfelel-e a szuresi parametereknek
  75. //visszaeteresi erteke 1, ha megfelel, 0, ha nem felel meg az adott elem
  76. //elso ranezesre tobb fuggvenyre lehene bontani azonban az adattipusok elterese es a kezelesuk egyszerubbe teszi a jelnlegi fuggveny hasznalatat
  77. int szures(jarmu *p, jarmu *szuromin, jarmu *szuromax)
  78. {
  79.     int jo = 1;
  80.  
  81.     if (strcmp(szuromin->rendszam, "-") != 0)
  82.     {
  83.         if (strcmp(szuromin->rendszam, p->rendszam) != 0)
  84.         {
  85.             jo = 0;
  86.         }
  87.     }
  88.  
  89.     if (strcmp(szuromin->gyarto, "-") != 0)
  90.     {
  91.         if (strcmp(szuromin->gyarto, p->gyarto) != 0)
  92.         {
  93.             jo = 0;
  94.         }
  95.     }
  96.  
  97.     if (strcmp(szuromin->tipus, "-") != 0)
  98.     {
  99.         if (strcmp(szuromin->tipus, p->tipus) != 0)
  100.         {
  101.             jo = 0;
  102.         }
  103.     }
  104.  
  105.     if (szuromin->evjarat != -1)
  106.     {
  107.         if (szuromin->evjarat > p->evjarat || szuromax->evjarat < p->evjarat)
  108.         {
  109.             jo = 0;
  110.         }
  111.     }
  112.  
  113.     if (strcmp(szuromin->szin, "-") != 0)
  114.     {
  115.         if (strcmp(szuromin->szin, p->szin) != 0)
  116.         {
  117.             jo = 0;
  118.         }
  119.     }
  120.  
  121.     if (szuromin->ferohely != -1)
  122.     {
  123.         if (szuromin->ferohely != p->ferohely)
  124.         {
  125.             jo = 0;
  126.         }
  127.     }
  128.  
  129.     if (szuromin->hengerur != -1)
  130.     {
  131.         if (szuromin->hengerur > p->hengerur || szuromax->hengerur < p->hengerur)
  132.         {
  133.             jo = 0;
  134.         }
  135.     }
  136.  
  137.     if (szuromin->teljesitmeny != -1)
  138.     {
  139.         if (szuromin->teljesitmeny > p->teljesitmeny || szuromax->teljesitmeny < p->teljesitmeny)
  140.         {
  141.             jo = 0;
  142.         }
  143.     }
  144.  
  145.     if (strcmp(szuromin->szarmazas, "-") != 0)
  146.     {
  147.         if (strcmp(szuromin->szarmazas, p->szarmazas) != 0)
  148.         {
  149.             jo = 0;
  150.         }
  151.     }
  152.  
  153.     if (szuromin->kilometer != -1)
  154.     {
  155.         if (szuromin->kilometer > p->kilometer || szuromax->kilometer < p->kilometer)
  156.         {
  157.             jo = 0;
  158.         }
  159.     }
  160.  
  161.     if (szuromin->hibakod != -1)
  162.     {
  163.         if (szuromin->hibakod != p->hibakod)
  164.         {
  165.             jo = 0;
  166.         }
  167.     }
  168.  
  169.     if (szuromin->allapot != -1)
  170.     {
  171.         if (szuromin->allapot != p->allapot)
  172.         {
  173.             jo = 0;
  174.         }
  175.     }
  176.  
  177.     if (szuromin->elado != -1)
  178.     {
  179.         if (szuromin->elado != p->elado)
  180.         {
  181.             jo = 0;
  182.         }
  183.     }
  184.  
  185.     if (szuromin->ar != -1)
  186.     {
  187.         if (szuromin->ar > p->ar || szuromax->ar < p->ar)
  188.         {
  189.             jo = 0;
  190.         }
  191.     }
  192.     return jo;
  193. }
  194.  
  195. //fuggveny, mely a lista minden elemet kiirja
  196. void kiirMindet(listelem* list)
  197. {
  198.     printf("Rendsz.\tGyarto\tTipus\tEvjar.\tSzin\tFeroh.\tH.urt.\tTelj\tSzarm.\tKm.all.\tHibakod\tAllapot\tElado?\tAr\n");
  199.     listelem* p = list;
  200.     while (p != NULL)
  201.     {
  202.         printf("%s\t%s\t%s\t%d\t%s\t%d\t%d\t%d\t%s\t%d\t%d\t%d\t%d\t", p->data.rendszam, p->data.gyarto, p->data.tipus, p->data.evjarat, p->data.szin, p->data.ferohely, p->data.hengerur, p->data.teljesitmeny, p->data.szarmazas, p->data.kilometer, p->data.hibakod, p->data.allapot, p->data.elado);
  203.  
  204.         if (p->data.elado == 1)
  205.         {
  206.             printf("%d\n", p->data.ar);
  207.         }
  208.         else
  209.         {
  210.             printf("\n");
  211.         }
  212.  
  213.         p = p->next;
  214.     }
  215.  
  216.  
  217. }
  218.  
  219. //kiiro fuggveny, egy adott sor adatat irja ki adott listabol
  220. void kiirSort(listelem *p)
  221. {
  222.     printf("%s\t%s\t%s\t%d\t%s\t%d\t%d\t%d\t%s\t%d\t%d\t%d\t%d\t", p->data.rendszam, p->data.gyarto, p->data.tipus, p->data.evjarat, p->data.szin, p->data.ferohely, p->data.hengerur, p->data.teljesitmeny, p->data.szarmazas, p->data.kilometer, p->data.hibakod, p->data.allapot, p->data.elado);
  223.  
  224.     if (p->data.elado == 1)
  225.     {
  226.         printf("%d\n", p->data.ar);
  227.     }
  228.     else
  229.     {
  230.         printf("\n");
  231.     }
  232. }
  233.  
  234. //fuggveny, mely megnezi, hogy elozoleg sikeres volt-e a beolvasas a konzolrol
  235. //ha nem, akkor a 2db gethar a felesleges karaktereket beolvassa, ezzel uritve a bemeneti puffert
  236. void pufferCheck(int in)
  237. {
  238.     if (in == 0)
  239.     {
  240.         getchar(); //az elozo x-bevitelt lekezeljuk, beolvassuk ahz x-ez majd az utana levo szokozt
  241.         getchar();
  242.     }
  243. }
  244.  
  245. //fuggveny, mely lekezeli az olyan eseteket, melyeknek also/felso hatarertek is beviheto
  246. //scanmin es scanmax: sikerult-e max illetve min erteket olvasni
  247. //minval es maxval: a felhasznalo altal bevitt max es min erteke
  248. //szuromin, szuromax:  a modositando elemek cimei
  249. void minmaxWrite(int *scanmin, int *scanmax, int *minval, int *maxval, int *szuromin, int *szuromax)
  250. {
  251.     if (*scanmax == 0)
  252.     {
  253.         *szuromax = INT_MAX;
  254.     }
  255.     else
  256.     {
  257.         *szuromax = *maxval;
  258.     }
  259.  
  260.     if (*scanmin == 0)
  261.     {
  262.         *szuromin = INT_MIN;
  263.     }
  264.     else
  265.     {
  266.         *szuromin = *minval;
  267.     }
  268. }
  269.  
  270.  
  271. //fuggveny, mely a bevitt ertekeket beirja a min es max strukturaba, de csak azokban az esetekben, ahol erre a hatarertekes szuresre lehetoseg van
  272. //bemeno parameterei  a minmaxWrite() fuggvenyhez hasonloak
  273. void writeFilters(int *scanmin, int *scanmax, int *minval, int *maxval, char item, jarmu *szuromin, jarmu *szuromax)
  274. {
  275.     switch (item)
  276.     {
  277.     case 'r':
  278.         break;
  279.     case 'g':
  280.         break;
  281.     case 't':
  282.         break;
  283.     case 'e':
  284.         minmaxWrite(scanmin, scanmax, minval, maxval, &szuromin->evjarat, &szuromax->evjarat);
  285.         break;
  286.     case 's':
  287.         break;
  288.     case 'u':
  289.         break;
  290.     case 'h':
  291.         minmaxWrite(scanmin, scanmax, minval, maxval, &szuromin->hengerur, &szuromax->hengerur);
  292.         /*if (*scanmax == 0)
  293.         {
  294.             szuromax->hengerur = INT_MAX;
  295.         }
  296.         else
  297.         {
  298.             szuromax->hengerur = *maxval;
  299.         }
  300.  
  301.         if (*scanmin == 0)
  302.         {
  303.             szuromin->hengerur = INT_MIN;
  304.         }
  305.         else
  306.         {
  307.             szuromin->hengerur = *minval;
  308.         }*/
  309.         break;
  310.     case 'l':
  311.         minmaxWrite(scanmin, scanmax, minval, maxval, &szuromin->teljesitmeny, &szuromax->teljesitmeny);
  312.         break;
  313.     case 'o':
  314.         break;
  315.     case 'k':
  316.         minmaxWrite(scanmin, scanmax, minval, maxval, &szuromin->kilometer, &szuromax->kilometer);
  317.         break;
  318.     case 'c':
  319.         break;
  320.     case 'a':
  321.         break;
  322.     case 'f':
  323.         break;
  324.     case 'p':
  325.         minmaxWrite(scanmin, scanmax, minval, maxval, &szuromin->ar, &szuromax->ar);
  326.         break;
  327.     }
  328. }
  329.  
  330. //felszabadito fuggveny, az egesz listat torli a memoriabol
  331. void felszabadit(listelem *list)
  332. {
  333.     while (list != NULL)
  334.     {
  335.         listelem *next = list->next; //eltaroljuk kulon valtozoban a kovetkezo elem cimet, hiszen az elso elem torlesevel nem tudnank elerni a lista tobbi elemet
  336.         free(list);
  337.         //printf("%p felszabadtva\n", list);
  338.         list = next;
  339.     }
  340. }
  341.  
  342. //fuggveny, mely kiir egy kis udvozlo abrat indulaskor
  343. void printLogo()
  344. {
  345.     //abra es udvozloszoveg kiirasa
  346.     printf
  347.     (
  348.         "                                                                                                                                                      \n"
  349.         "                                              ``````ooooooooooooMMMMMoooooooooo````                                                                   \n"
  350.         "                                      ````ssssMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNMMMMMMsss``                                                              \n"
  351.         "                              ````ssssMMMMMMMMMMMMMMMNNNNNMM++++++++         +++++NNNMMMss``                                                          \n"
  352.         "                       ````sssMMMMMMMMMMMMMMMMMMNN+++     NM`                        +oMMMMMss``                                                      \n"
  353.         "                ...yyyyMMMMMMMMMMMMMMMMMMMMMMm//           MM                        yMMMMMmMMMMyy.                                                   \n"
  354.         "         ...yyyyMMMMMMMMMMMMMMMMMMMMMMMMMMMMm              /My                       MMMMMM //mmMMMyy..                                               \n"
  355.         "       .yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMyyyyyyyyyyyyyyyyMMyyyyyyyyyyyyyyyyyyyyyyyMMMMMMyyyyyMMMMMMMyyyyyyyyyyyyyyy..........                      \n"
  356.         "      yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMyyyyyy-----           \n"
  357.         "     -MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMddddddMMMMMMMMMMdddddddMMMMMMMMMMddddddMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMhhh---     \n"
  358.         "     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-    -MMMMMMMMMM-     -MMMMMMMMMM-   --MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh    \n"
  359.         "     MMMMMMMMMMMMMMMMMMMMMMMMMMMddddddMMMMMMMMMMMMMMMMMMMh   :MMMMMMMMMM:  -  :MMMMMMMMMM:  -MMMMMMMMMMMMMMMMMMMMMMMMMMMMMdddddddMMMMMMMMMMMMMMMMM-   \n"
  360.         "    :MMMMMMMMMMMMMMMMMMMMMMMhooMddddddMoohMMMMMMMMMMMMMMMMd   -MMMMMMMM-  :M   -MMMMMMMM-   MMMMMMMMMMMMMMMMMMMMMMMMMMhhoodddddddoohhMMMMMMMMMMMMMM   \n"
  361.         "   dMMMMMMMMMMMMMMMMMMMMMh-odMMMMhhhMMMMMdohMMMMMMMMMMMMMMMd   hMMMMMM-   MMd   -MMMMMMh   dMMMMMMMMMMMMMMMMMMMMMMMMhoddMMMMhhhMMMMddohMMMMMMMMMMMM   \n"
  362.         "   MMMMMMMMMMMMMMMMMMMMMh:dMMhh--   ---hMMMd-MMMMMMMMMMMMMMMd   hMMMMh   dMMMd   hMMMMh   dMMMMMMMMMMMMMMMMMMMMMMMM-dMMMh---   --hhMMM:hMMMMMMMMMMM   \n"
  363.         "   -MMMMMMMMMMMMMMMMMMMy/MMMy           -yMMd-MMMMMMMMMMMMMMMd   yMMy   dMMMMMd   yMMy   dMMMMMMMMMMMMMMMMMMMMMMMM-dMMM-           -MMM/-MMMMMMMMMMd  \n"
  364.         "    yMMMMMMMMMMMMMMMMMy MMMy              MMMm.MMMMMMMMMMMMMMM/   MM   /MMMMMMM/   MM   mMMMMMMMMMMMMMMMMMMMMMMMM.mMMM.             yMMM yMMMMMMMMM.  \n"
  365.         "     yyMMMMMMMMMMMMMMM  MMM               MMMM .MMMMMMMMMMMMMMM/  ..  /MMMMMMMMM/  ..  /MMMMMMMMMMMMMMMMMMMMMMMM. MMMM               MMM  yMMMMM...   \n"
  366.         "       ...yyyyyyyyMMM.  MMM/              MMMM  yMMMMMMMMMMMMMMM      MMMMMMMMMMM      MMMMMMMMMMMMMMMMMMMMMMMMM  MMMM              /MMM   MMMMMmm    \n"
  367.         "                  ```   sMMM+            NMMM`   MMMMMMMMMMMMMMM++++++MMMMMMMMMMM++++++MMMMMMMMMMMMMMMMMMMMMMMM`  `MMMN            +MMMs   MMMMMs`    \n"
  368.         "                         sMMMN+        +NMMM`    ``````````````````````````````````````````````````````````````    `MMMN++       ++MMMs    `````      \n"
  369.         "                          `sMMMNNNNNNNNMMMs`                                                                        `sMMMMNNN+NNNMMMs`                \n"
  370.         "                            `ooMMMMMMMoo``                                                                            ``ooMMMMMMMoo`                  \n"
  371.         "                                                                                                                                                      \n"
  372.     );
  373.     printf("Wheelmos es Tarsa\n");
  374.     printf("Gepjarmu nyilvantarto szoftver\n");
  375.     printf("Usson entert a folyatatshoz!\n");
  376.     getchar();
  377.     system("cls");
  378. }
  379.  
  380. //////////////////////////////main//////////////////////////////
  381. int main()
  382. {
  383.     jarmu szuroreset = { "-","-","-",-1,"-",-1,-1,-1,"-",-1,-1,-1,-1,-1 }; //a szurokben talalhato ertekek alapbol ezeketet az ertekeket veszik fel
  384.     jarmu szuromin = szuroreset; //a kiindulási helyzetben a min es max szuro is ezzel egyenlo
  385.     jarmu szuromax = szuroreset;
  386.  
  387.     //lista letrehozasa es feltoltese
  388.     listelem *list = NULL;
  389.  
  390.     //a ket file pointer letrehozasa
  391.     FILE* adatok;
  392.     FILE* jellemzok;
  393.  
  394.     //fileok megnyitasa olvasara
  395.     adatok = fopen("adatok.txt", "r");
  396.     jellemzok = fopen("jellemzok.txt", "r");
  397.  
  398.     //ha valamelyik file olvasasa sikertelen, hibauzenet, visszateres
  399.     if (adatok == NULL || jellemzok == NULL)
  400.     {
  401.         printf
  402.         ("Hiba!\n"
  403.             "Valamelyik file olvasasa sikertelen.\n"
  404.             "A folytatashoz nyomjon egy billenyut!\n"
  405.         );
  406.         return -1;
  407.     }
  408.  
  409.     jarmu read; //atmeneti a valtozo egy-egy sor adatanak tarolasahoz
  410.  
  411.     //az adatok beolvasasa a fileokba
  412.     while ((fscanf(adatok, "%s\t%s\t%s\t%d\t%s\t%d\t%d\t%d", read.rendszam, read.gyarto, read.tipus, &read.evjarat, read.szin, &read.ferohely, &read.hengerur, &read.teljesitmeny) == 8) && (fscanf(jellemzok, "%s\t%s\t%d\t%d\t%d\t%d\t%d", read.rendszam, read.szarmazas, &read.kilometer, &read.hibakod, &read.allapot, &read.elado, &read.ar) == 7))
  413.     {
  414.         list = beszurHatra(list, read);
  415.     }
  416.  
  417.     //fileok bezarasa a hasznalat utan
  418.     fclose(adatok);
  419.     fclose(jellemzok);
  420.  
  421.     //printf("Az adatok olvasasa sikeresen megtortent!");
  422.     //kiirMindet(list);
  423.  
  424.     //cls a biztonsag kedveert
  425.     system("cls");
  426.  
  427.     while (1) //ide kerul a foprogram
  428.     {
  429.         //fomenu kiirasa
  430.         char select;
  431.  
  432.         system("cls");
  433.  
  434.         printf
  435.         (
  436.             "Menu:\n"
  437.             "o: Osszes adat kiirasa\n"
  438.             "u: uj szuro hozaadasa\n"
  439.             "s: szurt adatok kiirasa\n"
  440.             "j: jelenleg aktiv szurok kiirasa\n"
  441.             "t: minden szuro torelese\n"
  442.             "x: Kilepes\n"
  443.         );
  444.  
  445.         //menupont kivalasztasa
  446.         scanf("%c%*c", &select);
  447.  
  448.         switch (select)
  449.         {
  450.         case 'o': //az osszes adat kiirasa
  451.             system("cls"); //console-on levo kiirt adatok torlese
  452.             kiirMindet(list); //minden adat kiirasa
  453.             printf("A kilepehez usson entert!\n");
  454.             getchar(); //varakozas a felhasznalo valaszara
  455.             break;
  456.  
  457.         case 'x': //kilepes
  458.             system("cls");
  459.             printf("Biztosan kilep? i/n\n");
  460.             char exit;
  461.             scanf("%c%*c", &exit); //megerosites kerese a kilepeshez (barmilyen i-tol kulonbozo karakter esetén visszalepunk a menube)
  462.             if (exit == 'i') //ha i a bevitt karakter, akkor a program leall
  463.             {
  464.                 felszabadit(list);
  465.                 //getchar();
  466.                 return 0;
  467.             }
  468.             break;
  469.  
  470.         case 'u': //uj szuro felvetele
  471.         {
  472.             int voltjo = 0;
  473.             do //addig maradunk a menuben, amig nem x karakter erkezik, ezt a switch-case figyeli
  474.             {
  475.                 system("cls");
  476.  
  477.                 int scanmin = 1;
  478.                 int scanmax = 1;
  479.                 int maxval = INT_MIN;
  480.                 int minval = INT_MAX;
  481.  
  482.                 printf//a szurok menu kiirasa
  483.                 (
  484.                     "Szuro beallitasa:\n"
  485.                     "(Valassza ki mire szeretne szurni)\n"
  486.                     "r: rendszam\n"
  487.                     "g: gyarto\n"
  488.                     "t: tipus\n"
  489.                     "e: evjarat\n"
  490.                     "s: szin\n"
  491.                     "u: ulohelyek szama\n"
  492.                     "h: hengerurtaralom\n"
  493.                     "l: teljesitmeny(le)\n"
  494.                     "o: szarmazas (origin)\n"
  495.                     "k: kilometeroraallas\n"
  496.                     "c: hibakod (code)\n"
  497.                     "a: allapot\n"
  498.                     "f: elado(for sale)\n"
  499.                     "p: ar(price)\n"
  500.                     "x: visszalepes a fomenube\n"
  501.                 );
  502.                 char filter;
  503.                 scanf("%c%*c", &filter); //szuro karakter bekerese
  504.                 switch (filter)
  505.                 {
  506.                 case 'r': //ha r, akkor rendszamra szurunk
  507.                     system("cls");
  508.  
  509.                     printf("Adjon meg egy rendszamot!\n");
  510.                     char rendszam[7 + 1];
  511.                     scanf("%s%*c", rendszam);
  512.  
  513.                     strcpy(szuromin.rendszam, rendszam); //bekerjuk a rendszamot es bemasoljuk azt a szuro adott helyere, ezt minden mas valtozoval ugyan igy elvegezve a szuro valtozo egy olyan adat lesz, melyben minden adat \t és -1, kivéve a beállított értékek
  514.                     strcpy(szuromax.rendszam, rendszam);
  515.  
  516.                     //voltjo = 0; //0-ra állítjuk, hogy benne maradjunk a ciklusban (nem lenne szukseges, de igy biztonsagosabb),
  517.                     break;
  518.                 case 'g':
  519.                 {
  520.                     system("cls");
  521.                     printf("Adjon meg egy gyartot!\n");
  522.  
  523.                     char gyarto[7 + 1];
  524.                     scanf("%s%*c", gyarto);
  525.  
  526.                     strcpy(szuromin.gyarto, gyarto);
  527.                     strcpy(szuromax.gyarto, gyarto);
  528.  
  529.                     //voltjo = 0;
  530.                     break;
  531.                 }
  532.                 case 't':
  533.                 {
  534.                     system("cls");
  535.                     printf("Adjon meg egy tipust!\n");
  536.                     char tipus[7 + 1];
  537.                     scanf("%s%*c", tipus);
  538.                     strcpy(szuromin.tipus, tipus);
  539.                     strcpy(szuromax.tipus, tipus);
  540.                     //voltjo = 0;
  541.                     break;
  542.                 }
  543.                 case 'e':
  544.                     system("cls");
  545.  
  546.                     printf("Adjon meg egy legkorabbi evjaratot!\n");
  547.                     scanmin = scanf("%d%*c", &minval);
  548.                     pufferCheck(scanmin);
  549.  
  550.                     printf("Adjon meg egy legkesobbi evjaratot!\n");
  551.                     scanmax = scanf("%d%*c", &maxval);
  552.                     pufferCheck(scanmax);
  553.  
  554.                     writeFilters(&scanmin, &scanmax, &minval, &maxval, filter, &szuromin, &szuromax);
  555.  
  556.                     //voltjo = 0;
  557.                     break;
  558.                 case 's':
  559.                     system("cls");
  560.                     printf("Adjon meg egy szint!\n");
  561.  
  562.                     char szin[7 + 1];
  563.                     scanf("%s%*c", szin);
  564.  
  565.                     strcpy(szuromin.szin, szin);
  566.                     strcpy(szuromax.szin, szin);
  567.  
  568.                     //voltjo = 0;
  569.                     break;
  570.                 case 'u':
  571.                     system("cls");
  572.                     printf("Adja meg a ferohelyek szamat! 5/7\n");
  573.  
  574.                     int ferohely;
  575.                     scanf("%d%*c", &ferohely);
  576.  
  577.                     szuromin.ferohely = ferohely;
  578.                     szuromax.ferohely = ferohely;
  579.  
  580.                     //voltjo = 0;
  581.                     break;
  582.                 case 'h':
  583.                     system("cls");
  584.  
  585.                     printf("Adja meg a minimum hengerurtartalmat!\n");
  586.                     scanmin = scanf("%d%*c", &minval);
  587.                     pufferCheck(scanmin);
  588.  
  589.                     printf("Adja meg a maximum hengerurtartalmat!\n");
  590.                     scanmax = scanf("%d%*c", &maxval);
  591.                     pufferCheck(scanmax);
  592.  
  593.                     writeFilters(&scanmin, &scanmax, &minval, &maxval, filter, &szuromin, &szuromax);
  594.  
  595.                     //voltjo = 0;
  596.                     break;
  597.                 case 'l':
  598.                     system("cls");
  599.  
  600.                     printf("Adja meg a minimum teljesitmenyt!\n");
  601.                     scanmin = scanf("%d%*c", &minval);
  602.                     pufferCheck(scanmin);
  603.  
  604.                     printf("Adja meg a maximum teljesitmenyt!\n");
  605.                     scanmax = scanf("%d%*c", &maxval);
  606.                     pufferCheck(scanmax);
  607.  
  608.                     writeFilters(&scanmin, &scanmax, &minval, &maxval, filter, &szuromin, &szuromax);
  609.  
  610.                     //voltjo = 0;
  611.                     break;
  612.                 case 'o':
  613.                     system("cls");
  614.                     printf("Adjon meg egy szarmazast!\n");
  615.  
  616.                     char szarmazas[7 + 1];
  617.                     scanf("%s%*c", szarmazas);
  618.  
  619.                     strcpy(szuromin.szarmazas, szarmazas);
  620.                     strcpy(szuromax.szarmazas, szarmazas);
  621.  
  622.                     //voltjo = 0;
  623.                     break;
  624.                 case 'k':
  625.                     system("cls");
  626.  
  627.                     printf("Adja meg a minimum kilometerorallast!\n");
  628.                     scanmin = scanf("%d%*c", &minval);
  629.                     pufferCheck(scanmin);
  630.  
  631.                     printf("Adja meg a maximum kilometerorallast!\n");
  632.                     scanmax = scanf("%d%*c", &maxval);
  633.                     pufferCheck(scanmax);
  634.  
  635.                     writeFilters(&scanmin, &scanmax, &minval, &maxval, filter, &szuromin, &szuromax);
  636.  
  637.                     //voltjo = 0;
  638.                     break;
  639.                 case 'c':
  640.                     system("cls");
  641.                     printf("Adja meg az elfogadhato hibakodokat! 0-5\n");
  642.  
  643.                     int hibakod;
  644.                     scanf("%d%*c", &hibakod);
  645.  
  646.                     szuromin.hibakod = hibakod;
  647.                     szuromax.hibakod = hibakod;
  648.  
  649.                     //voltjo = 0;
  650.                     break;
  651.                 case 'a':
  652.                     system("cls");
  653.                     printf("Adja meg a kivant allapotot! 1-5\n");
  654.  
  655.                     int allapot;
  656.                     scanf("%d%*c", &allapot);
  657.  
  658.                     szuromin.allapot = allapot;
  659.                     szuromax.allapot = allapot;
  660.  
  661.                     //voltjo = 0;
  662.                     break;
  663.                 case 'f':
  664.                     system("cls");
  665.                     printf("Adja meg, hogy elado autot keres-e! 0-1\n");
  666.  
  667.                     int elado;
  668.                     scanf("%d%*c", &elado);
  669.  
  670.                     szuromin.elado = elado;
  671.                     szuromax.elado = elado;
  672.  
  673.                     //voltjo = 0;
  674.                     break;
  675.                 case 'p':
  676.                     system("cls");
  677.  
  678.                     printf("Adja meg a minimum arat!\n");
  679.                     scanmin = scanf("%d%*c", &minval);
  680.                     pufferCheck(scanmin);
  681.  
  682.                     printf("Adja meg a maximum arat!\n");
  683.                     scanmax = scanf("%d%*c", &maxval);
  684.                     pufferCheck(scanmax);
  685.  
  686.                     writeFilters(&scanmin, &scanmax, &minval, &maxval, filter, &szuromin, &szuromax);
  687.  
  688.                     //voltjo = 0;
  689.                     break;
  690.                 case 'x': //ha x-et kapunk, akkor a voltjot 1-re modositjuk, kilepunk a do while ciklusbol
  691.                     voltjo = 1;
  692.                     break;
  693.                 default: //ha egyik eset sem fut le, a bevitt karater nem megfelelo
  694.                     printf
  695.                     (
  696.                         "Hibas bevitt karakter!\n"
  697.                         "Usson entert az ujra valasztashoz!"
  698.                     );
  699.  
  700.                     getchar();
  701.                 }
  702.             } while (voltjo != 1);
  703.             break;
  704.         }
  705.  
  706.         case 's': //szurt adatok kiirasa
  707.         {
  708.             system("cls");
  709.  
  710.             listelem *p = list; //pointer letrehozasa a lepteteshez
  711.             int kiiras = 0; //valtozo a kiiras sikeressegenek ellenorzesehez
  712.  
  713.             printf("Rendsz.\tGyarto\tTipus\tEvjar.\tSzin\tFeroh.\tH.urt.\tTelj\tSzarm.\tKm.all.\tHibakod\tAllapot\tElado?\tAr\n");
  714.  
  715.             while (p->next != NULL) //amig el nem erunk a lista vegere, addig megyünk
  716.             {
  717.                 if (szures(p, &szuromin, &szuromax) == 1) //ha az adott listaelem a szuroknek megfelel
  718.                 {
  719.                     kiirSort(p); //kiirjuk az adott sort
  720.                     kiiras = 1;
  721.                 }
  722.                 p = p->next; //es tovabb lepunk
  723.             }
  724.             if (kiiras == 0) //ha nem sikerult kiiirni semmit
  725.             {
  726.                 printf("Nincs talalat."); //kiirjuk, hogy nincs talalat
  727.             }
  728.  
  729.             printf("A visszalepehez usson entert!\n");
  730.  
  731.             getchar();
  732.             break;
  733.         }
  734.  
  735.         case 'j':
  736.             system("cls");
  737.  
  738.             printf("Jelenleg beallitott szurok:\n");
  739.  
  740.             kiirSort(&szuromin);
  741.             kiirSort(&szuromax);
  742.  
  743.             getchar();
  744.             break;
  745.  
  746.         case 't': //a t menupontban minden beallitott szuro torlesre kerul
  747.         {
  748.             system("cls");
  749.             szuromin = szuroreset;//az eddigi szuroket az alap 'reset' szurore allitjuk vissza
  750.             szuromax = szuroreset;
  751.             printf
  752.             (
  753.                 "Minden szuro torolve.\n"
  754.                 "Usson entert a visszalepeshez!\n"
  755.             );
  756.             getchar();
  757.             break;
  758.         }
  759.  
  760.         default: //ha egyik eset sem fut le, a bevitt karakter nem megfelelo
  761.             printf
  762.             (
  763.                 "Hibas bevitt karakter!\n"
  764.                 "Usson entert az ujra valasztashoz!"
  765.             );
  766.             getchar();
  767.         }
  768.     }
  769.  
  770.     return 0;
  771. }
  772.  
  773.  
  774.  
  775.  
  776.  
  777. //<- for good luck
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement