Especificação + DHF – Diagrama Hierárquico Funcional
ILP540 - Linguagem de Programação Internet
Documento atualizado em 2026-05-17 - 18:00
Esta é a página contém as especificações do Projeto-2 da disciplina ILP540.
O conteúdo principal é o DHF - Diagrama Hierárquico Funcional.
O DHF é uma forma de especificação onde o analista monta e exibe aos colegas do projeto 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 entende 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'.
O sistema comtempla 6 funcionalidades:
  1. Navegar
    Esta funcionalidade é implementada em dois blocos. No primeiro apresenta um texto com descrição da finalidade do conjunto de aplicativos. Exibe um campo para digitação de parte do Nome do Médico. Ao clicar em 'Pesquisar' é executado o bloco 2 onde o PA vai exibir os dados da tabela médicos em uma Caixa de Seleção (HTML), permitindo editar os dados.
  2. Incluir
    Esta funcionalidade é implementada em dois blocos. No primeiro apresenta um formulário para digitação de dados referentes a um médico. Ao clicar em 'Incluir' é executado o bloco 2 que faz o tratamento de uma transação incluindo um registro na tabela 'medicos'.
  3. Consultar
    Esta funcionalidade é implementada em dois blocos. Entretanto, os dois blocos serão implementados como funções do usuário (código-fonte escrito pelos Analista/Programadores). As funções que 'montam' a consulta são classificadas como funções locais
  4. Alterar
    Esta funcionalidade é implementada em dois blocos. No primeiro apresenta um formulário com os dados do médico que foi escolhido na Caixa de Seleção de 'Pesquisa'. Os dados podem ser alterados até o momento que o usuário clicar em 'Alterar'. Então é executado o bloco 2 que faz o tratamento de uma transação alterando o registro escolhido na tabela 'medicos'.
  5. Excluir
    Esta funcionalidade é implementada em dois blocos. No primeiro apresenta uma tabela com os dados do médico que será excluído. Clicando em 'Confirmar a Exclusão' é executado o bloco 2 que faz o tratamento de transação excluindo o registro da tabela 'medicos'.
  6. Listar
    Esta funcionalidade é implementada em três blocos (lógicos) mas escritos em 2 blocos de código-fonte. No primeiro é exibida uma tela com um form para escolha da ordem de apresentação dos dados, no mesmo form é possível entrar com parâmetros de seleção de dados. Nos bloco 2 e 3 é montado o comando SQL que traz os dados segundo a ordem requerida e com os parâmetros de seleção escolhidos no bloco 1. É feita, então, a distinção dos blocos 2 e 3, no bloco 2 é montado um form para a passagem de todos os parâmetros da listagem. Enão o PA é acionado e o bloco 3 será eecutado com todas as características do bloco 2, porém exibindo os dados em uma 'folha branca' e acionando o controle de impressão do navegador.
A tela de 'Navegar' é referenciada com nome 'PESQUISA' nas barras de Botões ao longo do PA.

Antes de seguir indicamos a leitura e implementação dos diretórios em: Anotações de Aulas » PHP » Repositório de Programas Aplicativos (PA) » Diretórios.
Neste documento se explica onde devem ser gravados os arquivos CATALOGO.PHP .PHP e .CSS.
Somente estes três arquivos devem ser implementados neste projeto.

O sistema de programas aplicativos que está especificado aqui deve ser executado em computadores desktop ou notebooks. O uso de dispositivos com telas reduzidas (Menor do que 10 pol.) pode levar a uma experiência não agradável.

IMPORTANTE: Este documento pode ser alterado durante o semestre da disciplina. Quando alguma alteração for necessária a data e hora constarão na linha em destaque no topo da tela e a exential alteração aparecerá no cor AZUL.
A cor de fundo de todas as telas será a NAVAJOWHITE por uma questão de padronizaçã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.
Os allunos recebem uma base de dados pronta com cerca de 95 tabelas. Cada aluno recebe uma tabela e deve desenvolver os Programas Aplicativos especificados aqui e exemplificados em segmentos de código fonte apresentados no item 'Repositório'.

DHF – Diagrama Hierárquico Funcional
Neste documento vamos iniciar a descrição pela tela de entrada do sistema. Esta tela está apresentada na Figura 1. Note que existe uma tabela ocupando 100% da tela do navegador 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.
Diretório & Arquivos
O Projeto-2 é formado por 3 arquivos.
O CATALOGO.PHP é o arquivo que contém as funções sistêmicas (usadas por todos os outros programas). O CATALOGO.PHP deve estar gravado no diretório anterior ao diretório que tem o mesmo nome da tabela que o aluno recebeu para desevolver os programas.
O arquivo 'ESTILOS.CSS' deve estar gravado no mesmo diretório onde está o CATALOGO.PHP. Abaixo deste diretório deve ser criado um diretório com o NomeDaTabela. O Arquivo ESTILOS.CSS deve ser igual para todos os desenvolvedores e será disponibilizado no repositório de códigos no site da discplina.
No diretório com o nome <NomeDaTabela> deve ser gravado o arquivo com nome <NomeDaTabela>.php. O arquivo <NomeDaTabela>.php deve ser um PA recursivo com dois marcadores de passagem. Um marcador com nome $acao que recebe o texto 'Navegar' na primeira entrada do PA.
O outro marcador de controle deve ser nomeado $bloco. Este marcador controla em qual passada em cada valor de $acao se faz a execução do PA. Por exemplo a ação 'Incluir' é controlada em duas passadas no PA, na primeira monta um form e recebe a digitação dos valores e na segunda executa o controle da transação.
A quantidade de passadas em uma mesma ação varia de acordo com a ação.
Os exemplos estão apresentados na figura 1.
A figura 1 apresenta o diretório ANTERIOR ao diretório <NomeDaTabela>. A Figura 2 apresenta o conteúdo do diretório <NomeDaTabela>.
] Em ambas as imagens a tabela de exemplo é 'medicos'. O arquivo <NomeDaTabela>.css deve conter TODAS as definições de seletores nomeados, seletores de classe e seletores identificados usados no sistema.
Seguem-se, a partir daqui a descrição de cada ação controlada no PA.

Figura 1. Segmento de Tela mostrando os arquivos no diretório anterior ao diretório NomeDaTabela

Figura 2. Segmento de Tela mostrando os arquivos no diretório anterior ao diretório NomeDaTabela
AÇÃO: 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 arquivo ESTILOS.CSS que está gravado no diretório ANTERIOR ao diretório onde está gravado o arquivo NomeDaTabela.php.

A tela de 'Navegar' do sistema se apresenta como a figura 3. A tela apresenta um único campo para digitação do nome de um médico (ou parte do nome de um médico). Este argumento deve ser usado no bloco 2 da ação 'Navegar' para pesquisar os dados e montar uma caixa de seleção apresentando os dados pesquisados para uma posterior manutenção (alterando, excluindo ou consultando uma determinada linha da tabela).

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.

  • Os botões de ação dos formulários apresentados em todas as telas devem usar o seletor nomeado "BUTTON" para sua formatação, isso dá o efeito de serem exibidos em VERMELHO, conforme a especificação CSS contida no arquivo ESTILOS.CSS.

  • Note:
    1. Este sistema NÃO apresenta o conceito de Menu de Navegação em regiões fixas da tela.
    2. Existe uma tabela que serve de 'estrutura' para o conteúdo de TODAS as funcionalidades. Esta tabela ocupa 100% da tela do navegador e tem duas colunas (a primeira e a terceira) com uma largura de 10% da tela. Nas imagens é possível se ver a borda, PORÉM ela deverá estar invisível em todas os PA.

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

    Figura 2. Tela 'Navegar' do PA-medicos depois de fazer uma 'Pesquisa'
    AÇÃO: Incluir
    Acessado quando se clica no botão |Incluir| apresentado na figura 2
    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 'Navegar' do Sistema de Gerenciamento de Médicos

    Figura 4. Tela 'Navegar' do PA-medicos depois de fazer uma 'Pesquisa'
    AÇÃO: Consultar
    Acessado quando se clica no botão |Consultar| apresentado na figura 2
    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 no repositório de código-fonte ou nos textos das tarefas no site da disciplina.


    Figura 5.Tela com a tabela dos dados escolhidos na consulta.
    AÇÃO: Alterar
    Acessado quando se clica no botão |Alterar| apresentado na figura 2
    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. Note que a barra de botões dessa funcionalidade (no 'rodapé' da tabela) aparece com uma disposição de DIFERENTE de botões dos apresentados em outras funcionalidades. Isso indica a existência de uma outra função sistêmica.

    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.
    AÇÃO: Excluir
    Acessado quando se clica no botão |Excluir| apresentado na figura 2
    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.
    AÇÃO: Listar
    Acessado quando se clica no botão |Listar| apresentado na figura 2
    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 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

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