Sou novo na Programação e estou a estudar Java

Boa tarde pessoal. Sou novo aqui e também em programação estou apreendendo.
Pela quantidade post que encontrei aqui estou certo que aqui tem vários expert na programação e também a linguagem java. tenho esse trabalho e preciso de ajuda.
Não sei onde começar.

Pretende-se implementar um programa para manter os registos telefónicos dos

clientes de uma empresa de telecomunicações e produzir a devida faturação.
Para isso, o programa deverá manipular dois tipos essenciais de registos
(Classe): Cliente e Chamada.
1- Os registos Cliente e Chamada deverão conter a seguinte informação,
respetivamente:
Class Cliente:

  • nome;
  • nº cliente;
  • morada;
  • nº de telefone (String);
  • lista de chamadas.
    Class Chamada:
  • nº de telefone destino;
  • tipo de chamada(F-fixo, I-internacional, T-telemóvel);
  • tempo, em minutos (valor real).
    2- O programa deverá possibilitar as seguintes operações, através de um
    menu:
  • inserir um novo cliente;
  • remover um cliente existente;
  • alterar os dados de um cliente;
  • pesquisar clientes por nº de cliente;
  • pesquisar clientes por qualquer termo do seu nome;
  • inserir uma chamada na lista de chamadas de um cliente;
  • imprimir os dados de um cliente;
  • construir e imprimir a fatura de um dado cliente, tendo em conta o seguinte preçário:
  • chamada telefone fixo = 2.5 dobras / min
  • chamada internacional = 10.4 dobras / min
  • chamada para telemóvel = 1.25 dobras / min
  • exportar a fatura de um dado cliente para um ficheiro de texto ##

Comece criando a classe Chamada com os seguintes atributos:

  • String telefone;
  • char tipo;
  • double tempo;

Depois crie a classe Cliente com os atributos:

  • String nome;
  • String numero;
  • String morada;
  • String telefone;
  • List<Chamada> chamadas;

Por fim, crie a classe Menu fazendo as operações solicitadas.

1 curtida

Okay. staroki. pela ajuda depois exponho os códigos para veres se estou no bom caminho.

Fiz desse geito não sei se poderiam me ajudar a melhorar?
Essa é a class chamada.
public class Chamada {

private String telefone;
char tipo;
double minutos;

public Chamada(String telefone ,char tipo,int minutos) {
	this.telefone=telefone;
	this.tipo=tipo;
	this.minutos=minutos;
}
public void setTelefone(String telefone) {
	telefone=telefone;
}
public String getTelefone() {
	return telefone;	
}
public void tipoChamada(char tipo) {
	tipo=tipo;
}
public char getTipo() {
	return tipo;
}
public void minutos(int minutos) {
	minutos=minutos;
}
public double getMinutos() {
	return minutos;
}

}

e essa é a classe cliente.
public class Cliente {
// os atributos da Class
private String nome;
private int numero;
private String morada;
private String telefone;
Chamada[] cliente;
private int registo_chamadas = 0;

public Cliente() {
}
public Cliente(String nome, int numero, String morada, String telefone) {
	this.nome = nome;
	this.numero = numero;
	this.morada = morada;
	this.telefone = telefone;
	this.cliente = new Chamada[100];
}
// os Guets e sets

public String getNome() {
	return nome;
}
public int getNumero() {
	return numero;
}
public String getMorada() {
	return morada;
}
public String getTelefone() {
	return telefone;
}
public void setNome(String novo_nome) {
	nome = novo_nome;
}
public void setMorada(String nova_morada) {
	morada = nova_morada;
}
public void setTelefone(String novo_telefone) {
	telefone = novo_telefone;
}
public void setChamada(Chamada chamada) {
	cliente = new Chamada[registo_chamadas++];
}

}
E essa é a class menu.
public class Menu {
static Scanner entrada= new Scanner(System.in);
static Cliente[] guardarCliente= new Cliente[500];
static Chamada[] guardarchamada= new Chamada[500];
static int numero=0; static String nome,morada,telefone;
static int pesquisa=0;

public static void main(String[] args) {
	System.out.println("Escolha uma opção");

	int escolha=0;
	do {
		menu();

		escolha=entrada.nextInt();
		entrada.nextLine();
		switch(escolha) {
		case 1:
			cadastro() ;
			break;
		case 2:
			remover();
			break;
		case 3:
			alterarDados();
			break;
		case 4:
			pesquisarClientePeloNumero();
			break;
		case 5:
			pesquisarClienteNome();
			break;
		case 6:
			break;
		case 7:
			pesquisarClienteTelefone(pesquisa);
			break;
		case 8:
			break;
		case 9:
			break;
		}

	}while(escolha!=10);

}
public static void menu() {

	System.out.println("         CADASTRO DO CLIENTE");
	System.out.println("         1-Insere cliente               ");
	System.out.println("         2-Apagar cliente               ");
	System.out.println("         3-Editar os dados de cliente   ");
	System.out.println("         4-Pesquisar cliente por numero ");
	System.out.println("         5-Pesquisar cliente por qual quer termo do seu nome");
	System.out.println("         6-Inserir uma chamada  ");
	System.out.println("         7-Pesquisar cliente por telefone ");
	System.out.println("         8-Imprir fatura ");
	System.out.println("         9-Exportar a fatura de um dado cliente para um ficheiro de texto");
	System.out.println("         10-Terminar");


}
public static void cadastro() {
	inserirNome();

	inserirTelefone();

	inserirMorada();

	System.out.println("O cliente foi cadastrado com os seguintes dados");
	guardarCadastro();

}

public static void inserirNome() {
	int guardarNome=0; 
	System.out.print("Nome do clinte: ");
	nome=entrada.nextLine();
	guardarNome++;  

}
public static void inserirTelefone() {
	int gTelefone=0;
	System.out.print("Numero de telefone: ");
	telefone = entrada.nextLine();
	while (gTelefone < telefone.length() || telefone.length() != 7) {
		if (telefone.charAt(gTelefone)>='0'&&telefone.charAt(gTelefone)<='9'&&telefone.length()==15)
			gTelefone++;
		else if ((telefone.charAt(gTelefone)>='0'&&telefone.charAt(gTelefone) <='9')
				||telefone.length()!=15) {
			System.out.println("O telefone tem apenas 15 dígitos");
			telefone = entrada.nextLine();
		} 
		else {
			System.out.println("O número de telefone cotem somente dígitos");
			gTelefone = 0;
			telefone = entrada.nextLine();
		} 
	}
}
public static void inserirMorada() {
	int guardarMorada=0;
	System.out.print("Insira a morada do cliente: ");
	morada=entrada.nextLine();
	guardarMorada++;

}
public static void guardarCadastro() {
	Cliente cliente = new Cliente(nome, numero+1, morada, telefone);
	guardarCliente[numero++] = cliente;
	imprimirdados(numero-1);
}

public static void imprimirdados(int pesquisa) {
	System.out.println("Nome do cliente: "+guardarCliente[pesquisa].getNome());
	System.out.println("Número do cliente: "+guardarCliente[pesquisa].getNumero());
	System.out.println("Morada do cliente: "+guardarCliente[pesquisa].getMorada());
	System.out.println("Telefone do cliente: "+guardarCliente[pesquisa].getTelefone());
}
public static void alterarDados() {
	System.out.println("Qual é o número do cliente que pretendes alterar os seus dados?");
	pesquisa = entrada.nextInt() -1;
	System.out.println("Insira os novos dados do cliente");
	entrada.nextLine();
	inserirNome();
	inserirTelefone();
	inserirMorada();
	guardarCliente[pesquisa].setNome(nome);
	guardarCliente[pesquisa].setTelefone(telefone);
	guardarCliente[pesquisa].setMorada(morada);

}
public static void pesquisarClientePeloNumero() {
	System.out.println("Qual é o número do cliente para o pesquiusar");
	pesquisa = entrada.nextInt()-1;
	if(pesquisa<numero) {
		System.out.println("OS dados do cliente a pesquisar");
		imprimirdados(pesquisa);
	}
	else {
		System.out.println("O cliente cujo o numero é este não existe");
	}
}
public static void pesquisarClienteTelefone(int pesquisa) {

	String telefo="";

	System.out.println("Digite o numero do Cliete");
	telefo=entrada.nextLine();
	for(pesquisa=0;pesquisa<numero;pesquisa++) {
		if((guardarCliente[pesquisa].getTelefone().equals(telefo)))
			imprimirdados(pesquisa);
		else
			System.out.println("Este cliente não existe");	
	}		
}
public static void pesquisarClienteNome() {
	String nom="";
	System.out.println("Digite o nome do Cliete para o pesquisar");
	nom=entrada.nextLine();
	for(pesquisa=0;pesquisa<numero;pesquisa++) {
		if((guardarCliente[pesquisa].getNome().equals(nom)))
			imprimirdados(pesquisa);
		else
			System.out.println("Este cliente não existe");		
	}
}
public static void remover() {
	System.out.println("Insira o numero do cliente para remover");
	pesquisa = entrada.nextInt() -1;
	if(pesquisa<numero) {
		Cliente cliente = new Cliente(nome, numero+1, morada, telefone);
		guardarCliente[numero-1] = cliente;
		System.out.println("Cliente removido");
		numero--;
	}
	else {
		System.out.println("O cliente enexiste");
	}
}
public static void inserirChamada() {

}

}

Quero ajuda para poder terminar o metudo inserirChamada. que não estou a ver como estou com muito receio.