Guest User

Untitled

a guest
May 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.04 KB | None | 0 0
  1. package Oving2;
  2.  
  3. import static javax.swing.JOptionPane.*;
  4.  
  5. /**
  6.  *
  7.  * Program som kan brukes til å prøve ut metodene laget i øving 1.
  8.  *
  9.  * Om det er vanskelig å lese, kan det kanskje være på sin plass å repetere litt:
  10.  *
  11.  * Brukergrensesnittet er lagt til en egen klasse, se kapittel 6.4, side 193.
  12.  * For øvrig er et menystyrt program vist i kapittel 9.6, side 304.
  13.  */
  14.  
  15. class GodkjenningBGS {
  16.   public final String NY_STUDENT = "Ny student";
  17.   public final String AVSLUTT = "Avslutt";
  18.   private String[] muligeValg = {NY_STUDENT, AVSLUTT};  // første gang, ingen studenter registrert
  19.  
  20.   private OppgaveOversikt oversikt;
  21.   public GodkjenningBGS(OppgaveOversikt oversikt) {
  22.     this.oversikt = oversikt;
  23.   }
  24.  
  25.   /**
  26.    *
  27.    * Metoden leser inn valget som en streng, og returnerer den.
  28.    * Valget skal være argument til metoden utførValgtOppgave().
  29.    * Hvis programmet skal avsluttes, returneres null.
  30.    */
  31.   public String lesValg() {
  32.     int antStud = oversikt.finnAntStud();
  33.     String valg = (String) showInputDialog(null, "Velg fra listen, " + antStud + " studenter:",  "Godkjente oppgaver",
  34.              DEFAULT_OPTION, null, muligeValg, muligeValg[0]);
  35.     if (AVSLUTT.equals(valg)) {
  36.       valg = null;
  37.     }
  38.     return valg;
  39.   }
  40.  
  41.   /**
  42.    *
  43.    * Metode som sørger for at ønsket valg blir utført.
  44.    */
  45.   public void utførValgtOppgave(String valg) {
  46.     if (valg != null && !valg.equals(AVSLUTT)) {
  47.       if (valg.equals(NY_STUDENT)) {
  48.         registrerNyStudent();
  49.       } else {
  50.         registrerOppgaver(valg);  // valg er navnet til studenten
  51.       }
  52.     }
  53.   }
  54.  
  55.   /**
  56.    *
  57.    * Metoden registrere ny student.
  58.    * Hvis student med dette navnet allerede eksisterer, skjer ingen registrering.
  59.    * Resultatet av operasjonen skrives ut til brukeren.
  60.    */
  61.   private void registrerNyStudent() {
  62.     String navnNyStud = null;
  63.     do {
  64.       navnNyStud = showInputDialog("Oppgi navn: ");
  65.     } while (navnNyStud == null);
  66.  
  67.     navnNyStud = navnNyStud.trim();
  68.     if (oversikt.regNyStudent(navnNyStud)) {
  69.       showMessageDialog(null, navnNyStud + " er registrert.");
  70.       String[] alleNavn = oversikt.finnAlleNavn();
  71.       String[] nyMuligeValg = new String[alleNavn.length + 2];
  72.       for (int i = 0; i < alleNavn.length; i++) {
  73.         nyMuligeValg[i] = alleNavn[i];
  74.       }
  75.       nyMuligeValg[alleNavn.length] = NY_STUDENT;
  76.       nyMuligeValg[alleNavn.length + 1] = AVSLUTT;
  77.       muligeValg = nyMuligeValg;
  78.       } else  {
  79.         showMessageDialog(null, navnNyStud + " er allerede registrert.");
  80.       }
  81.     }
  82.  
  83.     /**
  84.      *
  85.      * Metoden registrerer oppgaver for en navngitt student.
  86.      * Brukerinput kontrolleres ved at det må kunne tolkes som et tall.
  87.      * Registreringsmetoden (i klassen Student) kan kaste unntaksobjekt IllegalArgumentException.
  88.      * Dette fanges også opp. I begge tilfeller må brukeren gjenta inntasting inntil ok data.
  89.      * Endelig skrives det ut en melding om antall oppgaver studenten nå har registrert.
  90.      */
  91.     private void registrerOppgaver(String studNavn) {
  92.       String melding = "Oppgi antall nye oppgaver som skal godkjennes for " + studNavn +": ";
  93.       int antOppgØkning = 0;
  94.       boolean registrert = false;
  95.       do { // gjentar inntil registrering aksepteres av objektet oversikt
  96.         try {
  97.           antOppgØkning = lesHeltall(melding);
  98.           oversikt.økAntOppg(studNavn, antOppgØkning);  // kan ikke returnere false, pga navn alltid gyldig
  99.           registrert = true; // kommer hit bare dersom exception ikke blir kastet
  100.         } catch (IllegalArgumentException e) {  // kommer hit hvis studenter får negativt antall oppgaver
  101.           melding = "Du skrev " + antOppgØkning + ". \nIkke godkjent økning for " + studNavn + ". Prøv igjen: ";
  102.         }
  103.       } while (!registrert);
  104.  
  105.       melding = "Totalt antall oppgaver registrert på " + studNavn + " er " + oversikt.finnAntOppgaver(studNavn) + ".";
  106.       showMessageDialog(null, melding);
  107.     }
  108.  
  109.     /* Hjelpemetode som går i løkke inntil brukeren skriver et heltall. */
  110.     private int lesHeltall(String melding) {
  111.       int tall = 0;
  112.       boolean ok = false;
  113.       do {  // gjentar inntil brukerinput kan tolkes som tall
  114.         String tallLest = showInputDialog(melding);
  115.         try {
  116.           tall = Integer.parseInt(tallLest);
  117.           ok = true;
  118.         } catch (Exception e) {
  119.           showMessageDialog(null, "Kan ikke tolke det du skrev som tall. Prøv igjen. ");
  120.         }
  121.       } while (!ok);
  122.       return tall;
  123.     }
  124.   }
  125.  
  126.  
  127.   /**
  128.    * Hovedprogrammet. Går i løkke og lar brukeren gjøre valg.
  129.    */
  130.   class Oppgave1 {
  131.     public static void main(String[] args) {
  132.  
  133.     OppgaveOversikt oversikt = new OppgaveOversikt();
  134.     GodkjenningBGS bgs = new GodkjenningBGS(oversikt);
  135.  
  136.     String valg = bgs.lesValg();
  137.     while (valg != null) {
  138.       bgs.utførValgtOppgave(valg);
  139.       valg = bgs.lesValg();
  140.     }
  141.  
  142.     /* Prøver toString() */
  143.     System.out.println("\nHer kommer informasjon om alle studentene: ");
  144.     System.out.println(oversikt);
  145.   }
  146. }
Add Comment
Please, Sign In to add comment