sexta-feira, 23 de julho de 2010

Consulta de Usuários: OK!

>Por Matheus

Hey, tudo bom?

Como disse anteriormente, a consulta de usuários estava apresentando alguns erros, principalmente quando a mesma era realizada com o filtro "Cidade". Para solucionar o problema, utilizamos uma cláusula SQL que retornasse apenas as cidades com usuários cadastrados, porém, estas são adicionadas apenas uma vez ao comboBox (evitando duplicação de cidades), facilitando a consulta e limitando os valores válidos.



Além dessa alteração, decidimos eliminar alguns campos da tabela que é exibida como resultado. Tal mudança foi proposta para facilitar a navegação. Se, por ventura, o adminsitrador desejar visualizar todas as informações de determinado usuário, basta clicar na imagem da lupa, o que ativará um 'dialog modal' com uma espécie de perfil de usuário, com imagem e todos os dados restantes.

A implantação desse "perfil" ainda está sendo desenvolvida e pretendemos concluí-la o mais rápido possível. Se conseguirmos, tal implantação já será apresentada na próxima prévia dos Projetos.

Obrigado pela atenção e um ótimo retorno às aulas!

>por Débora

Bom dia pessoal,

Hoje vou apresentar para vocês a classe MouseAdapter(), uma das classes de nosso menu de tarefas em java. Essa classe é responsável por fazer o clique dos links ("botões") no menu .

Segue abaixo o código da classe:


class EventoMouse extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

System.out.println(e.getPoint());

if (((e.getX() >= 206) && (e.getX() <= 385)) && ((e.getY() >= 64) && (e.getY() <= 80))) {

showMenu(false);

new Prog1();

System.out.println("Nova logica");
}
if (((e.getX() >= 234) && (e.getX() <= 345)) && ((e.getY() >= 111) && (e.getY() <= 124))) {

try {

showMenu(false);

String caminho = funcoes.arquivo();

new Prog1();

Arquivo.carregar(caminho, Prog1.llMinis);
}
catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace();
}
System.out.println("edita logica");
}
if (((e.getX() >= 231) && (e.getX() <= 345)) && ((e.getY() >= 145) && (e.getY() <= 158))) {

try {

showMenu(false);

String caminho = funcoes.arquivo();

Tradutor.inicia(caminho, menu);

Arquivo.carregar(caminho, Prog1.llMinis);
}
catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace();
}
System.out.println(" Simulador");
}

if (((e.getX() >= 198) && (e.getX() <= 426)) && ((e.getY() >= 181) && (e.getY() <= 191))) { // new (); System.out.println("Executar"); }

if (((e.getX() >= 270) && (e.getX() <= 320)) && ((e.getY() >= 219) && (e.getY() <= 235))) { // new (); System.out.println("Ajuda"); }

if (((e.getX() >= 270) && (e.getX() <= 320)) && ((e.getY() >= 252) && (e.getY() <= 267))) { // new (); System.out.println("Sobre"); }

if (((e.getX() >= 225) && (e.getX() <= 373)) && ((e.getY() >= 285) && (e.getY() <= 298))) { // new (); System.out.println("Desenvolvimento");

} if (((e.getX() >= 280) && (e.getX() <= 315)) && ((e.getY() >= 318) && (e.getY() <= 331))) {
System.exit(0);
}

}

Bom, por hoje é só. Até mais!

Sistema Proposto

>Por Mariana

Hey
Trouxe a correção do sistema proposto:

No site do sistema o usuário se cadastra escolhendo um grupo para participar, recebendo um confirmação de cadastro. O usuário pode criar um grupo, preenchendo as informações necessárias e recebe uma confirmação dessa ação, bem como notificações a cada novo participante deste. O administrador envia ao sistema informações para exclusão(grupo ou participante), e notificações/advertências. Essas últimas serão enviadas aos grupos ou usuários. O grupo pode notificar o usuário, expulsá-lo ou se excluir. O usuário sempre pertencerá a um grupo (existirá um grupo padrão, inexcluível), podendo excluir seu cadastro quando desejar. O sistema fornece ao administrador relatórios com informações dos usuários e dos grupos e ao grupo relatórios com informações dos participantes e seus desempenhos.

O usuário acessa o sistema desktop fornecendo o login, ele da entrada nas coordenadas dos objetos dos quadros de ação/condição dando origem a um arquivo de lógica(.ggb). Uma vez tendo o arquivo de lógica o usuário pode solicitar a interpretação do mesmo, assistindo sua execução pelo simulador 2D ou com os objetos reais. O sistema retorna o status do participante.

Obs. Se o participante não tiver cadastro no site do sistema, ele poderá acessar o sistema desktop, porém não haverá retorno do status.

Boa volta as aulas

Motivo exclusão

>por Renato

Oi.
Vou postar sobre o funcionamento mais aprofundado da exclusão.
Na tela que pode ser visualizada a seguir, que aparece quando o administrador clica no botão vermelho, ele pode visualizar qual foi o grupo selecionado para exclusão e deve informar o motivo do ato.

Após apertar o botão excluir, o usuário é enviado de volta para a tela inicial e recebe uma notificação do êxito da operação.


Renato

Exclusão

>Por Maisa

Oi,
Na reunião de sexta (23/07) entre tudo que foi desenvolvido, fizemos a exclusão de usuários e grupos. Para facilitar a navegação para o usuário decidimos acrescentar a opção de exclusão no consultar.
Segue abaixo uma imagem da página, nesse caso de consulta de grupos:

Assim que faz a consulta com o nome desejado, o administrador pode apenas verificar o perfil no botao de lupa , ou excluí-lo no botão de X que aparece ao lado do nome, conforme seja a necessidade.

Até mais,

Maisa

Desenvolvimento em Java

>Por Juliana

Bom dia,
Uma semana depois, a função executaComando() do RoboVirtual mudou bastante. Após muita trigonometria, o resultado foi o código apresentado a seguir. Alguns princípios se mantiveram, outros mudaram completamente. O robô agora se movimenta como deveria. O próximo passo é pensar a respeito da representação do movimento de uma bola na arena, bem como a colisão entre os objetos.
Enfim, aqui está o trecho do código:
void executaComando() {
if (tempoCmd > 0) {
/** usado pois o giro acontece a 90 graus da direcao do robo */
final double noventa = Math.PI / 2;
double dxa;
double dya;
switch (comando) {
case 0x11:
x += dx = velCmTempo * Math.cos(angulo);
y += dy = velCmTempo * Math.sin(angulo);
break;
case 0x99:
x += dx = -velCmTempo * Math.cos(angulo);
y += dy = -velCmTempo * Math.sin(angulo);
break;
case 0x10:
dxa = distRodasCm * Math.cos(angulo - noventa);
dya = distRodasCm * Math.sin(angulo - noventa);
/**
* simplificando double perim = 2 * Math.PI * distRodasCm;
* angulo += dAngulo = -velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = -velCmTempo / distRodasCm;
x += dx = (dxa - distRodasCm * Math.cos(angulo - noventa)) / 2;
y += dy = (dya - distRodasCm * Math.sin(angulo - noventa)) / 2;
break;
case 0x90:
dxa = distRodasCm * Math.cos(angulo - noventa);
dya = distRodasCm * Math.sin(angulo - noventa);
/**
* simplificando double perim = 2 * Math.PI * distRodasCm;
* angulo += dAngulo = velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = velCmTempo / distRodasCm;
x += dx = (dxa - distRodasCm * Math.cos(angulo - noventa)) / 2;
y += dy = (dya - distRodasCm * Math.sin(angulo - noventa)) / 2;
break;
case 0x09:
/** usado pois o giro acontece a 90 graus da direcao do robo */
dxa = distRodasCm * Math.cos(angulo - noventa);
dya = distRodasCm * Math.sin(angulo - noventa);
/**
* simplificando double perim = 2 * Math.PI * distRodasCm;
* angulo += dAngulo = -velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = -velCmTempo / distRodasCm;
x += dx = -(dxa - distRodasCm * Math.cos(angulo - noventa)) / 2;
y += dy = -(dya - distRodasCm * Math.sin(angulo - noventa)) / 2;
break;
case 0x01:
dxa = distRodasCm * Math.cos(angulo - noventa);
dya = distRodasCm * Math.sin(angulo - noventa);
/**
* simplificando double perim = 2 * Math.PI * distRodasCm;
* angulo += dAngulo = velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = velCmTempo / distRodasCm;
x += dx = -(dxa - distRodasCm * Math.cos(angulo - noventa)) / 2;
y += dy = -(dya - distRodasCm * Math.sin(angulo - noventa)) / 2;
break;
case 0x19:
/**
* simplificando perim = Math.PI * distRodasCm; angulo +=
* dAngulo = velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = -velCmTempo * 2 / distRodasCm;
break;
case 0x91:
/**
* simplificando double perim = Math.PI * distRodasCm; angulo +=
* dAngulo = velCmTempo * 2 * Math.PI / perim; temos:
*/
angulo += dAngulo = velCmTempo * 2 / distRodasCm;
break;
}
tempoCmd--;
}
}

Até semana que vem
Juliana

Relatórios em PHP

>Por Paula

Olá ;D

Durante essa semana estou desenvolvendo as páginas de Relatórios da parte em PHP do projeto, para o desenvolvimento desses relatórios estou utilizando a classe FPDF. Abaixo tem um texto explicando mais sobre essa classe.

O que é o FPDF?

FPDF é uma classe PHP que permite gerar arquivos PDF com PHP puro, ou seja, sem usar a biblioteca PDFlib. F da FPDF é livre: você pode usá-lo para qualquer tipo de uso e modificá-lo para atender às suas necessidades.

FPDF têm outras vantagens: as funções de alto nível. Aqui está uma lista das suas principais características:

  • Página cabeçalho e rodapé de gestão;
  • Escolha da unidade de medida, formato de página e margens;
  • Automática quebra de página;
  • Automática quebra de linha e justificação do texto;
  • Suporte de Imagem (JPEG, PNG e GIF);
  • Cores;
  • Links;
  • TrueType, Type1 e suporte à codificação;
  • Compressão de Página.
Para mais informações, acesse www.fpdf.org .

Por enquanto desenvolvi o Relatório de Grupos, porém surgiram alguns problemas como o funcionamento no Internet Explorer, onde não funciona corretamente. Outro problema foi o posicionamento do rodapé. Assim que conseguir resolvê-los comento com vocês.

Segue abaixo o Relatório que está gerando.


Paula

sexta-feira, 16 de julho de 2010

Modificações no DFD

>Por Paula

Olá pessoal ;D

Na reunião dessa sexta-feira (16/07), discutimos alguns pontos do DFD que o Prof. Dalastti nos apresentou ao entregar a Pasta no fim do segundo bimestre. Alguns acréscimos e modificações foram realizados e assim que voltarmos para as aulas mostraremos para o Prof., para que o mesmo possa corrigí-lo.

Logo abaixo se encontram as folhas rascunhos onde estão nossas anotações.



Paula

Consulta de Usuários

>por Matheus

Olá pessoal, tudo bom?

Durante essa semana, notamos que há uma falha na Consulta de Usuários da aplicação em PHP. No sistema, o adminsitrador possui 4 opções de filtro para realizar a consulta: "nome", "estado", "cidade" e "grupo".

Na opção "cidade", as linhas do ComboBox são preenchidas apenas com as cidades cadastradas, afinal, o banco possui aproximadamente 8 mil opções de cidades, o que tornaria o método inviável. Assim, utilizamos uma cláusula SQL com JOIN e obtemos apenas aquelas que possuem usuários cadastrados.

O problema, entretanto, ocorre quando mais um de usuário pertence a mesma cidade. Na versão atual do sistema, ele insere novamente a opção com a cidade repetida (o que não pode ocorrer). Estamos trabalhando para solucionar o problema o mais rápido possível. Assim que obtiver a solução deixo vocês informados! :)

Abaixo uma primeira proposta para a Consulta de Usuários:




Dúvidas

>por Débora

Olá pessoal,

Na Reunião dessa semana, discutimos basicamente sobre as modificações no nosso DFD, alterações no Banco de Dados e sobre a camiseta de nossa equipe.
Durante a discussão, surgiram algumas dúvidas dentre elas, de como salvaríamos o histórico, da introdução de uma tabela de lógica(GGB) no nosso banco e também sobre o registro da lógica.
Nós iremos fazer uma próxima reunião e creio que até lá, todos tenham pensado em soluções!

Até semana que vem pessoal,