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