gitweb on Svarog

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