Guest User

Untitled

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