Categorias
Java

Apache POI – Gerador de Kits

Para quem planeja projetos simples e uteis usando Java e que agreguem pessoalmente e profissionalmente tem no framework Apache POI uma biblioteca que fornece ao desenvolvedor a possibilidade de controle do pacote office voltada à aplicações de escritório. Por meio dela é possível gerar documentos docx a partir de uma planilha xlsx corretamente populada com os dados que o usuário desejar.

Esta aplicação em questão se trata de um gerador de docs de kits alimentação para quem necessita do mesmo durante a pandemia e pertence a rede de escolas públicas, porém sua lógica pode ser estendida para as mais diversas funções. De um modo geral esta aplicação irá, por meio de uma planilha carregada com os dados cadastrais de todos os alunos de uma escola (nome, matricula, data de nascimento, nome do responsável, etc), gerar o termo de responsabilidade, no formato docx, informando que o mesmo recebeu devidamente o kit alimentação.

Entre as classes mais importantes existem:

  • Columns: Model responsável pelos dados do aluno.
  • ExcelController: Controller responsável por definir o path do arquivo xlsx e o controle da planilha.
  • ChecaMaiorIdade: Classe que faz a checagem da maioridade do aluno, caso seja menor os dados do responsável são inseridos no termo.
  • Demo: Classe principal que cria e controla o conteúdo do docx gerado.

Github: https://github.com/JAugustoMSJ/docsgenerator

Categorias
Android Java

CRUD – Cadastro e Consulta [Android]

Recentemente descobri que esse blog ainda tem algumas visitas, então decidi colocar mais alguns projetos por aqui sempre que possível.

Desde minha última postagem muitas coisas aconteceram, fiquei um bom tempo desanimado com desenvolvimento e migrei para outras áreas, mas no fim a vontade de aprender e curiosidade sempre acabam nos buscando pra esse mundo de novo.

Recentemente estou focando em Spring Boot, API Rest e games simples usando libGDX. Bom, essa postagem é de uma aplicação onde faço um CRUD simples usando Java e SQLite. Ainda pretendo evoluir mais esse app fazendo commits no GitHub sempre que possível.

Esse vídeo abaixo tem como objetivo mostrar como está a aplicação no momento – principalmente para quem está iniciando no desenvolvimento de apps – e checar as estatísticas do blog após tanto tempo. Por enquanto é isso, espero que gostem.

Github: https://github.com/JAugustoMSJ/Android-CRUD-Application

Categorias
UML

UML – Diagrama de Caso de Uso e Diagrama de Classe

UML, ou Unified Modelling Language

É a linguagem responsável pela criação lógica de um sistema a partir de pontos de vista diferentes, onde cada qual é representado por um diagrama específico, fazendo assim uma espécie de simulação do que o modelo físico do sistema deverá fazer.

É composta por:

Diagrama de caso de uso, diagrama de classe, diagrama de sequência, diagrama de estados, diagrama de colaboração, diagrama de atividade, diagrama de componente, diagrama de entidade-associação e diagrama de distribuição.

Diagrama de Caso de Uso

Faz uma representação do sistema a partir da visão do usuário, ou seja, mostra de forma simples o que é feito no sistema e suas interações com o usuário. É composto por cenário, ator, use case e comunicação, sendo que:

1. Cenário: Sequência de eventos que acontecem quando um usuário interage com o sistema.

2. Ator: Usuário do sistema, ou melhor, um tipo de usuário.

3. Use Case: É uma tarefa ou uma funcionalidade realizada pelo ator (usuário)

4. Comunicação: É o que liga um ator com um caso de uso

Relações

Include: É um caso de uso mais específico que esta conectado a outro, assim mantendo a relação de dependência, já que se torna necessário a existência de um para o outro funcionar.

Extend: Também é conectado a um caso de uso e tem uma funcionalidade mais específica porém a relação de dependência não existe.

Exemplo:

O Conselho Nacional de Medicina em parceria com algumas Drogarias e o Governo Federal decidiram criar um sistema com o objetivo de fornecer medicamentos via web, tendo assim o cliente ou paciente mais facilidade e comodidade para se tratar.

O sistema tem como objetivo fornecer medicamentos através da consulta pelo cliente, uma lista com as drogarias que possuírem o medicamento solicitado vai aparecer na tela e o cliente vai poder selecionar a que desejar assim como a quantidade.

O cliente poderá(caso necessário) enviar uma receita médica especial via upload, que será disponibilizada pelo médico, a receita por sua vez será analisada por um administrador do sistema, o qual fará o papel do farmacêutico e por fim o mesmo confirmará a compra caso a receita esteja ok, ou negará a compra caso haja algum problema com a mesma.

Pra finalizar, a drogaria selecionada vai enviar o medicamento ao usuário assim como a nota fiscal, terminando assim toda a transação.

Diagrama de Caso de Uso

Diagrama de Classe

Diferente do caso de uso, o Diagrama de Classe mostra a visão do analista para o programador, definindo assim as classes(entidades), atributos, chaves, métodos e relações entre classes. Ainda trabalhando em cima do sistema de Farmácia, o diagrama de classes ficaria dessa forma.

Relações:

Associação: Relacionamento simples entre classes onde cada associação representa o tipo de relação entre as classes envolvidas.

Agregação: Relação de composição entre classes porém sem dependência, semelhante ao extend do Caso de Uso.

Composição: Uma relação de composição e dependência entre duas classes, semelhante ao include do Caso de Uso.

Generalização ou Especialização: Ou herança, onde uma classe herda atributos e métodos da classe principal.

Diagrama de Classe

É importante ressaltar que toda informação a ser armazenada no banco será uma entidade mas não necessariamente uma classe, por exemplo: Drogaria e Usuário são entidades pois possuem dados essenciais para o sistema, ou seja, precisam ser mantidos no banco para consultas, mas caso houvesse uma classe “Telefones”, onde a mesma armazenasse somente os números do usuário seria então somente uma classe comum com dados não essenciais ao sistema.

Categorias
Linguagem C

Operações em C

Linguagem C é uma linguagem de programação criada em 1972, por Dennis Ritchie, com o objetivo de desenvolver o sistema operacional Unix, substituindo assim a linguagem Assembly, que apesar de possuir o mesmo paradigma, era mais complexa e possuía menos recursos.

É uma linguagem estruturada, imperativa e procedural, ou seja, tem seu formato feito em blocos de funções e rotinas, onde cada uma executará uma tarefa, facilitando assim a reutilização de código e melhor organização do programa. Considerada uma linguagem base para diversas outras que surgiram, somado ao seu poder computacional, se tornou assim uma das mais utilizadas pelo mundo até hoje.

Utilizando o DevC++ ou outro programa para desenvolvimento em C, faremos nossa primeira aplicação. A biblioteca padrão é stdio.h. Bibliotecas são colocadas na seguinte forma: “include<stdio.h>”.

Inicialmente vamos utilizar algumas das funções mais básicas e gerais, como condições e operadores lógicos, aritméticos e relacionais. No exemplo a seguir temos um programa que faz o cálculo de algumas funções: soma, subtração, multiplicação, divisão, fatorial e uma função que inverte uma sequência de números inteiros. Todas essas funções são chamadas a partir da função principal “main”, por uma condição de switch, que irá verificar a operação solicitada pelo usuário segundo a variável opção.

#include <stdio.h>
#include <conio.h>

int fatorial(){
int i, fat, valor;
printf(“\nInsira um valor:\n”);
scanf(“%i”, &valor);
fat = valor;
for(i = 1; i < valor; i++){
fat *= i;
}
printf(“O fatorial de %i e: %i”, valor, fat);
return 0;
}

int soma(){
int valor1, valor2;
printf(“\nInsira um valor:\n”);
scanf(“%i”, &valor1);
printf(“Insira um valor:\n”);
scanf(“%i”, &valor2);
valor2 += valor1;

printf(“A soma dos valores e: %i”, valor2);
return 0;
}

int multiplicacao(){
int valor1, valor2;
printf(“\nInsira um valor:\n”);
scanf(“%i”, &valor1);
printf(“Insira um valor:\n”);
scanf(“%i”, &valor2);
valor2 *= valor1;

printf(“A multiplicacao dos valores e: %i”, valor2);
return 0;
}

int divisao(){
int valor1, valor2;
printf(“Insira um valor:\n”);
scanf(“%i”, &valor1);
printf(“Insira um valor:\n”);
scanf(“%i”, &valor2);
if(valor2 >= valor1){
valor2 = valor2 / valor1;
printf(“A divisao dos valores e: %i”, valor2);
}else{
valor1 = valor1 / valor2;
printf(“A divisao dos valores e: %i”, valor1);
}
return 0;
}

int inverterValor(){
int cifra, valor;
printf(“Insira um valor:\n”);
scanf(“%i”, &valor);
do{
if(valor < 0){
valor *= -1;
printf(“-“);
}
cifra = valor % 10;
printf(“%i”, cifra);
valor /= 10;
}while(valor != 0);
return 0;
}

int main(){
unsigned int opcao;
printf(“1 – SOMA\n”);
printf(“2 – MULTIPLICACAO\n”);
printf(“3 – DIVISAO\n”);
printf(“4 – FATORIAL\n”);
printf(“5 – INVERTER VALOR\n”);
printf(“10 – ENCERRAR”);
printf(“\n————————————–“);
printf(“\nSelecione uma operacao:\n”);
scanf(“%i”, &opcao);
switch(opcao){
case 1:
soma();
break;

case 2:
multiplicacao();
break;

case 3:
divisao();
break;

case 4:
fatorial();
break;

case 5:
inverterValor();
break;

default:
printf(“Encerrando o programa!”);
break;
}
}

Categorias
Javascript

CreateElement e AppendChild

Um problema simples de resolver, mas que ainda é comum em alguns sistemas web se encontra nos campos de select, onde há pouco dinamismo que facilite a vida do usuário. Certa vez estava em um site onde tive que selecionar minha faculdade em um campo de select, porém mesmo tendo selecionado minha cidade de origem o campo carregou todas as faculdades e universidades do país tornando assim a tarefa mais exaustiva.

Em contrapartida, existem formulários com campos de select que é gerado após uma determinada ação ser executada dentro do mesmo, muitas vezes em campos de estados onde dependendo do estado selecionado surge um novo campo select com as cidades específicas daquele estado. O método createElement em conjunto com o appendChild do Javascript conseguem criar novos elementos e atributos de inputs html dinamicamente no formulário e é o que vamos ver no exemplo à seguir:

createelement_appendchild

createelement_appendchild_1

Primeiramente criamos arrays para cada estado(Rio de Janeiro, Pará, São Paulo) e um vazio que receberá o array selecionado posteriormente, depois um elemento select é criado por meio do “document.createElement(“SELECT”)” e atribuído a uma variavél, crio mais um array vazio que receberá as cidades posteriormente em um laço de repetição. A condição if determina qual estado seleciona pelo usuário e atribui o array de cidades do estado em questão ao array vazio de cidades, após isso o laço é iniciado que irá até o limite de cidades existentes por meio do método “length”. O elemento de option é criado assim como o de select, é atribuído o nome da cidade para aquela posição específica do array, em seguida o elemento option é inserido dentro do select por meio do “appendChild” e por fim é adicionado a uma div “cidades” correspondente que se encontra no html também por meio do appendChild.

Categorias
AngularJs

AngularJs – Inserindo dados em tabela + Bootstrap

Categorias
AngularJs

AngularJs

AngularJS é um framework front-end que auxilia a criação de Single Page Aplications(SPA), e vem ganhando destaque desde de seu surgimento em 2011-2012 por Misko Every e Adam Ebrons, cujo objetivo era facilitar a criação de aplicações web. É baseado em um modelo MVW(Model View Whatever), uma brincadeira da Google dando um ponto final a uma longa discussão entre a comunidade de desenvolvedores que não chegavam em um acordo sobre o modelo utilizado cujos principais eram: MVC(Model View Controller), MVP(Model View Presenter) e MVVM(Model View View Model).

Vantagens:

1.Por ser feito em JS é um framework de fácil aprendizado.

2.O framework comparado com outras tecnologias como Java, por exemplo, possui em ganho enorme de performance, visto que são necessários muito menos linhas de código, além de não precisar de um arquivo xml controlando o acesso das chamadas na aplicação.

3.Devido a sua expansão, existem várias empresas utilizando além de possuir um vasto conteúdo disponível na internet.

4.Possui o sistema Two-Way-Data-Binding, que faz uma ligação entre a view e controller a partir de uma variável de escopo em tempo de execução, evitando assim uma maior quantidade de código para mostrar os dados pelo servidor.

Diretivas:

O framework possui um sistemas de códigos responsáveis por facilitar o acesso de variáveis/dados dentro da view.

1.ng-app – Declara um elemento como o elemento raiz da aplicação, ocasionando a mudança do comportamento padrão da tag.

2.ng-bind – Muda/Exibe o texto de um elemento HTML automaticamente, de acordo com o seu resultado, vindo das regras de negócio.

3.ng-model – É similar ao ng-bind, mas permite ligação direta bidirecional (two-way data binding ) entre a view e o escopo do aplicativo.

4.ng-click – Permite instanciar o evento de click, semelhante ao onclick.

5.ng-controller – Especifica um controller JavaScript para aquele HTML em questão.

6.ng-repeat – Instancia um elemento por item de um array.

Iniciando com a ferramenta:

1.Primeiramente vá no site http://www.angular.org e faça o download da ferramenta.

2.Descompacte o arquivo e crie uma pasta com o nome do seu projeto. Em seguida copie o arquivo “angular.js” do arquivo que foi baixado para a pasta do seu projeto.

3.Dentro da pasta principal “PrimeiroProjetoAngular” crie um arquivo html e crie o código a seguir:

helloworld-angular

Abra no navegador, se ele estiver exibindo a mensagem “Hello World!” então seu framework está funcionando perfeitamente. Caso dê algum erro abra o console do seu navegador e veja qual o problema em seu código.

Explicação:

Um código simples usando apenas 2 das principais diretivas em ng-app=”helloWorld” e ng-controller=”helloWorldCtrl”, onde a segunda faz a ligação com o controller  criado dentro js onde existe uma função que exibe a mensagem Hello World na tela e por fim sendo exibido no html pela mensagem: “{{message}}”.

Categorias
Php

Php: inserindo dados no banco

Php é uma das linguagens mais recentes no mercado -comparando com as mais usadas-, uma das principais a nível de trabalho front-end, pois geralmente é usada em conjunto com Javascript e Html, além de ser uma das mais fáceis de aprender. Esse post faz uma abordagem de uma simples inserção de dados no banco e mostra seu processo desde de a validação no cliente(Javascript) até o servidor(php).

Não entrarei em detalhes da criação do banco pois este não é o objetivo principal deste post, somente digo que o sgbd usado foi o mysql a partir da ferramenta phpMyAdmin gerada pelo xampp.

Pondo a mão na massa temos o seguinte script abaixo:

 

script

script2.png

Inicialmente temos uma tela de cadastro com 5 campos de entrada: nome, email, usuário, senha e confirmar senha, e dois botões “cadastro” e “limpar”, feitos em um html simples, com todos os “names” definidos, que serão usados para obter o “value” inserido pelo usuário, além dos eventos criados nos botões que executarão uma operação no formulário.

Abaixo temos uma function em js chamada “limpar”, cuja única função é limpar os campos do formulário no momento do clique no botão que ativará o evento onClick().

Mais abaixo há o script em php que fará a inserção dos dados no bd, iniciando com uma verificação da string “cadastrar”-“if(@$_GET[‘go’] == ‘cadastrar’) “- localizada na action do form-“action=?go=cadastrar”-, que garante que as operações só serão executadas no momento do envio do formulário. Em seguia as varáveis do formulário são obtidas pelo $_POST[‘ ‘], e verificadas se estão vazias, caso estejam é enviada uma mensagem via js para o usuário, senão ele executa a query de insert no banco seguida de uma resposta de confirmação ao usuário.

Categorias
Java

[Vídeo] Sistema Supermercado – Java + html + jstl + jsp + css

Sistema web completo.

Categorias
Java

[Vídeo] Questionário simples – HTML + Javascript + CSS

Um questionário simples funcionando com o evento onclick do Javascript, que é chamado dentro das tags html de captura de dados “<input>”, independentemente do seu tipo, que aqui em questão é usado o radio, pois é feito a escolha de somente um campo, caso fosse mais de um poderia ser usado o checkbox.

Então o código de captura do campo html mais o javascript fica assim:

S1.4 Todos os trabalhadores da sua empresa possuem CPF, NIS e data de nascimento cadastrados corretamente?
<br>
<input type=”radio” name=”s4″ value=”a” onclick=”respostaS4()”/>a) Não sei
<br>
<input type=”radio” name=”s4″ value=”b” onclick=”respostaS4()”/>b) Acho que sim, mas não tenho certeza
<br>
<input type=”radio” name=”s4″ value=”c”/>c) Sim, já validei junto a Caixa Federal Econômica
<br>
<div id=”msg”>
<output id=”mensagems4″ value=”mensagem”/>
</div>
<br>
<script>
function respostaS4(){
document.getElementById(“mensagems4″).value=”mensagem”;
}
</script>

No exemplo mostrado acima tanto a letra a quanto a b mostram o mesmo resultado, já que ambas executam a mesma função respostaS4 que seta uma mensagem, pelo campo id, ao campo correspondente mensagem do html.