Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char* mala(char* string)
- {
- char* prvi=string;
- while(*string != '\0')
- {
- if(*string>='A' && *string<='Z')
- *string = (*string) + 32;
- string++;
- }
- return prvi;
- }
- void unos(char* string, int duzina)
- {
- int i = 0;
- char c;
- do
- {
- c = getchar();
- string[i] = c;
- i++;
- }
- while (c != '\n' && i < duzina);
- string[i - 1] = '\0';
- }
- struct Adresa
- {
- char ime[31], prezime[31], email[48], odsjek[10];
- int godina_studija;
- };
- int sadrzi(char *s, char *p)
- {
- while (*p != '\0')
- {
- if (*s != *p) return 0;
- s++, p++;
- }
- return 1;
- }
- int ucitaj(struct Adresa niz[])
- {
- FILE* ulaz;
- int i = 0;
- ulaz = fopen("adresar.txt", "ab+");
- if (ulaz == NULL)
- {
- printf("svaka cast");
- return 0;
- }
- while (fscanf(ulaz, "%s%s%s%s%d\n", niz[i].ime, niz[i].prezime, niz[i].email, niz[i].odsjek, &niz[i].godina_studija) != EOF && i<1000)
- {
- i++;
- }
- fclose(ulaz);
- return i;
- }
- void zapisi(struct Adresa niz[], int vel)
- {
- FILE* izlaz;
- int i = 0;
- izlaz = fopen("adresar.txt", "w");
- if (izlaz == NULL)
- {
- printf("Greska pri otvaranju datoteke adresar.txt!");
- exit(1);
- }
- for (i = 0; i<vel; i++)
- {
- fprintf(izlaz, "%s %s %s %s %d\n", niz[i].ime, niz[i].prezime, niz[i].email, niz[i].odsjek, niz[i].godina_studija);
- }
- fclose(izlaz);
- }
- void odredi_adresu(struct Adresa niz[], int vel, struct Adresa* novi)
- {
- char adresa[48];
- char dio[15] = "@etf.unsa.ba";
- char brojac[2]="1";
- char priv1[32];
- char priv2[32];
- int i;
- for (i = 0; i<vel; i++)
- {
- while ((niz[i].ime[0] == novi->ime[0]) && strcmp(niz[i].prezime, novi->prezime) == 0 && niz[i].email[1 + strlen(novi->prezime)] == brojac[0])
- {
- brojac[0]++;
- }
- }
- strcpy(priv1,novi->ime);
- strncpy(priv2,novi->prezime,strlen(novi->prezime));
- strncpy(adresa, mala(priv1), 1);
- strcpy(adresa + 1, mala(priv2));
- strcpy(adresa + 1 + strlen(novi->prezime), brojac);
- strcpy(adresa + 1 + strlen(novi->prezime)+1 , dio);
- strcpy(novi->email, adresa);
- niz[vel] = *novi;
- }
- int obrisi_adresu(struct Adresa niz[], int vel, char* adresa)
- {
- int i = 0;
- int j, pom = 0;
- for (i = 0; i<vel; i++)
- {
- if (strcmp(niz[i].email, adresa) == 0)
- {
- for (j = i; j<vel-1; j++)
- {
- niz[j] = niz[j + 1];
- }
- pom++;
- }
- }
- if (pom) return 1;
- else return 0;
- }
- int pretraga(struct Adresa niz[], int vel, char* tekst)
- {
- int i = 0;
- for (i = 0; i<vel; i++)
- {
- if (sadrzi(niz[i].ime, tekst) == 1 || sadrzi(niz[i].prezime, tekst) == 1)
- return i;
- }
- return -1;
- }
- void velika_pretraga (struct Adresa niz[], int vel, char* tekst)
- {
- int i, k = 0, pretrazeno[1000];
- for (i = 0; i < vel; i++)
- {
- if(sadrzi(niz[i].ime, tekst) == 1 || sadrzi(niz[i].prezime, tekst) == 1)
- {
- pretrazeno[k] = i;
- k++;
- }
- }
- if(k==0)
- {printf("Nije pronadjen nijedan student.\n");
- exit(1);
- }
- for( i = 0; i < k; i++)
- {
- printf("%d. %s %s (%s%d) - %s\n", i+1, niz[pretrazeno[i]].prezime, niz[pretrazeno[i]].ime, niz[pretrazeno[i]].odsjek, niz[pretrazeno[i]].godina_studija, niz[pretrazeno[i]].email);
- }
- }
- void ispis(struct Adresa niz[], int vel, int godina_studija, char* odsjek)
- {
- int i = 0;
- int brojac = 1;
- for (i = 0; i<vel; i++)
- {
- if ((niz[i].godina_studija == godina_studija) && (strcmp(niz[i].odsjek, odsjek) == 0))
- {
- printf("%d. %s %s (%s%d) - %s\n", brojac, niz[i].prezime, niz[i].ime, niz[i].odsjek, niz[i].godina_studija, niz[i].email);
- brojac++;
- }
- }
- }
- int dodaj(struct Adresa niz[], int vel)
- {
- struct Adresa adresa;
- printf("Unesite ime: ");
- fflush(stdin);
- unos(adresa.ime, 30);
- printf("Unesite prezime: ");
- unos(adresa.prezime, 30);
- while (1)
- {
- printf("Godina studija : ");
- scanf("%d", &adresa.godina_studija);
- if (adresa.godina_studija <1 || adresa.godina_studija >3)
- printf("Neispravna godina studija! Unesite ponovo.\n");
- else break;
- }
- while (1)
- {
- printf("Odsjek: ");
- scanf("%s", adresa.odsjek);
- if (strcmp(adresa.odsjek, "AE") == 0 || strcmp(adresa.odsjek, "RI") == 0 || strcmp(adresa.odsjek, "EE") == 0 || strcmp(adresa.odsjek, "TK") == 0)
- break;
- else printf("Nepoznat odsjek! Unesite ponovo!\n");
- }
- odredi_adresu(niz, vel, &adresa);
- vel++;
- printf("Dodan student sa email adresom: %s\n", niz[vel-1].email);
- return vel;
- }
- int izmijeni(struct Adresa niz[], int vel, char* email)
- {
- char novo_ime[31];
- char novo_prezime[31];
- char novi_odsjek[48];
- int i;
- int godina;
- for (i = 0; i<vel; i++)
- {
- if (strcmp(email, niz[i].email) == 0)
- {
- printf("Trenutni podaci su: %s %s %s%d\n", niz[i].ime, niz[i].prezime, niz[i].odsjek, niz[i].godina_studija);
- printf("Unesite ime: ");
- unos(novo_ime, 31);
- printf("Unesite prezime: ");
- unos(novo_prezime, 31);
- while (1)
- {
- printf("Godina studija : ");
- scanf("%d", &godina);
- if (godina <1 || godina >3)
- printf("Neispravna godina studija! Unesite ponovo.\n");
- else break;
- }
- while (1)
- {
- printf("Odsjek: ");
- scanf("%s", novi_odsjek);
- if (strcmp(novi_odsjek, "AE") == 0 || strcmp(novi_odsjek, "RI") == 0 || strcmp(novi_odsjek, "EE") == 0 || strcmp(novi_odsjek, "TK") == 0)
- break;
- else printf("Nepoznat odsjek! Unesite ponovo!\n");
- }
- strcpy(niz[i].ime, novo_ime);
- strcpy(niz[i].prezime, novo_prezime);
- strcpy(niz[i].odsjek, novi_odsjek);
- niz[i].godina_studija = godina;
- printf("Izmijenjen student.\n");
- return 1;
- }
- }
- return 0;
- }
- int main()
- {
- struct Adresa niz[1000];
- int izbor = 0;
- char priv[48];
- int n;
- int vel=0;
- printf("Dobro dosli u ETF Email adresar\n");
- if ((vel = ucitaj(niz)))
- {
- printf("Datoteka adresar.txt uspjesno ucitana.\n");
- }
- while (izbor != 6)
- {
- printf("Izaberite: \n");
- printf(" 1. dodavanje\n");
- printf(" 2. promjena\n");
- printf(" 3. brisanje\n");
- printf(" 4. pretraga\n");
- printf(" 5. ispis\n");
- printf(" 6. kraj rada\n");
- printf("Vas izbor je: ");
- scanf("%d", &izbor);
- if (izbor == 1)
- {
- if (vel<1000)
- {
- vel = dodaj(niz, vel);
- }
- else printf("GRESKA! Maksimalan moguci broj studenata je 1000.\n");
- }
- else if (izbor == 2)
- {
- printf("Unesite email adresu: ");
- fflush(stdin);
- unos(priv, 48);
- if (izmijeni(niz, vel, priv) == 0)
- printf("U adresaru nema studenta sa takvom adresom.\n");
- else zapisi(niz, vel);
- }
- else if (izbor == 3)
- {
- printf("Unesite email adresu: ");
- fflush(stdin);
- unos(priv, 48);
- if (obrisi_adresu(niz, vel, priv) == 0) printf("U adresaru nema studenta sa takvom adresom.\n");
- else
- {
- vel--;
- zapisi(niz, vel);
- }
- }
- else if (izbor == 4)
- {
- printf("Unesite dio imena ili prezimena: ");
- fflush(stdin);
- unos(priv, 48);
- velika_pretraga(niz,vel,priv);
- }
- else if (izbor == 5)
- {
- printf("Godina studija: ");
- fflush(stdin);
- scanf("%d", &n);
- printf("Odsjek: ");
- fflush(stdin);
- unos(priv, 48);
- ispis(niz, vel, n, priv);
- }
- else if (izbor == 6)
- {
- zapisi(niz, vel);
- printf("Kraj rada.\nDovidjenja i vidimo se uskoro!\n");
- break;
- }
- else printf("Pogresan izbor! Unesite ponovo.\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement