Romreservering.java [Last ned]

/*
 * Programmet holder rede på reservasjoner av ett rom, basert
 * på dato og klokkeslett (start-slutt). Klokkeslettene bruker
 * en redusert versjon av KlSlettRed-klassen (oppg.11): KlSlettRedRed,
 * som ikke håndterer sekund (ellers likt).
 * Programmet sjekker at tidspunkt er lovlig angitt fra brukeren,
 * og at det ikke blir kollisjon med tidligere reservasjoner.
 */
import static javax.swing.JOptionPane.*;
import static java.lang.System.*;
import java.util.*;
 
public class Romreservering {
 
  public static void main(String[] args) {
    // Oppretter en tabell for å holde på reservasjoner
    final int MAX_ANT_RES = 50;
    Reservasjon[] romRes = new Reservasjon[MAX_ANT_RES];
 
    int antall = 0;
    String svar;
    // Programmet kjøres til brukeren 'svarer' at det skal stoppe
    do {
      String datoTxt = showInputDialog("Gi dato:");
      Dato d = new Dato(datoTxt);
      String tid1Txt = showInputDialog("Gi start kl.:");
      KlSlettRed t1 = new KlSlettRed(tid1Txt);
      String tid2Txt = showInputDialog("Gi slutt kl.:");
      KlSlettRed t2 = new KlSlettRed(tid2Txt);
      if ( d.lovlig() && t1.lovlig() && t2.lovlig() ) {
        String ref = showInputDialog("Gi kontaktperson:");
        Reservasjon nyRes = new Reservasjon(d,t1,t2,ref);
 
        boolean ok = true;
        int nr = 0;
        while ( ok && nr < antall )
          if ( romRes[nr].kollisjonMed(nyRes) )
            ok = false;
          else
            nr++;
 
        if ( ok )
          romRes[antall++] = nyRes;
        else
          out.println("Ikke reservert. Rom opptatt. " + nyRes.toString() );
      }
      else
        out.println("Ugyldig tidspkt! Ingen reservasjon.");
 
      svar = showInputDialog("Flere reserveringer? (Ja/Nei):");
    } while ( svar.equalsIgnoreCase("Ja") );
 
    String[] resListe = new String[antall];
    for (int i=0; i<antall; i++)
      resListe[i] = romRes[i].toString();
    Arrays.sort(resListe);
    // Sorterer alle reservasjonene etter dato, og innenfor
    // samme dag sorteres de på klokkeslett.
 
    String utListe = "Reservasjoner på rommet:" + "\n";
    for (int i=0; i<antall; i++)
      utListe += resListe[i] + "\n";
 
    showMessageDialog(null, utListe);
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.