X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1-materijali.git;a=blobdiff_plain;f=kodovi%2Fklase%2FRadniciSpisakId.java;fp=kodovi%2Fklase%2FRadniciSpisakId.java;h=9f5f5d5498324acf6857500a361eae390dcb5895;hp=f83211c74576f7650ff4c174fe7f257f2e9fe995;hb=157552adaab1351cae04c28263297e93263eada5;hpb=e6c1e4a5276e463e8b7c64fe5c8b955b6a219fbe diff --git a/kodovi/klase/RadniciSpisakId.java b/kodovi/klase/RadniciSpisakId.java index f83211c..9f5f5d5 100644 --- a/kodovi/klase/RadniciSpisakId.java +++ b/kodovi/klase/RadniciSpisakId.java @@ -1,180 +1,192 @@ -/** - * Prosirujemo program iz RadniciSpisak tako da ima jedinstvene id-ove za radnike. Dodajemo - * i operaciju za izbacivanje radnika. +/** + * Prosirujemo program iz RadniciSpisak tako da ima jedinstvene id-ove za + * radnike. Dodajemo i operaciju za izbacivanje radnika. */ public class RadniciSpisakId { - static SpisakJedinstvenihRadnika spisak = null, spisak2 = null; - - public static void main(String[] args){ - spisak = new SpisakJedinstvenihRadnika(); - spisak.ucitajRadnike("radnici.txt"); - Svetovid.out.println(spisak); - if (spisak.izbaciRadnika(111)) { - Svetovid.out.println("posle izbacivanja:"); - Svetovid.out.println(spisak); - } else { - Svetovid.out.println("nije nadjen radnik za izbacivanje"); - } - - spisak2 = new SpisakJedinstvenihRadnika(); - spisak2.ucitajRadnike("radnici2.txt"); - spisak2.sviUKancelariji(1); - } + static SpisakJedinstvenihRadnika spisak = null, spisak2 = null; + + public static void main(String[] args) { + spisak = new SpisakJedinstvenihRadnika(); + spisak.ucitajRadnike("radnici.txt"); + Svetovid.out.println(spisak); + if (spisak.izbaciRadnika(111)) { + Svetovid.out.println("posle izbacivanja:"); + Svetovid.out.println(spisak); + } else { + Svetovid.out.println("nije nadjen radnik za izbacivanje"); + } + + spisak2 = new SpisakJedinstvenihRadnika(); + spisak2.ucitajRadnike("radnici2.txt"); + spisak2.sviUKancelariji(1); + } } /** Spisak radnika u kome svi imaju razlicite id brojeve. */ class SpisakJedinstvenihRadnika { - - /** Radnik sa svojim podacima: id, prezime, ime, kancelarija */ - class Radnik { - String prezime, ime; - int id; - int kancelarija; - - // Konstruktor klase - neophodno je proslediti sve podatke odjednom da se napravi instanca - public Radnik(int id, String prezime, String ime, int kancelarija) { - this.id = id; - this.prezime = prezime; - this.ime = ime; - this.kancelarija = kancelarija; - } - - public String prezimeIme() { - return prezime+" "+ime; - } - - public String inicijali() { - String p = ""; - if (prezime != null && !prezime.isEmpty()) { - p = prezime.charAt(0)+"."; - } - String i = ""; - if (ime != null && !ime.isEmpty()) { - i = ime.charAt(0)+"."; - } - return i+p; - } - - public String sviPodaci() { - return "Radnik "+id+":"+prezime+" "+ime+", kancelarija:"+kancelarija; - } - - // toString metod se koristi kad je potrebno predstaviti instancu kao String, - // tipicno pri pozivu ispisa na ekran. Ocekuje se da da kratku informaciju - // koja je razumljiva coveku. - public String toString() { - return prezime+" "+ime; - } - - } // klasa Radnik - - final static int MAX_RADNIKA = 100; - - Radnik[] spisak; - int brojac; - - /** Kreira novu instancu klase i inicijalizuje niz i brojac na adekvatne vrednosti. */ - public SpisakJedinstvenihRadnika() { - spisak = new Radnik[MAX_RADNIKA]; - brojac = 0; - } - - /** Dodaje novog radnika sa datim podacima. Vraca da li je - * operacija uspesno obavljena, odnosno vratice false ako - * je radnik takvim id-om vec postojao */ - public boolean dodajRadnika(int id, String prezime, String ime, int kanc) { - - //proverimo jel ima mesta - if (brojac >= MAX_RADNIKA) { - Svetovid.err.println("Greska! vec ima "+MAX_RADNIKA+" novi se ne mogu dodati"); - } - - //proverimo jel vec postoji neko sa tim id-om - boolean postoji = false; - for (int i=0;i0) { - res += spisak[0]; - } - for (int i=1;i= MAX_RADNIKA) { + Svetovid.err.println("Greska! vec ima " + MAX_RADNIKA + + " novi se ne mogu dodati"); + } + + // proverimo jel vec postoji neko sa tim id-om + boolean postoji = false; + for (int i = 0; i < brojac && !postoji; i++) { + if (spisak[i].id == id) { + postoji = true; + } + } + + if (postoji) { + Svetovid.err.println("Greska! radnik sa idom:" + id + + " vec postoji"); + return false; + } else { + spisak[brojac] = new Radnik(id, prezime, ime, kanc); + brojac++; + return true; + } + } + + /** Ucitava sve radnike iz datog fajla i dodaje ih u trenutni spisak. */ + public void ucitajRadnike(String imef) { + while (!Svetovid.in(imef).isEmpty()) { + int id = Svetovid.in(imef).readInt(); + String prezime = Svetovid.in(imef).readToken(); + String ime = Svetovid.in(imef).readToken(); + int kanc = Svetovid.in(imef).readInt(); + dodajRadnika(id, prezime, ime, kanc); + } + Svetovid.in(imef).close(); + } + + public void snimiRadnike(String imef) { + for (int i = 0; i < brojac; i++) { + Radnik rad = spisak[i]; + Svetovid.out(imef).print(rad.id); + Svetovid.out(imef).print(" "); + Svetovid.out(imef).print(rad.prezime); + Svetovid.out(imef).print(" "); + Svetovid.out(imef).print(rad.ime); + Svetovid.out(imef).print(" "); + Svetovid.out(imef).print(rad.kancelarija); + Svetovid.out(imef).println(); + } + Svetovid.out(imef).close(); + } + + public boolean izbaciRadnika(int id) { + int pos = 0; + while (pos < brojac && spisak[pos].id != id) + pos++; + + if (pos < brojac) { + brojac--; + + // zapravo treba da pomerimo sve iza ovog radnika + for (int j = pos; j < brojac; j++) + spisak[j] = spisak[j + 1]; + return true; + } else { + return false; + } + } + + public int brRadnika() { + return brojac; + } + + public void sviUKancelariji(int kanc) { + for (int i = 0; i < brojac; i++) { + if (spisak[i].kancelarija == kanc) { + Svetovid.out.println(spisak[i]); + } + } + } + + /** + * Ispisuje sve radnike u nizu razdvojene razmacima. Posebna paznja je + * obracena na to da se ne ispisuje zarez nakon poslednjeg radnika. + */ + public String toString() { + String res = "Radnici ["; + if (brojac > 0) { + res += spisak[0]; + } + for (int i = 1; i < brojac; i++) { + res += ", " + spisak[i]; + } + res += "]"; + return res; + } + }