Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • heevtont/ohj2
  • ojmannex/ohj2
  • veosvuol/ohj2
  • teoilalo/ohj2
  • pakakata/ohj2
  • tie/ohj2/2023k/ohj2
  • jupesate/ohj2
  • olrutane/ohj2
  • vesal/ohj-2-k-23
  • alejarta/ohj2
  • romaasun/ohj2
  • maxvitik/ohj2
  • jatakarj/ohj2
  • forsheal/harjoitustyo
  • paemhiet/ohj2
  • onhuhtal/ohj2
  • peukteni/ohj2
  • kallvaxu/ohj-2-ht-kasityorekisteri
  • piipjuhe/ohj2
  • alanenee/ohj2
  • osterava/ohj2
  • savolpet/ohj2
  • jaalsiik/ohj2
  • jbpalola/ohj2
  • khakarpp/ohj2
  • sokapalo/ohj2
  • luomkohe/ohj2
  • ltahonex/ohj2
  • hejojurv/ohj-2-sukupuu
  • karkhkxy/ohj2
  • vewaheik/ohj2
  • tejumeri/ohj2
  • erkkjjyv/ohj2
  • kkautio/ohj2
  • jaeianro/ohj2
  • olmisalo/ohj2
  • ukkolaaa/ohj2
  • esbrunil/ohj2
  • pjsavola/ohj2
  • mosaluht/jasenrekisteri
  • nviianen/ohj2
  • eetpatsu/ohj2
  • iinelipi/ohj2
  • kaupkama/ohj2
  • myyryejk/ohj-2-ht-myyry
  • mnjtiili/ohj2
  • leppanm/ohj2
  • malineps/ohj2
  • antulepp/ohj-2-b
  • helatukk/ohj2
  • aaahalom/ohj2
  • juvonevi/ruokanaattori
  • atkaanhe/ohj2
  • jypemiko/ohj2-23
  • anuemiko/ohj2
  • lvvuolle/ohj2
  • valkeiti/ohj-2
  • suvileos/ohj2
  • mikpekpu/ohj2
  • savevalo/ohj2
  • martiksm/ohj2
  • enlejuhe/ohj2
  • eealhakk/ohj-2-ht
  • savomaaa/ohj2
  • elkrleht/ohj2
  • maospelt/ohj2
  • tufiras/ohj2
  • lihavavy/ohj2
  • pepihlaj/ohj2
  • urpiteju/ohj2
  • aetakala/ohj-2-ht
  • tjkajant/ohj2
  • remoneve/ohj2
  • jeismont/ohj2
  • mietanai/ohj2
  • inkilaka/ohj2
  • pmruusu/ohj2
  • pykakimp/reseptirekisteriprojekti
  • mielarju/ohj2
  • jmjleixu/ohj2
  • kalakoiv/ohj2
  • meamalxv/ohj2
  • heinota/ohj2
  • majauusi/ohj2
  • tusakki/ohj2
  • jjpahkin/ohj2
  • nurmimk/ohj2
  • mieemalo/ohj2
  • idmahako/ohj2
  • ajrautia/ohj2
  • evaltaiv/ohj2
  • vevajoki/ohj2
  • vijumato/ohj2
  • nikrantt/ohj2
  • kupialnx/ohj2
  • jujukest/ohj2ht
  • aojuntun/ohj2
  • jhthorxu/ohj2
  • aaaalto/ohj2
  • haggpoo/ohj2
  • mialniem/ohj2
  • marteevi/ohj2
  • amslappi/ohj2
  • jiheikzt/ohj2
  • elbeeltv/ohj2
  • virommss/ohj2
  • tootuoka/ohj2
  • hasultxt/ohj-2
  • laanmaat/ohj-2-2023
  • laueerjo/ohj2
  • jutakoir/osrsprocesspal
  • alalojap/ohj2
  • joaahirv/ohj2
  • venmaamo/ohj2
  • jejaolpa/ohj2
  • anbudano/ohj2
  • peolkyll/ohj2
  • blomerjo/ohj2
  • aasahonk/ohj2
  • lapahama/ohj2
  • karpot/ohj2
  • psbroman/ohj2
  • vemakael/ohj2
  • alninybe/harkkatyo
  • tosakorh/ohj-2-k-23
  • ntkumpul/ntkumpul
  • riiijoko/ohj-2-2023
127 results
Show changes
Showing
with 1171 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<ToolBar prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<items>
<Button mnemonicParsing="false" onAction="#handlePoistu" text="Poistu" />
</items>
</ToolBar>
</bottom>
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Osallistujalista">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="300.0" prefWidth="590.0">
<children>
<ScrollPane layoutX="12.0" prefHeight="299.0" prefWidth="578.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="297.0" prefWidth="577.0" />
</content>
</ScrollPane>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="Tulokset">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ScrollPane layoutX="11.0" layoutY="9.0" prefHeight="290.0" prefWidth="582.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="291.0" prefWidth="582.0" />
</content>
</ScrollPane>
</children>
</AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="402.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController">
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Uusi ralli">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<GridPane layoutX="46.0" layoutY="33.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" />
<RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="32.79999389648438" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Rallin nimi" GridPane.columnIndex="1" />
<Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Ajankohta" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="2" />
<ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="3" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="4" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="5" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="6" />
<Label text="Tuloslista" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label text="Osallistujalista" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</GridPane>
</children></AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Tiedosto">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Muokkaa">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Apua">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
</children>
</HBox>
</bottom>
</BorderPane>
<?xml version="1.0" encoding="ASCII"?>
<anttasks:AntTask xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:anttasks="http://org.eclipse.fx.ide.jdt/1.0" buildDirectory="${project}/build">
<deploy>
<application name="kerho"/>
<info/>
</deploy>
<signjar/>
</anttasks:AntTask>
File moved
kerho/kuvat/aloitusikkuna.png

13.1 KiB

kerho/kuvat/eihakutuloksia.png

9.98 KiB

kerho/kuvat/henkhakutulos.png

32.7 KiB

kerho/kuvat/paaikkuna.png

38.8 KiB

kerho/kuvat/rallihakutulos.png

55.9 KiB

kerho/kuvat/tarkastele.png

44.6 KiB

kerho/kuvat/uusihenk.png

19.3 KiB

kerho/kuvat/uusiralli.png

53.6 KiB

package RalliJava;
import java.io.PrintStream;
import java.util.Random;
import fi.jyu.mit.ohj2.Mjonot;
/**
* @author idamk
* @version 12.2.2025
* Vois kirjottaa luokan CRC-kortin vastuut
*
*/
public class Henkilo {
private int henkilonTunnusNro;
private String etunimi = "";
private String sukunimi = "";
private int ika = 0;
private int rallienMaara = 0;
private int voitetutRallit = 0;
private String seura = "";
private String kotipaikkakunta = "";
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 int rekisteroi() {
henkilonTunnusNro = seuraavaNro;
seuraavaNro++;
return henkilonTunnusNro;
}
/**
* Vastaa randomisti eri henkilöiden tietoja
*/
public void vastaahlo() {
Random r = new Random();
int n = r.nextInt(4);
int s = r.nextInt(4);
int sr = r.nextInt(5);
int kp = r.nextInt(7);
ika = r.nextInt(66);
rallienMaara = r.nextInt(100);
voitetutRallit = (rallienMaara - r.nextInt(rallienMaara));
if(n==0) etunimi = "Kalle";
if(n==1) etunimi = "Teemu";
if(n==2) etunimi = "Oskari";
if(n==3) etunimi = "Mikko";
if(s==0) sukunimi = "Rovanperä";
if(s==1) sukunimi = "Asunmaa";
if(s==2) sukunimi = "Sokka";
if(s==3) sukunimi = "Heikkilä";
if(sr==0) seura = "Jyväskylän ralliveikot";
if(sr==1) seura = "Jämsän autopojat";
if(sr==2) seura = "Kuopion nopeet";
if(sr==3) seura = "Rovaniemen nopeet shamaanit";
if(sr==4) seura = "Keuruun pikamannet";
if(kp==0) kotipaikkakunta = "Jyväskylä";
if(kp==1) kotipaikkakunta = "Jämsä";
if(kp==2) kotipaikkakunta = "Kuopio";
if(kp==3) kotipaikkakunta = "Seinäjoki";
if(kp==4) kotipaikkakunta = "Hyvinkää";
if(kp==5) kotipaikkakunta = "Rovaniemi";
if(kp==6) kotipaikkakunta = "Keuruu";
Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit);
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
*/
public int getHenkilonTunnusNro() {
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
*/
public Henkilo() {
//ei välttämättä tarttis
}
/**
* @param tunnusNro id
* @param etunimi nimi
* @param sukunimi sukunimi
* @param ika ikä
* @param kotipaikkakunta mistä kotoisin
* @param seura seura
* @param rallienMaara rallien määrä
* @param voitetutRallit voitetut rallit
*/
public Henkilo(int tunnusNro, String etunimi, String sukunimi, int ika, String kotipaikkakunta, String seura, int rallienMaara, int voitetutRallit) {
this.etunimi = etunimi;
this.henkilonTunnusNro = tunnusNro;
this.sukunimi = sukunimi;
this.ika = ika;
this.seura = seura;
this.kotipaikkakunta = kotipaikkakunta;
this.rallienMaara = rallienMaara;
this.voitetutRallit = voitetutRallit;
}
/**
* @param tulostettava tietovirta mitä tulostetaan
*/
public void tulosta(PrintStream tulostettava) {
tulostettava.println(String.format("%03d", henkilonTunnusNro, 3) + " " + etunimi + " " + sukunimi + ", ikä: " + ika);
tulostettava.println("Kotipaikkakunta: " + kotipaikkakunta);
tulostettava.println("Seura: " + seura);
tulostettava.println("Osallistunut " + rallienMaara + " ralliin");
tulostettava.println("Voittanut niistä " + voitetutRallit + ".");
System.out.println("");
}
/**
* @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 "" +
getHenkilonTunnusNro() + "|" +
sukunimi + "|" +
etunimi + "|" +
ika + "|" +
kotipaikkakunta + "|" +
seura + "|" +
rallienMaara + "|" +
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ä
*/
public static void main(String[] args) {
Henkilo rovis = new Henkilo();
Henkilo asunmaa = new Henkilo();
Henkilo elfyn = new Henkilo();
rovis.rekisteroi();
rovis.vastaahlo();
rovis.tulosta(System.out);
asunmaa.rekisteroi();
asunmaa.vastaahlo();
asunmaa.tulosta(System.out);
elfyn.rekisteroi();
elfyn.vastaahlo();
elfyn.tulosta(System.out);
}
}
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;
/**
* @author idamk
* @version 12.2.2025
*
*/
public class Henkilot {
private static final int MAX_HENKILOT = 5;
int lkm = 0;
private Henkilo[] alkiot;
/**
* luodaan alustava taulukko
*/
public Henkilot() {
this.alkiot = new Henkilo[MAX_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");
this.alkiot[this.lkm] = henkilo;
this.lkm++;
}
/**
* Tallentaa henkilön tiedot tiedostoon
* @param hakemisto mihin hakemistoon tallentaa
* @throws SailoException jos tallennus epäonnistuu
*/
public void tallenna(String hakemisto) throws SailoException {
File tiedosto = new File(hakemisto + "/nimet.dat");
try (PrintStream out = new PrintStream(new FileOutputStream(tiedosto,true))){
// jos asiat menee avauksessa hyvin, lähdetään käymään nimiä läpi
for (int i = 0; i < this.getLkm(); i++) {
Henkilo henkilo = this.anna(i);
out.println(henkilo.toString()); //pyydetään henkilöä muuttumaan merkkijonoksi
}
} catch (FileNotFoundException e) {
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
* @return listan ilmottautuneista
*/
//public List<Henkilo> annaOsallistujat(int rallinTunnusNro) {
// List<Henkilo> ilmottautuneet = new ArrayList<Henkilo>();
// return null;
//}
/**
* Haetaan kaikki henkilön osallistumat rallit.
* Käy rallit läpi ja etsii sieltä ne,
* mihin kysytty henkilö on osallistunut
* @param tunnusNro rallin tunnusnumero
* @return lista ralleista johon haluttu henkilö on osallistunut
*/
/*public List<Ralli> annaRallit(int tunnusNro) {
List<Ralli> loydetyt = new ArrayList<Ralli>();
// Käy rallit läpi ja etsii sieltä ne, mihin kysytty henkilö on osallistunut
for (Ralli ralli:alkiot) //ITERAATTORI
if(ralli.getHenkilonTunnusNro() == tunnusNro) loydetyt.add(ralli);
return loydetyt;
*/
/**
* @return lkm
*/
public int getLkm() {
return lkm;
}
/**
* @param i indeksi
* @return henkilön
* @throws IndexOutOfBoundsException laiton indeksi
*/
public Henkilo anna(int i) throws IndexOutOfBoundsException {
if (i < 0 || this.lkm <= i)
throw new IndexOutOfBoundsException("Laiton indeksi senkin kaulin: " + i);
return alkiot[i];
}
/**
* @param args ei käytössä
*/
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();
rovis.rekisteroi();
rovis.vastaahlo();
asunmaa.rekisteroi();
asunmaa.vastaahlo();
elfyn.rekisteroi();
elfyn.vastaahlo();
try {
henkilot.lisaa(rovis);
henkilot.lisaa(asunmaa);
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+1));
henkilo.tulosta(System.out);
}
} catch (SailoException e) {
System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii
}
// tallentaminen hakemistoon "kerho"
try {
henkilot.tallenna("kerho");
} catch (SailoException e) {
System.err.println(e.getMessage());
}
}
}
package RalliJava;
import java.io.PrintStream;
//import java.util.List;
import java.util.Random;
/**
* @author idamk
* @version 12.2.2025
*
*/
public class Ralli {
/**
* @author idamk
* @version 12.2.2025
* Vois kirjottaa luokan CRC-kortin vastuut
*
*/
private int rallinTunnusNro;
private int henkilonTunnusNro;
private String rallinNimi = "";
private String sijainti = "";
private int osallistujienMaara;
private String jarjestaja = "";
//private String pvm = "";
private int ilmottautumismaksu = 0;
//private String nettisivut = "";
//private String tulokset = "";
//private List<Henkilo> ilmottautuneet;
private static int seuraavaNro = 0;
/**
* Alustaa henkilön
*/
public Ralli() {
//ei välttämättä tarttis
}
/**
* @param henkilonTunnusNro ilmottaununeen henkilon tunnusnumero
*/
public Ralli(int henkilonTunnusNro) {
this.henkilonTunnusNro = henkilonTunnusNro;
}
/**
* @return rallille seuraava identifioiva tunnusnumero
*
*/
public int rekisteroi() {
rallinTunnusNro = seuraavaNro;
seuraavaNro++;
return rallinTunnusNro;
}
/**
* Vastaa randomisti eri henkilöiden tietoja
* @param nro tunnusnumero
*/
public void vastaaRalli(int nro) {
henkilonTunnusNro = nro;
Random r = new Random();
int n = r.nextInt(4);
int sr = r.nextInt(5);
int kp = r.nextInt(7);
osallistujienMaara = r.nextInt(66);
//pvm = r.nextInt(100);
ilmottautumismaksu = r.nextInt(100);
if(n==0) rallinNimi = "Ralliräminät";
if(n==1) rallinNimi = "Kilvanajo";
if(n==2) rallinNimi = "Ralli123";
if(n==3) rallinNimi = "Pärinät";
if(sr==0) jarjestaja = "Jyväskylän ralliveikot";
if(sr==1) jarjestaja = "Jämsän autopojat";
if(sr==2) jarjestaja = "Kuopion nopeet";
if(sr==3) jarjestaja = "Rovaniemen nopeet shamaanit";
if(sr==4) jarjestaja = "Keuruun pikamannet";
if(kp==0) sijainti = "Jyväskylä";
if(kp==1) sijainti = "Jämsä";
if(kp==2) sijainti = "Kuopio";
if(kp==3) sijainti = "Seinäjoki";
if(kp==4) sijainti = "Hyvinkää";
if(kp==5) sijainti = "Rovaniemi";
if(kp==6) sijainti = "Keuruu";
//Ralli ralli = new Ralli(tunnusNro, rallinNimi, sijainti, jarjestaja, osallistujienMaara, ilmottautumismaksu);
//ralli.tulosta(System.out);
}
/**
* Kun halutaan tietää jonkun rallin identifioiva tunnusnumero
* @return tunnusnro
*/
public int getRallinTunnusNro() {
return rallinTunnusNro;
}
/**
* @return henkilon tunnusnumero
*/
public int getHenkilonTunnusNro() {
return henkilonTunnusNro;
}
/**
* @param tunnusNro id
* @param rNimi nimi
* @param sijainti missä
* @param jarjestaja seura
* @param osallistujienMaara määrä
* @param ilmottautumismaksu koko
*/
/*
public Ralli(int tunnusNro, String rNimi, String sijainti, String jarjestaja, int osallistujienMaara, int ilmottautumismaksu) {
this.tunnusNro = tunnusNro;
this.rallinNimi = rNimi;
this.jarjestaja = jarjestaja;
this.sijainti = sijainti;
this.osallistujienMaara = osallistujienMaara;
this.ilmottautumismaksu = ilmottautumismaksu;
}
*/
/**
* @param tulostettava tietovirta mitä tulostetaan
*/
public void tulosta(PrintStream tulostettava) {
tulostettava.println(String.format("%03d", rallinTunnusNro, 3) + " " + rallinNimi);
tulostettava.println("Sijainti: " + sijainti);
tulostettava.println("Järjestäjäseura: " + jarjestaja);
tulostettava.println("Osallistujia " + osallistujienMaara + "kpl");
tulostettava.println("Ilmottautumismaksu " + ilmottautumismaksu + "€");
System.out.println("");
}
/**
* @return rallin nimi
*/
public String getNimi() {
return this.rallinNimi;
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
Ralli kuopio = new Ralli();
Ralli pohjanmaa = new Ralli();
kuopio.rekisteroi();
kuopio.vastaaRalli(0);
kuopio.tulosta(System.out);
pohjanmaa.rekisteroi();
pohjanmaa.vastaaRalli(1);
pohjanmaa.tulosta(System.out);
//elfyn.rekisteroi();
//elfyn.vastaahlo();
//elfyn.tulosta(System.out);
}
}
package RalliJava;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author idamk
* @version 12.2.2025
*
*/
public class Rallit {
private final Collection<Ralli> alkiot = new ArrayList<Ralli>();
int lkm = 0;
/**
* Alustus
*/
public Rallit() {
//Ei tarvi tehdä mitään
}
/**
* Haetaan kaikki henkilön osallistumat rallit.
* Käy rallit läpi ja etsii sieltä ne,
* mihin kysytty henkilö on osallistunut
* @param tunnusNro rallin tunnusnumero
* @return lista ralleista johon haluttu henkilö on osallistunut
*/
public List<Ralli> annaRallit(int tunnusNro) {
List<Ralli> loydetyt = new ArrayList<Ralli>();
// Käy rallit läpi ja etsii sieltä ne, mihin kysytty henkilö on osallistunut
for (Ralli ralli:alkiot) //ITERAATTORI
if(ralli.getHenkilonTunnusNro() == tunnusNro) loydetyt.add(ralli);
return loydetyt;
}
/**
* @param ralli lisättävä
*/
public void lisaa(Ralli ralli) {
alkiot.add(ralli);
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
Rallit rallit = new Rallit();
Ralli pohjanmaa = new Ralli();
Ralli kuopio = new Ralli();
Ralli secto = new Ralli();
pohjanmaa.rekisteroi();
pohjanmaa.vastaaRalli(0);
kuopio.rekisteroi();
kuopio.vastaaRalli(1);
secto.rekisteroi();
secto.vastaaRalli(1);
rallit.lisaa(pohjanmaa);
rallit.lisaa(kuopio);
rallit.lisaa(secto);
pohjanmaa.tulosta(System.out);
kuopio.tulosta(System.out);
secto.tulosta(System.out);
System.out.println("======================== Rallit testi ========================");
List<Ralli> rallit2 = rallit.annaRallit(2);
// Käy listan läpi ja tulostaa halutun (yläällä indeksi) rallin luoduista
for (Ralli ral : rallit2) {
System.out.print(ral.getHenkilonTunnusNro() + " ");
ral.tulosta(System.out);
}
}
}
\ No newline at end of file
package RalliJava;
import java.util.List;
/**
* @author idamk
* @version 25.2.2025
* TODO: nimien toistuvuustarkistin
* TODO:
*
*/
public class Rekisteri {
private final Henkilot henkilot = new Henkilot();
private final Rallit rallit = new Rallit();
/**
* @return lkm
*/
public int getHenkiloita() {
return henkilot.getLkm();
}
/**
* Lisää uuden henkilön
* @param henkilo lisättävä
* @throws SailoException liikaa alkioita
*/
public void lisaa (Henkilo henkilo) throws SailoException{
henkilot.lisaa(henkilo);
}
/**
* @param ralli lisättävä ralli
*/
public void lisaa (Ralli ralli) {
rallit.lisaa(ralli);
}
/**
* @param rekisterinHakemistonNimi hakemiston nimi
* @throws SailoException jos tallennus ei onnistu
*/
public void tallenna(String rekisterinHakemistonNimi) throws SailoException {
henkilot.tallenna(rekisterinHakemistonNimi);
}
/**
* @param i indeksi
* @return henkilön tiedot
*/
public Henkilo annaHenkilo(int i) {
return henkilot.anna(i);
}
/**
* @param henkilo Henkilö kenen rallit halutaan tietää
* @return listan näistä ralleista
*/
public List<Ralli> annaRallit(Henkilo henkilo){
return rallit.annaRallit(henkilo.getHenkilonTunnusNro());
}
/**
* Palauttaa tarkasteltavan rallin osallistujalistan, eli ilmottautuneet
* @param ralli ralli jonka osallistujalista halutaan
* @return osallistujalistan
*/
//public List<Henkilo> annaOsallistujat(Ralli ralli) {
// return rallit.annaOsallistujat(ralli.getRallinTunnusNro());
//}
/**
* @param args ei käytössä
* @throws SailoException liikaa
*/
public static void main(String[] args) throws SailoException {
Rekisteri rekisteri = new Rekisteri();
try {
//Lisätään henkilöitä
Henkilo rovis = new Henkilo();
Henkilo asunmaa = new Henkilo();
Henkilo elfyn = new Henkilo();
rovis.rekisteroi();
rovis.vastaahlo();
asunmaa.rekisteroi();
asunmaa.vastaahlo();
elfyn.rekisteroi();
elfyn.vastaahlo();
rekisteri.lisaa(rovis);
rekisteri.lisaa(asunmaa);
rekisteri.lisaa(elfyn);
//Lisätään ralleja
//Rallit rallit = new Rallit();
Ralli pohjanmaa = new Ralli();
Ralli kuopio = new Ralli();
Ralli secto = new Ralli();
pohjanmaa.rekisteroi();
pohjanmaa.vastaaRalli(asunmaa.getHenkilonTunnusNro());
kuopio.rekisteroi();
kuopio.vastaaRalli(rovis.getHenkilonTunnusNro());
secto.rekisteroi();
secto.vastaaRalli(asunmaa.getHenkilonTunnusNro());
rekisteri.lisaa(pohjanmaa);
rekisteri.lisaa(kuopio);
rekisteri.lisaa(secto);
pohjanmaa.tulosta(System.out);
kuopio.tulosta(System.out);
secto.tulosta(System.out);
System.out.println("=================== Testiä =====================");
//Tulostetaan henkilön tiedot
for (int i=0; i<rekisteri.getHenkiloita(); i++) {
Henkilo henkilo = rekisteri.annaHenkilo(i);
System.out.println("Henkilö paikassa: " + i);
henkilo.tulosta(System.out);
List<Ralli> rallit2 = rekisteri.annaRallit(henkilo);
// Käy listan läpi ja tulostaa halutun (yläällä indeksi) rallin luoduista
for (Ralli ral : rallit2) {
System.out.print(ral.getHenkilonTunnusNro() + " ");
ral.tulosta(System.out); }}
int lkm = rekisteri.getHenkiloita();
System.out.println("Henkilöitä on nyt " + lkm + "!");
} catch (SailoException ex) {
System.out.println(ex.getMessage());
}
}
}
package RalliJava;
/**
* @author idamk
* @version 25.2.2025
* Error jos jäseniä liikaa
*/
public class SailoException extends Exception{
private static final long serialVersionUID = 1L;
/**
* @param viesti lähetettävä viesti
*/
public SailoException(String viesti) {
super(viesti);
}
}
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