Agenda Electronica java _([email protected])

19
Universidade de Cabo Verde Departamento de Ciência e Tecnologia Engenharia Informática e de Computadores Ano lectivo 2012/13 Praia 24 de Junho de 2013 GILSON RODRIGUES MARTINS JAILSON PIRES CORREIA

description

Projecgto java: Agenda de contatos e compromissos Netbeans e Mysql email: [email protected]

Transcript of Agenda Electronica java _([email protected])

Page 1: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

Universidade de Cabo Verde

Departamento de Ciência e Tecnologia

Engenharia Informática e de Computadores

Ano lectivo 2012/13

Praia 24 de Junho de 2013

GILSON RODRIGUES MARTINS

JAILSON PIRES CORREIA

Page 2: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 2

GILSON RODRIGUES MARTINS

JAILSON PIRES CORREIA

Dissertação apresentada a Disciplina

Programação Por objectos no curso de

Engenharia Informática e de

Computadores da Universidade de Cabo

Verde-UniCV.

Docente:

Eloy Tavares

Page 3: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 3

DEDICATÓRIA

Dedico este trabalho a Deus, a minha mãe,

aos meus irmãos, a minha Igreja, e aos

meus amigos pelo apoio que me deram ao

longo desses anos, pois em momentos

importantes da minha vida, eles sempre se

fizeram presentes com palavras de

encorajamento e afecto.

Gilson Rodrigues Martins

Dedico este trabalho primeiramente a Deus,

Pela saúde, fé e perseverança que tem me

dado. Aos meus pais, a quem honro pelo

esforço com o qual mantiveram cinco filhos

na escola. A todos os professores e

professoras que muito contribuíram para a

busca da minha formação, dos quais tenho

boas lembranças.

Jailson Pires Correia

Page 4: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 4

Resumo

O presente relatório do projecto, foi elaborado no âmbito da disciplina de Programação

Orientado a Objecto, apresentará uma descrição sobre o que foi desenvolvido nesse

projecto “Agenda Electrónica”, de modo a ter uma ideia acerca desse projecto, ira-se

falar de um modo resumido sobre as diferentes etapas e dificuldades encontradas e

ultrapassadas pelo nosso grupo, visto que o projecto tem como um dos pontos práticos

ter uma ideia melhor acerca da linguagem de Programação JAVA.

O relatório está estruturado da seguinte forma, começaremos pela Introdução, onde

iremos falar sobre o objectivo, a metodologia entre outros, depois virá o

desenvolvimento onde iremos desenvolver como o trabalho em si está estruturado,

passando pelo estudo do caso e por fim a conclusão com as considerações finais acerca

do projecto.

Page 5: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 5

Metodologia

A nível de metodologia, como sabemos existe um encadeamento de varias actividades

que permitirão cumprir as actividades no desenvolvimento de um trabalho, inicialmente

fez-se a recolha de informações para uma melhor concepção da modelagem de dados,

utilizando nomeadamente o modelo MER (Modelo Entidade Relacionamento) para uma

melhor visualização e estruturação acerca do projecto, após a concepção do melhor

modelo MER, posteriormente fez-se a elaboração da Diagrama de fluxo de Classes.

Page 6: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 6

Índice DEDICATÓRIA ............................................................................................................................ 3

Resumo .......................................................................................................................................... 4

Metodologia .................................................................................................................................. 5

Índice ............................................................................................................................................. 6

Introdução ..................................................................................................................................... 8

Objectivo ....................................................................................................................................... 9

Desenvolvimento ......................................................................................................................... 10

Estudo do caso ............................................................................................................................. 11

Conclusão .................................................................................................................................... 19

Bibliografia ................................................................................................................................. 19

Page 7: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 7

Índice de Figuras:

Figura 0: Modelo Relacionamento Entidade.

Figura 1: Tela Login e Cadastro de Usuários.

Figura 2: Tela Menu Principal.

Figura 3: Tela Manipulação de Compromissos.

Figura 4: Tela Manipulação de Contactos.

Page 8: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 8

Introdução

Já existe há anos, o problema é a falta de um método de organização do tempo de

organizar digitais eventos, contactos da vida quotidiana de jovens e adultos. As agendas

pessoais são essenciais para a organização de eventos em nossas vidas diárias. Com isso

podemos planejar uma sequência de tarefas, obrigações reuniões ou outros

compromissos com referência ás datas e ao tempo. Mas as Agendas pessoais que são

utilizadas hoje têm as suas limitações. Sendo pequenos livros, pode chegar ao

desperdício de tempo ou danificado por situações inesperada e, possivelmente o seu

conteúdo quando o usuário quiser fazer uso de um diário pessoal escrito, exige um

material escrito, objecto que as vezes leva. Actualmente é difícil encontrar um método

de organizações de eventos, que são gratuitos e acessíveis para todos os tipos de

computadores. Portanto, para resolver este problema, os usuários têm recorrido ao uso

disponíveis agendas e-mails de contas agendas ou mesmo telefones celulares.

Programas baixados também têm agendas que são de incerto e pouco confiável, que

também contêm erros em programação.

Page 9: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 9

Objectivo

Este trabalho tem como principal objectivo criar um diário pessoal electrónico para

resolver todas as limitações acima indicadas, que por meio de estrutura de

armazenamento, permite um usuário armazenar informações de contactos, sobre

próximos eventos e organiza-los de acordo com a data e tempo desejado. Ele também

quer alcançar um método de organização utilizando tabelas de dados, contendo botões

que indicam as possíveis acções a serem tomadas e estes apresentam imagens para uma

melhor compreensão. Essa agenda deve também ser capaz de facilitar a leitura dos

eventos inseridos, para não perder tempo ou prevenir usuários de dinamismo,

permitindo que os usuários tenham o seu acesso á informação por um computador.

Outra vantagem deste organizador pessoal electrónico é exibição das informações em

uma apresentação clara e organizada.

Page 10: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 10

Desenvolvimento O projecto foi desenvolvido no netbeans, é composto por 8 packages (pacotes)

importantes, que são elas:

“login” onde se encontra a tela de login; “Conexao_Banco_de_Dados” que é o pacote

onde se encontra a conexão com a base de dados da mysql e a tela de carregando que

vai dar acesso a tela principal onde o usuário vai escolher as operações para o

armazenamento das informações; “Acesso_aos_Dados_BD” contendo as seguintes

classes: contacto onde se agrega as seguintes informações: Nome Pessoa, Endereço

(Seus atributos); Telefone (Com código Pais); Email, etc; compromissos com as

informações: tipo, local, assunto, acompanhante, data e hora a realizar o compromisso; e

a classe usuário que contendo as informações do utilizador (nome e senha).

“Principal” contendo as seguintes frames: ”contactos” onde se agrega os dados do

contacto. “Eventos” que permite interacções do usuário com os dados do compromisso;

“Login” que dá ao usuário acesso ao aplicativo.

Cada classe tem seus atributos próprios que os identificam assim como as chaves

primárias (primary key), como poderemos verificar mais adiante.

O modelo MER na figura 1 é constituído por 3 entidades que caracterizam o nosso

modelo abstracto, que são o usuário, o compromisso e contacto, também a relação

existente entre eles, o usuário marca/agenda compromisso a relação entre as duas

entidades é “compromisso_has_ usuarios” e também entre o usuário e o contacto existe

a seguinte relaçáo “usuarios_has_contacto”, na mesma figura esta representado o grau

de relacionamento do modelo descrito.

Figura 0: Modelo Relacionamento Entidade.

Page 11: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 11

Estudo do caso Nessa etapa vai ser descrito os códigos do programa, isto é, explicação dos trechos de

alguns códigos realçados como mais importantes que compõem esse projecto.

Primeiramente optamos por criar a base de dados utilizando o SGBD MySQL SERVER

5.5 responsável por guardar todos as informações necessárias, sobre os contactos,

eventos, e informações de cada utilizador.

Esse projecto foi desenvolvido no Compilador netbeans um, dos aplicativos apropriados

para a programação Java.

Criamos um banco de dados em MySQL com nome agenda, e as respectivas tabelas,

contacto, compromisso e usuário:

create database agenda;

use agenda;

create table contato(

id int(2) not null auto_increment,

nome varchar(50) not null,

apelido varchar(50) not null,

endereco varchar(50) not null,

telefone varchar(50) not null,

telemovel varchar(50) not null,

email varchar(50) not null,

grupo varchar(50) not null,

data_agendamento date,

primary key(id));

create table compromisso(

id int(4) not null auto_increment,

tipo varchar(50) not null,

local varchar(50) not null,

assunto varchar(50) not null,

acompanhante varchar(10) not null,

nome_acompanhante varchar(50) not null,

dia_semana varchar(10) not null,

Page 12: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 12

data_agendamento date,

hora time,

primary key(id));

create table usuarios(

id int(2) not null auto_increment,

nome varchar(50) not null,

password varchar(50) not null,

primary key(id));

Depois de ter criado a base de dados, agora é a vez de implementar os codigos,

primeiramente foi criado a conexao que permite o programa interagir com a base dados

e acessar os dados .

//Código responsável pela conexão com base de dados da MySQL

public static Connection GetConexao()throws SQLException{

try{

Class.forName("com.mysql.jdbc.Driver");

return DriverManager.getConnection("jdbc:mysql://localhost/”nome base de

dados", "nome usuario MySQL", "senha ");

}

catch(ClassNotFoundException e){

throw new SQLException(e.getMessage());

} }

Após ter criado a conexão com a base de dados será necessário ,a implementação do

código que dá acesso a base de dados, permitindo assim, introduzir, alterar, remover,

listar, dados de contactos e de compromissos:

NOTA: A seguir são mostrados alguns códigos que permite Inserir, Alterar, listar e

remover compromissos, para contacto usa a mesma estratégia.

//Código responsável para inserir dados compromisso na base de dados.

public void adiciona(compromisso c1) throws SQLException {

Page 13: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 13

String sql = " insert into agenda.compromisso

(tipo,local,assunto,acompanhante,nome_acompanhante,dia_semana,data_agendamento

,hora)" + "values(?,?,?,?,?,?,?,?)";

PreparedStatement stmt = conexao.prepareStatement(sql);

// toma os dados para inserir:

stmt.setString(1, c1.getTipo_compromisso());

stmt.setString(2, c1.getLocal_compromisso());

stmt.setString(3, c1.getAssunto_compromisso());

stmt.setString(4, c1.getAcompanhante());

stmt.setString(5, c1.getNome_acompanhante());

stmt.setString(6, c1.getDia_semana());

stmt.setDate(7, c1.getData_agendamento());

stmt.setTime(8, c1.getHora_a_realizar());

stmt.execute();

stmt.close();

Para salvar um compromisso é necessário a seguinte linha de codigo:

Public void salvar compromisso (compromisso c1) throws SQLException {

String sql = "select * from agenda.compromisso where data_agendamento like?

and hora like ?";

PreparedStatement stmt = conexao.prepareStatement(sql);

stmt.setDate(1, c1.getData_agendamento());

stmt.setTime(2, c1.getHora_a_realizar());

sr = stmt.executeQuery();

if (sr.next()) {

JOptionPane.showMessageDialog(null, "Nao pode Criar mesmo compromisso\n

para mesmo dia e hora!");

} else {

adiciona(c1);

JOptionPane.showMessageDialog(null, "Compromisso Guardado com

Sucesso!"); }

Page 14: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 14

//Código responsável para alterar dados compromisso na base de dados.

public void altera(compromisso c1) throws SQLException {

String sql = "update agenda.compromisso set tipo

=?,local=?,assunto=?,acompanhante=?,nome_acompanhante=?,dia_semana=?,data_

agendamento=?,hora=? where id=?";

PreparedStatement stmt = conexao.prepareStatement(sql);

stmt.setString(1, c1.getTipo_compromisso());

stmt.setString(2, c1.getLocal_compromisso());

stmt.setString(3, c1.getAssunto_compromisso());

stmt.setString(4, c1.getAcompanhante());

stmt.setString(5, c1.getNome_acompanhante());

stmt.setString(6, c1.getDia_semana());

stmt.setDate(7, c1.getData_agendamento());

stmt.setTime(8, c1.getHora_a_realizar());

stmt.setLong(9, c1.getId_compromisso());

stmt.execute();

stmt.close();

}

//Código responsável para remover dados compromisso na base de dados.

public void remove(compromisso c1) throws SQLException {

String sql = "delete from compromisso where id=?";

PreparedStatement stmt = conexao.prepareStatement(sql);

stmt.setLong(1, c1.getId_compromisso());

stmt.execute();

stmt.close();

}

Page 15: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 15

Para que o usuário possa interagir com o programa, ele tem de cadastrar-se e só depois

terá acesso ao banco de dados e acessar as informações necessárias, para esse efeito foi

criado um frame de login onde o usuário se cadastra e terá acesso a tudo, segue-se o

código abaixo para o devido efeito:

//Código responsável para Login do usuario.

public void Login() throws SQLException {

if (JTEntrarUsuario.getText().equals("") || new

String(JTEntrarSenha.getPassword()).equals("")) {

JOptionPane.showMessageDialog(null, "Preencher todos os Campos!");

new Login().setVisible(true);

} else {

Usuario c1 = new Usuario();

c1.setNome(JTEntrarUsuario.getText());

c1.setPassword(new String(JTEntrarSenha.getPassword()));

UsuarioDao dao = new UsuarioDao();

dao.fazerlogin(c1); } }

public void fazerlogin(Usuario c1) throws SQLException {

String sql = "select * from agenda.usuarios where nome =? and password = ?";

PreparedStatement stmt = conexao.prepareStatement(sql);

try {

stmt.setString(1, c1.getNome());

stmt.setString(2, c1.getPassword());

sr = stmt.executeQuery();

if (sr.next()) {

Carregando log = new Carregando();

log.setVisible(true);

log.setLocationRelativeTo(null);

} else {

JOptionPane.showMessageDialog(null, "O Usuario com este Pssword nao

existe!");

new Login().setVisible(true); }

Page 16: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 16

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Erro!"); } }

O Usuário ao fazer pesquiza, para que o programa lhe liste todos os compromissos

guardados na base de dados, será necessário que estes dados estejam bem definidos, e o

código necessário para o devido efeito é:

public List<compromisso> getLista(String tipo) throws SQLException {

String sql = "select * from compromisso where tipo like ?";

PreparedStatement stmt = this.conexao.prepareStatement(sql);

stmt.setString(1, tipo);

ResultSet rs = stmt.executeQuery();

List<compromisso> minhaLista = new ArrayList<compromisso>();

while (rs.next()) {

// Listando os compromissos

compromisso c1 = new compromisso();

c1.setId(Long.valueOf(rs.getString("id")));

c1.setTipo_compromisso(rs.getString("tipo"));

c1.setLocal_compromisso(rs.getString("local"));

c1.setAssunto_compromisso(rs.getString("assunto"));

c1.setAcompanhante(rs.getString("acompanhante"));

c1.setNome_acompanhante(rs.getString("nome_acompanhante"));

c1.setDia_semana(rs.getString("dia_semana"));

Calendar calendar = Calendar.getInstance();

java.sql.Date DATA = new java.sql.Date(calendar.getTime().getTime());

SimpleDateFormat go = new SimpleDateFormat("yyyy-MM-dd");

c1.setData_agendamento(rs.getDate("data_agendamento"));

java.sql.Time time = new java.sql.Time(calendar.getTime().getTime());

SimpleDateFormat formate = new SimpleDateFormat("hh:MM:ss");

c1.setHora_a_realizar(rs.getTime("hora"));

minhaLista.add(c1);

}rs.close();

stmt.close();

return minhaLista;}

Page 17: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 17

Nesta fase de relatório segue-se um conjunto de interfaces gráficas, dando mais ou

menos, uma ideia geral da interface gráfica.

Para Login:

Figura 1: Tela Login e Cadastro de Usuários.

Menu Principal:

Figura 2: Tela Menu Principal.

Page 18: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 18

Para Compromissos:

Figura 3: Tela Manipulação de Compromissos.

Para Contactos:

Figura 4: Tela Manipulação de Contactos.

Page 19: Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

UNIVERSIDADE DE CABO VERDE

Página 19

Conclusão

A realização desse trabalho, proporcionou a nós (membros do grupo), uma grande

oportunidade e inspiração para a busca de mais conhecimento no que desrespeita aos

conceitos da linguagem Java, que vieram somar a aqueles adquiridos ao longo do Curso,

através das várias fontes de pesquisas tais como: livros técnicos, livros digitais

(Programação orientado pelos objectos, Java como programar,..) entre outras matérias

extraídas da Internet e os acetatos disponibilizados pelo professor.

Bibliografia www.fnac.pt

http://www.livrariaresposta.com.br/v2/produto.php?id=161660

www.google.com

Vídeos aulas no www.youtube.com

Acetatos Disponibilizados pelo professor.