Boas . Estou a fazer uma trabalho pa faculdade em JAVA nãmas o estou a conseguir fazer uma dos pontos pedidos pelo enunciado . O enunciado é o seguinte:
Construa uma aplicação de gestão de um Sistema de Mensagens de Texto. O
objectivo da aplicação é permitir a troca de mensagens de texto entre os utilizadores
registados no sistema. Cada utilizador deve possuir uma caixa de mensagens onde são
guardadas as mensagens recebidas.
A aplicação deve permitir, entre outras funcionalidades, as seguintes:
• Registo de utilizadores. O utilizador indica o username pretendido, e se ainda
não está atribuído, a aplicação gera aleatoriamente uma password de 4
caracteres.
• Autenticação de utilizadores através de username e password. As operações
descritas a seguir só podem ser realizadas por utilizadores autenticados.
• Listagem dos utilizadores do sistema.
• Envio de uma mensagem de um utilizador para outro utilizador, para vários
utilizadores ou para todos os utilizadores do sistema.
• Listagem das mensagens recebidas.
• Leitura das mensagens recebidas.
• Remoção de mensagem ou mensagens recebidas.
O meu problema está em listar as mensagens . Já tentei de tudo mas não tou a ver como. Deve faltar algum método apesar de ter criado um para tal função ou falha no main.
aqui está o que fiz:
Se puderem ajudar agradecia. Cumpz
Construa uma aplicação de gestão de um Sistema de Mensagens de Texto. O
objectivo da aplicação é permitir a troca de mensagens de texto entre os utilizadores
registados no sistema. Cada utilizador deve possuir uma caixa de mensagens onde são
guardadas as mensagens recebidas.
A aplicação deve permitir, entre outras funcionalidades, as seguintes:
• Registo de utilizadores. O utilizador indica o username pretendido, e se ainda
não está atribuído, a aplicação gera aleatoriamente uma password de 4
caracteres.
• Autenticação de utilizadores através de username e password. As operações
descritas a seguir só podem ser realizadas por utilizadores autenticados.
• Listagem dos utilizadores do sistema.
• Envio de uma mensagem de um utilizador para outro utilizador, para vários
utilizadores ou para todos os utilizadores do sistema.
• Listagem das mensagens recebidas.
• Leitura das mensagens recebidas.
• Remoção de mensagem ou mensagens recebidas.
O meu problema está em listar as mensagens . Já tentei de tudo mas não tou a ver como. Deve faltar algum método apesar de ter criado um para tal função ou falha no main.
aqui está o que fiz:
Código:
// Classe de Teste que vai ser chamada no main ()
package cliente.ambiente;
import ClassesTeste.*;
import java.util.Scanner;
public class texto extends Sistema {
private static Scanner input;
private Utilizador utilizadorSessao;
public texto() {
super();
input = new Scanner(System.in);
}
public void menuInicial() {
int op = 0;
System.out.println("1 - Criar conta\n2 - Login\n3 - Remover Users\n0 - Sair.\n");
System.out.print("Opcao: ");
op = Integer.valueOf(input.nextLine().trim());
switch (op) {
case 1:
ecraCriarConta();
break;
case 2:
loginUtilizador();
break;
case 0:
System.out.println("\nPROGRAMA TERMINADO ...\n");
System.exit(0);
break;
case 3:
destroyUser();
System.out.println("USER REMOVIDO");
default:
System.out.println("INTRODUZA UMA OPÇÃO VÁLIDA.");
menuInicial();
break;
}
}
private void destroyUser() {
System.out.print("\nUSERNAME: ");
String nome = input.nextLine().trim();
destruirConta(nome);
}
private void ecraCriarConta() {
System.out.print("\nUSERNAME: ");
String nome = input.nextLine().trim();
if (existeNomeUtilizador(nome) == null) {
utilizadorSessao = criarConta(nome);
System.out.println("\nCONTA CRIADA COM SUCESSO.\n" +
"USERNAME: " + utilizadorSessao.getNome() + "\n" +
"PASSWORD: " + utilizadorSessao.getPassword());
menuInicial();
} else {
System.out.println(nome + "\nUSER EXISTENTE. INTRODUZA UM NOME DIFERENTE.\n");
ecraCriarConta();
}
}
private void loginUtilizador() {
input = new Scanner(System.in);
System.out.print("\nUSERNAME:");
String nome = input.nextLine();
System.out.print("PASSWORD: ");
String password = input.nextLine();
utilizadorSessao = validarCredenciais(nome, password);
if (utilizadorSessao == null) {
System.out.println("LOGIN INVÁLIDO.");
utilizadorSessao = null;
System.out.print("INTRODUZIU DADOS INORRECTOS. FAZER LOGIN NOVAMENTE(s/n)? ");
if (input.nextLine().equalsIgnoreCase("n")) {
System.exit(0);
} else {
loginUtilizador();
}
} else {
System.out.println("LOGIN EFECTUADO COM SUCESSO.\n");
sessaoAutenticada();
}
}
private void sessaoAutenticada() {
System.out.println("USER " + utilizadorSessao.getNome() + " ONLINE\n");
System.out.println("\n1 - ALTERAR CONTA\n2 - CAIXA DE MENSAGENS\n3 - VER UTILIZADORES\n0 - LOGOUT");
System.out.print("\nOPÇÃO: ");
int opcao = Integer.parseInt(input.nextLine());
switch (opcao) {
case 1:
menuEditarConta();
break;
case 2:
menuCaixaDeMensagens();
break;
case 3:
listarUtilizadores();
break;
case 0:
menuInicial();
break;
default:
System.out.println("\nINTRODUZA UMA OPÇÃO VÁLIDA.\n");
sessaoAutenticada();
break;
}
}
private void menuEditarConta() {
System.out.println("\n1 - MUDAR NOME +\n2 - MUDAR PASSWORD\n3 - MENU ANTERIOR");
int opcao = Integer.parseInt(input.nextLine());
switch (opcao) {
case 1:
editarNomeUtilizador();
sessaoAutenticada();
break;
case 2:
editarPasswordUtilizador();
sessaoAutenticada();
break;
case 3:
sessaoAutenticada();
break;
default:
System.out.println("\nINTRODUZA UMA OPÇÃO VÁLIDA.\n");
menuEditarConta();
break;
}
}
private void editarNomeUtilizador() {
System.out.print("USERNAME: " + utilizadorSessao.getNome() + "\n");
System.out.print("NOVO USERNAME: ");
try {
utilizadorSessao.setNome(input.nextLine().trim());
} catch (Exception e) {
editarNomeUtilizador();
}
}
private void editarPasswordUtilizador() {
System.out.print("PASSWORD: " + utilizadorSessao.getPassword() + "\n");
try {
System.out.println("NOVA PASSWORD: ");
utilizadorSessao.setPassword(input.nextLine().trim());
System.out.println("REPETIR PASSWORD ");
if (utilizadorSessao.getPassword().equals(input.nextLine().trim()));
} catch (Exception e) {
editarPasswordUtilizador();
}
}
private void menuCaixaDeMensagens() {
System.out.print("\n1- ENVIAR\n2- Ver mensagens\n3- MENU ANTERIOR\n0- LOGOUT\nOPÇÃO: ");
int opcao = Integer.parseInt(input.nextLine().trim());
switch (opcao) {
case 1:
comporMensagem();
break;
case 2:
listarMensagens();
break;
case 3:
sessaoAutenticada();
break;
case 0:
menuInicial();
default:
System.out.println("INTRODUZA UMA OPÇÃO VÁLIDA.");
menuCaixaDeMensagens();
break;
}
}
private void comporMensagem() {
Utilizador utilizador = null;
do {
System.out.print("DESTINATÁRIO: ");
utilizador = existeNomeUtilizador(input.nextLine().trim());
if (utilizador == null) {
System.out.println("USER NÃO ENCONTRADO!");
}
} while (utilizador == null);
System.out.print("ASSUNTO: ");
String subject = input.nextLine();
System.out.print("MSG: \n ");
String body = input.nextLine();
enviarMensagem(utilizador, utilizadorSessao, subject, body);
menuCaixaDeMensagens();
}
public void listarMensagens() {
String mensagens = utilizadorSessao.getCaixaDeMensagens();
System.out.println(mensagens);
sessaoAutenticada();
}
public void listarUtilizadores() {
System.out.println(super.toString());
sessaoAutenticada();
}
public void listarUtilizadoresMenuInicial() {
System.out.println(super.toString());
menuInicial();
}
}
//classe Utilizador
public class Utilizador {
private String nome;
private String password;
protected CaixaDeMensagens mensagens;
public Utilizador(String nome) throws ValorInvalido {
setNome(nome);
setPassword();
mensagens = new CaixaDeMensagens();
}
public void setNome(String nome) throws ValorInvalido {
if (nome.length()==0)
throw new ValorInvalido("nome");
else
this.nome = nome;
}
public void setPassword() {
this.password = RandomStringUtils.randomAlphanumeric(4);
}
public void setPassword(String password) throws ValorInvalido {
if (password.length()==0)
throw new ValorInvalido("password");
else
this.password = password;
}
public String getNome() {
return nome;
}
public String getPassword() {
return password;
}
public String getCaixaDeMensagens() {
return mensagens.toString();
}
public boolean equals(String nome, String password) {
if (nome.equals(this.nome) && password.equals(this.password))
return true;
return false;
}
}
// Classe Caixa de Mensagens
public class CaixaDeMensagens {
public static Vector<Mensagem> mensagens;
public CaixaDeMensagens() {
mensagens = new Vector<Mensagem>();
}
public void adicionarMensagem(Utilizador from, String subject, String body) {
mensagens.add(new Mensagem(from, subject, body));
}
public void removerMensagem(int i) {
mensagens.remove(i);
}
@Override
public String toString() {
String mensagensAcumuladas = "";
int indice=1;
for (Mensagem mensagem : mensagens) {
mensagensAcumuladas.concat(indice + ": " + mensagem.toStringHeader() + "\n");
indice++;
}
return mensagensAcumuladas;
}
public String verMensagem(int i) {
return mensagens.get(i).toStringHeader() + "\n" +
mensagens.get(i).toStringBody();
}
}
// Sistema
public class Sistema {
public Vector<Utilizador> utilizadores;
public Sistema() {
utilizadores = new Vector<Utilizador>();
System.out.println(utilizadores.lastElement().getPassword());
}
public Utilizador criarConta(String nome) {
try {
utilizadores.add(new Utilizador(nome));
return utilizadores.lastElement();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public void criarConta(Utilizador utilizador) {
utilizadores.add(utilizador);
}
public void destruirConta(Utilizador utilizador) {
utilizadores.remove(utilizador);
}
public Utilizador existeNomeUtilizador(String nome) {
for (Utilizador utilizador : utilizadores) {
if (utilizador.getNome().equals(nome)) {
return utilizador;
}
}
return null;
}
public Utilizador validarCredenciais(String nome, String password) {
for (Utilizador utilizador : utilizadores) {
if (utilizador.equals(nome, password)) {
return utilizador;
}
}
return null;
}
@Override
public String toString() {
String listagem_formatada = "-Lista dos Utilizadores-\n";
int indice = 0;
for (Utilizador utilizador : utilizadores) {
listagem_formatada = listagem_formatada + indice + ": " + utilizador.getNome() + "\n";
indice++;
}
System.out.println(listagem_formatada);
return listagem_formatada;
}
public void enviarMensagem(Utilizador to, Utilizador from, String subject, String body) {
for (Utilizador utilizador : utilizadores) {
if (utilizador.equals(to)) {
utilizador.mensagens.adicionarMensagem(from, subject, body);
}
}
}
}
Última edição: