Dúvida em um exercício - Java.io Correspondência de Arquivos

O enunciado da pergunta está em anexo.

Eu fiz o básico, mas to me complicando no resto:Eu não consegui entender bem esse assunto, então não resolvam para mim e sim me auxiliem nas dúvidas.

Esse CreateTextFile faz as transferencias. (trans.txt), como ficaria o arquivo do registro mestre?

AccountRecord.java

[code]

public class AccountRecord {
private int account;
private String firstName;
private String lastName;
private double balance;

public AccountRecord(){
	this(0,"","",0.0); //chama o construtor com quatro argumentos
}
//inicializa um registro
public AccountRecord(int acct, String first, String last, double bal ){
	setAccount(acct);
	setFirstName(first);
	setLastName(last);
	setBalance(bal);
}

//configura numero conta
public void setAccount(int acct){
	account = acct;
}

public int getAccount(){
	return account;
}

public void setFirstName(String first){
	firstName = first;
}

public String getFirstName(){
	return firstName;
}

public void setLastName(String last){
	lastName = last;
}

public String getLastName(){
	return lastName;
}

public void setBalance(double bal){
	balance = bal;
}

public double getBalance(){
	return balance;
}

public double combine(TransactionRecord object){
	return this.balance + object.getAmount();
}

}[/code]

TransactionRecord.java

public class TransactionRecord {
	private int accountNumber;
	private double amount;
	
	public void setAccountNumber(int acc){
		this.accountNumber = acc;
	}
	
	public int getAccountNumber(){
		return accountNumber;
	}
	
	public void setAmount(double money){
		this.amount = money;
	}
	
	public double getAmount(){
		return amount;
	}
}

CreateTextFile.java



import java.io.FileNotFoundException;
import java.lang.SecurityException;
import java.util.Formatter;
import java.util.FormatterClosedException;
import java.util.NoSuchElementException;
import java.util.Scanner;


public class CreateTextFile {
	private Formatter output;
	
	public void openFile(){
		try{
			output = new Formatter("trans.txt");
		}
		catch(SecurityException securityException){
			System.err.println("Você não tem acesso a esse arquivo");
			System.exit(1);
		}
		catch(FileNotFoundException filesNotFoundException){
			System.err.println("Erro durante a criação do arquivo.");
			System.exit(1);
		}
	}//fim do método openFile
	
	public void addRecords(){
		AccountRecord record = new AccountRecord();
		
		Scanner input = new Scanner(System.in);
		
		System.out.printf("%s\n%s\n%s\n%s", "Para terminar a entrada,digite o indicador do final do arquivo",
				"quando você for dar um entrada." ,
				"Em UNIX/LINUX/Mac OS X digite <ctrl>d então pressione Enter",
				"Em Windows digite <ctrl>z então Pressione Enter.\n\n");
		
		System.out.printf("%s\n", "Entre com um número de conta (> 0),nome,sobrenome e saldo: ");
		
		while(input.hasNext()){
			try{
				//recupera os dados para a saída
				record.setAccount(input.nextInt());
				record.setFirstName(input.next());
				record.setLastName(input.next());
				record.setBalance(input.nextDouble());
				
				if(record.getAccount() > 0){
					//grava um novo arquivo
					output.format("%d %s %s %.2f\n", record.getAccount(), record.getFirstName(), record.getLastName(), record.getBalance());
				}//fim do if
				else{
					System.out.println("Número da Conta precisa ser maior que 0");
				}
			}//fim do try
			catch(FormatterClosedException formatterClosedException){
				System.err.println("Erro durante a escrita no arquivo.");
				return;
			}//fim do catch
			catch(NoSuchElementException elementException){
				System.err.println("\nEntrada inválida.Por favor tente de novo.");
				input.nextLine(); //descarta entrada do usuário	
			}//fim do catch
			
			System.out.printf("%s %s\n%s", "Entre com um número de conta (> 0),nome,sobrenome e saldo: ", " ?");
		}//fim do while
	}//fim do método addRecords

	//fecha o arquivo
	public void closeFile(){
		if(output != null)
			output.close();
	}
}