Sobre este projeto
it-programming / web-development
Aberto
Clinica de Fisioterapia
Depois de muitos aborrecimentos com marcações de consultas e de tratamentos em horários sobrepostos, uma
clínica de fisioterapia decidiu informatizar seu atendimento e está buscando uma equipe (vocês) para
desenvolver um sistema simples, mas confiável. Todos os agendamentos eram feitos em uma agenda física e
uma planilha do Excel, o que gerou muitos problemas ao longo do tempo. O horário de atendimento da clínica é
das 8h às 19h, sem interrupção, de segunda a sexta-feira (para simplificar o trabalho, não é necessário fazer
previsão para feriados).
As consultas duram 1 hora, bem como as sessões de tratamento. Entretanto, as
consultas são eventuais, enquanto os tratamentos são marcados sempre para o mesmo horário, durante um
período contínuo de dias (sem contar sábado e domingo) e pode variar de 2 a 5 dias. A clínica possui 4
consultórios (com números de 1 a 4).
Considere que para cada consultório haverá sempre um fisioterapeuta e o
cliente não escolhe o fisioterapeuta, apenas um horário disponível. A seguir são fornecidos alguns dados do
sistema.
O sistema deve cadastrar clientes e horários de consulta ou de sessões de tratamento.
As informações
necessárias são:
Cliente – código do cliente (um número sequencial, iniciado em 1, a partir do 1º cliente cadastrado), nome,
CPF, endereço, telefone e e-mail.
Consulta/Tratamento - código (um número sequencial, iniciado em 1, a partir da 1ª consulta/tratamento
cadastrado), dia da consulta (ou dia do início de tratamento), a duração do tratamento em dias (se for uma
consulta, esse número é igual a 1), horário, número do consultório, código do cliente. O que diferencia uma
consulta de um tratamento é que a consulta dura apenas 1 dia, enquanto um tratamento dura no mínimo 2
dias.
Restrições:
Para cadastrar uma consulta ou um tratamento, é necessário que o cliente e o consultório já estejam
cadastrados.
Naturalmente, não podem ser cadastradas duas consultas ou tratamentos no mesmo horário em um mesmo
consultório.
Todas as consultas e tratamentos têm o mesmo custo por hora.
Os pagamentos são feitos ao final da consulta ou do tratamento e o cálculo do valor devido é feito pelo
sistema, com base no número de horas utilizadas.
Orientações:
1. Implemente uma função para cadastrar um cliente.
Esta função deve garantir que não haverá mais de um
cliente com o mesmo código. O código do cliente deve ser gerado automaticamente.
2. Implemente uma função que cadastre uma consulta ou tratamento. Para simplificar o projeto, vamos
considerar que a clínica só funcionará por 30 dias (durante o mês de novembro de 2020) e depois ficará
fechada por tempo indeterminado. Desta forma, o sistema gerenciará a clínica durante 1 mês.
Para
cadastrar uma consulta ou tratamento, o sistema deve receber do usuário o código do cliente, o horário, o
dia da consulta ou do início de tratamento e o número de dias de tratamento (se for uma consulta, esse
número é igual a 1). Se for um tratamento, verifique se ele pode ser alocado no intervalo de 1 a 30. A partir
disso, o sistema deve encontrar um consultório disponível no horário indicado e na data ou período
solicitado.
Se o tratamento for iniciado perto do fim do mês e não for possível cadastrar todos os dias do
tratamento, devem ser agendados apenas os dias que “couberem” no mês.
Exemplos:
Confirmação de cadastramento de consulta:
Cliente Fulano - Consultório 2 - 14h00 - 24/11/2020
Confirmação de cadastramento de tratamento:
Cliente Fulano - Consultório 2 - 14h00
26/11/2020
27/11/2020
30/11/2020
Impossibilidade de marcação de consulta:
Horário ocupado! Refaça o agendamento em outro horário.
3. Implemente uma função que, ao final de uma consulta ou de um tratamento, calcule e mostre o valor total a
ser pago pelo cliente. Considere o valor de R$ 30,00 por consulta ou por dia de tratamento.
Exemplos:
Cobrança de consulta:
Cliente Fulano – Consulta realizada em 24/11/2020 - R$ 30,00
Cobrança de tratamento:
Cliente Fulano – Tratamento realizada entre 26/11/2020 e 30/11/2020 - R$ 150,00
4.
Implemente uma função para imprimir um relatório com os dados de todos os clientes (código do cliente,
nome, CPF, endereço, telefone e e-mail).
5. Implemente uma função para imprimir um relatório com os dados de todos os consultórios, mostrando dias
e horários ocupados, bem como o código e o nome dos clientes agendados.
Para fazer este programa pode ser necessário criar mais funções do que as que estão descritas. Finalmente, faça
uma função main() (programa principal) que teste o sistema acima.
A função main() deve exibir um menu na
tela, com as opções de cadastrar um cliente (1) ou uma consulta/tratamento (2). Além disso, deve haver opções
para calcular o valor do pagamento devido (3) por um cliente (a partir do seu código), imprimir dados dos
clientes (4) e dos consultórios (5). Este menu deve ficar em loop até o usuário selecionar a opção SAIR.
Além
disso, todas as informações deverão ser armazenadas em arquivos. Portanto, deverá ser feita leitura e escrita
em arquivos.
Metodologia:
Organize as informações de tal forma que cada arquivo deverá conter dados de um tipo.
Assim, um arquivo
deverá conter os dados dos clientes e um outro, os agendamentos. Se estiver fazendo em grupo, deve-se
definir qual função será de responsabilidade de qual membro do grupo. Isto deverá ser escrito e enviado
juntamente com o trabalho.
Defina a assinatura das funções. Reflita sobre os parâmetros de entrada e saída da função e comunique aos
seus colegas de projeto.
Documente os parâmetros da sua função.
O nome da função deve ser escolhido sob o ponto de vista de
quem usa a função ou de quem vai chamar a função e deve refletir o que a função faz.
Implemente a função.
Selecione casos de testes para verificar o funcionamento da sua função.
Um caso de teste deve conter os
valores de entrada para a função e prever a saída esperada.
Contexto Geral do Projeto
Trabalho final para entregar até dia 18.
Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Alteração média
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Não se aplica
Disponibilidade requerida Conforme necessário
Funções necessárias Outro
Outras funções necessárias Programação em C
Prazo de Entrega: 18 de Dezembro de 2020
Habilidades necessárias