Guest User

Untitled

a guest
Jan 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. // Her skal jeg kommentere ang uklarheter i opgteksten, min losning, spm osv.
  2.  
  3. import easyIO.*;
  4.  
  5. //Hovedklassen: Starter opp menyen i klassen Hybelhus
  6. class Oblig3 {
  7. public static void main(String[] args) {
  8. // Kjorer metoden meny i objektet Hybelhus - eller er det i klassen Hybelhus?? :(
  9. Hybelhus hh = new Hybelhus();
  10. hh.meny();
  11. }
  12. }
  13.  
  14. class Hybelhus {
  15. In tast = new In();
  16.  
  17. // Array med hybler[etasjenr][romnr]
  18. Hybel[][] hybler = new Hybel[3][6];
  19. // variabler for okonomidata kan legges inn her
  20.  
  21. final String FILNAVN = "hybeldata.txt";
  22. final String TOM_HYBEL = "TOM HYBEL";
  23.  
  24. // Konstruktor for klassen Hybelhus
  25. Hybelhus() {
  26. In innfil = new In(FILNAVN);
  27.  
  28. int mnd = innfil.inInt(";"); System.out.print(mnd + ";");
  29. int aar = innfil.inInt(";"); System.out.print(aar + ";");
  30. int totalfortjeneste = innfil.inInt(";"); System.out.print(totalfortjeneste + ";");
  31. int totaltAntallMnd = innfil.inInt(";"); System.out.print(totaltAntallMnd + ";");
  32.  
  33. while (!innfil.endOfFile()) {
  34. int etg = (int)innfil.inInt(";") - 1; System.out.print(etg + ";");
  35. char bokstav = innfil.inChar(";");
  36. int rom = (int) (bokstav - 'A'); System.out.print(rom + ";"); // 'A' gir [0], 'B' gir [1], osv.
  37. int saldo = innfil.inInt(";"); System.out.print(saldo + ";");
  38. String navn = innfil.inLine(); System.out.println(navn + ";");
  39.  
  40. Student leietager = new Student(saldo, navn);
  41. hybler[etg][rom] = new Hybel(leietager, husleie); // husleie er ikke definert enda
  42. }
  43. }
  44.  
  45. /* meny
  46. *
  47. * Lar brukeren velge forskjellige operasjoner
  48. * og kjoerer funksjon avhengig av brukerens valg
  49. */
  50. void meny() {
  51. int ordre = 0 ;
  52.  
  53. while (ordre != 7) {
  54. System.out.println("\n*** HER KAN DU ADMINISTRERE HYBELHUSET UTSYN ***");
  55. System.out.println("\nDette er valgmulighetene du har:\n ");
  56. System.out.println("1): Skriv liste over ledige hybler");
  57. System.out.println("2): Registrer ny leietager");
  58. System.out.println("3): Registrer betaling fra leietager");
  59. System.out.println("4): Registrer frivillig utflytting");
  60. System.out.println("5): Maanedskjoering av husleie");
  61. System.out.println("6): Kast ut leietagere");
  62. System.out.println("7): Avslutt");
  63.  
  64. System.out.print("Velg kommando nr.: ");
  65. ordre = tast.inInt();
  66.  
  67. switch(ordre) {
  68. case 1: skrivHybeloversikt(); break;
  69. case 2: registrerLeietager(); break;
  70. case 3: registrerBetaling(); break;
  71. case 4: registrerUtflytting(); break;
  72. case 5: mndKjoringHusleie(); break;
  73. case 6: kastUtLeietager(); break;
  74. case 7: avslutt(); break;
  75. default: break;
  76. }
  77. }
  78. }
  79. // Metoder for de forskjellige ordrene i meny()
  80. void skrivHybeloversikt() {
  81.  
  82. /* 1. Skriv hybeloversikt: Hybelnavn, leietager-navn og saldo. Se eksempel i opgteksten.
  83. - Dersom hybelen er ledig, skal teksten LEDIG skrives ut i stedet for leietager-navn og saldo vises som 0.
  84. - Til slutt skal naavaerende maaned, aar, antall maaneder systemet har vaert i drif og totalfortjeneste skrives ut paa skermen
  85. */
  86. }
  87. void registrerLeietager() {
  88. /* 2. Registrer ny leietager:
  89. - Sjekk: Finnes det ledige hybler? Ikke -> skriv mld og returner til hovedmeny
  90. - Hybelnavnene paa ledige hybler skrives ut.
  91. - Spm om hvilken av disse studenten vil leie.
  92. - Bruker taster inn hybelnavnet.
  93. Er valgt hybel ledig, spor prog om studentens navn og reg. innflyttingen.
  94. TIPS: For at det ikke skal spille noen rolle om bruker taster smaa eller store bokstaver:
  95. bokstav = Character.toUpperCase(bokstav);
  96.  
  97. elevforslag fra blogg:
  98. int rad = (int) (tast.inChar(" \n\r") - '1'); // ’1′ gir [0], ’2′ gir [1], osv.
  99. int etg = rad + 1;
  100. char bokstav = tast.inChar(" \n\r"); // Les rombokstaven
  101. int kolonne = (int) (bokstav -'A'); // ‘A’ gir [0], ‘B’ gir [1], osv.
  102.  
  103. - Studenten som flytter inn betaler samtidig et depositum paa 10 000 kr.
  104. - Fra dette trekkes med en gang mndleien og legges til totalfortjenesten (husk at leien er avhengig av etasje)
  105. - Det som er til overs blir studentens saldo. Naar de betaler inn for husleie legges belopet til saldoen, og
  106. ved mndkjoring blir husleien trukket fra saldo. Saldoen vil vaere negativ om studenten skyller penger.
  107.  
  108. - Prog skriver til slutt ut beskjed om at innflyttingen ble gjennomfort.
  109. Denne skal inneholde hybelnavnet, studentens navn og gjenvaerende saldo
  110. */
  111. }
  112. void registrerBetaling() {
  113. /* 3. Registrer betaling fra leietager:
  114. - Prog spor om hybelnavn og belopet som skal betales
  115. - Hvis hybelen som ble oppgitt ikke har beboer-> feilmelding
  116. - Ellers skal belopet adderes til studentens saldo og en passende mld skrives ut paa skjermen
  117. - Hvis saldo var i minus etter forrige mnds kjoring, legges belopet som var i minus til
  118. totalfortjenesten til Gulbrand, mens resten av innbetalingen blir studentens nye saldo.
  119. Eks: Hvis saldoen var -1000 og studenten betalte 1500, skal 1000 legges til totalfortjenesten
  120. og 500 legges til studentens saldo.
  121. */
  122. }
  123. void registrerUtflytting() {
  124. /* 4. Registrer frivillig utflytting:
  125. - Prog spor om navnet paa studenten som vil flytte ut,
  126. og leter deretter gjennom hyblene etter dette navnet.
  127. - Hvis studenten ikke blir funnet -> feilmelding
  128. - Hvis saldoen er i minus -> gi beskjed om at frivillig utflytting krever at husleie er betalt,
  129. og utflytting utfores ikke
  130. - Ellers: Registrer i systemet at hybelen ikke lenger har beboer.
  131. */
  132. }
  133. void mndKjoringHusleie() {
  134. /* 5. Maanedskjoring av husleie:
  135. - Utfores foerste dag i hver mnd
  136. - Prog ber bruker bekrefte at det skal startes mndkjoring for mnd etter forrige mndkjoring
  137. EKS: 'Onsker du aa utfore mndkjoring for mnd 10/2011 (j/n)?'
  138. n -> returner til hovedmeny
  139. - j -> mndnummer og evt. aarstll oppdateres, de mnd overforingene utfores
  140. - Prog gaar gjennom alle hyblene:
  141. - For hver hybel som har beboer trekkes mndleie fra studentens saldo
  142. og legges til Gulbrands mndfortjeneste (belastes altsaa for mnd som nettopp har begynt)
  143. - Hvis leietager ikke har nok saldo, gaar denne i minus, men Gulbrands fortjeneste okes
  144. bare med det som var paa saldo (han faar inn resten av fortjenesten som forklart i
  145. menyvalg 3 og 6).
  146. - Gulbrands utgifter er det han betaler til Vedlikehold A/S, og dette trekkes fra mndfortjenesten hans.
  147. Husk at det er forkjsllige utgifter for hybler og fellesarealer.
  148.  
  149. Til slutt skrives folgende til skjerm:
  150. a) _MND/AAR_ som mndkjoringen gjelder for; og _DRIFTSTID_ i antall mnd
  151. systemet har vaert i drift, inkl den nye mnd.
  152. b) _MNDS FORTJENESTE_ er Gulbrands inntekter minus utfiter i denne mndkjoring.
  153. Hvis du onsker aa vise andre inntekter fra innflyttinger eller sist mnd, saa
  154. skriver du dette ut som en egen post, den vanlige "mnd fortjeneste" skal kun
  155. vise regnskapet for mndkjoring forklart ovenfor.
  156. c) _TOTALFORTJENESTE_ er Gulbrands nye totalfortjeneste, oppdatert med denne mnd fortjeneste.
  157. d) _GJENNOMSNITTLIG MNDFORTJENESTE_ regnes selvsagt ut som totalfortjeneste / totaltAntallMnd
  158. */
  159. }
  160. void kastUtLeietager() {
  161. /* 6. Kast ut leietagere:
  162. - Prog gaar gjennom alle hyblene og finner studentene med saldo llavere
  163. enn en mndleie (husk ulike priser!).
  164. - Hvis leietageren skylder mer enn en husleie-> kastes ut av H. Hole.
  165. - For hver av disse studentene tilkall hjelpemetoden:
  166.  
  167. void tilkallHole(int etasje, int rom, int krav { // ...
  168.  
  169. - Pengekravet til studenten som kastes ut:
  170. Det han skylder i husleie + 3000 i gebyr (deles mellom Gulbrand og Hole)
  171. - Gulbrands halvdel pluss det som studenten var i minus paa saldoen
  172. legges til totalfortjenesten med en gang menyvalget kjores
  173. - Hybelen registreres som ledig.
  174. */
  175. Out fil = new Out("hole.txt", true); // append-mode
  176.  
  177. fil.close();
  178. }
  179. /* avslutt
  180. *
  181. * Data skrives til fil 'hybeldata.txt', deretter avslutter prog.
  182. * Format:
  183. * maaned
  184. * aar
  185. * totalfortjeneste
  186. * antall mnd i drift
  187. * leietager for hver hybel
  188. * saldo for hver hybelleietager
  189. */
  190. void avslutt() {
  191. /*
  192. Skriving til fil:
  193. En god løsning er å bruke nestede for-lokker som teller rader og kolonner
  194. naar du skriver til datafilen
  195.  
  196. Out utfil = new Out (FILNAVN);
  197. int mnd = utfil.inInt(";");
  198. int aar = innfil.inInt(";");
  199. int totalfortjeneste = innfil.inInt(";");
  200. int totaltAntallMnd = innfil.inInt(";");
  201.  
  202. int etg = (int)innfil.inInt(";") - 1;
  203. char bokstav = innfil.inChar(";");
  204. int saldo = innfil.inInt(";");
  205. int rom = (int) (bokstav - 'A'); // 'A' gir [0], 'B' gir [1], osv.
  206. String studentnavn = innfil.inLine();
  207.  
  208. // Oppretter Hybel- og Studentobjekter dataene puttes i?
  209. Hybel hybler[etg][rom] = new Hybel();
  210. hybler[etg][rom].leietager = new Student();
  211. hybler[etg][rom].leietager.saldo = innfil.inInt(" ;"); System.out.println("Saldoen for " + leiegager + " = " + saldo);
  212.  
  213. int etasjer = 0;
  214. int rom = 0;
  215.  
  216. for (int i = 0; i < hybler.length; i++) {
  217. for (int j = 0; j < hybler[].length; j++) {
  218. hybler[i][j]
  219. etasjer++;
  220. rom++;
  221.  
  222. fil.close()
  223. System.out.println("--- Programmet avslutter ---");
  224. System.exit(0);
  225. */
  226. }
  227. //HJELPEMETODER:
  228. void tilkallHole(int etasje, int rom, int krav) { // eventuelt: void tilkallTorpedo(Hybel rom, int krav) { // …
  229. /* Denne metoden skriver hybelnavn, studentnavn og pengekrav til skjerm
  230. og til filen hole.txt. Metoden skal ikke overskrive det som ligger paa
  231. filen fra foer, men legge til nye linjer paa slutten.
  232. */
  233. }
  234. }
  235.  
  236. class Hybel {
  237. Student leietager;
  238. int husleie;
  239.  
  240. Hybel(Student leietager, int husleie) {
  241. this.leietager = leietager;
  242. this.husleie = husleie;
  243. }
  244. }
  245.  
  246. class Student {
  247. int saldo;
  248. String navn;
  249.  
  250. Student(int saldo, String navn) {
  251. this.saldo = saldo;
  252. this.navn = navn;
  253. }
  254. }
Add Comment
Please, Sign In to add comment