Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. //******************************DEKLARACJA STALYCH
  5. #define MAX_IMIE 20 //imie i nazwisko maksymalnie 20 znakow
  6. #define NR_REJ 10 // Nr rej-maks 7 znakow
  7. #define MARKA 15    // marka samochodu maKS 15 znakow
  8. #define N 17        // wielkosc bazy danych
  9. #define WPI 15        //Pierwsze wolne miesjce do wpisania danych
  10. //****************************** DEKLARACJA ZMIENNYCH
  11. int a,n=WPI;
  12. struct poz{
  13.     int nr;
  14.     int nr_stan;
  15.     char rej[NR_REJ];
  16.     char marka[MARKA];
  17.     char nazwisko[MAX_IMIE];
  18.  
  19. };
  20. //******************************* DEKLARACJA FUNKCJI
  21. void menu();
  22. int wybor();
  23. int dodaj(struct poz *wskaz);
  24. int usun(struct poz *wskaz);
  25. void wyswietl(struct poz *wskaz);
  26. void edytuj(struct poz *wskaz);
  27. void sortuj(struct poz *wskaz);
  28.  
  29.  
  30. int main()
  31. {
  32. struct poz spis[N]={{1,1,"WPL N006","Seat","Michal Glowacki"},{2,5,"WW 5006","Volkswagen","Adam Wojcik"},{3,13,"DW 1576","Mercedes","Maciej Gekon"},
  33. {4,6,"WB 14778","Peugeot","Maciej Gekon"},{5,7,"WLR 8156","Seat","Michal Glowacki"},{6,9,"DB 9110","Fiat","Andrzej Owczarek"},{7,12,"NOX 5689","Ferrari","Michal Kielin"},
  34. {8,15,"WPL TU89","Volkswagen","Maciej Gekon"},{9,10,"LWE 1568","Ford","Adam Wojcik"},{10,14,"WGS 2473","Fiat","Andrzej Owczarek"},
  35. {11,20,"TRR 6003","Bugatti","Michal Kielin"},{12,19,"WW 66464","Volkswagen","Adam Wojcik"},{13,18,"WJK 65697","Peugeot","Barlomiej Lewicki"},
  36. {14,17,"WT 33557","Renault","Barlomiej Lewicki"},{15,4,"NIU 15899","Fiat","Andrzej Owczarek"}};
  37. do
  38.   {
  39.     menu();
  40.     a=wybor();
  41.   switch(a){
  42.  
  43.     case 1 : dodaj(&spis[n]);
  44.             break;
  45.     case 2 :usun(&spis);
  46.             break;
  47.     case 3 : edytuj(&spis);
  48.             break;
  49.     case 4: sortuj(&spis);//wyswietl(&spis);//;
  50.             break;
  51.     case 0: printf("\nZegnaj");
  52.            // break;
  53.             return 0;}//switch
  54.   }
  55. while(1);
  56.  
  57.     return 0;
  58. }
  59. void menu()
  60. {printf("\n\t\t\t***MENU***\n");
  61.  printf("\tNacisnij odpowiedni klawisz aby dokonac wyboru:\n");
  62.  printf("\t\t1-Dodaj nowy rekord\n\t\t2-Usun rekord\n\t\t3-Edytuj rekord\n\t\t4-Wyswietl baze\n\t\t0-Wyjscie\n" );
  63. }
  64.  
  65. int wybor()
  66. { int a;
  67.     while(1){
  68.         printf("Podaj nr ");
  69.         scanf("%d",&a);
  70.         if(a>=0 && a<=4){
  71.         break;}
  72.         while(getchar()!='\n');
  73.         printf("Bledne dane. Sprobuj jeszcze raz\n");
  74.     }//while
  75.     return a;}
  76. //**************************************************************************************************************DODAJ
  77. int dodaj(struct poz * wskaz)
  78. {   if (n<N)
  79. {   wskaz->nr = ++n;
  80.     //############################################################################### WCZYTYWANIE NR STANOWISKA
  81.     while(1){
  82.     printf("Podaj nr stanowiska: ");
  83.     if(scanf("%d",&wskaz->nr_stan)==1 && wskaz->nr_stan>=1 && wskaz->nr_stan<999)
  84.     {while (getchar()!='\n');
  85.         break;}
  86.     printf("Blad danych. Sprobuj jeszcze raz!\n");
  87.     while (getchar()!='\n');
  88.     }
  89. //################################################################################### WCZYTYWANIE NR REJESTRACYJNEGO
  90. while(1)
  91.     {printf("\nPodaj nr rejestracyjny: ");             //wczytanie i sprawdzenie czy dwa pierwsze znaki to litery
  92.     fgets(wskaz->rej,NR_REJ,stdin);
  93.     int i=0;
  94.     while(i<=NR_REJ)
  95.        {if(wskaz->rej[i]=='\n')   // czyszczenie \n
  96.           wskaz->rej[i]='\0' ;
  97.           i++; }
  98.         if((isalpha(wskaz->rej[0]) && isalpha(wskaz->rej[1])))
  99.         break;
  100.     else
  101.         printf("Pierwsze dwa znaki musza byc literami\n");
  102.     }// while
  103. int i=0;
  104. while(i<7){                                         //zamiana malych liter na wielkie;
  105.     wskaz->rej[i]=toupper(wskaz->rej[i]);
  106.     i++;}//while
  107.     printf("%s",wskaz->rej);
  108.  
  109. //################################################################################### WCZTYWANIE MARKI SAMOCHODU
  110. printf("\nPodaj marke samochodu:");
  111. fgets(wskaz->marka,MARKA,stdin);
  112. i=0;
  113.     while(i<=MARKA)
  114.        {if(wskaz->marka[i]=='\n')
  115.           wskaz->marka[i]='\0' ;
  116.           i++;}//while
  117. wskaz->marka[0]=toupper(wskaz->marka[0]);
  118. i=0;
  119.     while(i<MARKA){
  120.         if(wskaz->marka[i]==' ')
  121.         wskaz->marka[i+1]=toupper(wskaz->marka[i+1]);
  122.         i++;}//while
  123. printf("%s",wskaz->marka);
  124. //################################################################################### WCZTYWANIE MECHANIKA
  125. printf("\nPodaj imie i nazwisko mechanika ");
  126. fgets(wskaz->nazwisko,MAX_IMIE,stdin);
  127. i=0;
  128.      while(i<MAX_IMIE)
  129.        {if(wskaz->nazwisko[i]=='\n')
  130.           wskaz->nazwisko[i]='\0' ;
  131.           i++; }
  132. i=0;
  133.     while(i<MAX_IMIE){
  134.         if(isalpha(wskaz->nazwisko[i])==0){
  135.         printf("Bledne dane!");
  136.         printf("\nPodaj imie i nazwisko mechanika ");
  137.         fgets(wskaz->nazwisko,MAX_IMIE,stdin);}//if
  138.         else
  139.             break;}//while
  140. wskaz->nazwisko[0]=toupper(wskaz->nazwisko[0]);
  141. i=0;
  142.     while(i<MAX_IMIE){
  143.         if(wskaz->nazwisko[i]==' ')
  144.         wskaz->nazwisko[i+1]=toupper(wskaz->nazwisko[i+1]);
  145.     i++;}//while
  146. printf("%s",wskaz->nazwisko);
  147. printf("\ndodano rekord:");
  148. printf("\nNr\tnr stanowiska\tnr rejestracyjny\tmarka pojazdu\t\tnazwisko i imie\n");
  149. printf("%2d\t %3d\t\t\t%8s\t%15s\t\t%15s\n",wskaz->nr,wskaz->nr_stan,wskaz->rej,wskaz->marka,wskaz->nazwisko);
  150. //printf("\n%d\t%d\t\t%s\t\t%s\t\t%s",wskaz->nr,wskaz->nr_stan,wskaz->rej,wskaz->marka,wskaz->nazwisko);
  151.  
  152. }
  153. else
  154.     printf("Baza przepelniona lub podano nr rekordu ktorego nie ma");
  155. return 0;
  156. }
  157. //****************************************************************************************************************USUN
  158. int usun(struct poz *wskaz)
  159. { int a,b,i;
  160.   a=n;
  161.    while(1){
  162.         printf("Podaj nr rekordu do usuniecia ");
  163.         if((scanf("%d",&b)==1)&& b<=n)
  164.             break;
  165.         printf("Blad danych. Sprobuj jeszcze raz ");} //while
  166.    wskaz=wskaz+(b-1);
  167.     for(i=b;i<a;i++){
  168.         *wskaz= *(wskaz+1);
  169.         wskaz->nr=(wskaz->nr)-1;
  170.         wskaz+=1;}//for
  171.     n--;
  172. printf("\nUsunieto rekord nr %d",b);
  173. return 0;}
  174. //*************************************************************************************************************WYSWIETL
  175. void wyswietl(struct poz *wskaz)
  176. {   int i=0;
  177.     printf("Nr\tnr stan.\tnr rejestracyjny\t   marka pojazdu\tnazwisko i imie\n");
  178.     while(i<n)
  179.     {printf("%2d\t %3d\t\t\t%8s\t%15s\t\t%15s\n",wskaz->nr,wskaz->nr_stan,wskaz->rej,wskaz->marka,wskaz->nazwisko);
  180.         wskaz+=1;
  181.         i++;}}
  182. //**************************************************************************************************************EDYTUJ
  183. void edytuj(struct poz *wskaz)
  184. {int c,d;
  185.     while(1){
  186.     printf ("\npodaj nr rekordu do edycji ");
  187.     if((scanf("%d",&c)==1))
  188.         break;
  189.     printf("\nBledne dane sprobuj jeszcze raz");
  190.     while(getchar()!='\n');
  191.     }
  192.     d=n;
  193.     n=c-1;
  194.     dodaj(&wskaz[c-1]);
  195.     n=d;}
  196. //****************************************************************************************************************SORTUJ
  197. void sortuj(struct poz *wskaz2)
  198. {int h;
  199.  
  200. while(1)
  201.     {printf("\n1 - Wyswietl wg kolejnosci wprowadzenia rekordow");
  202.     printf("\n2 - Wyswietl wg nr stanowisk");
  203.     printf("\n3 - Wyswietl wg kolejnosci alfabetycznej wg marki");
  204.      if((scanf("%d",&h) == 1) && h<4)
  205.         break;
  206.     printf("blad danych! Wybierz cyfre z przedzialu 1-3\n");}
  207.         switch(h)
  208.         {case 1 : wyswietl(&wskaz2);
  209.  
  210.         }
  211.  
  212.        }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement