Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program TelImenik;
- uses sysutils;
- const maxK = 1000;
- type
- kontakt = Record
- ime : string;
- prezime : string;
- grad : string;
- brojTelefona : string;
- end;
- Imenik = Record
- brojKontakata : integer;
- spisak : array [1..maxK] of kontakt;
- end;
- procedure UcitajImenik (var i : Imenik ; imeFajla : string);
- var
- f : file of kontakt;
- br : integer;
- begin
- assign(f,imeFajla);
- reset(f);
- br:=0;
- if(FileExists(imeFajla)) then
- begin
- while not eof(f) do
- begin
- inc(br);
- read(f,i.spisak[br]);
- end;
- i.brojKontakata:=br;
- end;
- close(f);
- end;
- procedure IspisImenika (var i : Imenik);
- var
- br : integer;
- begin
- with i do
- begin
- for br := 1 to brojKontakata do
- begin
- writeln('Ime :',spisak[br].ime);
- writeln('Prezime :',spisak[br].prezime);
- writeln('Grad :',spisak[br].grad);
- writeln('Broj telefona :',spisak[br].brojTelefona);
- writeln('-------------------------------------------');
- end;
- end;
- end;
- procedure IspisKontakta(var k : kontakt);
- begin
- with k do
- begin
- writeln('Ime :',ime);
- writeln('Prezime :',prezime);
- writeln('Grad :',grad);
- writeln('Broj telefona :',brojTelefona);
- writeln('-------------------------------------------');
- end;
- end;
- procedure DodajKontakt(var i : Imenik);
- var
- odg : string;
- begin
- with i do
- begin
- repeat
- begin
- write('Ime : ');
- readln(spisak[brojKontakata].ime);
- write('Prezime : ');
- readln(spisak[brojKontakata].prezime);
- write('Grad : ');
- readln(spisak[brojKontakata].grad);
- write('Broj telefona : ');
- readln(spisak[brojKontakata].brojTelefona);
- writeln('-------------------------------------------');
- inc(brojKontakata);
- writeln('Da li zelite da unesete novi kontakt (da / ne )');
- readln(odg);
- end;
- until (brojKontakata > maxK)and(odg = 'ne');
- end;
- end;
- procedure swapKontakte(var a,b : kontakt);
- var
- pom : kontakt;
- begin
- pom:=a;
- a:=b;
- b:=pom;
- end;
- procedure AzurirajKontakt(var i : Imenik);
- var
- indeks : integer;
- odg : string;
- begin
- with i do
- begin
- writeln('Unesite indeks kontakta koji zelite da azurirate');
- readln(indeks);
- writeln('Da li ste sigurni da zelite da azurirate',spisak[indeks].Prezime,' ',spisak[indeks].ime,' iz ',spisak[indeks].grad, ' iz vase liste kontakata?');
- readln(odg);
- if odg = 'da' then
- begin
- write('Ime : ');
- readln(spisak[indeks].ime);
- write('Prezime : ');
- readln(spisak[indeks].prezime);
- write('Grad : ');
- readln(spisak[indeks].grad);
- write('Broj telefona : ');
- readln(spisak[indeks].brojTelefona);
- writeln('-------------------------------------------');
- end;
- end;
- end;
- procedure SacuvajImenik(var i : Imenik; imeFajla : string);
- var
- f : file of kontakt;
- br : integer;
- begin
- assign(f,imeFajla);
- rewrite(f);
- for br:=1 to i.brojKontakata do
- begin
- write(f,i.spisak[br]);
- end;
- close(f);
- end;
- function PorediKontakte(var a,b : kontakt):boolean;
- var
- pom1,pom2 : string;
- begin
- pom1:=a.prezime+a.ime;
- pom2:=b.prezime+b.ime;
- if a.grad < b.grad then PorediKontakte := true
- else if b.grad < a.grad then PorediKontakte := false
- else
- begin
- if pom1 < pom2 then PorediKontakte := true
- else PorediKontakte := false;
- end;
- end;
- procedure SortirajKontakte(var i : Imenik);
- var
- br,j : integer;
- pom : kontakt;
- begin
- with i do
- begin
- for br:=1 to brojKontakata-1 do
- begin
- pom:=spisak[br];
- for j:=br+1 to brojKontakata do
- begin
- if PorediKontakte(spisak[j],pom) then
- begin
- pom:=spisak[j];
- end;
- swapKontakte(pom,spisak[br]);
- end;
- end;
- end;
- end;
- procedure PretraziKontakt(var i : Imenik);
- var
- odg,trazeniLik : string;
- br : integer;
- begin
- writeln('Unesite ime i/ili prezime kontakta ');
- readln(trazeniLik);
- writeln('Da li se uneli ime ili prezime ili oba?');
- readln(odg);
- with i do
- begin
- if odg = 'ime' then
- begin
- for br:=1 to brojKontakata do
- begin
- if pos(trazeniLik,spisak[br].ime) <> 0 then IspisKontakta(spisak[br]);
- end;
- end;
- if odg = 'prezime' then
- begin
- for br:=1 to brojKontakata do
- begin
- if pos(trazeniLik,spisak[br].prezime) <> 0 then IspisKontakta(spisak[br]);
- end;
- end;
- if odg = 'oba' then
- begin
- for br:=1 to brojKontakata do
- begin
- if (pos(trazeniLik,spisak[br].ime+' '+spisak[br].prezime) <> 0 )or(pos(trazeniLik,spisak[br].prezime+' '+spisak[br].ime) <> 0 ) then IspisKontakta(spisak[br]);
- end;
- end;
- end;
- end;
- procedure IzbrisiKontakt(var i : Imenik);
- var
- indeks : integer;
- odgovor : string;
- begin
- with i do
- begin
- writeln('Unesi indeks kontakta koji zelite da obrisete:');
- readln(indeks);
- writeln('Da li ste sigurni da zelite da obrisete',spisak[indeks].Prezime,' ',spisak[indeks].ime,' iz ',spisak[indeks].grad, ' iz vase liste kontakata?');
- readln(odgovor);
- if odgovor = 'da' then
- begin
- swapKontakte(spisak[indeks],spisak[brojKontakata]);
- brojKontakata:=brojKontakata-1;
- end;
- end;
- end;
- procedure Pomoc();
- var
- s : string;
- begin
- readln(s);
- if(s = 'pomoc') then writeln('Ispisuje ovo...')
- else if(s = 'dodaj kontakt') then writeln('Dodaje kontakt u imenik')
- else if s = 'azuriraj' then writeln('Azurira podatke kontakta')
- else if s = 'pretraga' then writeln('Pretrazuje kontake')
- else if s = 'sortiraj' then writeln('Sortira imenik pa ga ispisuje')
- else if s = 'prikaz imenika' then writeln('Prikazuje imenik')
- else if s = 'obrisi kontakt' then writeln('Brise kontakt iz imenika')
- else if s = 'sacuvaj' then writeln('Sacuvava imenik na fajl')
- else if s = 'izadji' then writeln('Izlazi iz programa')
- else writeln('Funkcija nije poznata');
- end;
- procedure Unos(var i : Imenik; imeFajla : string);
- var
- s : string;
- ok : boolean;
- begin
- ok:=true;
- while ok do
- begin
- readln(s);
- if s = 'pomoc' then Pomoc()
- else if s = 'dodaj kontak' then DodajKontakt(i)
- else if s = 'azuriraj' then AzurirajKontakt(i)
- else if s = 'pretraga' then PretraziKontakt(i)
- else if s = 'sortiraj' then
- begin
- SortirajKontakte(i);
- IspisImenika(i);
- end
- else if s = 'prikaz imenika' then IspisImenika(i)
- else if s = 'obrisi kontakt' then IzbrisiKontakt(i)
- else if s = 'sacuvaj' then SacuvajImenik(i,imeFajla)
- else if s = 'izadji' then ok := false
- else writeln('Funkcija nije poznata');
- end;
- end;
- {*----------------------------------------------------------------------------------------------------------------------------------------------------*}
- var
- spisak : Imenik;
- nazivFajla : string;
- begin
- nazivFajla:='imenikKontakata.bat';
- pomoc();
- unos(spisak,nazivFajla);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement