kra, valew msmo… é muito simples… falta só acabar umas coisinhas… o detalhe, é no meu programa, ele esta apenas cadastrando os atributos de pessoa e nada de funcoinario nem de cadastro… entao, vc tera de fazer isso… um campo de RA p/ aluno e um de Salario p/ funcionario… só isso kra…
na implementacao grafica, tera de ter apenas os campos e uma caixa de selecao: se aluno, cadastra RA, se Funcionario, cadastra Salario… Só isso kra… e uma caixa no canto alto da tela com as opcoes de salvar e abrir um gradado p/ exibir… só isos kra… ta ai os codigos…
Codigo PESSOA
Código:
import java.io.* ;
public class Pessoa
{
//Dados que uma pessoa possui
String Nome = "", Endereco = "", Cidade = "",Arq = "" ;
RandomAccessFile EntSai ;
long pos, tam ; //Posição atual e tamanho
int Max_Campo = 15 ;//Tamanho do campo
/***************************************************************************/
boolean Abrir()
{
try
{
EntSai = new RandomAccessFile(Arq+".txt","rw") ;
return(true) ;
}
catch (IOException e) {return(false) ;}
}
/***************************************************************************/
public String Palavra(BufferedReader BR)
{
String str = "" ;
try
{
str = BR.readLine().toUpperCase() ;
for (int i = str.length();i < Max_Campo;i++)
{
str = str + " " ;
}
return(str.substring(0,Max_Campo)) ;
}
catch (IOException e)
{
for (int i = str.length();i < Max_Campo;i++)
{
str = str + " " ;
}
return(str.substring(0,Max_Campo)) ;
}
}
/***************************************************************************/
public void msgln(String texto)
{
System.out.println(texto) ;
}
/***************************************************************************/
public void msg(String str)
{
System.out.print(str) ;
}
/***************************************************************************/
public void ImprimirCampos()
{
if ((Nome.length() > 0) || (Endereco.length() > 0) ||
(Cidade.length() > 0) || (Cidade.length() > 0))
{
msgln("Nome.....: " + Nome) ;
msgln("Endereco.: " + Endereco) ;
msgln("Cidade...: " + Cidade) ;
}
}
/***************************************************************************/
public void Alterar()
{
}
/***************************************************************************/
BufferedReader Cad(boolean Alterar)
{
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)) ;
msg("Nome.....: ") ; Nome = Palavra(BR) ;
msg("Endereco.: ") ; Endereco = Palavra(BR) ;
msg("Cidade...: ") ; Cidade = Palavra(BR) ;
return(BR) ;
}
/***************************************************************************/
public int PreencheCampos(String str)
{
int Campo = 0 ;
Nome = Endereco = Cidade = "" ;
for (int i = 0;i < str.length();i++)
{
if (str.charAt(i) == '"')
{
Campo ++ ;
//msgln(Integer.toString(Campo)) ;
}
else
{
switch (Campo)
{
case 1 : Nome = Nome + str.charAt(i) ;
break ;
case 3 : Endereco = Endereco + str.charAt(i) ;
break ;
case 5 : Cidade = Cidade + str.charAt(i) ;
break ;
}
}
if (Campo == 12)
{
Campo = i ;
break ;
}
}
return(Campo) ;
}
/***************************************************************************/
public boolean GravarCampos(RandomAccessFile DOS)
{
try
{
DOS.writeUTF('"' + Nome + '"') ;
DOS.writeUTF('"' + Endereco + '"') ;
DOS.writeUTF('"' + Cidade + '"') ;
return(true) ;
}
catch (IOException e) {return(false) ;}
}
/***************************************************************************/
void Apagar()
{
try
{
EntSai.seek(0) ;
String str ;
RandomAccessFile Temp = new RandomAccessFile("temp.txt","rw") ;
while ((str = EntSai.readLine()) != null)
{
if (EntSai.getFilePointer() != (pos + str.length()) )
{
Temp.writeUTF(str) ;
Temp.writeChar(10) ;
}
}
Temp.close() ;
EntSai.close() ;
File Aux = new File(Arq + ".txt") ;
Aux.delete() ;
File Aux1 = new File("temp.txt") ;
Aux1.renameTo(Aux) ;
if (Abrir())
EntSai.seek(pos) ;
}
catch (IOException e) {}
}
}
CODIGO ALUNO
Código:
import java.io.* ;
public class Aluno extends Pessoa
{
/***************************************************************************/
Aluno (String Arq)
{
this.Arq = Arq ;
}
/***************************************************************************/
BufferedReader Cad(boolean Alterar)
{
BufferedReader BR = super.Cad(Alterar) ; ;
salvar(Alterar) ;
return(BR) ;
}
/***************************************************************************/
char lechar()
{
try
{
String str ;
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)) ;
str = BR.readLine().toUpperCase() ;
if (str.length() <= 0)
str = " " ;
return(str.charAt(0)) ;
}
catch (IOException e) {return(' ') ; }
}
/***************************************************************************/
public void Alterar()
{
try
{
if (Abrir())
{
String str ;
char op ;
//Coloca o arquivo na primeira posicao
EntSai.seek(0) ;
pos = 0 ;
while ((str = EntSai.readLine()) != null)
{
pos = EntSai.getFilePointer() - str.length() ;
tam = str.length() ;
//*Leio a primeira linha
PreencheCampos(str) ;
ImprimirCampos() ;
msgln(" A - Altera Cadastro ") ;
msgln(" D - Apagar ") ;
msgln(" V - Voltar") ;
msg("Selecione a opcao: ") ;
op = lechar() ;
switch (op)
{
case 'A' :
{
Cad(true) ;
break ;
}
case 'D' :
{
Apagar() ;
break ;
}
}
if (op == 'V')
break ;
}
EntSai.close() ;
}
}
catch (IOException e) {}
}
/***************************************************************************/
public void salvar(boolean Alterar)
{
try
{
if (! Alterar)
{
Abrir() ;
EntSai.seek(EntSai.length()) ;
}
else
EntSai.seek(pos) ;
if (super.GravarCampos(EntSai))
{
//caracter de fim de linha
EntSai.writeChar(10) ;
if (! Alterar)
EntSai.close() ;
}
}
catch (IOException e) {}
}
}
falta criar um campo RA
CODIGO FUNCIONARIO
Código:
import java.io.* ;
public class Funcionario extends Pessoa
{
/*So pra mostrar alguma implemEntSaiação na classe*/
String Empresa = "", Salario = "" ;
int N_Campos = 8 ; //Numero de campos
/***************************************************************************/
Funcionario (String Arq)
{
this.Arq = Arq ;
}
/***************************************************************************/
public void ImprimirCampos()
{
super.ImprimirCampos() ;
if ((Empresa.length() > 0) || (Salario.length() > 0))
{
msgln("Empresa..: " + Empresa) ;
msgln("Salario..: " + Salario) ;
}
}
/***************************************************************************/
BufferedReader Cad(boolean Alterar)
{
BufferedReader BR = super.Cad(Alterar) ;
msg("Empresa..: ") ; Empresa = Palavra(BR) ;
msg("Salario..: ") ; Salario = Palavra(BR) ;
salvar(Alterar) ;
return(BR) ;
}
/***************************************************************************/
public int PreencheCampos(String str)
{
int Campo = 0 ;
int pos = super.PreencheCampos(str) + 1;
Empresa = Salario = "" ;
for (int i = pos;i < str.length();i++)
{
if (str.charAt(i) == '"')
Campo ++ ;
else
{
switch (Campo)
{
case 1 : Empresa = Empresa + str.charAt(i) ;
break ;
case 3 : Salario = Salario + str.charAt(i) ;
break ;
}
}
}
return(0) ;
}
/***************************************************************************/
char lechar()
{
try
{
String str ;
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)) ;
str = BR.readLine().toUpperCase() ;
if (str.length() <= 0)
str = " " ;
return(str.charAt(0)) ;
}
catch (IOException e) {return(' ') ; }
}
/***************************************************************************/
public void Alterar()
{
try
{
if (Abrir())
{
String str ;
char op ;
//Coloca o arquivo na primeira posicao
EntSai.seek(0) ;
pos = 0 ;
while ((str = EntSai.readLine()) != null)
{
pos = EntSai.getFilePointer() - str.length() ;
tam = str.length() ;
//*Leio a primeira linha
PreencheCampos(str) ;
ImprimirCampos() ;
msgln(" A - Altera Cadastro ") ;
msgln(" D - Apagar ") ;
msgln(" V - Voltar") ;
msg("Selecione a opcao: ") ;
op = lechar() ;
switch (op)
{
case 'A' :
{
Cad(true) ;
break ;
}
case 'D' :
{
Apagar() ;
break ;
}
}
if (op == 'V')
break ;
}
EntSai.close() ;
}
}
catch (IOException e) {}
}
/***************************************************************************/
public void salvar(boolean Alterar)
{
try
{
if (! Alterar)
{
Abrir() ;
EntSai.seek(EntSai.length()) ;
}
else
EntSai.seek(pos) ;
if (super.GravarCampos(EntSai))
{
EntSai.writeUTF('"' + Empresa + '"') ;
EntSai.writeUTF('"' + Salario + '"') ;
//caracter de fim de linha
EntSai.writeChar(10) ;
if (! Alterar)
{
EntSai.close() ;
}
}
}
catch (IOException e) {}
}
}
neste, vc tira a empresa e deixa apenas o salario
CODIGO CADASTRO
Código:
/* Esta classe contém os dados básico de uma pessoa
* Assim como suas formas de gravação qdo for gravar
* não posso esquecer de colocar tudo entre aspas
*/
import java.io.* ;
public class Cadastro
{
Pessoa F ;
public void msgln(String texto)
{
System.out.println(texto) ;
}
/***************************************************************************/
char lechar()
{
try
{
String str ;
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)) ;
str = BR.readLine().toUpperCase() ;
if (str.length() <= 0)
str = " " ;
return(str.charAt(0)) ;
}
catch (IOException e) {return(' ') ; }
}
/***************************************************************************/
public void OpCad(String Arq)
{
char ch ;
do
{
if (Arq.toUpperCase() == "FUNCIONARIO")
F = new Funcionario(Arq) ;
else
F = new Aluno(Arq) ;
msgln("Cadastro de " + Arq) ;
msgln("Opcoes:") ;
msgln("1 - Cadastrar") ;
msgln("2 - Listar") ;
msgln("3 - Voltar") ;
ch = lechar() ;
switch (ch)
{
case '1' : F.Cad(false) ;
break ;
case '2' : F.Alterar() ;
break ;
}
}
while (ch != '3') ;
}
/***************************************************************************/
public void Inicial()
{
char ch ;
do
{
msgln("Escolha a opcao") ;
msgln("1 - Funcionario") ;
msgln("2 - Aluno") ;
msgln("3 - Sair") ;
msgln("Opcao: ") ;
ch = lechar() ;
switch (ch)
{
case '1' : OpCad("Funcionario") ;
break ;
case '2' : OpCad("Aluno") ;
break ;
}
}
while (ch != '3') ;
}
/***************************************************************************/
static public void main(String args[])
{
Cadastro C = new Cadastro() ;
C.Inicial() ;
//Funcionario F = new Funcionario("Funcionario.txt") ;
}
}
esta é a classe cadastro… nela, vc só vai implementar, alem do q esta ai, as opcoes de RA se aluno, ou, Salario se Funcionario…
usa esse msmo código e cria a INTERFACE… é uma tela apenas… tendo apenas akela caixa de selacao, ta ligado né… se tiver “tikado”, cadastra RA p/ aluno… se tiver “ticado” p/ funcionario, cadastra salario, p/ funcoinario…
preciso p/ quarta… de manha, tens como?? ou até a tarde… blz kra… to no desespero…
aguardo… e valews msmo… Juliano 