From: Doni Pracner Date: Wed, 24 Feb 2016 14:47:46 +0000 (+0100) Subject: Primeri za klase doterani i prilagodjeni za Svetovid-lib 0.4.0 X-Git-Url: https://svarog.pmf.uns.ac.rs/gitweb/?a=commitdiff_plain;h=157552adaab1351cae04c28263297e93263eada5;p=spa1-materijali.git Primeri za klase doterani i prilagodjeni za Svetovid-lib 0.4.0 --- diff --git a/kodovi/klase/Radnici.java b/kodovi/klase/Radnici.java deleted file mode 100644 index e04b541..0000000 --- a/kodovi/klase/Radnici.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * 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 Radnici { - 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).isEmpty() && brojac < MAX_RADNIKA) { - int id = Svetovid.in(imef).readInt(); - String prezime = Svetovid.in(imef).readString(); - String ime = Svetovid.in(imef).readString(); - 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).isEmpty()){ - 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= 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; + } + } diff --git a/kodovi/klase/Studenti.java b/kodovi/klase/Studenti.java index 19cbfb6..dd404e2 100644 --- a/kodovi/klase/Studenti.java +++ b/kodovi/klase/Studenti.java @@ -4,7 +4,7 @@ public class Studenti { static SpisakStudenata spisak = null; public static void main(String[] args) { - String imeF = Svetovid.in.readString("Unesite ime fajla:"); + String imeF = Svetovid.in.readLine("Unesite ime fajla:"); spisak = new SpisakStudenata(); spisak.ucitajStudente(imeF); @@ -13,8 +13,8 @@ public class Studenti { Svetovid.out.println(); Svetovid.out.println("Unos novog studenta:"); - String ime = Svetovid.in.readString("Unesite ime studenta:"); - String prez = Svetovid.in.readString("Unesite prezime studenta:"); + String ime = Svetovid.in.readLine("Unesite ime studenta:"); + String prez = Svetovid.in.readLine("Unesite prezime studenta:"); int god = Svetovid.in.readInt("Unesite godinu rodjenja studenta:"); spisak.dodajStudenta(ime, prez, god); @@ -31,7 +31,7 @@ public class Studenti { + spisak.prebrojStudentePreGodine(god)); Svetovid.out.println(); - String imeF2 = Svetovid.in.readString("Unesite ime fajla za ispis:"); + String imeF2 = Svetovid.in.readLine("Unesite ime fajla za ispis:"); spisak.ispisiStudenteUFajl(imeF2); } @@ -72,8 +72,8 @@ class SpisakStudenata { int god; while (!Svetovid.in(f).isEmpty() && brojSt < MAX_BR_STUDENATA) { - p = Svetovid.in(f).readString(); - i = Svetovid.in(f).readString(); + p = Svetovid.in(f).readToken(); + i = Svetovid.in(f).readToken(); god = Svetovid.in(f).readInt(); dodajStudenta(i, p, god); }