Advertisement
Guest User

hepek

a guest
Jan 25th, 2015
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char* mala(char* string)
  6. {
  7. char* prvi=string;
  8. while(*string != '\0')
  9. {
  10. if(*string>='A' && *string<='Z')
  11. *string = (*string) + 32;
  12. string++;
  13. }
  14. return prvi;
  15. }
  16.  
  17. void unos(char* string, int duzina)
  18. {
  19. int i = 0;
  20. char c;
  21. do
  22. {
  23. c = getchar();
  24. string[i] = c;
  25. i++;
  26. }
  27. while (c != '\n' && i < duzina);
  28. string[i - 1] = '\0';
  29. }
  30.  
  31. struct Adresa
  32. {
  33. char ime[31], prezime[31], email[48], odsjek[10];
  34. int godina_studija;
  35. };
  36.  
  37. int sadrzi(char *s, char *p)
  38. {
  39. while (*p != '\0')
  40. {
  41. if (*s != *p) return 0;
  42. s++, p++;
  43. }
  44. return 1;
  45. }
  46.  
  47. int ucitaj(struct Adresa niz[])
  48. {
  49. FILE* ulaz;
  50.  
  51. int i = 0;
  52. ulaz = fopen("adresar.txt", "ab+");
  53.  
  54. if (ulaz == NULL)
  55. {
  56. printf("svaka cast");
  57. return 0;
  58. }
  59. 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)
  60. {
  61. i++;
  62. }
  63. fclose(ulaz);
  64. return i;
  65. }
  66. void zapisi(struct Adresa niz[], int vel)
  67. {
  68. FILE* izlaz;
  69.  
  70. int i = 0;
  71.  
  72. izlaz = fopen("adresar.txt", "w");
  73.  
  74. if (izlaz == NULL)
  75. {
  76. printf("Greska pri otvaranju datoteke adresar.txt!");
  77. exit(1);
  78. }
  79. for (i = 0; i<vel; i++)
  80. {
  81. fprintf(izlaz, "%s %s %s %s %d\n", niz[i].ime, niz[i].prezime, niz[i].email, niz[i].odsjek, niz[i].godina_studija);
  82. }
  83. fclose(izlaz);
  84. }
  85. void odredi_adresu(struct Adresa niz[], int vel, struct Adresa* novi)
  86. {
  87. char adresa[48];
  88. char dio[15] = "@etf.unsa.ba";
  89. char brojac[2]="1";
  90. char priv1[32];
  91. char priv2[32];
  92. int i;
  93. for (i = 0; i<vel; i++)
  94. {
  95. while ((niz[i].ime[0] == novi->ime[0]) && strcmp(niz[i].prezime, novi->prezime) == 0 && niz[i].email[1 + strlen(novi->prezime)] == brojac[0])
  96. {
  97. brojac[0]++;
  98. }
  99. }
  100. strcpy(priv1,novi->ime);
  101. strncpy(priv2,novi->prezime,strlen(novi->prezime));
  102.  
  103.  
  104. strncpy(adresa, mala(priv1), 1);
  105. strcpy(adresa + 1, mala(priv2));
  106. strcpy(adresa + 1 + strlen(novi->prezime), brojac);
  107. strcpy(adresa + 1 + strlen(novi->prezime)+1 , dio);
  108. strcpy(novi->email, adresa);
  109. niz[vel] = *novi;
  110. }
  111. int obrisi_adresu(struct Adresa niz[], int vel, char* adresa)
  112. {
  113. int i = 0;
  114. int j, pom = 0;
  115. for (i = 0; i<vel; i++)
  116. {
  117. if (strcmp(niz[i].email, adresa) == 0)
  118. {
  119. for (j = i; j<vel-1; j++)
  120. {
  121. niz[j] = niz[j + 1];
  122. }
  123. pom++;
  124. }
  125. }
  126. if (pom) return 1;
  127. else return 0;
  128. }
  129. int pretraga(struct Adresa niz[], int vel, char* tekst)
  130. {
  131. int i = 0;
  132. for (i = 0; i<vel; i++)
  133. {
  134. if (sadrzi(niz[i].ime, tekst) == 1 || sadrzi(niz[i].prezime, tekst) == 1)
  135. return i;
  136. }
  137. return -1;
  138. }
  139.  
  140. void velika_pretraga (struct Adresa niz[], int vel, char* tekst)
  141. {
  142. int i, k = 0, pretrazeno[1000];
  143.  
  144. for (i = 0; i < vel; i++)
  145. {
  146. if(sadrzi(niz[i].ime, tekst) == 1 || sadrzi(niz[i].prezime, tekst) == 1)
  147. {
  148. pretrazeno[k] = i;
  149. k++;
  150. }
  151. }
  152. if(k==0)
  153. {printf("Nije pronadjen nijedan student.\n");
  154. exit(1);
  155. }
  156.  
  157. for( i = 0; i < k; i++)
  158. {
  159. 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);
  160. }
  161. }
  162.  
  163.  
  164.  
  165. void ispis(struct Adresa niz[], int vel, int godina_studija, char* odsjek)
  166. {
  167. int i = 0;
  168. int brojac = 1;
  169.  
  170. for (i = 0; i<vel; i++)
  171. {
  172. if ((niz[i].godina_studija == godina_studija) && (strcmp(niz[i].odsjek, odsjek) == 0))
  173. {
  174. 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);
  175. brojac++;
  176. }
  177. }
  178. }
  179. int dodaj(struct Adresa niz[], int vel)
  180. {
  181. struct Adresa adresa;
  182.  
  183. printf("Unesite ime: ");
  184. fflush(stdin);
  185. unos(adresa.ime, 30);
  186. printf("Unesite prezime: ");
  187. unos(adresa.prezime, 30);
  188. while (1)
  189. {
  190. printf("Godina studija : ");
  191. scanf("%d", &adresa.godina_studija);
  192. if (adresa.godina_studija <1 || adresa.godina_studija >3)
  193. printf("Neispravna godina studija! Unesite ponovo.\n");
  194. else break;
  195. }
  196. while (1)
  197. {
  198. printf("Odsjek: ");
  199. scanf("%s", adresa.odsjek);
  200. if (strcmp(adresa.odsjek, "AE") == 0 || strcmp(adresa.odsjek, "RI") == 0 || strcmp(adresa.odsjek, "EE") == 0 || strcmp(adresa.odsjek, "TK") == 0)
  201. break;
  202. else printf("Nepoznat odsjek! Unesite ponovo!\n");
  203. }
  204. odredi_adresu(niz, vel, &adresa);
  205. vel++;
  206. printf("Dodan student sa email adresom: %s\n", niz[vel-1].email);
  207. return vel;
  208. }
  209. int izmijeni(struct Adresa niz[], int vel, char* email)
  210.  
  211. {
  212. char novo_ime[31];
  213. char novo_prezime[31];
  214. char novi_odsjek[48];
  215. int i;
  216. int godina;
  217. for (i = 0; i<vel; i++)
  218. {
  219. if (strcmp(email, niz[i].email) == 0)
  220. {
  221. printf("Trenutni podaci su: %s %s %s%d\n", niz[i].ime, niz[i].prezime, niz[i].odsjek, niz[i].godina_studija);
  222. printf("Unesite ime: ");
  223. unos(novo_ime, 31);
  224. printf("Unesite prezime: ");
  225. unos(novo_prezime, 31);
  226. while (1)
  227. {
  228. printf("Godina studija : ");
  229. scanf("%d", &godina);
  230. if (godina <1 || godina >3)
  231. printf("Neispravna godina studija! Unesite ponovo.\n");
  232. else break;
  233. }
  234. while (1)
  235. {
  236. printf("Odsjek: ");
  237. scanf("%s", novi_odsjek);
  238. if (strcmp(novi_odsjek, "AE") == 0 || strcmp(novi_odsjek, "RI") == 0 || strcmp(novi_odsjek, "EE") == 0 || strcmp(novi_odsjek, "TK") == 0)
  239. break;
  240. else printf("Nepoznat odsjek! Unesite ponovo!\n");
  241. }
  242. strcpy(niz[i].ime, novo_ime);
  243. strcpy(niz[i].prezime, novo_prezime);
  244. strcpy(niz[i].odsjek, novi_odsjek);
  245. niz[i].godina_studija = godina;
  246. printf("Izmijenjen student.\n");
  247. return 1;
  248. }
  249. }
  250. return 0;
  251. }
  252. int main()
  253. {
  254. struct Adresa niz[1000];
  255. int izbor = 0;
  256. char priv[48];
  257. int n;
  258. int vel=0;
  259. printf("Dobro dosli u ETF Email adresar\n");
  260.  
  261. if ((vel = ucitaj(niz)))
  262. {
  263. printf("Datoteka adresar.txt uspjesno ucitana.\n");
  264. }
  265. while (izbor != 6)
  266. {
  267. printf("Izaberite: \n");
  268. printf(" 1. dodavanje\n");
  269. printf(" 2. promjena\n");
  270. printf(" 3. brisanje\n");
  271. printf(" 4. pretraga\n");
  272. printf(" 5. ispis\n");
  273. printf(" 6. kraj rada\n");
  274. printf("Vas izbor je: ");
  275. scanf("%d", &izbor);
  276. if (izbor == 1)
  277. {
  278. if (vel<1000)
  279. {
  280. vel = dodaj(niz, vel);
  281. }
  282. else printf("GRESKA! Maksimalan moguci broj studenata je 1000.\n");
  283. }
  284. else if (izbor == 2)
  285. {
  286. printf("Unesite email adresu: ");
  287. fflush(stdin);
  288. unos(priv, 48);
  289. if (izmijeni(niz, vel, priv) == 0)
  290. printf("U adresaru nema studenta sa takvom adresom.\n");
  291. else zapisi(niz, vel);
  292. }
  293. else if (izbor == 3)
  294. {
  295. printf("Unesite email adresu: ");
  296. fflush(stdin);
  297. unos(priv, 48);
  298. if (obrisi_adresu(niz, vel, priv) == 0) printf("U adresaru nema studenta sa takvom adresom.\n");
  299. else
  300. {
  301. vel--;
  302. zapisi(niz, vel);
  303. }
  304. }
  305. else if (izbor == 4)
  306. {
  307. printf("Unesite dio imena ili prezimena: ");
  308. fflush(stdin);
  309. unos(priv, 48);
  310. velika_pretraga(niz,vel,priv);
  311. }
  312. else if (izbor == 5)
  313. {
  314. printf("Godina studija: ");
  315. fflush(stdin);
  316. scanf("%d", &n);
  317. printf("Odsjek: ");
  318. fflush(stdin);
  319. unos(priv, 48);
  320. ispis(niz, vel, n, priv);
  321. }
  322. else if (izbor == 6)
  323. {
  324. zapisi(niz, vel);
  325. printf("Kraj rada.\nDovidjenja i vidimo se uskoro!\n");
  326. break;
  327. }
  328. else printf("Pogresan izbor! Unesite ponovo.\n");
  329. }
  330. return 0;
  331. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement