Emne: PROGRAMMERING |
Emnekode: LO 127 A |
Faglig veileder: Eva H.Vihovde Kjetil Grønning | |
Grupper: 1AA, 1AB, 1AC, 1IA |
Dato: 20.02.2009 |
Eksamenstid: 09.00 - 14.00 | |
Eksamensoppgaven består av: | Antall sider (inkl. forsiden): 6 | Antall oppgaver: 4 | Antall vedlegg: Ingen |
Tillatte hjelpemidler: Ingen | |||
Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle uklarheter i oppgaveteksten skal du redegjøre for de forutsetninger du legger til grunn for løsningen. |
Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.
Utarbeidet av (faglærer): | Kontrollert av (en av disse): | Studieleders/ Fagkoordinators underskrift: | ||
Annen lærer | Sensor | Studieleder/ Fagkoordinator | ||
|
Gruppemedlem
, Oblig
, Student
,
ObligRegister
, ArbeidskravGUI
og ArbeidskravDriver
.
Der det ikke er spesifikt angitt hva datatypen skal være, må du selv velge en passende datatype.
Gruppemedlem
skal ha to datafelt for henholdsvis navn og klasse.
Videre skal den ha
Gruppemedlem.
Oblig
representerer en enkelt obligatorisk oppgave.
Denne klassen kan du få bruk for i de etterfølgende oppgavene:
public class Oblig { private Gruppemedlem[] gruppe; private int obligNr; boolean godkjent; public Oblig( Gruppemedlem[] g, int n, boolean b ) { gruppe = g; obligNr = n; godkjent = b; } public Gruppemedlem[] getDeltakere() { return gruppe; } public int getObligNr() { return obligNr; } public boolean getGodkjent() { return godkjent; } } // end of class Oblig
Student
:
public class Student { private String navn, klasse; private Oblig[] levert; public Student( String n, String k, int antObliger ) { < Initialiserer datafeltene. > } < get-metoder for navn og klasse > private int erRegistrert( int nr ) { < Undersøker om studenten allerede har registrert en oblig med nummer lik den innkomne parameteren nr. Hvis så er tilfelle skal indeksen returneres. I motsatt fall returneres -1. > } public void innlevering( Oblig oppg ) { < Hvis det tidligere er levert en oppgave med samme nummer som den innkomne parameteren oppg har, og som IKKE har vært godkjent tidligere, skal den nye oppgaven erstatte den gamle. Hvis obligen oppg ikke har vært levert tidligere skal den plasseres på første ledige plass. > } public int ikkeGodkjent() { < Returnerer antall oppgaver som enten ikke er godkjent eller ikke er levert inn. ( Antall oppgaver som må være godkjent tilsvarer lengden på arrayen. ) > public String toString() { < Returnerer studentens navn og klasse, samt opplysninger om hvilke oppgaver som er godkjent, om vedkommende kan gå opp til eksamen, og eventuelt hvor mange oppgaver som mangler for å kunne gå opp til eksamen. > } } // end of class StudentKlassens konstruktør og get-metodene for navn og klasse trenger du ikke programmere, men du må merke deg dem, da du vil få bruk for dem i senere oppgaver. a) Programmer metoden
private int erRegistrert( int nr ) { ... }
.
b) Programmer metoden public void innlevering( Oblig oppg ) { ... }
.
c) Programmer metoden public int ikkeGodkjent() { ... }
.
d) Programmer metoden toString() { ... }
.
public class ObligRegister { private Student[] studenter; private int antallObliger; public ObligRegister(int antStud, int antOblig) { < Foretar nødvendig initialisering av datafeltene. > } public void nyStudent( Student s ) { < Setter objektet ny, som metoden mottar som parameter, inn i arrayen studenter. Du kan forutsette at det er plass i arrayen. > } private int posisjon( String navn ) { < Returnerer array-indeksen for student med navn lik parameterverdien, i tilfelle en slik finnes. Returnerer -1 ellers. > } public void registrer( Oblig oppg ) { < Registrerer oppgaven oppg på ALLE studentene i gruppen som har levert oppgaven. Dersom noen av disse ikke på forhånd finnes i arrayen studenter, må de tilføyes i arrayen som nye studenter. > } public String godkjent( String navn ) { < Returnerer opplysninger om studenten med navn lik parameterverdien, dvs. navn og klasse, samt opplysninger om hvilke oppgaver som er godkjent, og om vedkommende kan gå opp til eksamen, eventuelt hvor mange oppgaver som mangler for å kunne gjøre det. > } public String[] statusListe(String klasse) { < Returner en ny array som, for hver student i klasse, inneholder opplysninger om navn og klasse, samt opplysninger om hvilke oppgaver som er godkjent, og om vedkommende kan gå opp til eksamen, eventuelt hvor mange oppgaver som mangler for å kunne gjøre det. > } } // end of class ObligRegistera) Programmer metoden
public void nyStudent( Student s ) { ... }
.
b) Programmer metoden private int posisjon( String navn) { ... }
c) Programmer metoden public void registrer( Oppgave oppg ) { ... }
d) Programmer metoden public String godkjent( String navn) { ... }
e) Programmer metoden public String[] statusListe(String klasse) { ... }
ArbeidskravGUI
.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArbeidskravGUI extends JFrame { private JTextField person, obligNr, kl; private JTextField[] navn, klasse; private JButton reg, sjekk, liste; private JTextArea output; private ObligRegister kartotek; private JCheckBox godkjent; private Lytter lytter; public ArbeidskravGUI(String fag, int antStudenter, int antObliger) { super( fag + " - Arbeidskrav" ); kartotek = new ObligRegister(antStudenter, antObliger); lytter = new Lytter(); for ( int i = 0; i < navn.length; i++ ) { navn[ i ] = new JTextField( 20 ); klasse[ i ] = new JTextField( 5 ); : : } < Resten av koden for å lage brukergrensesnittet. > } private Gruppemedlem[] lesGruppe() // hjelpemetode { < Metoden skal opprette og returnere en array, av typen Gruppemedlem, som inneholder objekter tilsvarende de personene som deltar i gruppearbeidet. Legg merke til at tekstfeltene det skal leses fra er lagt inn i arrayene navn og klasse. > } public void registrer() { < Registrerer en innlevering av en oblig utfra data i skjermbildets øvre halvdel. Hvorvidt oppgaven er godkjent eller ikke kan avleses ved hjelp av setningen: boolean b = godkjent.isSelected(); > } public void sjekkGodkjenning() { < Leser inn navn (fra tekstfeltet person) og skriver i tekstområdet output opplysninger om hvilke oppgaver som er godkjent, og om vedkommende kan gå opp til eksamen, eventuelt hvor mange oppgaver som mangler for å kunne gjøre det. > } public void skrivListe() { < Skriver i tekstområdet output en liste over alle registrerte opplysninger om studenter i en bestemt klasse (fra tekstfeltet kl). > } private class Lytter ... { < Kaller opp riktig metode utfra hendelser i brukergransesnittet. > } } // end of class ArbeidskravGUIa) Programmer metoden
private Gruppemedlem[] lesGruppe(){ ... }
b) Programmer metoden public void registrer() { ... }
c) Programmer metoden public void sjekkGodkjenning() { ... }
d) Programmer metoden public void skrivListe() { ... }
e) Programmer den private lytteklassen Lytter.ArbeidskravGUI
som inneholder programmets main-metode.