Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.75 KB | None | 0 0
  1. Program TelImenik;
  2. uses sysutils;
  3. const maxK = 1000;
  4. type
  5. kontakt = Record
  6. ime : string;
  7. prezime : string;
  8. grad : string;
  9. brojTelefona : string;
  10. end;
  11. Imenik = Record
  12. brojKontakata : integer;
  13. spisak : array [1..maxK] of kontakt;
  14. end;
  15. procedure UcitajImenik (var i : Imenik ; imeFajla : string);
  16. var
  17. f : file of kontakt;
  18. br : integer;
  19. begin
  20. assign(f,imeFajla);
  21. reset(f);
  22. br:=0;
  23. if(FileExists(imeFajla)) then
  24. begin
  25. while not eof(f) do
  26. begin
  27. inc(br);
  28. read(f,i.spisak[br]);
  29. end;
  30. i.brojKontakata:=br;
  31. end;
  32. close(f);
  33. end;
  34. procedure IspisImenika (var i : Imenik);
  35. var
  36. br : integer;
  37. begin
  38. with i do
  39. begin
  40. for br := 1 to brojKontakata do
  41. begin
  42. writeln('Ime :',spisak[br].ime);
  43. writeln('Prezime :',spisak[br].prezime);
  44. writeln('Grad :',spisak[br].grad);
  45. writeln('Broj telefona :',spisak[br].brojTelefona);
  46. writeln('-------------------------------------------');
  47. end;
  48. end;
  49. end;
  50.  
  51.  
  52. procedure IspisKontakta(var k : kontakt);
  53. begin
  54. with k do
  55. begin
  56. writeln('Ime :',ime);
  57. writeln('Prezime :',prezime);
  58. writeln('Grad :',grad);
  59. writeln('Broj telefona :',brojTelefona);
  60. writeln('-------------------------------------------');
  61. end;
  62. end;
  63.  
  64.  
  65.  
  66. procedure DodajKontakt(var i : Imenik);
  67. var
  68. odg : string;
  69. begin
  70. with i do
  71. begin
  72. repeat
  73. begin
  74. write('Ime : ');
  75. readln(spisak[brojKontakata].ime);
  76. write('Prezime : ');
  77. readln(spisak[brojKontakata].prezime);
  78. write('Grad : ');
  79. readln(spisak[brojKontakata].grad);
  80. write('Broj telefona : ');
  81. readln(spisak[brojKontakata].brojTelefona);
  82. writeln('-------------------------------------------');
  83. inc(brojKontakata);
  84. writeln('Da li zelite da unesete novi kontakt (da / ne )');
  85. readln(odg);
  86. end;
  87. until (brojKontakata > maxK)and(odg = 'ne');
  88. end;
  89. end;
  90.  
  91. procedure swapKontakte(var a,b : kontakt);
  92. var
  93. pom : kontakt;
  94. begin
  95. pom:=a;
  96. a:=b;
  97. b:=pom;
  98. end;
  99.  
  100. procedure AzurirajKontakt(var i : Imenik);
  101. var
  102. indeks : integer;
  103. odg : string;
  104. begin
  105. with i do
  106. begin
  107. writeln('Unesite indeks kontakta koji zelite da azurirate');
  108. readln(indeks);
  109. writeln('Da li ste sigurni da zelite da azurirate',spisak[indeks].Prezime,' ',spisak[indeks].ime,' iz ',spisak[indeks].grad, ' iz vase liste kontakata?');
  110. readln(odg);
  111. if odg = 'da' then
  112. begin
  113. write('Ime : ');
  114. readln(spisak[indeks].ime);
  115. write('Prezime : ');
  116. readln(spisak[indeks].prezime);
  117. write('Grad : ');
  118. readln(spisak[indeks].grad);
  119. write('Broj telefona : ');
  120. readln(spisak[indeks].brojTelefona);
  121. writeln('-------------------------------------------');
  122. end;
  123. end;
  124. end;
  125.  
  126.  
  127. procedure SacuvajImenik(var i : Imenik; imeFajla : string);
  128. var
  129. f : file of kontakt;
  130. br : integer;
  131. begin
  132. assign(f,imeFajla);
  133. rewrite(f);
  134. for br:=1 to i.brojKontakata do
  135. begin
  136. write(f,i.spisak[br]);
  137. end;
  138. close(f);
  139. end;
  140.  
  141.  
  142. function PorediKontakte(var a,b : kontakt):boolean;
  143. var
  144. pom1,pom2 : string;
  145. begin
  146. pom1:=a.prezime+a.ime;
  147. pom2:=b.prezime+b.ime;
  148. if a.grad < b.grad then PorediKontakte := true
  149. else if b.grad < a.grad then PorediKontakte := false
  150. else
  151. begin
  152. if pom1 < pom2 then PorediKontakte := true
  153. else PorediKontakte := false;
  154. end;
  155. end;
  156.  
  157. procedure SortirajKontakte(var i : Imenik);
  158. var
  159. br,j : integer;
  160. pom : kontakt;
  161. begin
  162. with i do
  163. begin
  164. for br:=1 to brojKontakata-1 do
  165. begin
  166. pom:=spisak[br];
  167. for j:=br+1 to brojKontakata do
  168. begin
  169. if PorediKontakte(spisak[j],pom) then
  170. begin
  171. pom:=spisak[j];
  172. end;
  173. swapKontakte(pom,spisak[br]);
  174. end;
  175. end;
  176. end;
  177. end;
  178.  
  179. procedure PretraziKontakt(var i : Imenik);
  180. var
  181. odg,trazeniLik : string;
  182. br : integer;
  183. begin
  184. writeln('Unesite ime i/ili prezime kontakta ');
  185. readln(trazeniLik);
  186. writeln('Da li se uneli ime ili prezime ili oba?');
  187. readln(odg);
  188. with i do
  189. begin
  190. if odg = 'ime' then
  191. begin
  192. for br:=1 to brojKontakata do
  193. begin
  194. if pos(trazeniLik,spisak[br].ime) <> 0 then IspisKontakta(spisak[br]);
  195. end;
  196. end;
  197. if odg = 'prezime' then
  198. begin
  199. for br:=1 to brojKontakata do
  200. begin
  201. if pos(trazeniLik,spisak[br].prezime) <> 0 then IspisKontakta(spisak[br]);
  202. end;
  203. end;
  204. if odg = 'oba' then
  205. begin
  206. for br:=1 to brojKontakata do
  207. begin
  208. if (pos(trazeniLik,spisak[br].ime+' '+spisak[br].prezime) <> 0 )or(pos(trazeniLik,spisak[br].prezime+' '+spisak[br].ime) <> 0 ) then IspisKontakta(spisak[br]);
  209. end;
  210. end;
  211. end;
  212. end;
  213.  
  214.  
  215. procedure IzbrisiKontakt(var i : Imenik);
  216. var
  217. indeks : integer;
  218. odgovor : string;
  219. begin
  220. with i do
  221. begin
  222. writeln('Unesi indeks kontakta koji zelite da obrisete:');
  223. readln(indeks);
  224. writeln('Da li ste sigurni da zelite da obrisete',spisak[indeks].Prezime,' ',spisak[indeks].ime,' iz ',spisak[indeks].grad, ' iz vase liste kontakata?');
  225. readln(odgovor);
  226. if odgovor = 'da' then
  227. begin
  228. swapKontakte(spisak[indeks],spisak[brojKontakata]);
  229. brojKontakata:=brojKontakata-1;
  230. end;
  231. end;
  232. end;
  233.  
  234. procedure Pomoc();
  235. var
  236. s : string;
  237. begin
  238. readln(s);
  239. if(s = 'pomoc') then writeln('Ispisuje ovo...')
  240. else if(s = 'dodaj kontakt') then writeln('Dodaje kontakt u imenik')
  241. else if s = 'azuriraj' then writeln('Azurira podatke kontakta')
  242. else if s = 'pretraga' then writeln('Pretrazuje kontake')
  243. else if s = 'sortiraj' then writeln('Sortira imenik pa ga ispisuje')
  244. else if s = 'prikaz imenika' then writeln('Prikazuje imenik')
  245. else if s = 'obrisi kontakt' then writeln('Brise kontakt iz imenika')
  246. else if s = 'sacuvaj' then writeln('Sacuvava imenik na fajl')
  247. else if s = 'izadji' then writeln('Izlazi iz programa')
  248. else writeln('Funkcija nije poznata');
  249. end;
  250.  
  251.  
  252.  
  253. procedure Unos(var i : Imenik; imeFajla : string);
  254. var
  255. s : string;
  256. ok : boolean;
  257. begin
  258. ok:=true;
  259. while ok do
  260. begin
  261. readln(s);
  262. if s = 'pomoc' then Pomoc()
  263. else if s = 'dodaj kontak' then DodajKontakt(i)
  264. else if s = 'azuriraj' then AzurirajKontakt(i)
  265. else if s = 'pretraga' then PretraziKontakt(i)
  266. else if s = 'sortiraj' then
  267. begin
  268. SortirajKontakte(i);
  269. IspisImenika(i);
  270. end
  271. else if s = 'prikaz imenika' then IspisImenika(i)
  272. else if s = 'obrisi kontakt' then IzbrisiKontakt(i)
  273. else if s = 'sacuvaj' then SacuvajImenik(i,imeFajla)
  274. else if s = 'izadji' then ok := false
  275. else writeln('Funkcija nije poznata');
  276. end;
  277. end;
  278.  
  279.  
  280. {*----------------------------------------------------------------------------------------------------------------------------------------------------*}
  281.  
  282. var
  283. spisak : Imenik;
  284. nazivFajla : string;
  285. begin
  286. nazivFajla:='imenikKontakata.bat';
  287. pomoc();
  288. unos(spisak,nazivFajla);
  289. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement