Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Her skal jeg kommentere ang uklarheter i opgteksten, min losning, spm osv.
- import easyIO.*;
- //Hovedklassen: Starter opp menyen i klassen Hybelhus
- class Oblig3 {
- public static void main(String[] args) {
- // Kjorer metoden ordrelokke i objektet Hybelhus
- Hybelhus hh = new Hybelhus();
- hh.meny();
- }
- }
- class Hybelhus {
- In tast = new In();
- // Array med hybler[etasjenr][romnr]
- Hybel[][] hybler = new Hybel[3][6];
- // variabler for okonomidata kan legges inn her
- final String FILNAVN = "hybeldata.txt";
- final String TOM_HYBEL = "TOM HYBEL";
- // Konstruktor for klassen Hybelhus
- Hybelhus() {
- /* ANG LESING AV FIL:
- - 1. linje i filen: int maaned; int aar; int totalfortjeneste; int totaltAntallMaaneder
- Deretter 18 linjer, en for hver hybel: int etasje; char bokstav; int saldo; String studentnavn
- For tomme hybler skal studentnavnet lagres i datafilen som TOM HYBEL, med saldo 0.
- */
- In innfil = new In(FILNAVN);
- while (!innfil.endOfLine()) {
- int mnd = innfil.inInt(";");
- int aar = innfil.inInt(";");
- int totalfortjeneste = innfil.inInt(";");
- int totaltAntallMnd = innfil.inInt(";");
- for (int i = 0; hybler.length; i++) {
- hybel[i] = new Hybel(); //Dette er hybel 1 (i 1.etasje?)?
- int
- hybler[etg][rom] = new Hybel();
- hybler[etg][rom].leietager = new Student();
- hybler[etg][rom].leietager.saldo = innfil.inInt(" ;"); System.out.println("Saldoen for " + leiegager + " = " + saldo);
- }
- }
- /* while (!innfil.endOfLine()) {
- int etg = (int)innfil.inInt(";") - 1;
- char bokstav = innfil.inChar(";");
- int saldo = innfil.inInt(";");
- String studentnavn = innfil.inLine();
- */
- }
- /* ordrelokke
- *
- * Lar brukeren velge forskjellige operasjoner
- * og kjoerer funksjon avhengig av brukerens valg
- */
- void meny() {
- int ordre = 0 ;
- while (ordre != 7) {
- System.out.println("\n*** HER KAN DU ADMINISTRERE HYBELHUSET UTSYN ***");
- System.out.println("\nDette er valgmuligheter du har:\n ");
- System.out.println("1): Skriv liste over ledige hybler");
- System.out.println("2): Registrer ny leietager");
- System.out.println("3): Registrer betaling fra leietager");
- System.out.println("4): Registrer frivillig utflytting");
- System.out.println("5): Maanedskjoering av husleie");
- System.out.println("6): Kast ut leietagere");
- System.out.println("7): Avslutt");
- System.out.print("Velg kommando nr.: ");
- ordre = tast.inInt();
- switch(ordre) {
- case 1: skrivLedigeHyblerListe(); break;
- case 2: registrerLeietager(); break;
- case 3: registrerBetaling(); break;
- case 4: registrerUtflytting(); break;
- case 5: mndKjoringHusleie(); break;
- case 6: kastUtLeietager(); break;
- case 7: avslutt(); break;
- default: break; // gi feilmelding?
- }
- }
- }
- // Metoder for de forskjellige ordrene i ordrelokke()
- void skrivHybeloversikt() {
- /* 1. Skriv hybeloversikt: Hybelnavn, leietager-navn og saldo. Se eksempel i opgteksten.
- - Dersom hybelen er ledig, skal teksten LEDIG skrives ut i stedet for leietager-navn og saldo vises som 0.
- - Til slutt skal naavaerende maaned, aar, antall maaneder systemet har vaert i drif og totalfortjeneste skrives ut paa skermen
- */
- }
- void registrerNyLeietager() {
- /* 2. Registrer ny leietager:
- - Sjekk: Finnes det ledige hybler? Ikke -> skriv mld og returner til hovedmeny
- - Hybelnavnene paa ledige hybler skrives ut.
- - Spm om hvilken av disse studenten vil leie.
- - Bruker taster inn hybelnavnet.
- Er valgt hybel ledig, spor prog om studentens navn og reg. innflyttingen.
- TIPS: For at det ikke skal spille noen rolle om bruker taster smaa eller store bokstaver:
- bokstav = Character.toUpperCase(bokstav);
- elevforslag fra blogg:
- int rad = (int) (tast.inChar(" \n\r") - '1'); // ’1′ gir [0], ’2′ gir [1], osv.
- int etg = rad + 1;
- char bokstav = tast.inChar(" \n\r"); // Les rombokstaven
- int kolonne = (int) (bokstav -'A'); // ‘A’ gir [0], ‘B’ gir [1], osv.
- - Studenten som flytter inn betaler samtidig et depositum paa 10 000 kr.
- - Fra dette trekkes med en gang mndleien og legges til totalfortjenesten (husk at leien er avhengig av etasje)
- - Det som er til overs blir studentens saldo. Naar de betaler inn for husleie legges belopet til saldoen, og
- ved mndkjoring blir husleien trukket fra saldo. Saldoen vil vaere negativ om studenten skyller penger.
- - Prog skriver til slutt ut beskjed om at innflyttingen ble gjennomfort.
- Denne skal inneholde hybelnavnet, studentens navn og gjenvaerende saldo
- */
- }
- void registrerBetaling() {
- /* 3. Registrer betaling fra leietager:
- - Prog spor om hybelnavn og belopet som skal betales
- - Hvis hybelen som ble oppgitt ikke har beboer-> feilmelding
- - Ellers skal belopet adderes til studentens saldo og en passende mld skrives ut paa skjermen
- - Hvis saldo var i minus etter forrige mnds kjoring, legges belopet som var i minus til
- totalfortjenesten til Gulbrand, mens resten av innbetalingen blir studentens nye saldo.
- Eks: Hvis saldoen var -1000 og studenten betalte 1500, skal 1000 legges til totalfortjenesten
- og 500 legges til studentens saldo.
- */
- }
- void registrerUtflytting() {
- /* 4. Registrer frivillig utflytting:
- - Prog spor om navnet paa studenten som vil flytte ut,
- og leter deretter gjennom hyblene etter dette navnet.
- - Hvis studenten ikke blir funnet -> feilmelding
- - Hvis saldoen er i minus -> gi beskjed om at frivillig utflytting krever at husleie er betalt,
- og utflytting utfores ikke
- - Ellers: Registrer i systemet at hybelen ikke lenger har beboer.
- */
- }
- void mndKjoringHusleie() {
- /* 5. Maanedskjoring av husleie:
- - Utfores foerste dag i hver mnd
- - Prog ber bruker bekrefte at det skal startes mndkjoring for mnd etter forrige mndkjoring
- EKS: 'Onsker du aa utfore mndkjoring for mnd 10/2011 (j/n)?'
- n -> returner til hovedmeny
- - j -> mndnummer og evt. aarstll oppdateres, de mnd overforingene utfores
- - Prog gaar gjennom alle hyblene:
- - For hver hybel som har beboer trekkes mndleie fra studentens saldo
- og legges til Gulbrands mndfortjeneste (belastes altsaa for mnd som nettopp har begynt)
- - Hvis leietager ikke har nok saldo, gaar denne i minus, men Gulbrands fortjeneste okes
- bare med det som var paa saldo (han faar inn resten av fortjenesten som forklart i
- menyvalg 3 og 6).
- - Gulbrands utgifter er det han betaler til Vedlikehold A/S, og dette trekkes fra mndfortjenesten hans.
- Husk at det er forkjsllige utgifter for hybler og fellesarealer.
- Til slutt skrives folgende til skjerm:
- a) _MND/AAR_ som mndkjoringen gjelder for; og _DRIFTSTID_ i antall mnd
- systemet har vaert i drift, inkl den nye mnd.
- b) _MNDS FORTJENESTE_ er Gulbrands inntekter minus utfiter i denne mndkjoring.
- Hvis du onsker aa vise andre inntekter fra innflyttinger eller sist mnd, saa
- skriver du dette ut som en egen post, den vanlige "mnd fortjeneste" skal kun
- vise regnskapet for mndkjoring forklart ovenfor.
- c) _TOTALFORTJENESTE_ er Gulbrands nye totalfortjeneste, oppdatert med denne mnd fortjeneste.
- d) _GJENNOMSNITTLIG MNDFORTJENESTE_ regnes selvsagt ut som totalfortjeneste / totaltAntallMnd
- */
- }
- void kastUtLeietager() {
- /* 6. Kast ut leietagere:
- - Prog gaar gjennom alle hyblene og finner studentene med saldo llavere
- enn en mndleie (husk ulike priser!).
- - Hvis leietageren skylder mer enn en husleie-> kastes ut av H. Hole.
- - For hver av disse studentene tilkall hjelpemetoden:
- void tilkallHole(int etasje, int rom, int krav { // ...
- - Pengekravet til studenten som kastes ut:
- Det han skylder i husleie + 3000 i gebyr (deles mellom Gulbrand og Hole)
- - Gulbrands halvdel pluss det som studenten var i minus paa saldoen
- legges til totalfortjenesten med en gang menyvalget kjores
- - Hybelen registreres som ledig.
- */
- Out fil = new Out("hole.txt", true); // append-mode
- }
- void tilkallHole(int etasje, int rom, int krav) { // eventuelt: void tilkallTorpedo(Hybel rom, int krav) { // …
- /* Denne metoden skriver hybelnavn, studentnavn og pengekrav til skjerm
- og til filen hole.txt. Metoden skal ikke overskrive det som ligger paa
- filen fra foer, men legge til nye linjer paa slutten.
- */
- }
- void avslutt() {
- /* Avslutt:
- Dette maa gjores: Data skal skrives til hybeldata.txt: maaned, aar, totalfortjeneste, antall mnd i drift,
- samt leietager og saldo for alle hyblene
- Skriving til fil:
- En god løsning er å bruke nestede for-lokker som teller rader og kolonner
- naar du skriver til datafilen
- */
- Out utfil = new Out (FILNAVN);
- int etasjer = 0;
- int rom = 0;
- for (int i = 0; i < hybler.length; i++) {
- for (int j = 0; j < hybler[].length; j++) {
- etasjer++;
- rom++;
- fil.close()
- System.out.println("--- Programmet avslutter ---");
- System.exit(0);
- }
- }
- }
- }
- class Hybel {
- Student leietager ; // peker paa et Student-objekt
- int husleie; //7000 hvis hybelen er i tredje etasje, ellers 6000.
- //evt. metoder for aa behandle en Hybel
- }
- class Student {
- // Her beskrives studentene og deres saldo?
- }
Add Comment
Please, Sign In to add comment