gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
f83211c74576f7650ff4c174fe7f257f2e9fe995
[spa1-materijali.git] / kodovi / klase / RadniciSpisakId.java
1 /**
2 * Prosirujemo program iz RadniciSpisak tako da ima jedinstvene id-ove za radnike. Dodajemo
3 * i operaciju za izbacivanje radnika.
4 */
5 public class RadniciSpisakId {
6 static SpisakJedinstvenihRadnika spisak = null, spisak2 = null;
8 public static void main(String[] args){
9 spisak = new SpisakJedinstvenihRadnika();
10 spisak.ucitajRadnike("radnici.txt");
11 Svetovid.out.println(spisak);
12 if (spisak.izbaciRadnika(111)) {
13 Svetovid.out.println("posle izbacivanja:");
14 Svetovid.out.println(spisak);
15 } else {
16 Svetovid.out.println("nije nadjen radnik za izbacivanje");
17 }
19 spisak2 = new SpisakJedinstvenihRadnika();
20 spisak2.ucitajRadnike("radnici2.txt");
21 spisak2.sviUKancelariji(1);
22 }
23 }
25 /** Spisak radnika u kome svi imaju razlicite id brojeve. */
26 class SpisakJedinstvenihRadnika {
28 /** Radnik sa svojim podacima: id, prezime, ime, kancelarija */
29 class Radnik {
30 String prezime, ime;
31 int id;
32 int kancelarija;
34 // Konstruktor klase - neophodno je proslediti sve podatke odjednom da se napravi instanca
35 public Radnik(int id, String prezime, String ime, int kancelarija) {
36 this.id = id;
37 this.prezime = prezime;
38 this.ime = ime;
39 this.kancelarija = kancelarija;
40 }
42 public String prezimeIme() {
43 return prezime+" "+ime;
44 }
46 public String inicijali() {
47 String p = "";
48 if (prezime != null && !prezime.isEmpty()) {
49 p = prezime.charAt(0)+".";
50 }
51 String i = "";
52 if (ime != null && !ime.isEmpty()) {
53 i = ime.charAt(0)+".";
54 }
55 return i+p;
56 }
58 public String sviPodaci() {
59 return "Radnik "+id+":"+prezime+" "+ime+", kancelarija:"+kancelarija;
60 }
62 // toString metod se koristi kad je potrebno predstaviti instancu kao String,
63 // tipicno pri pozivu ispisa na ekran. Ocekuje se da da kratku informaciju
64 // koja je razumljiva coveku.
65 public String toString() {
66 return prezime+" "+ime;
67 }
69 } // klasa Radnik
71 final static int MAX_RADNIKA = 100;
73 Radnik[] spisak;
74 int brojac;
76 /** Kreira novu instancu klase i inicijalizuje niz i brojac na adekvatne vrednosti. */
77 public SpisakJedinstvenihRadnika() {
78 spisak = new Radnik[MAX_RADNIKA];
79 brojac = 0;
80 }
82 /** Dodaje novog radnika sa datim podacima. Vraca da li je
83 * operacija uspesno obavljena, odnosno vratice false ako
84 * je radnik takvim id-om vec postojao */
85 public boolean dodajRadnika(int id, String prezime, String ime, int kanc) {
87 //proverimo jel ima mesta
88 if (brojac >= MAX_RADNIKA) {
89 Svetovid.err.println("Greska! vec ima "+MAX_RADNIKA+" novi se ne mogu dodati");
90 }
92 //proverimo jel vec postoji neko sa tim id-om
93 boolean postoji = false;
94 for (int i=0;i<brojac && !postoji;i++) {
95 if (spisak[i].id == id) {
96 postoji = true;
97 }
98 }
100 if (postoji) {
101 Svetovid.err.println("Greska! radnik sa idom:"+id+" vec postoji");
102 return false;
103 } else {
104 spisak[brojac] = new Radnik(id, prezime, ime, kanc);
105 brojac++;
106 return true;
110 /** ucitava sve radnike iz datog fajla i dodaje ih u trenutni spisak. */
111 public void ucitajRadnike(String imef) {
112 while (!Svetovid.in(imef).isEmpty()) {
113 int id = Svetovid.in(imef).readInt();
114 String prezime = Svetovid.in(imef).readString();
115 String ime = Svetovid.in(imef).readString();
116 int kanc = Svetovid.in(imef).readInt();
117 dodajRadnika(id, prezime, ime, kanc);
119 Svetovid.in(imef).close();
122 public void snimiRadnike(String imef){
123 for (int i=0;i<brojac;i++){
124 Radnik rad = spisak[i];
125 Svetovid.out(imef).print(rad.id);
126 Svetovid.out(imef).print(" ");
127 Svetovid.out(imef).print(rad.prezime);
128 Svetovid.out(imef).print(" ");
129 Svetovid.out(imef).print(rad.ime);
130 Svetovid.out(imef).print(" ");
131 Svetovid.out(imef).print(rad.kancelarija);
132 Svetovid.out(imef).println();
134 Svetovid.out(imef).close();
137 public boolean izbaciRadnika(int id) {
138 int pos = 0;
139 while (pos<brojac && spisak[pos].id != id)
140 pos++;
142 if (pos<brojac) {
143 brojac--;
145 //zapravo treba da pomerimo sve iza ovog radnika
146 for (int j=pos;j<brojac; j++)
147 spisak[j] = spisak[j+1];
148 return true;
149 } else {
150 return false;
154 public int brRadnika() {
155 return brojac;
158 public void sviUKancelariji(int kanc) {
159 for (int i=0;i<brojac;i++) {
160 if (spisak[i].kancelarija == kanc) {
161 Svetovid.out.println(spisak[i]);
166 // ispisuje sve radnike u nizu razdvojene razmacima. Posebna paznja je obracena
167 // na to da se ne ispisuje zarez nakon poslednjeg radnika.
168 public String toString() {
169 String res = "Radnici [";
170 if (brojac>0) {
171 res += spisak[0];
173 for (int i=1;i<brojac;i++) {
174 res += ", "+spisak[i];
176 res += "]";
177 return res;
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner