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 compromisson
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.

Mais conteúdo relacionado

PDF
Caderno10
PDF
Trabalho conclusão Final - curso sistemas de informação
PDF
Gestão de crise: Desvendando o Poder do Consumidor nas Redes Sociais
PDF
Explosao de dados e o conceito de análise de dados relacionados para geração ...
PDF
[Trabalhos Acadêmicos TECNISA] E-Branding? A Internet Como Instrumento De Fix...
PDF
Zero Email by Atos Consulting
PDF
Sistema Gerenciador Para um Salão de Beleza
PDF
Monografia Completa - Graduação em Sistemas de Informação
Caderno10
Trabalho conclusão Final - curso sistemas de informação
Gestão de crise: Desvendando o Poder do Consumidor nas Redes Sociais
Explosao de dados e o conceito de análise de dados relacionados para geração ...
[Trabalhos Acadêmicos TECNISA] E-Branding? A Internet Como Instrumento De Fix...
Zero Email by Atos Consulting
Sistema Gerenciador Para um Salão de Beleza
Monografia Completa - Graduação em Sistemas de Informação

Destaque (20)

PDF
Retrato consa
PPT
Treinamento Blogs Microcamp
PDF
Ofertas empleo
PPTX
Patins
PPSX
Patrocinadores
PPTX
BBOM Diamante Brasil
PDF
JORNAL DO ÔNIBUS _ EDIÇÃO 143
PPT
Temas Atuais de Direito Tributário
PPS
Linguabrasileira
PPTX
PROYECTO PARTE II
PDF
ecolab ecl_ar01_review
PDF
Catalogo imolalanternas
PDF
Periódico Extensão Rural 2012-2 (DEAER/UFSM)
PPT
Inct Icmc Usp Player
PDF
Redação para Web
ODP
Silvana doces 1
PDF
ecolab _ar01_entire
ODP
Silvana doces 1
PDF
Catalogo de luisito
PDF
Catalogo Cofran 2009-2010
Retrato consa
Treinamento Blogs Microcamp
Ofertas empleo
Patins
Patrocinadores
BBOM Diamante Brasil
JORNAL DO ÔNIBUS _ EDIÇÃO 143
Temas Atuais de Direito Tributário
Linguabrasileira
PROYECTO PARTE II
ecolab ecl_ar01_review
Catalogo imolalanternas
Periódico Extensão Rural 2012-2 (DEAER/UFSM)
Inct Icmc Usp Player
Redação para Web
Silvana doces 1
ecolab _ar01_entire
Silvana doces 1
Catalogo de luisito
Catalogo Cofran 2009-2010
Anúncio

Semelhante a Agenda Electronica java _(gilsonrodrigis15@hotmail.com) (20)

PDF
Relatório de fim de curso
PDF
Apresentação mapeamento objeto relacional
DOCX
2semestre individual
PDF
Relatório agenda
PDF
Tcc aop-e-persistencia
PPT
Projeto Indiana
PDF
SAlmox SIIC 2014
PPTX
Apresentação ALJAVA.pptx
PPT
Curso De Hibernate 3
PDF
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
PDF
Trabalhodegraduaoengenhariadesoftware 140703173419-phpapp01
DOC
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
PDF
PROTÓTIPO DE SOFTWARE PARA PEQUENAS E MÉDIAS HOSPEDAGENS UTILIZANDO JSF
PDF
PROTÓTIPO DE SOFTWARE PARA PEQUENAS E MÉDIAS HOSPEDAGENS UTILIZANDO JSF
DOC
Analise de sistemas 1 semestre portfólio individual
ODP
Processos iniciais do mapeamento OR
PDF
Plano de Projeto de Software do​ Residents Control
PDF
Relatório de Estágio da Graduação
PDF
Gestão da Tecnologia da Informação (27/02/2014): Status Report do TCC
PDF
Monografia: FDWS: Uma Metodologia para Gerência e Desenvolvimento de Projetos...
Relatório de fim de curso
Apresentação mapeamento objeto relacional
2semestre individual
Relatório agenda
Tcc aop-e-persistencia
Projeto Indiana
SAlmox SIIC 2014
Apresentação ALJAVA.pptx
Curso De Hibernate 3
Desenvolvimento de Sistema CRUD (MVC) PHP / MYSQL
Trabalhodegraduaoengenhariadesoftware 140703173419-phpapp01
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
PROTÓTIPO DE SOFTWARE PARA PEQUENAS E MÉDIAS HOSPEDAGENS UTILIZANDO JSF
PROTÓTIPO DE SOFTWARE PARA PEQUENAS E MÉDIAS HOSPEDAGENS UTILIZANDO JSF
Analise de sistemas 1 semestre portfólio individual
Processos iniciais do mapeamento OR
Plano de Projeto de Software do​ Residents Control
Relatório de Estágio da Graduação
Gestão da Tecnologia da Informação (27/02/2014): Status Report do TCC
Monografia: FDWS: Uma Metodologia para Gerência e Desenvolvimento de Projetos...
Anúncio

Último (15)

PPTX
Chamada oral geo.pptx_Chamada oral feita PPT
PDF
Metodologia projetual na construção de Ilustrações
PDF
12-EPISTOLAS-GERAIS-CFTM-BASICO-Instituto-EDUC_compressed-1.pdf
PPTX
Trabalho, Energia e Potncia. e seus diferentes
PDF
Inflamação Aguda.pdfassasasasasasasasssassa
PPTX
CUBISMO, o ensino de artes no ensino médio.pptx
PDF
DOC-20250806-WA0031._20250806_140925_0000.pdf
PDF
-Esbocos-no-evangelho-de-lucas.pdfffffffff
PDF
molde do jake de hora de aventura feito por IA
PDF
Exemplo de organograma de ecrã 2025-04-13 à(s) 21.23.42.pdf
PPTX
introduobblica-121003071240-phpapp02.pptx
PPTX
volume currículoOOOOOOOOOOOOOOOOOOOO.pptx
PPTX
Frontend : conceitos e aplicações- 01.pptx
PPTX
Plano cartesiano_ coordenadas no 1º quadrante.pptx
PPTX
UhujuuuujuivvuvuvuvvAULA-SAUDE-DA-MULHER.pptx
Chamada oral geo.pptx_Chamada oral feita PPT
Metodologia projetual na construção de Ilustrações
12-EPISTOLAS-GERAIS-CFTM-BASICO-Instituto-EDUC_compressed-1.pdf
Trabalho, Energia e Potncia. e seus diferentes
Inflamação Aguda.pdfassasasasasasasasssassa
CUBISMO, o ensino de artes no ensino médio.pptx
DOC-20250806-WA0031._20250806_140925_0000.pdf
-Esbocos-no-evangelho-de-lucas.pdfffffffff
molde do jake de hora de aventura feito por IA
Exemplo de organograma de ecrã 2025-04-13 à(s) 21.23.42.pdf
introduobblica-121003071240-phpapp02.pptx
volume currículoOOOOOOOOOOOOOOOOOOOO.pptx
Frontend : conceitos e aplicações- 01.pptx
Plano cartesiano_ coordenadas no 1º quadrante.pptx
UhujuuuujuivvuvuvuvvAULA-SAUDE-DA-MULHER.pptx

Agenda Electronica java _(gilsonrodrigis15@hotmail.com)

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 6. 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
  • 7. 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.
  • 8. 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.
  • 9. 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.
  • 10. 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.
  • 11. 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,
  • 12. 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 {
  • 13. 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 compromisson para mesmo dia e hora!"); } else { adiciona(c1); JOptionPane.showMessageDialog(null, "Compromisso Guardado com Sucesso!"); }
  • 14. 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(); }
  • 15. 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); }
  • 16. 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;}
  • 17. 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.
  • 18. 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.
  • 19. 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.