rendered paste body/* KlientTest.java GS 2006-03-28
Løsningsforslag øving 9 i LO172D Programmering i Java.
*/
import static javax.swing.JOptionPane.*;
class Test{
String testNavn;
int[] poengSum;
public Test(String testNavn, int[] tabell){
this.testNavn = testNavn;
poengSum = new int[tabell.length];
for(int i=0; i<tabell.length; i++){
poengSum[i] = tabell[i];
}
}
// Finn poengsum til en student
public int finnPoengSum(int indeks){
if (gyldigIndeks(indeks)) return poengSum[indeks];
else return -1;
}
// Finn høyeste poengsum
public int finnMaks(){
int maks = poengSum[0];
for(int i=1; i<poengSum.length; i++){
if (maks < poengSum[i]) maks = poengSum[i];
}
return maks;
}
// Finn laveste poengsum
public int finnMin(){
int min = poengSum[0];
for(int i=1; i<poengSum.length; i++){
if (min > poengSum[i]) min = poengSum[i];
}
return min;
}
// beregn gjennomsnitlig poengsum
public double finnGjSnitt(){
double sum=0;
for(int i=0; i<poengSum.length; i++){
sum += poengSum[i];
}
return sum/poengSum.length;
}
//Sorter poengsummer
public String finnAlleSortert(){
// kopier tabellen
int[] sortTab = new int[poengSum.length];
for(int i=0; i<sortTab.length; i++){
sortTab[i] = poengSum[i];
}
// sorter tabellen synkende
for(int start=0; start<sortTab.length; start++){
int hittilStorst= start;
for(int i=start+1; i<sortTab.length; i++){
if (sortTab[hittilStorst] < sortTab[i]){
int tmp = sortTab[hittilStorst];
sortTab[hittilStorst] = sortTab[i];
sortTab[i] = tmp;
}
}
}
String res = "";
for(int i = 0; i<sortTab.length; i++){
res += sortTab[i] + "\n";
}
return res;
}
// Privat hjelpemetode som finner antall studenter med høyeste oppnådde poengsum
private int finnAntallMaks(){
int maks = finnMaks();
int antall = 0;
for(int a : poengSum) if (a == maks) antall++;
return antall;
}
//Metode som finner indeks til studenter med maks poengsum:
public int[] finnMaksStud(){
int maks = finnMaks();
int antall = finnAntallMaks();
int maksTab[] = new int[antall];
int maksTeller = 0;
for(int i=0; i<poengSum.length; i++){
if (maks == poengSum[i]){
maksTab[maksTeller] = i;
maksTeller++;
}
}
return maksTab;
}
public String toString(){
String res = testNavn + "\n";
for(int i = 0; i<poengSum.length; i++){
res += "Student nr: " + i + ": " + poengSum[i] + "\n";
}
return res;
}
// privat hjelpemetode for å sjekke indeks.
private boolean gyldigIndeks(int indeks){
return indeks>=0 && indeks<poengSum.length;
}
}
/* Enkelt menystyrt testprogram som tester klassen Test
*/
class KlientTest{
public static void main(String[] args){
//Hardkoder resultatet fra prøven
int[] poengSum = {10,12,93,84,47,93,73,93,32,1,26};
Test test = new Test("Delprøve våren 2006", poengSum);
String[] muligheter = {"Finn min","Finn maks","Finn poengsum en student","Finn gjennomsnitt","List alle","Poeng sortert","List de beste","Avslutt"};
Object valg = showInputDialog(null, "Velg fra lista", "Behandle prøveresultater", DEFAULT_OPTION, null, muligheter, muligheter[0]);
while (valg != muligheter[7]){
if (valg == muligheter[0]){
System.out.println("Minste poengsum oppnådd: " + test.finnMin());
}else if(valg == muligheter[1]){
System.out.println("Maks poengsum opnådd på prøven: " + test.finnMaks());
}else if(valg == muligheter[2]) {
int studNr = Integer.parseInt(showInputDialog("Studentnr: "));
int pSum = test.finnPoengSum(studNr);
if (pSum>=0) System.out.println("Studentnr: " + studNr + ": " + pSum);
}else if(valg ==muligheter[3]){
System.out.println("Gjennomsnitt alle studenter: " + test.finnGjSnitt());
}else if(valg == muligheter[4]){
System.out.println("**********************\nAlle resultater\n"+ test + "**********************");
}else if(valg == muligheter[5]){
System.out.println("**********************\nAlle poengsummer sortert\n" + test.finnAlleSortert()+"**********************");
}else if(valg == muligheter[6]){
int [] maks = test.finnMaksStud();
String res = "Følgende studenter har oppnådd høyeste poengsum " + test.finnMaks() + "\n";
for(int i : maks) res += "Student nr: " + i + "\n";
System.out.println(res);
}
valg = showInputDialog(null, "Velg fra lista", "Behandle prøveresultater", DEFAULT_OPTION, null, muligheter, muligheter[0]);
}
}
}
/*
Eksempel på kjøring:
**********************
Alle resultater
Delprøve våren 2006
Student nr: 0: 10
Student nr: 1: 12
Student nr: 2: 93
Student nr: 3: 84
Student nr: 4: 47
Student nr: 5: 93
Student nr: 6: 73
Student nr: 7: 93
Student nr: 8: 32
Student nr: 9: 26
Student nr: 10: 1
**********************
Minste poengsum oppnådd: 1
Maks poengsum opnådd på prøven: 93
Gjennomsnitt alle studenter: 51.27272727272727
**********************
Alle poengsummer sortert
93
93
93
84
73
47
32
26
12
10
1
**********************
Følgende studenter har oppnådd høyeste poengsum 93
Student nr: 2
Student nr: 5
Student nr: 7
*/