Agenda Electronica java _([email protected])
-
Upload
gilson-martins -
Category
Design
-
view
504 -
download
1
description
Transcript of Agenda Electronica java _([email protected])
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
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
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
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.
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.
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
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.
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.
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.
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.
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,
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 {
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!"); }
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();
}
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); }
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;}
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.
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.
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.