/* * Vedlegg, delprøve 1 - gjentak mars 2006 */ import java.util.ArrayList; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; /* Vedlegg 1 starter her */ class Konsert { private String tittel; // entydig private String tidspunkt; private int pris; public Konsert(String startTittel, String startTid, int startPris) { tittel = startTittel; tidspunkt = startTid; pris = startPris; } public String finnTittel() { return tittel; } public String finnTid() { return tidspunkt; } public int finnPris() { return pris; } /* * Vi definerer at to objekter er like dersom tittelen er den samme */ public boolean equals(Object obj) { if (!(obj instanceof Konsert)) return false; if (this == obj) return true; Konsert k = (Konsert) obj; return (tittel == k.tittel); } public String toString() { return tittel + ", tid: " + tidspunkt + ", pris " + pris; } } class Person { private String navn; private String epost; // entydig private ArrayList konserter = new ArrayList(); public Person(String startNavn, String startEpost) { navn = startNavn; epost = startEpost; } public String finnNavn() { return navn; } public String finnEpost() { return epost; } public String toString() { return navn + ", " + epost; } public int finnAntKonserter() { return konserter.size(); } /***LØSNING TIL OPPGAVE 1A STARTER HER ***/ public int meldPaKonsert(Konsert kons){ String tittel = kons.finnTittel(); String tidspkt = kons.finnTid(); int pris = kons.finnPris(); for (Konsert k : konserter){ if( k.finnTittel().equals(tittel) && k.finnTid().equals(tidspkt) == true ) { //Finner konserten System.out.println("Du er allerede registrert på konserten!"); return -1; } } konserter.add(kons); return konserter.size(); } public int meldAvKonsert(Konsert kons){ String tittel = kons.finnTittel(); String tidspkt = kons.finnTid(); int pris = kons.finnPris(); for(Konsert k : konserter){ if( k.finnTittel().equals(tittel) && k.finnTid().equals(tidspkt) == true ) { //Finner konserten konserter.remove(k); return konserter.size(); } } return -1; //Finner ikke konserten } public int finnTotalPris(){ //Int, ettersom alle konsertprisene er i int kan vi ikke få desimaltall som returverdi. int pristemp = 0; for(Konsert k : konserter){ pristemp += k.finnPris(); } return pristemp; } public boolean erMedPåKonsert(Konsert konserten) { for(int i = 0; i < konserter.size(); i++) { if(konserter.get(i).equals(konserten)) { return true; } } return false; } } class Festival { private ArrayList deltakerne = new ArrayList(); private Konsert[] konsertene; //Konstruktør public Festival(Konsert[] konsertene){ this.konsertene = konsertene; } public int finnTotaleInntekter(){ int tempinntekt = 0; for(Person p : deltakerne){ int utgift = p.finnTotalPris(); tempinntekt += utgift; } return tempinntekt; } /* Denne metoden trengs i GUI-oppgaven */ public Person[] finnDeltakerne() { Person[] ptabell = new Person[deltakerne.size()]; for (int i = 0; i < deltakerne.size(); i++) { ptabell[i] = deltakerne.get(i); } return ptabell; } /* Denne metoden trengs i GUI-oppgaven */ public Konsert[] finnKonsertene() { return konsertene; } /* Følgende to metoder er laget for å få testprogrammet til å virke. Ikke del av oppgaven. */ public boolean registrerNyDeltaker(String navn, String epost) { Person p = finnPerson(epost); if (p != null) return false; // person med denne epost er registrert fra før deltakerne.add(new Person(navn, epost)); return true; } public Person finnPerson(String epost) { for (Person enPerson : deltakerne) { if (enPerson.finnEpost().equalsIgnoreCase(epost)) return enPerson; } return null; } public int finnAntDeltagere(Konsert konserten) { int teller = 0; for(int i = 0; i < deltakerne.size(); i++) { if(deltakerne.get(i).erMedPåKonsert(konserten)) { teller++; } } return teller; } } class ena { public static void main(String[] args) { Konsert[] konserter = new Konsert[3]; konserter[0] = new Konsert("AllaKalla", "fredag 1500", 275); konserter[1] = new Konsert("AllaMalla", "fredag 1700", 290); konserter[2] = new Konsert("AllaDalla", "fredag 1900", 300); Festival festival = new Festival(konserter); festival.registrerNyDeltaker("Arne Olsen", "arne@olsen.no"); festival.registrerNyDeltaker("Beate Olsen", "beate@olsen.no"); festival.registrerNyDeltaker("Trude Olsen", "trude@olsen.no"); festival.registrerNyDeltaker("Truda Olsen", "truda@olsen.no"); System.out.println(festival.finnTotaleInntekter() + "\n"); System.out.println(festival.finnAntDeltagere(konserter[0])); /* GUI gui = new GUI(festival); gui.setVisible(true); */ } }