Bom dia a todos!
Estou fazendo um curso de Java e estou bem no início. O professor nos pediu para fazermos uma agenda simples em Java (inclusão, consulta, alteração, exclusão). Estou querendo criar os campos nome, endereço, telefone, data nascimento e e-mail. Como estou no início estou tendo um pouco de dificuldades. Alguém pode me ajudar? Quem tiver um exemplo de agenda e puder me enviar meu e-mail é [EDITADO PELA MODERAÇÃO E-MAIL REMOVIDO]
Obrigado!
Romerito Oliveira
[quote=Romerito.Oliveira]Bom dia a todos!
Estou fazendo um curso de Java e estou bem no início. O professor nos pediu para fazermos uma agenda simples em Java (inclusão, consulta, alteração, exclusão). Estou querendo criar os campos nome, endereço, telefone, data nascimento e e-mail. Como estou no início estou tendo um pouco de dificuldades. Alguém pode me ajudar?
Obrigado!
Romerito Oliveira[/quote]
Então, como você está no início, você pode seguir esses passos:
[list]Crie uma classe que representa cada pessoa da lista de endereços. Uma classe Contato que tenha esses atributos: nome, endereço, telefone… Obs: não faça sem usar um objeto que represente um contato, senão nem o requisito mínimo que seu professor espera, você irá alcançar[/list]
[list]Crie um banco de dados e depois uma tabela que irá representar seu objeto. Como a tabela irá representar a entidade Contato, deverá ter os campos nome, endereço, telefone… Eu recomendo que você use um campo único como chave primária e que também seja um atributo da sua classe Contato[/list]
[list]Crie a interface com os botões e campos. A forma como você definirá a interface é seu critério, mas a mais simples possível é fazer uma com campos de texto e botões de navegação para o próximo contato da agenda. Para início está bom. Não tente fazer muito complexo de cara, senão você terá dificuldades[/list]
[list]Crie classes “ouvintes” (Listeners) nos eventos que são disparados ao clicar nos botões de Inserir, Excluir, etc.[/list]
[list]Dentro das classes ouvintes, realize uma Conexão com o banco de dados. (usando a interface JDBC do pacote java.sql.* ) [/list]
[list]Para cada clicar de botão, coloque na classe ouvinte um Statement que realize a consulta SQL (estude consultas sql básicas e um pouco de JDBC - já bastará) que irá buscar, inserir ou apagar contatos da agenda. Ao inserir, por exemplo, você deve recuperar os atributos do objeto Contato para colocar no Statement[/list]
Bom, para uma agenda bem básica o caminho é por aí… dá para melhorar um pouco, utilizar DAO´s… mas o mínimo que você pode fazer são os passos acima.
Obrigado pelo retorno!!
Vou tentar fazer aqui. Como foi um desafio que o professor passou vou procurar fazer.
Valew!!
Romerito
Olá Romerito, removi seu e-mail do post. A idéia do fórum é que o pessoal colabore, aqui no fórum. Além disso, deixar o e-mail no fórum público deixa ele também acessível a esses bots de spam.
Valeu pelo esclarecimento!
Desculpe, mas como sou novo não tive tempo ainda de ler todas as instruções. Isso não vai mais se repetir.
Romerito
Olá Romerito.
Sei que é dificil para quem está no ínicio. Eu mesmo estou também no comecinho de programação em Java.
Mas é muito mais gratificante você fazer e entender. Você vai ver que, você fazendo por conta própria, sem pegar projeto pronto ou pré-pronto você aprende muito mais e as dúvidas surgem mais.
Tente fazer os passos conforme nosso amigo diego_qmota falou e coloca suas dúvidas e assim ajudaremos você.
Afinal, creio que o GUJ é para isso.
Mesmo que seja díficil no começo, você vai fica mais empolgado em tentar fazer sozinho e resolver os problemas…
E mais uma coisa: Mesmo que sinta dificuldade, mesmo que ache que nada dá certo NÃO DESISTA. O caminho é esse.
E sempre que tiver as dúvidas pode colocar no GUJ.
Eu aprendi muito mais aqui do que em qualquer outro lugar. Vale a pena!
[]'s E Boa sorte com a Agenda =] 
Olá!! Eu estou fazendo e aprendendo aos poucos. Estou com o livro Java Como programar 8ª edição e está muito me ajudando. Por enquanto o professor só nos ensinou a programação estruturada. No próximo semestre é que vai nos ensinar, na verdade, começar pra valer Java orientado a objetos. Essa agenda tem já algo a ver com orientação a objeto. Por isso é que estou com um pouco de dificuldade. Mas de qualquer forma, muito obrigado pelo apoio. Vou continuar tentando fazer aqui.
Bom dia!!
Romerito
Conheço esse livro.
Utilizei algumas vezes também na faculdade. Mas sinceramente ainda prefiro a internet.
Claro que isso é pessoal.
Mas vai fazendo conforme o diego escreveu, se surgir duvida já posta aqui.
Eu também estou no começo, mas no que eu puder, te ajudo …
E é assim mesmo. As vezes vai da vontad d sai correndo, mas continua tentando.
Você já aprendeu sobre DAO?
Até onde eu fiz está abaixo. Após coloco minhas dúvidas.
import java.io.Serializable;
public class StructContato implements Serializable {
public String nome;
public String telefone;
public String data;
public String email;
public int cadastrado;
}
import javax.swing.JOptionPane;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
public class Principal {
@SuppressWarnings(“deprecation”)
public static void main(String[] args) throws IOException, NullPointerException, ClassNotFoundException {
//Struct
StructContato contato = new StructContato();
//Criando o arquivo ou conferindo se já existe!!!
File caminho = new File("c:\\Java\\Agenda\\");
File agenda = new File(caminho,"Jav_agenda.txt");
if(agenda.exists()){
JOptionPane.showMessageDialog(null, "A agenda já existe em c:\\Java\\Agenda\\Jav_agenda.txt");
}else{
caminho.mkdirs();
agenda.createNewFile();
JOptionPane.showMessageDialog(null, "A agenda criada c:\\Java\\Agenda\\Jav_agenda.txt");
}
//Streams de saida e entrada
FileOutputStream fOut = new FileOutputStream(agenda);
ObjectOutputStream saida = new ObjectOutputStream(fOut);
FileInputStream fIn = new FileInputStream(agenda);
ObjectInputStream entra = new ObjectInputStream(fIn);
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
RandomAccessFile ponteiro = new RandomAccessFile(agenda,"rw");
//Criando demais variaveis
String tela = null;
int escolha = 1;
String nome;
byte[] vetor;
while (escolha != 6){
tela = JOptionPane.showInputDialog("[1]Listar \n[2]Inserir \n[3]Editar \n[4]Excluir \n[5]Recuperar \n[6] Sair");
escolha = Integer.parseInt(tela);
switch(escolha){
case 1:
Object obj = entra.readObject();
StructContato leCont = null;
leCont = (StructContato)obj;
JOptionPane.showMessageDialog(null, "Nome: " + leCont.nome);
JOptionPane.showMessageDialog(null, "Tel: " + leCont.telefone);
JOptionPane.showMessageDialog(null, "Email: " + leCont.email);
JOptionPane.showMessageDialog(null, "Data: " + leCont.data);
break;
case 2:
nome = JOptionPane.showInputDialog(agenda.length());
nome = JOptionPane.showInputDialog("Digite o nome:");
contato.nome = nome;
nome = JOptionPane.showInputDialog("Digite o telefone xxxx-xxxx:");
contato.telefone = nome;
nome = JOptionPane.showInputDialog("Digite o email:");
contato.email = nome;
nome = JOptionPane.showInputDialog("Digite a data de nascimento dd/mm/aa:");
contato.data = nome;
contato.cadastrado = 1;
ponteiro.seek(agenda.length());
saida.writeObject(contato);
vetor = bOut.toByteArray();
saida.flush();
nome = JOptionPane.showInputDialog(agenda.length()-1);
break;
case 3:
Object obj2 = entra.readObject();
StructContato leCont2 = null;
nome = JOptionPane.showInputDialog("Digite o nome que procura:");
leCont2 = (StructContato)obj2;
JOptionPane.showMessageDialog(null, leCont2.nome + " "+ nome);
if(leCont2.nome == "gab"){
nome = JOptionPane.showInputDialog("Nome: " + nome + "/nDigite o novo nome: ");
leCont2.nome = nome;
nome = JOptionPane.showInputDialog("Nome: " + nome + "/nDigite o novo nome: ");
}
break;
case 4:
JOptionPane.showMessageDialog(null, "Excluir");
break;
case 5:
JOptionPane.showMessageDialog(null, "Recuperar");
break;
case 6:
break;
default:
JOptionPane.showMessageDialog(null, "Insira uma opção válida");
break;
}
}
}
}
Minhas dúvidas são:
Por que o if não está funcionando (case3)?
Por que ao abrir o arquivo ele está limpando?
Por que não está gravando serialmente? Como faz para gravar serialmente?
Um abraço,
Romerito
Ai Romerito … tenho sua solução em minhas mãos rsrsrs, mas tudo tem que ter seu esforço, então tente fazer ai e as duvidas coloque aqui, que com certeza te ajudaremos…
Oi KarlaJeane!!
Abaixo coloco o código que já fiz e depois minhas dúvidas.
import java.io.Serializable;
public class StructContato implements Serializable {
public String nome;
public String telefone;
public String data;
public String email;
public int cadastrado;
}
import javax.swing.JOptionPane;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
public class Principal {
@SuppressWarnings(“deprecation”)
public static void main(String[] args) throws IOException, NullPointerException, ClassNotFoundException {
//Struct
StructContato contato = new StructContato();
//Criando o arquivo ou conferindo se já existe!!!
File caminho = new File("c:\\Java\\Agenda\\");
File agenda = new File(caminho,"Jav_agenda.txt");
if(agenda.exists()){
JOptionPane.showMessageDialog(null, "A agenda já existe em c:\\Java\\Agenda\\Jav_agenda.txt");
}else{
caminho.mkdirs();
agenda.createNewFile();
JOptionPane.showMessageDialog(null, "A agenda criada c:\\Java\\Agenda\\Jav_agenda.txt");
}
//Streams de saida e entrada
FileOutputStream fOut = new FileOutputStream(agenda);
ObjectOutputStream saida = new ObjectOutputStream(fOut);
FileInputStream fIn = new FileInputStream(agenda);
ObjectInputStream entra = new ObjectInputStream(fIn);
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
RandomAccessFile ponteiro = new RandomAccessFile(agenda,"rw");
//Criando demais variaveis
String tela = null;
int escolha = 1;
String nome;
byte[] vetor;
while (escolha != 6){
tela = JOptionPane.showInputDialog("[1]Listar \n[2]Inserir \n[3]Editar \n[4]Excluir \n[5]Recuperar \n[6] Sair");
escolha = Integer.parseInt(tela);
switch(escolha){
case 1:
Object obj = entra.readObject();
StructContato leCont = null;
leCont = (StructContato)obj;
JOptionPane.showMessageDialog(null, "Nome: " + leCont.nome);
JOptionPane.showMessageDialog(null, "Tel: " + leCont.telefone);
JOptionPane.showMessageDialog(null, "Email: " + leCont.email);
JOptionPane.showMessageDialog(null, "Data: " + leCont.data);
break;
case 2:
nome = JOptionPane.showInputDialog(agenda.length());
nome = JOptionPane.showInputDialog("Digite o nome:");
contato.nome = nome;
nome = JOptionPane.showInputDialog("Digite o telefone xxxx-xxxx:");
contato.telefone = nome;
nome = JOptionPane.showInputDialog("Digite o email:");
contato.email = nome;
nome = JOptionPane.showInputDialog("Digite a data de nascimento dd/mm/aa:");
contato.data = nome;
contato.cadastrado = 1;
ponteiro.seek(agenda.length());
saida.writeObject(contato);
vetor = bOut.toByteArray();
saida.flush();
nome = JOptionPane.showInputDialog(agenda.length()-1);
break;
case 3:
Object obj2 = entra.readObject();
StructContato leCont2 = null;
nome = JOptionPane.showInputDialog("Digite o nome que procura:");
leCont2 = (StructContato)obj2;
JOptionPane.showMessageDialog(null, leCont2.nome + " "+ nome);
if(leCont2.nome == "gab"){
nome = JOptionPane.showInputDialog("Nome: " + nome + "/nDigite o novo nome: ");
leCont2.nome = nome;
nome = JOptionPane.showInputDialog("Nome: " + nome + "/nDigite o novo nome: ");
}
break;
case 4:
JOptionPane.showMessageDialog(null, "Excluir");
break;
case 5:
JOptionPane.showMessageDialog(null, "Recuperar");
break;
case 6:
break;
default:
JOptionPane.showMessageDialog(null, "Insira uma opção válida");
break;
}
}
}
}
Minhas dúvidas são:
[b][size=18]Por que o if não está funcionando (case3)?
Por que ao abrir o arquivo ele está limpando?
Por que não está gravando serialmente? Como faz para gravar serialmente[/size]?[/b]
opa…
quando vc for colocar código faça o seguinte.
vc clica no botaozinho de nome Code ai digita o codigo dentro e depois clica dinovo…
e já de começo vi que vc não implementou a classe StructContato, que faz a serialização, apenas vc declarou as variaveis…
vlw
Eu esqueci só de colocar no post, mas eu fiz a classe StructContato. Olhe como eu fiz em um arquivo separado:
import java.io.Serializable;
public class StructContato implements Serializable {
public String nome;
public String telefone;
public String data;
public String email;
public int cadastrado;
}
[quote=Romerito.Oliveira]Eu esqueci só de colocar no post, mas eu fiz a classe StructContato. Olhe como eu fiz em um arquivo separado:
import java.io.Serializable;
public class StructContato implements Serializable {
public String nome;
public String telefone;
public String data;
public String email;
public int cadastrado;
}[/quote]
eu faria assim, criava um metodo dentro da classe StructContato com todos esses parametros, para que na principal qndo chamar ela já vim com todos os paramtros juntos, para depois criar o objeto e assim gravar…
ex:
void writeCadastro(String nome, String telefone, String data, String email)
{
this.nome = nome;
e assim por diante…
}
pq qndo vc for gravar o objeto fica mais claro…
vlw
Obrigado pela dica!!
Vou tentar fazer aqui no meu
Romerito
[quote=Romerito.Oliveira]Obrigado pela dica!!
Vou tentar fazer aqui no meu
Romerito[/quote]
ok…
ai na classe principal é ´so vc criar o objeto da classe StructContato, ai é só vc xamar esse metodo passando todos os parametros, ai depois vc abre o arquivo e manda escrever o objeto (writeObject())…
vlw
Quando for postar códigos, use a tag code:
Seu código aqui
[quote=ViniGodoy]Quando for postar códigos, use a tag code:
Seu código aqui
[/quote]
Já achei onde!
Valew pela instrução!! Desculpe os meus erros. Sou novo aqui e estou aprendendo!
Um abraço,
Romerito