Come implementare in Java questo programma?

Realizzare un software per la gestione di un ipotetico campionato di velocità. Il software dovrà avere le seguenti caratteristiche:

il campionato è composto da 10 gare;
ogni corridore avrà associato un numero intero che ne rappresenta "il potere", cioè il corridore con numero più alto può vincere, statisticamente, di più rispetto a un'altro con il numero più basso;
un menù per la gestione delle varie fasi come, ad esempio:
l'inserimento in "ordine alfabetico" di un nuovo atleta;
il caricamento da file dell'elenco degli atleti;
generazione random delle posizioni al traguardo per ciascuna gara;
stampa a video l'ordine dell'arrivo al traguardo della singola gara, ordinata per posizione;
stampa a video della classifica della singola gara, ordinata per punteggio, ricordando che il primo al traguardo guadagna 10 punti, il secondo 8, il terzo 6, il quanto 5 e così fino all'ottava posizione;
stampa a video della classifica di tutto il campionato disputato al momento, ordinata per punteggio, ricordando che il primo al traguardo guadagna 10 punti, il secondo 8, il terzo 6, il quanto 5 e così fino all'ottava posizione;
salva la sessione di lavoro su file.

Ecco quello che sono riuscito a fare finora:
codice:
/*
<<<Problema>>>
Realizzare un software che simuli
i risultati di una competizione fra atleti.

<<<Algoritmo>>>
 * Caricare i nomi della lista degli atleti
 * Aggiungere nuovo atleta da console
 * Generare le posizioni casuali degli atleti in arrivo
 * Stampare gli atleti secondo il loro arrivo

Metodi da creare:
 * Caricare la lista degli atleti da un file .txt
 * Aggiungere un nuovo atleta da console
 * Generare le posizioni casuali degli atleti in arrivo

Tipi di array:
 * i nomi;
 * gli arrivi;
 * gli atleti;

Pseudocodifica:
inizio classe Ris_Comp
dichiarazione e inizializzazione degli attributi:
	private String nomi[];
	private String arrivi[];
	private String atleta[];
	int numeroAtleti = 0;

Ris_Comp()
{
this.atleta = atleta;
this.arrivi = arrivi;
this.nomi = nomi;

atleta = new atleta[10];
arrivi = new arrivi[10];
nomi = new nomi[10];
}

caricaAtleti()
{

}

aggiugiAtleta()
{

}

generaPosizione()
{
int cont;

per(cont = 0; cont<numeroAtleti; cont++)
se (atleta[cont] == (int) Math.random()*10+1)
atleta[cont];

}

fine classe Ris_Comp
*/

import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.FileReader;

class Ris_Comp
{
	//dichiaro e inizializzo gli attributi
	private String nomi[];
	private String arrivi[];
	private String atleta[];
	int numeroAtleti = 0;

	//metodo costruttore
	public void Ris_Comp()
	{
	atleta = new atleta[10];
	arrivi = new arrivi[10];
	nomi = new nomi[10];
	}

	//metodo carica atleti da file .txt
	public void caricaAtleti()
	{
	//filereader e scanner
	}

	//metodo aggiungi atleta da input(tastiera)
	public void aggiugiAtleta()
	{
	Scanner sc = new Scanner(System.in);
	System.out.print("Inserire il nome di un atleta: ");

	}

	//metodo che genera le posizioni di arrivo
	public void generaPosizione()
	{
	int cont;

	for(cont = 0; cont<numeroAtleti;cont++)
		if (atleta[cont] == (int) Math.random()*10 + 1)
	atleta[cont];
	}
}
Grazie in anticipo per tutti i consigli che mi darette!