DHF – Diagrama Hierárquico Funcional
Esta é a página contém as especificações do Projeto-2. O conteúdo principal é o DHF - Diagrama Hierárquico Funcional.
O DHF é uma forma de especificação onde o analista monta e exibe aos programas um conjunto de telas que apresentam a forma de navegação de uma aplicação.
Assim, vendo as telas e lendo as especificações correspondentes o programador pode enender o encadeamento de arquivos que devem ser acessados para desenvolver o efeito esperado no tratamento de dados no gerenciamenteo de dados de uma tabela.

O DHF apresentado trata das telas e interações de dados da tabela 'medicos'.
Este artefato mostra as telas do sistema dividindo-as em 'funcionalidades'.
A tela de 'Abertura' é referenciada com nome 'PESQUISA' nas barras de Botões ao longo do PA. Partindo da tela de 'Pesquisa', mostra a sequência das telas (segundo as funcionalidades apresentadas nos ícones na tela principal).
A cor de fundo de todas as telas será a NAVAJOWHITE por uma questão de padroização de telas. Se uma exceção se apresentar será comentada no item conveniente.

As Especificações Técnicas que contemplam os aspectos de dimensionamento e estruturação de arquivos (Nomes, tipos e conteúdos) são indicadas na coluna da direita das imagens apresentadas.
Sendo assim, LEIA COM ATENÇÃO as Notas complementares na descrição de cada funcionalidade.

Nesta Disciplina NÃO abordamos os aspectos de modelagem de dados da base de dados referenciada para o desenvolvimento dos Programas Aplicativos (PA).
Entretanto, nos exemplos de PAs tentamos abordar uma explicação sucinta das operações de AR em SQL.

IMPORTANTE: Esta página PODE SER ALTARADA durante o desenvolvimento do projeto [ajustando detalhes em telas ou de especificações]; sendo assim
as alterações feitas à partir da data de publicação será destacada em AZUL e nesta linha se mostra a data de atualização: 2025-11-01
DHF – Diagrama Hierárquico Funcional
Este documento de Projeto tem a finalidade de apresentar as telas que se mostram quando se navega pelo sistema de administração de dados de uma tabela. Foram usadas, como exemplo, as telas do sistema da tabela MEDICOS.
O sistema de gerenciamento de dados da tabela 'medicos' é a referencia a ser seguida para o desenvolvimento do Projeto 2.
As funcionalidades podem ser acessadas partindo da tela apresentada quando se executa o programa aplicativo [PA] com nome medicos.php. A tela está apresentada na figura 1.
Navegar
Todas as funcionalidades devem ser implementadas em somente um arquivo PHP. O nome do arquivo deve ser: NomeDaTabela.php.
Este arquivo deve ser de recursividade grau 2 (dois marcadores de passagem: um para a AÇÃO e outro para BLOCO da ação.
A variável $acao pode será assumir os valores: 'Navegar', 'Incluir', 'Consultar', 'Alterar', 'Excluir' e 'Listar'; a variável $bloco poderá assumir os valores 1, 2 ou 3, dependendo de qual passagem acontecerá dentro de cada valor de $acao.
Todas as indicações de uso de CSS devem ser feitas dentro do cabeçalho das páginas com uso de <style>...</style>.
Todas as imagens (ícones) usadas no Projeto-2 serão escritos usando codificação UNICODE
A tela de 'Navegar' do sistema se apresenta como a figura 1. Especifica-se:
  • Título da Página: Nome da tabela - Ação (Título em TAHOMA tamanho de 16px em cor vermelha, a Ação deve ser escrita em modo itálico)

  • Imagem de Saída disponível em arquivo zipado com nome DB2Saida.png e
    deve ser gravado em um subdiretório de SiglaDoSeuNome/php-mariadb/

  • Os demais ícones da página mostrada na figura 2 devem ser desenvolvidos com códigos UNICODE, na forma
    • Incluir - ✚: Código &#10010
    • Consultar - ❓︎: &#10067;&#65038;. Acesso para exeutar a funcionalidade consultar
    • Alterar - ✎: &#9998;. Acesso para exeutar a funcionalidade alterar
    • Excluir - ✖: &#10006;. Acesso para exeutar a funcionalidade excluir
    • Listar - 🖶: &#128438;. Acesso para exeutar a funcionalidade listar
    • Sair - SAIDA: SA&Iacute;DA. Para executar o salto para 'fora' da aplicação
    Estes acessos devem ser codificados diretamente na tabela que aparece na página mostrada na figura 2. Cada linha da tabela referencia uma linha da tabela com dados gerenciados na aplicação.

    O campo de Pesquisa apresentado deve ter seu conteúdo usado na pesquisa de dados na Tabela e com estes dados se monta a Tabela da figura 2.
    Ao se 'entrar' na aplicação, deve ser criada uma variável ( nome $salto ) para contabilizar os cliques de mouse em TODOS os formulários de interface com o usuário, de modo que, o acesso disponibilizado na palavra SAíDA execute a função history.go(-$salto) fazendo o efeito de SAIR da Aplicação.

  • A Tabela que exibe os dados selecionados para manutenção DEVE estar contida em uma <DIV>

Note: Este sistema NÃO apresenta o conceito de Menu de Navegação em regiões fixas da tela.

Figura 1. Tela 'Abertura' do Sistema de Gerenciamento de Médicos

Figura 2. Tela 'Abertura' do Sistema de Gerenciamento de Médicos
Incluir
Acessado quando se clica no sinal ✚
Esta funcionalidade tem dois blocos de controle (com valores de $bloco iniciando com '1' e a seguir no formulário apresentado na tela da figura 3, tendo o seu valor alterado para '2'.
O formulário de entrada de dados para a tabela deve ter uma moldura contornando a tabela que acomoda duas colunas, a coluna da esquerda é um texto de orientação para o usuário e a coluna da direita o campo para entrada de dados. SE quiser é permitido o uso do atributo placeholder, entretanto seu uso NÃO descarta o texto da coluna da esquerda.
Após o preenchimento dos dados no formulário o usuário deve ver a barra de botões na útima linha da tabela ocupando a coluna da DIREITA. A Barra de botões deve ser implementada como uma função sistêmica e será disponibilidada para uso SEM alteração.
Após a gravação dos dados digitados a tela de confirmação deverá exibir o registro gravado, como mostrado no figura 4.

Figura 3. Tela com formulário para incluir registros

Figura 4. Tela de confirmação da inclusão do registro.
Consultar
Acessado quando se clica no sinal ❓︎
Esta funcionalidade simplesmente usa a mesma função que monta a tabela mostrando os dados no final da Inclusão.
Esta função é classificada como uma função LOCAL pois trabalha dados específicos de uma tabela. Esta função será disponibilizada como exemplo de codificação nos tetos das tarefas.

Entretanto, note que a barra de botões da Consulta (no 'rodapé' da tabela) aparece com uma disposição de botões.

Figura 5.Tela com a tabela dos dados escolhidos na consulta.
Alterar
Acessado quando se clica no sinal ✎
Esta funcionalidade tem dois blocos de controle (com valores de $bloco iniciando com '1' e a seguir no formulário apresentado na tela da figura 3, tendo o seu valor alterado para '2'.
No 'case' do $bloco valendo 1 é apresentado um formulário como na figura 3. Isso já permmite determinar que o formulário de inclusão/alteração será 'montado' por uma função LOCAL.
Os dados para alteração serão trazidos da correspondente linha os se escolhe o registro a alterar (figura 2).
Depois de alterados os dados e confirmada a alteração, os dados alterados são exibididos como na figura 7 usando a função LOCAL que exibe os dados da tabela.

Figura 6. Tela com formulário par alterar dados do registro escolhido.
Repare que o valor da CP NÃO deve ser alterado.

Figura 7. Tela de confirmação da ALTERAÇÃO do registro.
Note: Tela IGUAL ao final da Inclusão, final da Consulta e meio da Exclusão.
Excluir
Acessado quando se clica no sinal ✖
Esta funcionalidade tem dois blocos de controle. No primeiro mostra o detalhe do registro que será excluído. No segundo mostra uma mensagem confirmando a exclusão do registro da tabela. Repare que o valor da CP deve ser 'passado' da tela de escolha para a tela de confirmação e a seguir para o trecho que trata a transação.


Figura 8.Tela com formulário para escolher registro para excluir

Figura 9. Tela de confirmação do registro a excluir.
Listar
Acessado quando se escolhe o ícone 🖶
Esta funcionalidade tem dois blocos de controle, mas $bloco assumirá 3 valores.
No $bloco 1 (primeiro) mostra uma tela para escolha da ordenação e seleção de registros da Listagem.
No $bloco 2 e 3 é emitida a listagem dos dados da tabela com os relacionamentos suficientes para combinar os dados da tabela com todas as outras tabelas que se conectam pelas chaves estrangeiras.
A diferença entre os $bloco 2 e 3 é que no 2 a listagem é 'emitida' na tela da Aplicação e para o usuário é apresentado um formulário que permite a 'emissão' da mesma listagem para 'impressão'.
SE o usuário escolher isso uma nova aba (branca) se abre e a mesma listagem é apresentada. O usuáro pode, então, executar a função de impressão no navegador.


Figura 10.Tela com formulário para Ordenação e Seleção de registros

Figura 11.Tela com formulário para Ordenação e Seleção de registros

Figura 12.Tela com formulário para Ordenação e Seleção de registros