import java.io.*;public class OpintoRekisteri2 { private static Kurssi[] kurssit = new Kurssi[3]; // 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("kursseja.dat")); // kurssit[i] viittaa taulukkoon. for (i = 0; i < kurssit.length; i++) { out.write(kurssit[i].palautaNimi() + ":" + kurssit[i].palautaOpintopisteet() ); } } public static void lueTiedostosta () throws IOException { }} // OpintoRekisteri