class Biblioteka {
Ksiazka[] ks;
int licKsiazek;
class Ksiazka {
String tytyl;
Set<Wypozyczenie> wyp;
class Wypozyczenie {
String nazwisko;
boolean oddal;
19.
class Biblioteka {
//…
Biblioteka(int maksKsiazek) {
ks = new Ksiazka[maksKsiazek];
licKsiazek =0;
}
}
20.
import java.util.*;
class Ksiazka {
//…
Ksiazka(String tytul) {
this.tytul = tytul;
wyp = new HashSet<Wypozyczenie>();
}
}
21.
import java.util.*;
class Ksiazka {
//…
/* syf, że mamy Set - jak ktoś parę razy wypożyczył jedną książkę, to i tak widnieje tylko raz
(lista byłaby lepsza) */
public int liczbaWypozyczen() {
int suma = 0;
for(int i = 0; i < licKsiazek; i++)
for(Wypozyczenie w : ks[i].wyp)
suma +=w.size();
}
}
22.
import java.util.*;
class Biblioteka {
//...
public Ksiazka getKsiazka(String tytul) {
Ksiazka ksiazka = null;
for (int i = 0; i < licKsiazek && ksiazka == null; i++) {
if (ks[i].tytul.equals(tytul))
ksiazka = ks[i];
}
return ksiazka;
}
public boolean wypozyczal(String tytul, String nazwisko) {
boolean wypozyczyl = false;
Ksiazka k = getKsiazka(tytul);
Iterator<Wypozyczenie> it = wyp.iterator();
while(it.hasNext() && !wypozyczyl) {
Wypozyczenie w = it.next();
if (w.nazwisko.equals(nazwisko))
wypozyczyl = true;
}
return wypozyczyl;
}
}
23.
import java.util.*;
class Biblioteka {
//…
public Set<String> wszyscy() {
Set<String> wszyscy = new HashSet<String>();
for(Ksiazka k : ks) {
for(Wypozyczenie w : k.wyp)
wszyscy.add(w.nazwisko);
}
return wszyscy;
}
}
24.
import java.io.*;
import java.util.*;
class Ksiazka {
//…
public Wypozyczenie getWypozyczenie(String nazwisko) {
Wypozyczenie w = null;
for (int i = 0; i < wyp.size() && w == null; i++) {
if (wyp.get(i).nazwisko.equals(nazwisko))
w = wyp.get(i);
}
return w;
}
}
class Biblioteka {
//…
void zwrot() {
BufferedReader wej = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“Podaj nazwisko osoby zwracajacej, a nastepnie tytul (po spacji)”);
String input = wej.readLine();
Scanner sc = new Scanner(input);
String nazwisko = sc.next(); // w nazwiskach raczej spacji nie ma...
String tytul = ””;
while(sc.hasNext()) // tytul może się składać z wielu słów
tytul += sc.next();
Ksiazka k = getKsiazka(tytul); //zdefiniowana wczesniej
Wypozyczenie w = k.getWypozyczenie(nazwisko);
w.oddal = true;
}
}