Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- //******************************DEKLARACJA STALYCH
- #define MAX_IMIE 20 //imie i nazwisko maksymalnie 20 znakow
- #define NR_REJ 10 // Nr rej-maks 7 znakow
- #define MARKA 15 // marka samochodu maKS 15 znakow
- #define N 17 // wielkosc bazy danych
- #define WPI 15 //Pierwsze wolne miesjce do wpisania danych
- //****************************** DEKLARACJA ZMIENNYCH
- int a,n=WPI;
- struct poz{
- int nr;
- int nr_stan;
- char rej[NR_REJ];
- char marka[MARKA];
- char nazwisko[MAX_IMIE];
- };
- //******************************* DEKLARACJA FUNKCJI
- void menu();
- int wybor();
- int dodaj(struct poz *wskaz);
- int usun(struct poz *wskaz);
- void wyswietl(struct poz *wskaz);
- void edytuj(struct poz *wskaz);
- void sortuj(struct poz *wskaz);
- int main()
- {
- 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"},
- {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"},
- {8,15,"WPL TU89","Volkswagen","Maciej Gekon"},{9,10,"LWE 1568","Ford","Adam Wojcik"},{10,14,"WGS 2473","Fiat","Andrzej Owczarek"},
- {11,20,"TRR 6003","Bugatti","Michal Kielin"},{12,19,"WW 66464","Volkswagen","Adam Wojcik"},{13,18,"WJK 65697","Peugeot","Barlomiej Lewicki"},
- {14,17,"WT 33557","Renault","Barlomiej Lewicki"},{15,4,"NIU 15899","Fiat","Andrzej Owczarek"}};
- do
- {
- menu();
- a=wybor();
- switch(a){
- case 1 : dodaj(&spis[n]);
- break;
- case 2 :usun(&spis);
- break;
- case 3 : edytuj(&spis);
- break;
- case 4: sortuj(&spis);//wyswietl(&spis);//;
- break;
- case 0: printf("\nZegnaj");
- // break;
- return 0;}//switch
- }
- while(1);
- return 0;
- }
- void menu()
- {printf("\n\t\t\t***MENU***\n");
- printf("\tNacisnij odpowiedni klawisz aby dokonac wyboru:\n");
- 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" );
- }
- int wybor()
- { int a;
- while(1){
- printf("Podaj nr ");
- scanf("%d",&a);
- if(a>=0 && a<=4){
- break;}
- while(getchar()!='\n');
- printf("Bledne dane. Sprobuj jeszcze raz\n");
- }//while
- return a;}
- //**************************************************************************************************************DODAJ
- int dodaj(struct poz * wskaz)
- { if (n<N)
- { wskaz->nr = ++n;
- //############################################################################### WCZYTYWANIE NR STANOWISKA
- while(1){
- printf("Podaj nr stanowiska: ");
- if(scanf("%d",&wskaz->nr_stan)==1 && wskaz->nr_stan>=1 && wskaz->nr_stan<999)
- {while (getchar()!='\n');
- break;}
- printf("Blad danych. Sprobuj jeszcze raz!\n");
- while (getchar()!='\n');
- }
- //################################################################################### WCZYTYWANIE NR REJESTRACYJNEGO
- while(1)
- {printf("\nPodaj nr rejestracyjny: "); //wczytanie i sprawdzenie czy dwa pierwsze znaki to litery
- fgets(wskaz->rej,NR_REJ,stdin);
- int i=0;
- while(i<=NR_REJ)
- {if(wskaz->rej[i]=='\n') // czyszczenie \n
- wskaz->rej[i]='\0' ;
- i++; }
- if((isalpha(wskaz->rej[0]) && isalpha(wskaz->rej[1])))
- break;
- else
- printf("Pierwsze dwa znaki musza byc literami\n");
- }// while
- int i=0;
- while(i<7){ //zamiana malych liter na wielkie;
- wskaz->rej[i]=toupper(wskaz->rej[i]);
- i++;}//while
- printf("%s",wskaz->rej);
- //################################################################################### WCZTYWANIE MARKI SAMOCHODU
- printf("\nPodaj marke samochodu:");
- fgets(wskaz->marka,MARKA,stdin);
- i=0;
- while(i<=MARKA)
- {if(wskaz->marka[i]=='\n')
- wskaz->marka[i]='\0' ;
- i++;}//while
- wskaz->marka[0]=toupper(wskaz->marka[0]);
- i=0;
- while(i<MARKA){
- if(wskaz->marka[i]==' ')
- wskaz->marka[i+1]=toupper(wskaz->marka[i+1]);
- i++;}//while
- printf("%s",wskaz->marka);
- //################################################################################### WCZTYWANIE MECHANIKA
- printf("\nPodaj imie i nazwisko mechanika ");
- fgets(wskaz->nazwisko,MAX_IMIE,stdin);
- i=0;
- while(i<MAX_IMIE)
- {if(wskaz->nazwisko[i]=='\n')
- wskaz->nazwisko[i]='\0' ;
- i++; }
- i=0;
- while(i<MAX_IMIE){
- if(isalpha(wskaz->nazwisko[i])==0){
- printf("Bledne dane!");
- printf("\nPodaj imie i nazwisko mechanika ");
- fgets(wskaz->nazwisko,MAX_IMIE,stdin);}//if
- else
- break;}//while
- wskaz->nazwisko[0]=toupper(wskaz->nazwisko[0]);
- i=0;
- while(i<MAX_IMIE){
- if(wskaz->nazwisko[i]==' ')
- wskaz->nazwisko[i+1]=toupper(wskaz->nazwisko[i+1]);
- i++;}//while
- printf("%s",wskaz->nazwisko);
- printf("\ndodano rekord:");
- printf("\nNr\tnr stanowiska\tnr rejestracyjny\tmarka pojazdu\t\tnazwisko i imie\n");
- 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);
- //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);
- }
- else
- printf("Baza przepelniona lub podano nr rekordu ktorego nie ma");
- return 0;
- }
- //****************************************************************************************************************USUN
- int usun(struct poz *wskaz)
- { int a,b,i;
- a=n;
- while(1){
- printf("Podaj nr rekordu do usuniecia ");
- if((scanf("%d",&b)==1)&& b<=n)
- break;
- printf("Blad danych. Sprobuj jeszcze raz ");} //while
- wskaz=wskaz+(b-1);
- for(i=b;i<a;i++){
- *wskaz= *(wskaz+1);
- wskaz->nr=(wskaz->nr)-1;
- wskaz+=1;}//for
- n--;
- printf("\nUsunieto rekord nr %d",b);
- return 0;}
- //*************************************************************************************************************WYSWIETL
- void wyswietl(struct poz *wskaz)
- { int i=0;
- printf("Nr\tnr stan.\tnr rejestracyjny\t marka pojazdu\tnazwisko i imie\n");
- while(i<n)
- {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);
- wskaz+=1;
- i++;}}
- //**************************************************************************************************************EDYTUJ
- void edytuj(struct poz *wskaz)
- {int c,d;
- while(1){
- printf ("\npodaj nr rekordu do edycji ");
- if((scanf("%d",&c)==1))
- break;
- printf("\nBledne dane sprobuj jeszcze raz");
- while(getchar()!='\n');
- }
- d=n;
- n=c-1;
- dodaj(&wskaz[c-1]);
- n=d;}
- //****************************************************************************************************************SORTUJ
- void sortuj(struct poz *wskaz2)
- {int h;
- while(1)
- {printf("\n1 - Wyswietl wg kolejnosci wprowadzenia rekordow");
- printf("\n2 - Wyswietl wg nr stanowisk");
- printf("\n3 - Wyswietl wg kolejnosci alfabetycznej wg marki");
- if((scanf("%d",&h) == 1) && h<4)
- break;
- printf("blad danych! Wybierz cyfre z przedzialu 1-3\n");}
- switch(h)
- {case 1 : wyswietl(&wskaz2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement