Esta é a página contém as especificações do Projeto-2.
O conteúdo principal é o DHF - Diagrama Hierárquico Funcional.
O DHF está estruturado em uma tabela que contém as telas do Sistema de Gerenciamento de Dados da tabela 'medicos'.
Este artefato mostra as telas do sistema dividindo-as em 'funcionalidades'. Partindo da tela de 'Abertura', mostra a sequência das telas (segundo as funcionalidades apresentadas no menu principal).
A cor de fundo desta tela é branco para destacar as cores que foram a paleta de cores das funcionalidades sistêmicas.
As Especificações Técnicas que contemplam os aspectos de dimensionamento e estruturação de arquivos (Nomes, tipos e conteúdos) são indicadas nesta página.
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-05-11
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.
Abertura

Figura 1. Tela 'Abertura' do Sistema de Gerenciamento de Médicos
Todas as funcionalidades devem ser implementadas em somente um arquivo PHP. O nome do arquivo deve ser: <NomeDaTabela>.php [sem os sinais de TAG HTML]
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 tela de 'Abertura' do sistema se apresenta como a figura 1. Especifica-se:
  • Na primeira linha existe: Nome da tabela - Título (especificado abaixo) alinhado à esquerda seguido de ':'
  • Botões de funcionalidades:
    • Incluir - Cor: #E5B18B. Acesso para exeutar a funcionalidade incluir
    • Consultar - Cor: #9CAB91. Acesso para exeutar a funcionalidade consultar
    • Alterar - Cor: #DD9A69. Acesso para exeutar a funcionalidade alterar
    • Excluir - Cor: #D29588. Acesso para exeutar a funcionalidade excluir
    • Listar - Cor: #E5A678. Acesso para exeutar a funcionalidade listar
    • Sair - Cor: #BDC7B5. Para executar o salto para 'fora' da aplicação
    Estes acessos devem ser implementados em CSS com largura de 85 pixels e altura de 23 pixels, devem ter os cantos superior direito e esquerdo arredondados com raio de 10 pixels.
    O botão 'Sair' somente executa a função history.go() com um argumento que deve contabilizar os links acessadados.
  • Abaixo da linha dos botões deve aparecer o título da funcionalidade escolhida no menu (em negrito). Abaixo do título da página DEVE SER VISTO um traço horizontal ocupando toda a largura da tela.
    Na página apresentada quando se carrega o sistema, o título DEVE SER 'Abertura'.
    Na página 'Abertura' DEVE SER escrita uma mensagem indicando como se usa o sistema e o NOME e MATRÍCULA do aluno que desenvolveu o sistema.
  • Cada Página acessada, partindo dos itens do menu, devem ter a cor de fundo como apresentada no botão.
    A página 'Abertura' deve ter cor de fundo de tela #FFDEAD
  • O fonte de TODAS as páginas dever ser TAHOMA, Arial, sans-serif. Os tamanhos devem serguir a seguinte regra:
    Títulos de páginas: 18 pixels (Os nomes de tabelas à esquerda do menu)
    Botões: 16 pixels
    Textos em Geral: 15 pixels
  • A Altura da região onde de localiza o menu do sistema deve ter 55 pixels (até a barra Horizontal inclusa nesta região.).
    A Altura da barra de botões do menu (nota-se com a separação dos botões com o título da página) deve ser de 30 pixels.

Daqui em diante cita-se a funcionalidade e se apresenta, na mesma linha da tabela, as telas dispostas da esquerda para direita às medida sue se avança na funcionalidade.
Incluir

Figura 2.Tela com formulário para incluir registros

Figura 3. Tela de confirmação da inclusão do registro.
Repare que o valor da CP deve ser gerado no PA <tab>.php.
Note: Tanto a Tela de Formulário (figura 2) como a tela de Final de Inclusão (Figura 3) apresentam os textos e campos da <tab> 'dentro' de uma tabela com duas células em cada linha.
Ainda é possivel notar que uma tag <hr> divide a região da direita em sub-grupos de campos (para se digitar e exibir os dados de logradouros de clínica e moradia do médico.

Entretanto, está divisão é conveniente para a tabela 'medicos'.

NÃO precisa existir esta divisão em todas as telas com formulário ou apresentação de registros. Somente foi conveniente para ESTA tabela.

Note: Toda página apresentada tem a mesma COR da aba apresentada no Menu. A aba e a página devem ter sua cor especificada no arquivo .CSS e o SELETOR deve ser condicionado ao valor da AÇÃO escolhida no menu.
Esse comportamento é observado em TODAS as funcionalidades oferecidas no menu.

O menu deve ser acomodado em uma <DIV> e esta divisão deve ser acomodada 'dentro' de outra <DIV> que vai até a linha horizontal ( TAG <hr>).
Consultar

Figura 4.Tela com formulário para escolher um registro - para Consultar

Figura 5. Tela de detalhe de dados do registro escolhido para consultar.
Note: Estruturação dos dados em Tabela.
Note: Este formulário (figura 4) com a 'picklist' será sempre exibido no início das funcionalidades Consultar, Alterar e Excluir. É o formulário de escolha de registro para seguir na operação da funcionalidade.

A barra de botões exibida ao lado da 'picklist' dever apresentar sempre o botão da ação da funcionalidade mais próximo da picklist, a seguir mostra o botão limpar e de 'saltar' para a 'Abertura' do sistema.

O botão 'Sair' aparece SEMPRE no lado esqurdo do Menu em modo transparente e com a dor de fundo #FFDEAD. Para cada acesso usado na aplicação (dentro de um form), uma variável que contabiliza os saltos, deve ser incrementada.

Todos os acessos devem estar implementados em um form, de modo que as variáveis de controle ACOES e BLOCO devem ser SEMPRE implementados em modo 'oculto' em TODOS os Formulários, além da contabilização do acesso feito na variável SALTO.

A 'picklist' montada usa uma apresentação dos dados 'agrupados' por um supertipo dos dados de 'medicos', neste caso a Especialidade Médica. Para implementar este agrupamento os dados devem ser ordenados primeiro pelo supergrupo de dados e depois pelo segundo fator de ordenação (neste exemplo pelo txnomemedico).
A TAG HTML que permite fazer este 'agrupamento' é a TAG <optgroup>, pesquise e estude os códigos-fontes fornececidos como exemplo.
Alterar

Figura 6.Tela com formulário para escolher registro para Alterar

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

Figura 8. 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.

Note: A mesma página de escolha de registro apresentada na funcionalidade Consultar (Figura 7) e a mesma página apresentada ao final da Inclusão e Consulta (Figura 8).
Essa característica já indica trechos de programas que podem ser aproveitados com o recurso de função do usuário.

As funções de usuário ainda podem ser classificadas em SISTÊMICAS e LOCAIS.
As funções Sistêmicas são as que podem ser utilizadas em mais de um PA (por exemplo a iniciapagina(), a terminapagina() e a conectabase()).
Já as funções Locais são as que estão vinculadas a cada tabela, por isso podem ser escritas 'dentro' do mesmo arquivo que implementam as funcionalidades de cada tabela.
Excluir

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

Figura 10. Tela de confirmação do registro a excluir.

Figura 11. Tela de confirmação da inclusão do registro.

Repare que o valor da CP deve ser 'passado' da tela de confirmação para a o trecho do PA que vai tratar a transação.

Note: O segmento de exclusão acabará sendo muito simples de ser implementado. Será montado com a chamada de DUAS funções (locais) para a montagem da picklist e a seguir para a montagem da tela de confirmação do registro que será excluído.
Com o registro escolhido para exclusão (e confirmado), o terceiro segmento será um tatamento de transação.

O Segmento de código que trata a transação até pode ser implementado como uma função (sistêmica ou local), entretanto o tratamento da Inclusão faz a geração do próximo valor da CP 'dentro' da transação. ISSO complicaria um tanto a escrita da função.

Neste projeto NÃO se usa o recurso de campos de CP com valores autoincrementados justamente para mostrar como esta funcionalidade pode ser feita no PA. Além disso, muitos SGBDs ainda não implementam este recurso.
Listar

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

Figura 13. Tela de 'Listagem' dos registros da tabela.

Notas:
A Ordenação dos dados é passada do formulário (figura 12) para o processamento do BLOCO com valor 2 ou 3 em uma posição do vetor que recebe o nome do campo da Tabela sobre o qual se faz a ordenação dos dados.
O comando que fará a Seleção dos dados e Ordenação será apresentado em sala de aula, onde será destacado essa característica e PRESTE ATENÇÃO: em cada PA os nomes (alias) de cada tabela é escolhido pelo programador ou analista.
Os campos descritivos das CEs são apresentados na frente dos valores das CEs gravados na Tabela (que aparecem destacados entre parenteses).
Estes campos PODEM aparecer como fatores de ordenação ou se seleção no formulário de Ordenação e Seleção (figura 12).


Figura 14. Tela de confirmação da inclusão do registro.
Repare que o valor da CP deve ser gerado no PA medicosincluir.php.

Note: A listagem apresentada na figura 14 traz os dados na mesma seleção e ordenação que foram processados para a aprensetação da listagem como na figura 13. ENTRETANTO, esta listagem (figura 14) apresenta os dados em uma página com fundo branco e SEM a ESTRUTURA de Menu exibida no topo da tela.

Os dados da listagem da figura 14 podem ser diferecionados para uma impressora segundo a orientação do usuário que executa o PA (usando funcionalidade do Navegador na estação do Cliente ou na Máquina de trabalho).