import easyIO.*; class Studentregister { public static void main(String[] args) { Institutt institutt = new Institutt(); institutt.meny(); } } //end Studentregister enum Ukedag { mandag, tirsdag, onsdag, torsdag, fredag, l?rdag, s?ndag; static Ukedag finnDag(int nr) { for (Ukedag dag : Ukedag.values()) { if (dag.ordinal() == nr) { return dag; } } return null; // feil dagnummer } } // end Ukedag class Kurs { String kurskode; Ukedag dag; int tid; Student[] studenter = new Student[300]; int antStudenter; Kurs(String kode, Ukedag dag, int tid) { kurskode = kode; this.dag = dag; this.tid = tid; } boolean erFult() { return antStudenter == studenter.length; } void meldP?Student(Student s) { studenter[antStudenter++] = s; } } // end Kurs class Student { String navn; Kurs[] kurs = new Kurs[4]; int antKurs; Student(String navn) { this.navn = navn; } boolean maksKurs() { return antKurs == kurs.length; } void meldP?Kurs(Kurs k) { kurs[antKurs++] = k; } void skrivTimeplan() { Out skjerm = new Out(); skjerm.outln("Timeplan for " + navn); skjerm.outln(); skjerm.out("tid/dag\t"); for (Ukedag dag : Ukedag.values()) { skjerm.out(dag + "\t"); } skjerm.out("\n-----------------------------------"); skjerm.outln("-----------------------------------"); for (int tid = 8; tid < 22; tid++) { skjerm.out(tid, 6); skjerm.out("|\t"); for (int i = 0; i < antKurs; i++) { if (kurs[i].tid == tid) { for (int j = 0; j < kurs[i].dag.ordinal(); j++) { skjerm.out("\t"); } skjerm.out(kurs[i].kurskode); } } } skjerm.outln(); } } // end Student class Institutt { Kurs[] kurs = new Kurs[10]; int antKurs = 0; Student[] studenter = new Student[300]; int antStudenter = 0; In tast = new In(); Out skjerm = new Out(); Institutt() { In fil = new In("register.txt"); while (!fil.endOfFile()) { String kurskode = fil.inWord(); int dag = fil.inInt(); int tid = fil.inInt(); Ukedag ukedag = Ukedag.finnDag(dag); kurs[antKurs++] = new Kurs(kurskode, ukedag, tid); } } void meny() { String meny = "\n" + "1 - meld student p? kurs\n" + "2 - lag timeplan for student\n" + "3 - avslutt program\n" + "\n" + "valg: "; int valg = 0; do { skjerm.out(meny); valg = tast.inInt(); switch (valg) { case 1: registrerStudent(); break; case 2: finnStudent().skrivTimeplan(); break; case 3: // avslutter break; default: skjerm.outln("Ukjent menyvalg"); } } while (valg != 3); // do-while } Student finnStudent() { skjerm.out("Gi navn p? studenten: "); String navn = tast.inLine(); Student stud = null; for (int i = 0; i < antStudenter; i++) { if (navn.equals(studenter[i].navn)) { stud = studenter[i]; } } if (stud == null) { if (antStudenter == studenter.length) { skjerm.outln("Kan ikke registrere flere studenter."); } else { stud = new Student(navn); studenter[antStudenter++] = stud; } } return stud; } void registrerStudent() { Student stud = finnStudent(); if (stud == null) { // maks antall studenter er n?dd. return; } skjerm.out("Oppgi kurskode (blank linje avslutter): "); String kurskode = tast.readLine(); while (!kurskode.equals("")) { Kurs k = finnKurs(kurskode); if (stud.maksKurs()) { skjerm.outln("Studenten kan ikke f?lge fler kurs."); } else if (k == null) { skjerm.outln("Ukjent kurskode"); } else if (k.erFult()) { skjerm.outln("Beklager - kurset er fult!"); } else { k.meldP?Student(stud); stud.meldP?Kurs(k); skjerm.outln(stud.navn + " er p?meldt " + kurskode); } skjerm.out("Oppgi kurskode (blank linje avslutter): "); kurskode = tast.readLine(); } } Kurs finnKurs(String kurskode) { Kurs kurset = null; for (int i = 0; i < antKurs; i++) { if (kurs[i].kurskode.equals(kurskode)) { kurset = kurs[i]; } } return kurset; } } // end Institutt