gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Primeri za klase doterani i prilagodjeni za Svetovid-lib 0.4.0
[spa1-materijali.git] / kodovi / klase / RadniciPrimer.java
1 /**
2 * Program koji radi sa spiskom radnika, predstavljenim kao niz Objekata tipa
3 * Radnik. Klasa Radnika je definisana u klasi ispod. U programu ne znamo koliko
4 * ima radnika u fajlu, pa predpostavljamo da nece biti vise od 100.
5 */
6 public class RadniciPrimer {
7 final static int MAX_RADNIKA = 100;
9 static Radnik[] spisak = null;
10 // brojac predstavlja koliko radnika zapravo ima u nizu
11 static int brojac = 0;
13 /**
14 * Ucitava radnike iz datog fajla. Niz radnika ce nakon ovog metoda sadrzati
15 * sve podatke iz fajla i samo njih, tj ako je nesto postojalo u nizu pre,
16 * bice zanemareno.
17 */
18 public static void ucitajRadnike(String imef) {
19 // novi niz radnika
20 spisak = new Radnik[MAX_RADNIKA];
21 // resetujemo brojac
22 brojac = 0;
24 // citamo iz fajla dokle god ima jos redova i dok ne premasimo
25 // kapacitet naseg niza
26 while (Svetovid.in(imef).hasMore() && brojac < MAX_RADNIKA) {
27 int id = Svetovid.in(imef).readInt();
28 String prezime = Svetovid.in(imef).readToken();
29 String ime = Svetovid.in(imef).readToken();
30 int kanc = Svetovid.in(imef).readInt();
32 spisak[brojac] = new Radnik(id, prezime, ime, kanc);
33 brojac++;
34 }
36 // ako ima jos redova, znaci da smo prestali zbog punog niza
37 if (Svetovid.in(imef).hasMore()) {
38 Svetovid.err.println("Previse radnika u fajlu! Ucitano prvih "
39 + MAX_RADNIKA);
40 }
42 // zatvaramo fajl jer smo ga celog procitali
43 // i oslobodjamo resurs
44 Svetovid.in(imef).close();
45 }
47 public static void sviUKancelariji(int kanc) {
48 for (int i = 0; i < brojac; i++) {
49 if (spisak[i].kancelarija == kanc) {
50 Svetovid.out.println(spisak[i]);
51 }
52 }
53 }
55 public static void main(String[] args) {
56 ucitajRadnike("radnici.txt");
57 sviUKancelariji(1);
58 }
59 }
61 /**
62 * Radnik predstavljen prezimenom, imenom, svojim id-om i brojem kancelarije u
63 * kojoj je. Ima dodatne metode koji izdvajaju neke od informacija vezane za
64 * radnika.
65 */
66 class Radnik {
67 String prezime, ime;
68 int id;
69 int kancelarija;
71 // Konstruktor klase - neophodno je proslediti sve podatke odjednom da se
72 // napravi instanca
73 public Radnik(int id, String prezime, String ime, int kancelarija) {
74 this.id = id;
75 this.prezime = prezime;
76 this.ime = ime;
77 this.kancelarija = kancelarija;
78 }
80 public String prezimeIme() {
81 return prezime + " " + ime;
82 }
84 public String inicijali() {
85 String p = "";
86 if (prezime != null && !prezime.isEmpty()) {
87 p = prezime.charAt(0) + ".";
88 }
89 String i = "";
90 if (ime != null && !ime.isEmpty()) {
91 i = ime.charAt(0) + ".";
92 }
93 return i + p;
94 }
96 public String sviPodaci() {
97 return "Radnik " + id + ":" + prezime + " " + ime + ", kancelarija:"
98 + kancelarija;
99 }
101 /*
102 * toString metod se koristi kad je potrebno predstaviti instancu kao
103 * String, tipicno pri pozivu ispisa na ekran. Ocekuje se da da kratku
104 * informaciju koja je razumljiva coveku.
105 */
106 public String toString() {
107 return prezime + " " + ime;
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner