All pastes #280288 Raw Edit

Untitled

public text v1 · immutable
·published 2006-12-15 20:13 UTC
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

*/