import java.io.*;
public class OpintoRekisteri2 {
private static Kurssi[] kurssit = new Kurssi[5]; // Taulukkoon voi laittaa 5 kurssia.
public static void main (String [] args) throws IOException {
// Muuttujat.
int navigointi;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
// Tulostukset
tulostaOhjeet();
tulostaValikko();
do {
navigointi = Integer.parseInt(stdin.readLine());
switch(navigointi) {
case 1:
lisaaKurssi();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 2:
muutaKurssia();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 3:
poistaKurssi();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 4:
tulostaKurssi();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 5:
tulostaValikko();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 6:
tallennaTiedostoon();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 7:
lueTiedostosta();
System.out.println("Anna seuraava valinta (0-7): ");
break;
case 0:
break;
default: System.out.println("Syota luku valilta 0-7!");
break;
}
} while (navigointi != 0);
} // Main
// tulostaValikko - metodi
public static void tulostaOhjeet() {
System.out.println("Ohjelma tallettaa neljan kurssin tiedot (nimi, opintopisteet) taulukkoon.");
System.out.println("Valikon kautta voit muokata kurssien tietoja.");
System.out.println("#5 tulostaa valikon uudestaan.");
}
public static void tulostaValikko() {
System.out.println("");
System.out.println(" 0. Lopetus.");
System.out.println(" 1. Lisaa uusi kurssi.");
System.out.println(" 2. Muokkaa kurssin tietoja.");
System.out.println(" 3. Poista kurssi.");
System.out.println(" 4. Tulosta kurssien tiedot.");
System.out.println(" 5. Tulosta valikko uudestaan.");
System.out.println(" 6. Tallenna tiedostoon.");
System.out.println(" 7. Lue tiedostosta.");
System.out.println("");
}
public static void lisaaKurssi() throws IOException {
String kurssinNimi;
int opintoPisteet;
int index = 0;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
/* Pyöritetään lukumäärälaskuria taulukon viimeiseen paikkaan asti.
* jos viimeinen paikka on täynnä, niin toiminto keskeytetään. */
for (index = 0; index <= kurssit.length-1; index++) {
if(kurssit[index] == null) {
break;
}
if(kurssit[kurssit.length-1] != null) {
break;
}
} // for
if(kurssit[index] == null) {
System.out.println("Anna "+(index+1)+" kurssin nimi: ");
kurssinNimi = stdin.readLine();
System.out.println("Anna kurssin "+(kurssinNimi)+ " opintopistelaajuus: ");
opintoPisteet = Integer.parseInt (stdin.readLine());
System.out.println("");
// Luodaan näiden tietojen pohjalta kurssi olio */
kurssit[index] = new Kurssi(kurssinNimi, opintoPisteet);
}
// Jos taulukko on täysi, kehoitetaan käyttäjää poistamaan kursseja.
else {
System.out.println("Taulutkot ovat taysia. Poista jotain ennen lisaysta.");
}
} // lisaakurssi
public static void muutaKurssia() throws IOException {
// Muuttujat
String kurssinNimi;
int opintoPisteet;
int paikka;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Valitse muokatattava kurssi (anna nimi): ");
kurssinNimi = stdin.readLine();
paikka = haeSijainti(kurssinNimi);
if (paikka >= 0) {
System.out.println("Anna kurssin uusi nimi: ");
kurssinNimi = stdin.readLine();
System.out.println("Anna kurssin "+(kurssinNimi)+ " opintopistelaajuus: ");
opintoPisteet = Integer.parseInt (stdin.readLine());
System.out.println("");
// Luodaan uusi kurssiolio vanhan tilalle.
kurssit[paikka] = new Kurssi(kurssinNimi, opintoPisteet);
} // if
else { System.out.println("Tarkista valintasi, kurssia ei loytynyt."); }
} // Muutakurssia
public static void poistaKurssi() throws IOException {
String kurssinNimi;
int paikka;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Valitse poistettava kurssi (anna nimi): ");
kurssinNimi = stdin.readLine();
paikka = haeSijainti(kurssinNimi);
if (paikka >= 0) { kurssit[paikka] = null; }
else {System.out.println("Kurssia ei ole taulukossa, ei voida poistaa."); }
} // poistakurssi
public static void tulostaKurssi() throws IOException {
int i, opmaara = 0;
for (i = 0; i < kurssit.length; i++) {
/* Verrataan onko taulukossa sisältöä. Jos on (eli != null), niin tulostellaan sisältö. */
if (kurssit[i] != null) {
System.out.println("Kurssin "+kurssit[i].palautaNimi()+ " opintopistelaajuus on: "+kurssit[i].palautaOpintopisteet() );
opmaara = kurssit[i].palautaOpintopisteet()+opmaara;
} // If
} // for
System.out.println("Yhteenlaskettu opintopistemaara: "+opmaara);
} // tulostakurssi
/* Haesijainti metodin kuvaus:
* haeSijainti(Kurssi[] kurssit,
* String nimi), joka vertaa rekisterissä olevien kurssien nimiä
* haettavaan nimeen equalsIgnoreCase-metodin avulla. Metodi palauttaa
* kokonaislukuna löytyneen kurssin sijainnin taulukossa tai
* NEGATIIVISEN LUVUN, JOS OIKEAA KURSSIA EI LÖYDY. */
public static int haeSijainti(String nimi) throws IOException {
int i;
int paikka = -1; // Jos kurssia ei löytynyt, metodi palauttaa negatiivisen luvun.
// Pyöritetään laskuria taulukon läpi.
for (i = 0; i < kurssit.length; i++) {
// Jos löydetään kurssi...
if (kurssit[i] != null) {
// ... ja sen nimi on se mitä haettiin...
if (nimi.equalsIgnoreCase(kurssit[i].palautaNimi()) ) {
// ... Otetaan paikka muistiin. Paikka - muuttujaa käytetään kurssin muokkaamiseen.
paikka = i;
} // 2. IF
} // 1. IF
} // for
return paikka;
} // haesijainti
public static void tallennaTiedostoon () throws IOException {
String kurssinNimi;
int opintoPisteet;
BufferedWriter out;
int i;
// Avataan tiedosto tallettemaista varten:
out = new BufferedWriter(new FileWriter("C:\\Documents and Settings\\Late\\My Documents\\TOL\\Johdatus Ohjelmointiin\\Harjoitus 8\\kursseja.dat"));
for (i = 0; i < kurssit.length; i++) {
out.write(Integer.toString (opintoPisteet));
out.write(kurssinNimi);
}
}
public static void lueTiedostosta () throws IOException {
}
} // OpintoRekisteri