Duvidas em gravar 3 utilizadores para um ficheiro e chamar o menu relacionado com cada um

1 resposta
X

Bom dia

Estou a desenvolver um projeto para a escola em java atraves do programa bluej para a minha escola mas as minhas dificuldades em java sao tantas e as duvidas em programas também...

A minha duvida é a seguinte, atraves do codigo que vou postar de seguida estou a criar o registo do docente ou do aluno e do funcionario que penso estar bem e penso estar a gravar (estou a gravar para ficheiros binarios), o meu login e o registo do utilizador esta dentro desta classe, so que o login não me chama o menu correspondente a cada um, quando crio um utilizador se criar dois utilizadores com a mesma pass diz que ja existe logo penso que esta a gravar mas quando faço o login n m salta para o menu desse utilizador

import java.io.*; 
import java.util.*; 

public class GereEscola implements Serializable 
{ 
String user; 
Menu m = new Menu(); 

// login 
public void login(Hashtable<String,String> listaUsers) throws IOException 
{ 
String password; 
int i; 

Docente doc = new Docente(); 
Funcionario func = new Funcionario(); 
Aluno al = new Aluno(); 

System.out.println("****************LOGIN***************"); 
System.out.println("Username: "); 
user = Leitura.LeString(); 
System.out.println("Password: "); 
password = Leitura.LeString(); 
System.out.println("************************************"); 

for(i=0;i<listaUsers.size();i++){ 
//tentei desta forma 
if(listaUsers.containsKey(user) && listaUsers.containsValue(al) && password==al.getPass()){ 
m.menuAluno();} 
else if (user==doc.getUser() && password==doc.getPass()){ // e desta forma 
m.menuDocente();} 
else if (user==func.getUser() && password==func.getPass()) { 
m.menuFuncionario();} 
else { 
System.out.println("user ou password inválida"); 
m.menuInicio(listaUsers);} 
} 
} 

// registo de utilizadores 
public void registo_docente(Hashtable<String,Docente> listaUsers) throws IOException 
{ 
String pass, nome, data_nasc, disciplina; 
int BI, NIF; 

System.out.println("************* REGISTO DE DOCENTE **************"); 
System.out.println("NOME: "); 
nome=Leitura.LeString(); 
System.out.println("DISCIPLINA: "); 
disciplina=Leitura.LeString(); 
System.out.println("DATA DE NASCIMENTO: "); 
data_nasc=Leitura.LeString(); 
System.out.println("BI: "); 
BI=Leitura.LeInt(); 
System.out.println("NIF: "); 
NIF=Leitura.LeInt(); 
System.out.println("USERNAME: "); 
user= Leitura.LeString(); 
System.out.println("PASSWORD: "); 
pass= Leitura.LeString(); 

Docente doc = new Docente(nome,disciplina,data_nasc,BI,NIF,user,pass); 
String chave = doc.getUser(); 

if(listaUsers.get(chave) == null){ 
listaUsers.put(chave, doc); 
Ficheiro f = new Ficheiro(); 
f.GravaUtilizadoresFicheiro(listaUsers); 
System.out.println("Docente registado"); 
m.menuInicio(listaUsers); 
}else{ 
System.out.println("O utilizador com o username "+user+" já existe"); 
m.menuInicio(listaUsers); 
} 
} 

public void registo_aluno(Hashtable<String,Aluno> listaUsers) throws IOException 
{ 
String pass, nome, data_nasc; 
int BI, NIF, numero; 

System.out.println("************* REGISTO DE ALUNO **************"); 
System.out.println("NOME: "); 
nome= Leitura.LeString(); 
System.out.println("NUMERO: "); 
numero=Leitura.LeInt(); 
System.out.println("DATA DE NASCIMENTO: "); 
data_nasc=Leitura.LeString(); 
System.out.println("BI: "); 
BI=Leitura.LeInt(); 
System.out.println("NIF: "); 
NIF=Leitura.LeInt(); 
System.out.println("USERNAME: "); 
user=Leitura.LeString(); 
System.out.println("PASSWORD: "); 
pass=Leitura.LeString(); 

Aluno al = new Aluno(nome,numero,data_nasc,BI,NIF,user,pass); 
String chave = al.getUser(); 

if(listaUsers.get(chave) == null){ 
listaUsers.put(chave, al); 
Ficheiro f = new Ficheiro(); 
f.GravaUtilizadoresFicheiro(listaUsers); 
System.out.println("Aluno registado"); 
m.menuInicio(listaUsers); 
}else{ 
System.out.println("O utilizador com o username "+user+" já existe"); 
m.menuInicio(listaUsers); 
} 
} 

public void registo_func(Hashtable<String,Funcionario> listaUsers) throws IOException 
{ 
String pass, nome, data_nasc; 
int BI, NIF; 

System.out.println("************* REGISTO DE FUNCIONARIO **************"); 
System.out.println("NOME: "); 
nome=Leitura.LeString(); 
System.out.println("DATA DE NASCIMENTO: "); 
data_nasc=Leitura.LeString(); 
System.out.println("BI: "); 
BI=Leitura.LeInt(); 
System.out.println("NIF: "); 
NIF=Leitura.LeInt(); 
System.out.println("USERNAME: "); 
user=Leitura.LeString(); 
System.out.println("PASSWORD: "); 
pass=Leitura.LeString(); 

Funcionario func = new Funcionario(nome, data_nasc, BI, NIF, user, pass); 
String chave = func.getUser(); 

if(listaUsers.get(chave) == null){ 
listaUsers.put(chave, func); 
Ficheiro f = new Ficheiro(); 
f.GravaUtilizadoresFicheiro(listaUsers); 
System.out.println("Funcionario registado"); 
m.menuInicio(listaUsers); 
}else{ 
System.out.println("O utilizador com o username "+user+" já existe"); 

} 
}

Classe do menu esta desta forma:

import java.io.*; 
import java.util.*; 
import java.text.ParseException; 

public class Menu 
{ 
private int x; 

public void menuInicio(Hashtable listaUsers) throws IOException 
{ 
GereEscola gere = new GereEscola(); 

System.out.println("*************SISTEMA DE GESTAO ESCOLAR************"); 
System.out.println("*********Escolha uma das seguintes opções*********"); 
System.out.println("********* 1 - LOGIN *********"); 
System.out.println("********* 2 - REGISTO *********"); 
System.out.println("********* 3 - SAIR *********"); 
System.out.println("* *"); 
System.out.println("**************************************************"); 
x=Leitura.LeInt(); 
switch (x) { 
case 1: 
gere.login(listaUsers); 
break; 
case 2: 
menuRegisto(listaUsers); 
break; 
case 3: 
System.exit(0); 
break; 
default: 
System.out.println("Esta opcao nao valida!!!"); 
} 
} 

public void menuRegisto(Hashtable listaUsers) throws IOException 
{ 
GereEscola gere = new GereEscola(); 

System.out.println("*************REGISTO DE UTILIZADORES**************"); 
System.out.println("*********Escolha uma das seguintes opções*********"); 
System.out.println("********* 1 - Registo de Docente *********"); 
System.out.println("********* 2 - Registo de Aluno *********"); 
System.out.println("********* 3 - Registo de Funcionario *********"); 
System.out.println("********* 4 - Voltar *********"); 
System.out.println("* *"); 
System.out.println("**************************************************"); 
x=Leitura.LeInt(); 
switch (x) { 
case 1: 
gere.registo_docente(listaUsers); 
break; 
case 2: 
gere.registo_aluno(listaUsers); 
break; 
case 3: 
gere.registo_func(listaUsers); 
break; 
case 4: 
menuInicio(listaUsers); 
break; 
default: 
System.out.println("Esta opcao nao valida!!!"); 
} 
} 
}

a classe do ficheiro esta assim

import java.io.*; 
import java.util.*; 


public class Ficheiro 
{ 
// utilizadores 
public void GravaUtilizadoresFicheiro(Hashtable listaUsers) throws IOException{ 

try { 

File file = new File("users.dat"); 

if (!file.exists()) { 
//cria um ficheiro (vazio) 
file.createNewFile(); 
} 

FileOutputStream os = new FileOutputStream(new File("users.dat")); 
ObjectOutputStream oos = new ObjectOutputStream(os); 

oos.writeObject(listaUsers); 
oos.flush(); 
oos.close(); 

} catch (IOException e) { 
System.out.println(e.getMessage()); 
} 

} 

public Hashtable LeUtilizadores(Hashtable listaUsers) throws FileNotFoundException, IOException, ClassNotFoundException{ 

File f = new File("users.dat"); 

if(f.exists()){ 
FileInputStream is = new FileInputStream(f); 
ObjectInputStream ois = new ObjectInputStream(is); 

listaUsers = (Hashtable) ois.readObject(); 

ois.close(); 
is.close(); 
} 
else 
System.out.println("ficheiro nao existe"); 
return listaUsers; 

}

a classe do main esta desta forma:

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Hashtable; 

public class Escola 
{ 
public static void main(String[] args) throws IOException, FileNotFoundException, ClassNotFoundException { 

//criação de objecto 

Ficheiro f = new Ficheiro(); 
Menu m = new Menu(); 

//criação de Hashtables 

Hashtable listaUsers = new Hashtable(); 

//leitura dos ficheiros para as hashtables 

listaUsers = f.LeUtilizadores(listaUsers); 

//entrada no menu 
m.menuInicio(listaUsers); 
}

este programa ainda m da um warning que tb n entendo que é o seguinte: "warning from last compilation

c:\users\projeto\menu.java uses unchecked or unsafe operations. Recompile with -Xint:unchecked for details.". O que posso fazer para evitar este warnig? Estou a gravar bem os utilizadores? Porque o metodo login não esta a chamar o menu de cada utilizador?

Agradeco toda a ajuda possivel que isto esta mto complicado e a pressão e o desespero cada vez maior

Obrigado e cumprimentos ao pessoal

1 Resposta

X

peço desculpa por ter postado 2x, o explorer deu erro e não reparei que tinha postado 2x

Criado 23 de janeiro de 2013
Ultima resposta 23 de jan. de 2013
Respostas 1
Participantes 1