X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1-materijali.git;a=blobdiff_plain;f=kodovi%2Fklase%2FRadniciPrimer.java;fp=kodovi%2Fklase%2FRadniciPrimer.java;h=545cc0906fc60a4206c32b1c1f51cf0e484f5002;hp=0000000000000000000000000000000000000000;hb=157552adaab1351cae04c28263297e93263eada5;hpb=e6c1e4a5276e463e8b7c64fe5c8b955b6a219fbe diff --git a/kodovi/klase/RadniciPrimer.java b/kodovi/klase/RadniciPrimer.java new file mode 100644 index 0000000..545cc09 --- /dev/null +++ b/kodovi/klase/RadniciPrimer.java @@ -0,0 +1,109 @@ +/** + * Program koji radi sa spiskom radnika, predstavljenim kao niz Objekata tipa + * Radnik. Klasa Radnika je definisana u klasi ispod. U programu ne znamo koliko + * ima radnika u fajlu, pa predpostavljamo da nece biti vise od 100. + */ +public class RadniciPrimer { + final static int MAX_RADNIKA = 100; + + static Radnik[] spisak = null; + // brojac predstavlja koliko radnika zapravo ima u nizu + static int brojac = 0; + + /** + * Ucitava radnike iz datog fajla. Niz radnika ce nakon ovog metoda sadrzati + * sve podatke iz fajla i samo njih, tj ako je nesto postojalo u nizu pre, + * bice zanemareno. + */ + public static void ucitajRadnike(String imef) { + // novi niz radnika + spisak = new Radnik[MAX_RADNIKA]; + // resetujemo brojac + brojac = 0; + + // citamo iz fajla dokle god ima jos redova i dok ne premasimo + // kapacitet naseg niza + while (Svetovid.in(imef).hasMore() && brojac < MAX_RADNIKA) { + int id = Svetovid.in(imef).readInt(); + String prezime = Svetovid.in(imef).readToken(); + String ime = Svetovid.in(imef).readToken(); + int kanc = Svetovid.in(imef).readInt(); + + spisak[brojac] = new Radnik(id, prezime, ime, kanc); + brojac++; + } + + // ako ima jos redova, znaci da smo prestali zbog punog niza + if (Svetovid.in(imef).hasMore()) { + Svetovid.err.println("Previse radnika u fajlu! Ucitano prvih " + + MAX_RADNIKA); + } + + // zatvaramo fajl jer smo ga celog procitali + // i oslobodjamo resurs + Svetovid.in(imef).close(); + } + + public static void sviUKancelariji(int kanc) { + for (int i = 0; i < brojac; i++) { + if (spisak[i].kancelarija == kanc) { + Svetovid.out.println(spisak[i]); + } + } + } + + public static void main(String[] args) { + ucitajRadnike("radnici.txt"); + sviUKancelariji(1); + } +} + +/** + * Radnik predstavljen prezimenom, imenom, svojim id-om i brojem kancelarije u + * kojoj je. Ima dodatne metode koji izdvajaju neke od informacija vezane za + * radnika. + */ +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; + } +} \ No newline at end of file