University stuff.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import java.util.HashMap;
  2. import java.util.Scanner;
  3. import java.io.PrintStream;
  4. import java.io.File;
  5. import java.io.OutputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. class DVDAdministrasjon {
  9. private static HashMap<String, Person> navneliste = new HashMap<String, Person>();
  10. private static void write(OutputStream out) throws IOException {
  11. //Above the first '-', declaring the names of people
  12. for (Person p: navneliste.values()) {
  13. out.write((p.navn+"\n").getBytes());
  14. }
  15. out.write("-\n".getBytes());
  16. //Declare people's DVDs
  17. for (Person p: navneliste.values()) {
  18. out.write((p.navn+"\n").getBytes());
  19. //Owned DVDs
  20. for (DVD d: p.arkiv.values()) {
  21. out.write((d.navn+"\n").getBytes());
  22. }
  23. //Lended DVDs
  24. for (DVD d: p.utlaante.values()) {
  25. out.write(("*"+d.navn+"\n").getBytes());
  26. out.write((d.laaner.navn+"\n").getBytes());
  27. }
  28. out.write("-\n".getBytes());
  29. }
  30. }
  31. private static void parse(Scanner in) {
  32. //Bulid namelist
  33. while (in.hasNextLine()) {
  34. String navn = in.nextLine();
  35. if (navn.equals("-"))
  36. break;
  37. navneliste.put(navn, new Person(navn));
  38. }
  39. //Build people's DVD lists
  40. String navn = null;
  41. while (in.hasNextLine()) {
  42. String line = in.nextLine();
  43. if (navn == null) {
  44. navn = line;
  45. } else if (line.startsWith("*")) {
  46. Person eier = navneliste.get(navn);
  47. DVD dvd = new DVD(line.substring(1), eier);
  48. Person laaner = navneliste.get(in.nextLine());
  49. dvd.laaner = laaner;
  50. eier.utlaante.put(dvd.navn, dvd);
  51. laaner.laante.put(dvd.navn, dvd);
  52. } else if (!line.equals("-")) {
  53. Person eier = navneliste.get(navn);
  54. DVD dvd = new DVD(line, eier);
  55. eier.leggTilArkiv(dvd);
  56. } else {
  57. navn = null;
  58. }
  59. }
  60. }
  61. private static String readln() {
  62. return readln(null);
  63. }
  64. private static String readln(String msg) {
  65. System.out.println("");
  66. if (msg != null) {
  67. System.out.println(msg);
  68. }
  69. System.out.print("> ");
  70. return new Scanner(System.in).nextLine();
  71. }
  72. private static void command(String str) throws Exception {
  73. //Ny Person
  74. if (str.equals("1")) {
  75. String navn = readln("Hva heter den nye personen?");
  76. if (navneliste.containsKey(navn)) {
  77. System.out.println(navn+" finnes allerede.");
  78. return;
  79. }
  80. Person p = new Person(navn);
  81. navneliste.put(navn, p);
  82. System.out.println(navn+" lagt til.");
  83. //Kjop
  84. } else if (str.equals("2")) {
  85. String navn = readln("Hvem har kjopt DVDen?");
  86. Person p = navneliste.get(navn);
  87. if (p == null) {
  88. System.out.println(navn+" finnes ikke.");
  89. return;
  90. }
  91. DVD dvd = new DVD(readln("Hva er tittelen paa DVDen?"), p);
  92. p.leggTilArkiv(dvd);
  93. System.out.println(dvd.navn+" lagt til.");
  94. //Laan
  95. } else if (str.equals("3")) {
  96. Person laaner = navneliste.get(readln("Hvem vil laane DVDen?"));
  97. if (laaner == null) {
  98. System.out.println("Personen finnes ikke.");
  99. return;
  100. }
  101. Person eier = navneliste.get(readln("Hvem skal laane ut DVDen?"));
  102. if (eier == null) {
  103. System.out.println("Personen finnes ikke.");
  104. return;
  105. }
  106. DVD dvd = eier.finnDvd(readln("Hva er tittelen paa DVDen?"));
  107. if (dvd == null) {
  108. System.out.println(eier.navn+" har ikke den DVDen.");
  109. return;
  110. }
  111. eier.laanUt(dvd, laaner);
  112. System.out.println(dvd.navn+" laant ut til "+laaner.navn+".");
  113. //Vis Person
  114. } else if (str.equals("4")) {
  115. String name = readln("Hvem vil du se? (* for alle)");
  116. //Print everyone if name is *
  117. if (name.equals("*")) {
  118. for (Person p: navneliste.values()) {
  119. System.out.println(p.prettyPrint());
  120. }
  121. return;
  122. }
  123. Person p = navneliste.get(name);
  124. if (p == null) {
  125. System.out.println("Personen finnes ikke.");
  126. return;
  127. }
  128. System.out.println(p.prettyPrint());
  129. //Vis Oversikt
  130. } else if (str.equals("5")) {
  131. for (Person p: navneliste.values()) {
  132. System.out.println(p.prettyPrintStats());
  133. }
  134. //Retur
  135. } else if (str.equals("6")) {
  136. Person p = navneliste.get(readln("Hvem skal returnere en DVD?"));
  137. if (p == null) {
  138. System.out.println("Personen finnes ikke.");
  139. return;
  140. }
  141. DVD dvd = p.laante.get(readln("Hva er tittelen paa DVDen?"));
  142. if (dvd == null) {
  143. System.out.println(p.navn+" har ikke den DVDen.");
  144. return;
  145. }
  146. p.returner(dvd);
  147. System.out.println(dvd.navn+" er returnert til "+dvd.eier.navn+".");
  148. //Avslutt
  149. } else if (str.equals("7")) {
  150. write(new FileOutputStream(new File("dvdarkiv.txt")));
  151. System.exit(0);
  152. } else {
  153. System.out.println("Ukjent kommando: "+str);
  154. }
  155. }
  156. public static void main(String[] args) throws Exception {
  157. Scanner in = new Scanner(System.in);
  158. parse(new Scanner(new File("dvdarkiv.txt")));
  159. while (true) {
  160. System.out.println("");
  161. System.out.println("1: Ny Prerson.");
  162. System.out.println("2: Kjop.");
  163. System.out.println("3: Laan.");
  164. System.out.println("4: Vis Person.");
  165. System.out.println("5: Vis Oversikt.");
  166. System.out.println("6: Retur.");
  167. System.out.println("7: Avslutt.");
  168. command(readln());
  169. }
  170. }
  171. }