123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- import java.util.HashMap;
- import java.util.Scanner;
- import java.io.PrintStream;
- import java.io.File;
- import java.io.OutputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
-
- class DVDAdministrasjon {
- private static HashMap<String, Person> navneliste = new HashMap<String, Person>();
-
- private static void write(OutputStream out) throws IOException {
-
- //Above the first '-', declaring the names of people
- for (Person p: navneliste.values()) {
- out.write((p.navn+"\n").getBytes());
- }
- out.write("-\n".getBytes());
-
- //Declare people's DVDs
- for (Person p: navneliste.values()) {
- out.write((p.navn+"\n").getBytes());
-
- //Owned DVDs
- for (DVD d: p.arkiv.values()) {
- out.write((d.navn+"\n").getBytes());
- }
-
- //Lended DVDs
- for (DVD d: p.utlaante.values()) {
- out.write(("*"+d.navn+"\n").getBytes());
- out.write((d.laaner.navn+"\n").getBytes());
- }
-
- out.write("-\n".getBytes());
- }
- }
-
- private static void parse(Scanner in) {
-
- //Bulid namelist
- while (in.hasNextLine()) {
- String navn = in.nextLine();
-
- if (navn.equals("-"))
- break;
-
- navneliste.put(navn, new Person(navn));
- }
-
- //Build people's DVD lists
- String navn = null;
- while (in.hasNextLine()) {
- String line = in.nextLine();
-
- if (navn == null) {
- navn = line;
-
- } else if (line.startsWith("*")) {
- Person eier = navneliste.get(navn);
- DVD dvd = new DVD(line.substring(1), eier);
- Person laaner = navneliste.get(in.nextLine());
-
- dvd.laaner = laaner;
- eier.utlaante.put(dvd.navn, dvd);
- laaner.laante.put(dvd.navn, dvd);
-
- } else if (!line.equals("-")) {
- Person eier = navneliste.get(navn);
- DVD dvd = new DVD(line, eier);
-
- eier.leggTilArkiv(dvd);
-
- } else {
- navn = null;
- }
- }
- }
-
- private static String readln() {
- return readln(null);
- }
- private static String readln(String msg) {
- System.out.println("");
- if (msg != null) {
- System.out.println(msg);
- }
- System.out.print("> ");
- return new Scanner(System.in).nextLine();
- }
-
- private static void command(String str) throws Exception {
-
- //Ny Person
- if (str.equals("1")) {
- String navn = readln("Hva heter den nye personen?");
- if (navneliste.containsKey(navn)) {
- System.out.println(navn+" finnes allerede.");
- return;
- }
-
- Person p = new Person(navn);
- navneliste.put(navn, p);
- System.out.println(navn+" lagt til.");
-
- //Kjop
- } else if (str.equals("2")) {
- String navn = readln("Hvem har kjopt DVDen?");
- Person p = navneliste.get(navn);
- if (p == null) {
- System.out.println(navn+" finnes ikke.");
- return;
- }
-
- DVD dvd = new DVD(readln("Hva er tittelen paa DVDen?"), p);
- p.leggTilArkiv(dvd);
- System.out.println(dvd.navn+" lagt til.");
-
- //Laan
- } else if (str.equals("3")) {
- Person laaner = navneliste.get(readln("Hvem vil laane DVDen?"));
- if (laaner == null) {
- System.out.println("Personen finnes ikke.");
- return;
- }
-
- Person eier = navneliste.get(readln("Hvem skal laane ut DVDen?"));
- if (eier == null) {
- System.out.println("Personen finnes ikke.");
- return;
- }
-
- DVD dvd = eier.finnDvd(readln("Hva er tittelen paa DVDen?"));
- if (dvd == null) {
- System.out.println(eier.navn+" har ikke den DVDen.");
- return;
- }
-
- eier.laanUt(dvd, laaner);
- System.out.println(dvd.navn+" laant ut til "+laaner.navn+".");
-
- //Vis Person
- } else if (str.equals("4")) {
- String name = readln("Hvem vil du se? (* for alle)");
-
- //Print everyone if name is *
- if (name.equals("*")) {
- for (Person p: navneliste.values()) {
- System.out.println(p.prettyPrint());
- }
- return;
- }
-
- Person p = navneliste.get(name);
- if (p == null) {
- System.out.println("Personen finnes ikke.");
- return;
- }
-
- System.out.println(p.prettyPrint());
-
- //Vis Oversikt
- } else if (str.equals("5")) {
- for (Person p: navneliste.values()) {
- System.out.println(p.prettyPrintStats());
- }
-
- //Retur
- } else if (str.equals("6")) {
- Person p = navneliste.get(readln("Hvem skal returnere en DVD?"));
- if (p == null) {
- System.out.println("Personen finnes ikke.");
- return;
- }
-
- DVD dvd = p.laante.get(readln("Hva er tittelen paa DVDen?"));
- if (dvd == null) {
- System.out.println(p.navn+" har ikke den DVDen.");
- return;
- }
-
- p.returner(dvd);
- System.out.println(dvd.navn+" er returnert til "+dvd.eier.navn+".");
-
- //Avslutt
- } else if (str.equals("7")) {
- write(new FileOutputStream(new File("dvdarkiv.txt")));
- System.exit(0);
-
- } else {
- System.out.println("Ukjent kommando: "+str);
- }
- }
-
- public static void main(String[] args) throws Exception {
- Scanner in = new Scanner(System.in);
-
- parse(new Scanner(new File("dvdarkiv.txt")));
-
- while (true) {
- System.out.println("");
- System.out.println("1: Ny Prerson.");
- System.out.println("2: Kjop.");
- System.out.println("3: Laan.");
- System.out.println("4: Vis Person.");
- System.out.println("5: Vis Oversikt.");
- System.out.println("6: Retur.");
- System.out.println("7: Avslutt.");
- command(readln());
- }
- }
- }
|