/*
* 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<Konsert> konserter = new ArrayList<Konsert>();
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<Person> deltakerne = new ArrayList<Person>();
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);
*/
}
}