Skip to content
Snippets Groups Projects
Commit 81e48764 authored by Koivisto Ida Maria Hannuntytär's avatar Koivisto Ida Maria Hannuntytär
Browse files

henkilotiedot saadaan luettua ja testejä lisätty, tunnusNro ei toimi oikein

parent 3ec7067e
No related branches found
No related tags found
No related merge requests found
Showing
with 261 additions and 9 deletions
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
File added
File added
No preview for this file type
No preview for this file type
No preview for this file type
0|Rovanperä|Oskari|18|Keuruu|Kuopion nopeet|59|41|
1|Sokka|Oskari|54|Rovaniemi|Rovaniemen nopeet shamaanit|83|17|
2|Rovanperä|Teemu|59|Seinäjoki|Kuopion nopeet|99|76|
......@@ -3,6 +3,8 @@ package RalliJava;
import java.io.PrintStream;
import java.util.Random;
import fi.jyu.mit.ohj2.Mjonot;
/**
* @author idamk
* @version 12.2.2025
......@@ -11,7 +13,7 @@ import java.util.Random;
*/
public class Henkilo {
private int henkilonTunnusNro = 0;
private int henkilonTunnusNro;
private String etunimi = "";
private String sukunimi = "";
private int ika = 0;
......@@ -20,15 +22,28 @@ public class Henkilo {
private String seura = "";
private String kotipaikkakunta = "";
private static int seuraavaNro = 0;
private static int seuraavaNro = 1;
/**
*
* Antaa henkilölle identifioivan tunnusnumeron
* @return uusi tunnusnumero
* @example
* <pre name="test">
* Henkilo henkilo1 = new Henkilo();
* henkilo1.getHenkilonTunnusNro()===0;
* henkilo1.rekisteroi();
* Henkilo henkilo2 = new Henkilo();
* henkilo2.rekisteroi();
* int ht1 = henkilo1.getHenkilonTunnusNro();
* int ht2 = henkilo2.getHenkilonTunnusNro();
* ht1 === ht2-1;
* </pre>
*/
public void rekisteroi() {
public int rekisteroi() {
henkilonTunnusNro = seuraavaNro;
seuraavaNro++;
return henkilonTunnusNro;
}
......@@ -74,6 +89,23 @@ public class Henkilo {
henkilo.tulosta(System.out);
}
/**
* selkeä tulostus
*/
public void vastaaKalle() {
etunimi = "Kalle";
sukunimi = "Rovanperä";
ika = 25;
kotipaikkakunta = "Jyväskylä";
seura = "Toyota Gazoo Racing WRT";
rallienMaara = 24;
voitetutRallit = 24;
Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit);
henkilo.tulosta(System.out);
}
/**
* @return tunnusnro
......@@ -82,6 +114,16 @@ public class Henkilo {
return henkilonTunnusNro;
}
/**
* @param numero numero
*/
public void setHenkilonTunnusNro(int numero) {
henkilonTunnusNro = numero;
// jos tunnusnumero on varattu, seuraavaa numeroa kasvatetaan yhtä suuremmaksi kuin hlon tunnusnro
if (henkilonTunnusNro >= seuraavaNro) seuraavaNro = henkilonTunnusNro + 1;
}
/**
* Alustaa henkilön
*/
......@@ -125,11 +167,27 @@ public class Henkilo {
/**
* @return henkilön nimi
* @example
* <pre name="test">
* Henkilo henkilo = new Henkilo();
* henkilo.vastaaKalle();
* henkilo.getNimi() =R= "Kalle Rovanperä";
*/
public String getNimi() {
return this.etunimi + " " + this.sukunimi;
}
/*
* Palauttaa tiedot tiedostoon tallennettavana merkkijonona
* @return henkilon tiedot merkkijonona
* @example
* <pre name="test">
* Henkilo henkilo = new Henkilo();
* henkilo.parse("2|Rovanperä|Kalle|");
* henkilo.toString().startsWith("2|Rovanperä|Kalle|") === true;
* </pre>
*/
@Override
public String toString() {
return "" +
......@@ -143,6 +201,36 @@ public class Henkilo {
voitetutRallit + "|";
}
/**
* Pilkkoo henkilötiedot osiin merkkijonosta
* Mukana myös setHenkilonTunnusNro() mikä pitää huolen henkilön tunnusnumerosta
* @param rivi rivi joka pilkotaan osiin
* @example
* <pre name="test">
* Henkilo henkilo = new Henkilo();
* henkilo.parse("2|Rovanperä|Kalle|");
* henkilo.getHenkilonTunnusNro()===2;
* henkilo.toString().startsWith("2|Rovanperä|Kalle|")===true;
* henkilo.rekisteroi();
* int ht = henkilo.getHenkilonTunnusNro();
* henkilo.parse(""+(ht+20));
* henkilo.rekisteroi();
* henkilo.getHenkilonTunnusNro() === ht+20+1;
* </pre>
*/
public void parse(String rivi) {
StringBuffer sb = new StringBuffer(rivi);
setHenkilonTunnusNro(Mjonot.erota(sb, '|', getHenkilonTunnusNro())); // seuraavan numeron käsittely
sukunimi = Mjonot.erota(sb, '|', sukunimi);
etunimi = Mjonot.erota(sb, '|', etunimi);
ika = Mjonot.erota(sb, '|', ika);
kotipaikkakunta = Mjonot.erota(sb, '|', kotipaikkakunta);
seura = Mjonot.erota(sb, '|', seura);
rallienMaara = Mjonot.erota(sb, '|', rallienMaara);
voitetutRallit = Mjonot.erota(sb, '|', voitetutRallit);
}
/**
* @param args ei käytössä
*/
......
......@@ -3,7 +3,10 @@ package RalliJava;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Scanner;
//import fi.jyu.mit.ohj2.Mjonot;
//import java.util.ArrayList;
//import java.util.List;
......@@ -32,6 +35,23 @@ public class Henkilot {
/**
* @param henkilo lisättävä henkilö
* @throws SailoException säilö
* @example
* <pre name="test">
* #THROWS SailoException
* Henkilot henkilot = new Henkilot();
* Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo();
* henkilot.getLkm() === 0;
* henkilot.lisaa(henkilo1); henkilot.getLkm()===1;
* henkilot.lisaa(henkilo2); henkilot.getLkm()===2;
* henkilot.lisaa(henkilo1); henkilot.getLkm()===3;
* henkilot.anna(0)===henkilo1;
* henkilot.anna(1)===henkilo2;
* henkilot.anna(2)===henkilo1;
* henkilot.anna(3)===henkilo1; #THROWS IndexOutOfBoundsException
* henkilot.lisaa(henkilo1); henkilot.getLkm()===4;
* henkilot.lisaa(henkilo1); henkilot.getLkm()===5;
* henkilot.lisaa(henkilo2); #THROWS SailoException
* </pre>
*/
public void lisaa(Henkilo henkilo) throws SailoException {
if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
......@@ -57,6 +77,30 @@ public class Henkilot {
throw new SailoException("Tiedosto " + tiedosto.getAbsolutePath());
}
}
/**
* @param hakemisto mistä haetaan
* @throws SailoException jos tiedoston lukemisessa jotain ongelmaa
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
String tiedostonNimi = hakemisto + "/nimet.dat";
File tiedosto = new File(tiedostonNimi);
try (Scanner in = new Scanner(new FileInputStream(tiedosto))) {
while (in.hasNext() ) { // jos on seuraava olemassa niin luetaan seuraava nimi
String s = in.nextLine();
if (s == null || "".equals(s) || s.charAt(0) == ';') continue;
Henkilo henkilo = new Henkilo();
henkilo.parse(s); //TODO: PARSE MJONOT.JYU juttu!!!!!
lisaa(henkilo);
}
} catch (FileNotFoundException e) {
throw new SailoException("Ei saa luettua tiedostoa " + tiedostonNimi);
}
}
/**
* @param rallinTunnusNro tarkasteltavan rallin tunnusnumero
......@@ -109,6 +153,13 @@ public class Henkilot {
public static void main(String[] args) {
Henkilot henkilot = new Henkilot();
try {
henkilot.lueTiedostosta("kerho");
} catch (SailoException ex) {
System.err.println(ex.getMessage());
}
Henkilo rovis = new Henkilo();
Henkilo asunmaa = new Henkilo();
Henkilo elfyn = new Henkilo();
......@@ -123,13 +174,13 @@ public class Henkilot {
try {
henkilot.lisaa(rovis);
henkilot.lisaa(asunmaa);
henkilot.lisaa(elfyn);
henkilot.lisaa(elfyn);
System.out.println("==================== Testi ======================");
for (int i = 0; i < henkilot.getLkm(); i++) {
Henkilo henkilo = henkilot.anna(i);
System.out.println("Henkilo nro: " + i);
System.out.println("Henkilo nro: " + (i+1));
henkilo.tulosta(System.out);
}
......@@ -137,6 +188,7 @@ public class Henkilot {
System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii
}
// tallentaminen hakemistoon "kerho"
try {
henkilot.tallenna("kerho");
} catch (SailoException e) {
......
......@@ -5,6 +5,8 @@ import java.util.List;
/**
* @author idamk
* @version 25.2.2025
* TODO: nimien toistuvuustarkistin
* TODO:
*
*/
public class Rekisteri {
......@@ -57,6 +59,7 @@ public class Rekisteri {
return henkilot.anna(i);
}
/**
* @param henkilo Henkilö kenen rallit halutaan tietää
* @return listan näistä ralleista
......
package RalliJava.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import RalliJava.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.26 10:56:37 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class HenkiloTest {
// Generated by ComTest BEGIN
/** testRekisteroi32 */
@Test
public void testRekisteroi32() { // Henkilo: 32
Henkilo henkilo1 = new Henkilo();
assertEquals("From: Henkilo line: 34", 0, henkilo1.getHenkilonTunnusNro());
henkilo1.rekisteroi();
Henkilo henkilo2 = new Henkilo();
henkilo2.rekisteroi();
int ht1 = henkilo1.getHenkilonTunnusNro();
int ht2 = henkilo2.getHenkilonTunnusNro();
assertEquals("From: Henkilo line: 40", ht2-1, ht1);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testGetNimi171 */
@Test
public void testGetNimi171() { // Henkilo: 171
Henkilo henkilo = new Henkilo();
henkilo.vastaaKalle();
{ String _l_=henkilo.getNimi(),_r_="Kalle Rovanperä"; if ( !_l_.matches(_r_) ) fail("From: Henkilo line: 174" + " does not match: ["+ _l_ + "] != [" + _r_ + "]");};
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString185 */
@Test
public void testToString185() { // Henkilo: 185
Henkilo henkilo = new Henkilo();
henkilo.parse("2|Rovanperä|Kalle|");
assertEquals("From: Henkilo line: 188", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testParse210 */
@Test
public void testParse210() { // Henkilo: 210
Henkilo henkilo = new Henkilo();
henkilo.parse("2|Rovanperä|Kalle|");
assertEquals("From: Henkilo line: 213", 2, henkilo.getHenkilonTunnusNro());
assertEquals("From: Henkilo line: 214", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|"));
henkilo.rekisteroi();
int ht = henkilo.getHenkilonTunnusNro();
henkilo.parse(""+(ht+20));
henkilo.rekisteroi();
assertEquals("From: Henkilo line: 219", ht+20+1, henkilo.getHenkilonTunnusNro());
} // Generated by ComTest END
}
\ No newline at end of file
package RalliJava.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import RalliJava.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.26 11:05:27 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class HenkilotTest {
// Generated by ComTest BEGIN
/**
* testLisaa39
* @throws SailoException when error
*/
@Test
public void testLisaa39() throws SailoException { // Henkilot: 39
Henkilot henkilot = new Henkilot();
Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo();
assertEquals("From: Henkilot line: 43", 0, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 44", 1, henkilot.getLkm());
henkilot.lisaa(henkilo2); assertEquals("From: Henkilot line: 45", 2, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 46", 3, henkilot.getLkm());
assertEquals("From: Henkilot line: 47", henkilo1, henkilot.anna(0));
assertEquals("From: Henkilot line: 48", henkilo2, henkilot.anna(1));
assertEquals("From: Henkilot line: 49", henkilo1, henkilot.anna(2));
try {
assertEquals("From: Henkilot line: 50", henkilo1, henkilot.anna(3));
fail("Henkilot: 50 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 51", 4, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 52", 5, henkilot.getLkm());
try {
henkilot.lisaa(henkilo2);
fail("Henkilot: 53 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment