All pastes #350635 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-02-11 16:24 UTC
rendered paste body
import java.util.ArrayList;

class Oving4 {

  public static void main(String[] args) {


	//tester Rom

	System.out.println("Tester rom: \n\n");

	Rom nr69 = new Rom(69, 13); // nr 69, størrelse 13

	Kunde Skrue = new Kunde("Skrue McDuck", "1-800-555"); // navn , tlf

	Tidspunkt t1 = new Tidspunkt(200301001200L);
	Tidspunkt t2 = new Tidspunkt(200301070230L);
    Tidspunkt t3 = new Tidspunkt(200301070330L);
    Tidspunkt t4 = new Tidspunkt(200301070430L);


	nr69.nyReservasjon( t1, t2, Skrue, 5); //går

	nr69.nyReservasjon( t1, t3, Skrue, 5); //går ikke, overlapp

	nr69.nyReservasjon( t3, t4, Skrue, 5); //går

	nr69.nyReservasjon( t1, t2, Skrue, 22); // går ikke, for mange

	System.out.println(nr69);

	System.out.println("Tester konf.sent.: \n\n");


	Konferansesenter DenBlaLagune = new Konferansesenter();


		DenBlaLagune.leggTilRom( 10, 10 ); //nr , antall
		DenBlaLagune.leggTilRom( 20, 5 );
		DenBlaLagune.leggTilRom( 30, 10 );
		DenBlaLagune.leggTilRom( 40, 9 );
		DenBlaLagune.leggTilRom( 50, 20 );

		DenBlaLagune.reserverRom(200301201200L, 200301201200L, 1, "Skrue McDuck", "1-LOL-555");
		DenBlaLagune.reserverRom(200301201200L, 200301201230L, 9, "Skrue McDuck", "1-LOL-555");
		DenBlaLagune.reserverRom(200301201200L,200301201330L, 9, "Skrue McDuck", "1-LOL-555");
		DenBlaLagune.reserverRom(200301201200L,200301201630L, 9, "Skrue McDuck", "1-LOL-555");
		DenBlaLagune.reserverRom(200301201200L,200301201800L, 9, "Skrue McDuck", "1-LOL-555");

		if ( !(DenBlaLagune.leggTilRom(10,10)) ) {

			System.out.println("Kunne ikke opprette rom. Rommet eksisterer allerede.\n\n");

		}

		System.out.println(DenBlaLagune);

  }

}


class Reservasjon {
  private Tidspunkt fraTid;
  private Tidspunkt tilTid;
  private Kunde kunde;

  public Reservasjon(Tidspunkt startFra, Tidspunkt startTil, Kunde startKunden) {
    fraTid = startFra;
    tilTid = startTil;
    kunde = startKunden;
  }

  public Tidspunkt finnFraTid() {
    return fraTid;
  }

  public Tidspunkt finnTilTid() {
    return tilTid;
  }

  /*
   * Metoden returnerer true dersom tidsintervallet [sjekkFraTid, sjekkTilTid] overlapper
   * med det tidsintervallet som er i det reservasjonsobjektet vi er inne i [fraTid, tilTid]
   */

  public boolean overlapp(Tidspunkt sjekkFraTid, Tidspunkt sjekkTilTid) {
    if (sjekkTilTid.compareTo(fraTid) <= 0 || sjekkFraTid.compareTo(tilTid) >= 0) {
      return false; // ikke overlapp
    } else return true; // opptatt i denne perioden
  }

  public String toString() {
    return "Kunde: " + kunde.finnNavn() + ", tlf: " + kunde.finnTlf() + ", fra " +
                       fraTid.toString() + ", til " + tilTid.toString() + "\n";
  }

  /* Metode som prøver klassen Reservasjon
  public static void main(String[] args) {
    Kunde k = new Kunde("Anne Hansen", "12345678");
    Reservasjon r1 = new Reservasjon(
                     new Tidspunkt(200302011000L), new Tidspunkt(200302011100L), k);
    System.out.println("Reservasjon 1: " + r1.toString());
    Reservasjon r2 = new Reservasjon(
                     new Tidspunkt(200301211000L), new Tidspunkt(200301211000L), k);
    System.out.println("Reservasjon 2: " + r2.toString());
    Reservasjon r3 = new Reservasjon(
                     new Tidspunkt(200302011130L), new Tidspunkt(200302011300L), k);
    System.out.println("Reservasjon 3: " + r3.toString());
    Reservasjon r4 = new Reservasjon(
                     new Tidspunkt(200302010900L), new Tidspunkt(200302011100L), k);
    System.out.println("Reservasjon 4: " + r4.toString());

    /* Prøver overlapp()
    System.out.println(r1.overlapp(new Tidspunkt(200302011000L), new Tidspunkt(200302011100L))); // true
    System.out.println(r1.overlapp(new Tidspunkt(200302021000L), new Tidspunkt(200302021100L))); // false
    System.out.println(r1.overlapp(new Tidspunkt(200302011030L), new Tidspunkt(200302011100L))); // true
    System.out.println(r1.overlapp(new Tidspunkt(200302010930L), new Tidspunkt(200302011030L))); // true
  }


 Utskrift:
Reservasjon 1: fra 01-02-2003 kl 1000, til 01-02-2003 kl 1100
Reservasjon 2: fra 21-01-2003 kl 1000, til 21-01-2003 kl 1000
Reservasjon 3: fra 01-02-2003 kl 1130, til 01-02-2003 kl 1300
Reservasjon 4: fra 01-02-2003 kl 0900, til 01-02-2003 kl 1100
true
false
true
true
*/

}

class Kunde {
  private String navn;
  private String tlf;

  public Kunde(String startNavn, String startTlf) {
    navn = startNavn;
    tlf = startTlf;
  }

  public String finnNavn() {
    return navn;
  }

  public String finnTlf() {
    return tlf;
  }

  public String toString() {
    return navn + ", tlf " + tlf;
  }

  /* Tester klassen Kunde
  public static void main(String[] args) {
    Kunde k = new Kunde("Ole Olsen", "12345678");
    System.out.println("Prøver finn-metodene:\n Navn: " + k.finnNavn() + "\n Tlf.: " + k.finnTlf());
    System.out.println("Prøver toString()-metoden: " + k);
  }

 Utskrift:
Systemet finner ikke angitt bane.
Pr°ver finn-metodene:
 Navn: Ole Olsen
 Tlf.: 12345678
Pr°ver toString()-metoden: Ole Olsen, tlf 12345678
*/
}


class Tidspunkt implements Comparable<Tidspunkt> {
  private long tid; // format ååååmmddttmm

  public Tidspunkt(long startTid) {
    tid = startTid;
  }

  public long finnTidspunkt() {
    return tid;
  }

  /* formaterer tidspunktet slik: dd-mm-åååå kl ttmm */
  public String toString() {
    // foretar trygg omforming til mindre type,
    // dato og klokkeslett er hver for seg innenfor tallområdet til int
    int dato = (int) (tid / 10000);
    int klokkeslett = (int) (tid % 10000);
    int år = dato / 10000;
    int mndDag = dato % 10000;
    int mnd = mndDag / 100;
    int dag = mndDag % 100;

    String tid = "";
    if (dag < 10) tid += "0";
    tid += dag + "-";
    if (mnd < 10) tid += "0";
    tid += mnd + "-" + år + " kl ";
    if (klokkeslett < 1000) tid += "0";
    tid += klokkeslett;
    return tid;
  }

  public int compareTo(Tidspunkt detAndre) {
    if (tid < detAndre.tid) return -1;
    else if (tid > detAndre.tid) return 1;
    else return 0;
  }

  /* Tester klassen Tidspunkt
  public static void main(String[] args) {
    Tidspunkt t1 = new Tidspunkt(200301201200L);
    Tidspunkt t2 = new Tidspunkt(200301070230L);
    Tidspunkt t3 = new Tidspunkt(200301070230L);

    System.out.println("t1 = " + t1.finnTidspunkt() + " formattert: " + t1); // bruker toString()
    System.out.println("t2 = " + t2.finnTidspunkt() + " formattert: " + t2);
    System.out.println("t3 = " + t3.finnTidspunkt() + " formattert: " + t3);

    System.out.println("t1 compareto t2 er lik " + t1.compareTo(t2));
    System.out.println("t2 compareto t1 er lik " + t2.compareTo(t1));
    System.out.println("t3 compareto t2 er lik " + t3.compareTo(t2));
    System.out.println("t2 compareto t3 er lik " + t2.compareTo(t3));
  }

 Utskrift:
t1 = 200301201200 formattert: 20-01-2003 kl 1200
t2 = 200301070230 formattert: 07-01-2003 kl 0230
t3 = 200301070230 formattert: 07-01-2003 kl 0230
t1 compareto t2 er lik 1
t2 compareto t1 er lik -1
t3 compareto t2 er lik 0
t2 compareto t3 er lik 0
*/
}

class Rom {


	private int størrelse;
	private int nummer;

	private ArrayList<Reservasjon> res = new ArrayList<Reservasjon>();

	public Rom(int nummer, int størrelse) {
		this.størrelse = størrelse;
		this.nummer = nummer;
	}

	public int finnStørrelse() {
			return størrelse;
	}

	public int finnRomnr() {
		return nummer;
	}

	public int finnAntRes() {
		return res.size();
	}

	public boolean nyReservasjon( Tidspunkt fra, Tidspunkt til, Kunde kunde, int antPers) {

		boolean overlapp = false;

		//while(!overlapp && i < res.size()) {

		for (int i=0; i<res.size(); i++) {

			if (res.get(i).overlapp(fra,til)) {

				overlapp = true;

				break;

			}
		}

		if ( (!overlapp) && (antPers <= størrelse) ) {

			res.add(new Reservasjon(fra, til, kunde));

			return true;

		} else return false;

	}

	public String toString() {


		String ut = "\nReservert av: \n";

		for (int i=0; i<res.size(); i++) {

			ut += res.get(i).toString();

		}

		ut += "\nAntall reservasjoner: " + finnAntRes() + "\n";

		return ut;
	}
}



class Konferansesenter {

	private ArrayList<Rom> rom = new ArrayList<Rom>();

	public Konferansesenter(){}

	public boolean leggTilRom( int nr, int størrelse ) {

		if ( (finnRomEtterNr(nr) != null) ) return false;

		else {

			if ( ( nr > 0 ) && ( størrelse > 0 ) ) {

				rom.add( new Rom( nr, størrelse ) );

				return true;
			}
			else return false;
		}
	}

	public Rom finnRomEtterIndeks(int indx) {

		if ( (indx >= 0) && (indx < rom.size()) ) {

			return rom.get(indx);
		}
		else return null;
	}

	public Rom finnRomEtterNr(int romnr) {

		int indeks = -1;

		for(int i=0; i<finnAntRom(); i++) {

			if (rom.get(i).finnRomnr() == romnr) {

				return rom.get(i);

				/*indeks = i;

				i = finnAntRom();*/

			}

		}
/*
		if (indeks != -1) {

			return rom.get(indeks);

		} else */return null;

	}

	public int finnAntRom() {

		return rom.size();

	}

	public int reserverRom(long fra, long til, int ant, String navn, String tlf) {

		Tidspunkt fraTid = new Tidspunkt(fra);

		Tidspunkt tilTid = new Tidspunkt(til);

		Kunde kunde = new Kunde(navn, tlf);

		int indeks = -1;

		for (int i=0; i<finnAntRom(); i++) {

			if (rom.get(i).nyReservasjon(fraTid, tilTid, kunde, ant)) {

				indeks = i;

				i = finnAntRom();

			}

		}

		return indeks;

	}

	public String toString() {

		String output = "Rom nr.\tAnt res.\n";

		for (int i=0; i<finnAntRom(); i++) {

			output += rom.get(i).finnRomnr() + "\t" + rom.get(i).finnAntRes() + "\n";

		}

		output += "\nAntall rom: " + finnAntRom();

		return output;
	}

}