·

Análise de Sistemas ·

Análise de Algoritmos

Send your question to AI and receive an answer instantly

Ask Question

Preview text

PROJETO FINAL Você deverá fazer 1 entrega parcial e 1 entrega final Entrega parcial Aula 18 Entrega final Aula 20 Entregar o código fonte via moodle Você deverá apresentar pelo menos uma vez ao professor Na entrega parcial será dada preferência para quem tiver uma versão mais completa Caso contrário apresentar na última aula Você deve desenvolver o sistema utilizando a linguagem C observando as seguintes orientações Utilizar boas práticas de programação O sistema deve possuir MENU com repetição Você deve utilizar Arrays Você não pode utilizar Structs Registros Arquivos Sistemas Gerenciadores de Bancos de Dados Deve permitir formas variável constante ou macro para alterar rapidamente os tamanhos dos Arrays Fazer verificações para o sistema não acessarem índices inválidos dos Arrays e Matrizes utilizados Fazer verificações conforme sugestão do projeto Clínica Geralt de Rivia Como todos sabemos Geralt de Rivia antes conhecido como bruxo ou apenas Witcher passou a vida criando poções capazes de gerar grandes habilidades Agora com uma idade já avançada e com poucos monstros na sua terra conhecida como o continente ele resolveu junto com Cirila abrir uma clínica para atender toda aquela pessoa enferma que precisa de alguma poção mágica medicamento Considerando a alta procura por pacientes Cirila exigiu que o Geralt consiga um sistema para anotar os tratamentos prescritos aos pacientes Desta forma todos os pacientes deverão ser cadastrados assim como os medicamentos e os médicos Dados necessários Bruxo Nome Especialidade Poção Nome Tipo líquido ou comprimido Paciente Nome idade altura Tratamento Bruxo que prescreveu o tratamento Paciente que realizará o tratamento Medicamento utilizado Dias de tratamento dosagem diária quantidade de vezes no dia O que o programa deverá fazer 0 Sair 1 Listar Bruxos 2 Cadastrar bruxo pelo código 3 Excluir bruxo pelo código 4 Listar Poções 5 Cadastrar poção pelo código 6 Excluir poção pelo código 7 Listar Pacientes 8 Cadastrar paciente pelo código 9 Excluir paciente pelo código 10 Listar tratamentos do paciente 11 Listar pacientes do bruxo 12 Iniciar tratamento 13 Ampliar tratamento 14 Apagar tratamento O programa deverá prever erros e fazer validações para o bom funcionamento da clínica Nunca acessar uma posição de array inválida índices negativos ou maiores que o tamanho do array Cadastrar bruxo apenas com códigos válidos 0 até tamanho do array1 Cadastrar poção apenas com códigos válidos 0 até tamanho do array1 Cadastrar paciente apenas com códigos válidos 0 até tamanho do array1 Iniciar tratamento apenas para bruxo cadastrados Iniciar tratamento apenas para poção cadastradas Iniciar tratamento apenas para paciente cadastrados Não sobrescrever tratamentos O usuário precisa terminar o tratamento anterior antes de iniciar um novo Listar apenas os tratamentos existentes Não apagar bruxo poção ou paciente se existir um tratamento relacionado PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA Clínica Geralt de Rivia include stdioh Tamanhos dos arrays define MAXBRUXOS 10 define MAXPOCOES 10 define MAXPACIENTES 10 define MAXTRATAMENTOS 10 Estruturas de dados typedef struct char nome50 char especialidade50 Bruxo typedef struct char nome50 char tipo20 Pocao typedef struct char nome50 int idade float altura Paciente typedef struct int bruxo int paciente int pocao int diasTratamento int dosagemDiaria Tratamento Variáveis globais Bruxo bruxosMAXBRUXOS Pocao pocosMAXPOCOES Paciente pacientesMAXPACIENTES Tratamento tratamentosMAXTRATAMENTOS int numBruxos 0 int numPocos 0 int numPacientes 0 int numTratamentos 0 Funções auxiliares void listarBruxos printfBruxos cadastrados for int i 0 i numBruxos i PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA printfCódigo d Nome s Especialidade s i bruxosinome bruxosiespecialidade void cadastrarBruxo if numBruxos MAXBRUXOS printfDigite o nome do bruxo scanfs bruxosnumBruxosnome printfDigite a especialidade do bruxo scanfs bruxosnumBruxosespecialidade numBruxos printfBruxo cadastrado com sucesso else printfLimite máximo de bruxos atingido void excluirBruxo int codigo printfDigite o código do bruxo a ser excluído scanfd codigo if codigo 0 codigo numBruxos Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosibruxo codigo printfNão é possível excluir o bruxo Há tratamentos relacionados n return Remover o bruxo for int i codigo i numBruxos 1 i bruxosi bruxosi 1 numBruxos printfBruxo excluído com sucesso else printfCódigo de bruxo inválido void listarPocoes printfPoções cadastradas for int i 0 i numPocos i printfCódigo d Nome s Tipo s i pocosinome pocositipo void cadastrarPocao PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA if numPocos MAXPOCOES printfDigite o nome da poção scanfs pocosnumPocosnome printfDigite o tipo da poção líquido ou comprimido scanfs pocosnumPocostipo numPocos printfPoção cadastrada com sucesso else printfLimite máximo de poções atingido void excluirPocao int codigo printfDigite o código da poção a ser excluída scanfd codigo if codigo 0 codigo numPocos Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosipocao codigo printfNão é possível excluir a poção Há tratamentos relacionados n return Remover a poção for int i codigo i numPocos 1 i pocosi pocosi 1 numPocos printfPoção excluída com sucesso else printfCódigo de poção inválido void listarPacientes printfPacientes cadastrados for int i 0 i numPacientes i printfCódigo d Nome s Idade d Altura 2f i pacientesinome pacientesiidade pacientesialtura void cadastrarPaciente if numPacientes MAXPACIENTES printfDigite o nome do paciente scanfs pacientesnumPacientesnome printfDigite a idade do paciente scanfd pacientesnumPacientesidade PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA printfDigite a altura do paciente scanff pacientesnumPacientesaltura numPacientes printfPaciente cadastrado com sucesso else printfLimite máximo de pacientes atingido void excluirPaciente int codigo printfDigite o código do paciente a ser excluído scanfd codigo if codigo 0 codigo numPacientes Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosipaciente codigo printfNão é possível excluir o paciente Há tratamentos relacionados return Remover o paciente for int i codigo i numPacientes 1 i pacientesi pacientesi 1 numPacientes printfPaciente excluído com sucesso else printfCódigo de paciente inválido void listarTratamentosPaciente int codigo printfDigite o código do paciente scanfd codigo if codigo 0 Continuação do código anterior codigo numPacientes printfTratamentos do paciente for int i 0 i numTratamentos i if tratamentosipaciente codigo printfBruxo s Medicamento s Dias de tratamento d Dosagem diária d bruxostratamentosibruxonome pocostratamentosipocaonome tratamentosidiasTratamento tratamentosidosagemDiaria PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA else printfCódigo de paciente inválido void listarPacientesBruxo int codigo printfDigite o código do bruxo scanfd codigo if codigo 0 codigo numBruxos printfPacientes do bruxo for int i 0 i numTratamentos i if tratamentosibruxo codigo printfPaciente s pacientestratamentosipacientenome else printfCódigo de bruxo inválido void iniciarTratamento int codigoBruxo codigoPaciente codigoPocao printfDigite o código do bruxo scanfd codigoBruxo printfDigite o código do paciente scanfd codigoPaciente printfDigite o código da poção scanfd codigoPocao if codigoBruxo 0 codigoBruxo numBruxos codigoPaciente 0 codigoPaciente numPacientes codigoPocao 0 codigoPocao numPocos Verificar se já há um tratamento em andamento para o paciente for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente printfJá existe um tratamento em andamento para o paciente return Criar o tratamento tratamentosnumTratamentosbruxo codigoBruxo tratamentosnumTratamentospaciente codigoPaciente tratamentosnumTratamentospocao codigoPocao printfDigite a quantidade de dias de tratamento scanfd tratamentosnumTratamentosdiasTratamento printfDigite a dosagem diária scanfd tratamentosnumTratamentosdosagemDiaria numTratamentos printfTratamento iniciado com sucesso PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA else printfCódigo de bruxo paciente ou poção inválido void ampliarTratamento int codigoPaciente printfDigite o código do paciente scanfd codigoPaciente if codigoPaciente 0 codigoPaciente numPacientes Procurar tratamento do paciente int indiceTratamento 1 for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente indiceTratamento i break if indiceTratamento 1 printfDigite a quantidade de dias a serem adicionados ao tratamento int dias scanfd dias tratamentosindiceTratamentodiasTratamento dias printfTratamento ampliado com sucesso else printfPaciente não está em tratamento else printfCódigo de paciente inválido void apagarTratamento int codigoPaciente printfDigite o código do paciente scanfd codigoPaciente if codigoPaciente 0 codigoPaciente numPacientes Procurar tratamento do paciente int indiceTratamento 1 for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente indiceTratamento i break if indiceTratamento 1 Remover o tratamento for int i indiceTratamento i numTratamentos 1 i tratamentosi tratamentosi 1 PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA numTratamentos printfTratamento apagado com sucesso else printfPaciente não está em tratamento else printfCódigo de paciente inválido int main int opcao do printf printfClínica Geralt de Rivia printf0 Sair printf1 Listar Bruxos printf2 Cadastrar Bruxo printf3 Excluir Bruxo printf4 Listar Poções printf5 Cadastrar Poção printf6 Excluir Poção printf7 Listar Pacientes printf8 Cadastrar Paciente printf9 Excluir Paciente printf10 Listar tratamentos do paciente printf11 Listar pacientes do bruxo printf12 Iniciar tratamento printf13 Ampliar tratamento printf14 Apagar tratamento printfDigite a opção desejada scanfd opcao switch opcao case 0 printfSaindo break case 1 listarBruxos break case 2 cadastrarBruxo break case 3 excluirBruxo break case 4 PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA listarPocoes break case 5 cadastrarPocao break case 6 excluirPocao break case 7 listarPacientes break case 8 cadastrarPaciente break case 9 excluirPaciente break case 10 listarTratamentosPaciente break case 11 listarPacientesBruxo break case 12 iniciarTratamento break case 13 ampliarTratamento break case 14 apagarTratamento break default printfOpção inválida break while opcao 0 return 0 PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA Clínica Geralt de Rivia include stdioh Tamanhos dos arrays define MAXBRUXOS 10 define MAXPOCOES 10 define MAXPACIENTES 10 define MAXTRATAMENTOS 10 Estruturas typedef struct char nome50 char especialidade50 Bruxo typedef struct char nome50 char tipo20 Pocao typedef struct char nome50 int idade float altura Paciente typedef struct int bruxo int paciente int pocao int diasTratamento int dosagemDiaria Tratamento Variáveis globais Bruxo bruxosMAXBRUXOS Pocao pocosMAXPOCOES Paciente pacientesMAXPACIENTES Tratamento tratamentosMAXTRATAMENTOS int numBruxos 0 int numPocos 0 int numPacientes 0 int numTratamentos 0 Funções auxiliares void listarBruxos printfBruxos cadastrados for int i 0 i numBruxos i PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA printfCódigo d Nome s Especialidade s i bruxosinome bruxosiespecialidade void cadastrarBruxo if numBruxos MAXBRUXOS printfDigite o nome do bruxo scanfs bruxosnumBruxosnome printfDigite a especialidade do bruxo scanfs bruxosnumBruxosespecialidade numBruxos printfBruxo cadastrado com sucesso else printfLimite máximo de bruxos atingido void excluirBruxo int codigo printfDigite o código do bruxo a ser excluído scanfd codigo if codigo 0 codigo numBruxos Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosibruxo codigo printfNão é possível excluir o bruxo Há tratamentos relacionados return Remover o bruxo for int i codigo i numBruxos 1 i bruxosi bruxosi 1 numBruxos printfBruxo excluído com sucesso else printfCódigo de bruxo inválido void listarPocoes printfPoções cadastradas for int i 0 i numPocos i printfCódigo d Nome s Tipo s i pocosinome pocositipo void cadastrarPocao if numPocos MAXPOCOES PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA printfDigite o nome da poção scanfs pocosnumPocosnome printfDigite o tipo da poção líquido ou comprimido scanfs pocosnumPocostipo numPocos printfPoção cadastrada com sucesso else printfLimite máximo de poções atingido void excluirPocao int codigo printfDigite o código da poção a ser excluída scanfd codigo if codigo 0 codigo numPocos Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosipocao codigo printfNão é possível excluir a poção Há tratamentos relacionados return Remover a poção for int i codigo i numPocos 1 i pocosi pocosi 1 numPocos printfPoção excluída com sucesso else printfCódigo de poção inválido void listarPacientes printfPacientes cadastrados for int i 0 i numPacientes i printfCódigo d Nome s Idade d Altura 2f i pacientesinome pacientesiidade pacientesialtura void cadastrarPaciente if numPacientes MAXPACIENTES printfDigite o nome do paciente scanfs pacientesnumPacientesnome printfDigite a idade do paciente scanfd pacientesnumPacientesidade printfDigite a altura do paciente scanff pacientesnumPacientesaltura PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA numPacientes printfPaciente cadastrado com sucesso else printfLimite máximo de pacientes atingido void excluirPaciente int codigo printfDigite o código do paciente a ser excluído scanfd codigo if codigo 0 codigo numPacientes Verificar se há tratamentos relacionados for int i 0 i numTratamentos i if tratamentosipaciente codigo printfNão é possível excluir o paciente Há tratamentos relacionados return Remover o paciente for int i codigo i numPacientes 1 i pacientesi pacientesi 1 numPacientes printfPaciente excluído com sucesso else printfCódigo de paciente inválido void listarTratamentosPaciente int codigo printfDigite o código do paciente scanfd codigo if codigo 0 codigo numPacientes printfTratamentos do paciente for int i 0 i numTratamentos i if tratamentosipaciente codigo printfBruxo s Medicamento s Dias de tratamento d Dosagem diária d bruxostratamentosibruxonome pocostratamentosipocaonome tratamentosidiasTratamento tratamentosidosagemDiaria else printfCódigo de paciente inválido PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA void listarPacientesBruxo int codigo printfDigite o código do bruxo scanfd codigo if codigo 0 codigo numBruxos printfPacientes do bruxo for int i 0 i numTratamentos i if tratamentosibruxo codigo printfPaciente s pacientestratamentosipacientenome else printfCódigo de bruxo inválido void iniciarTratamento int codigoBruxo codigoPaciente codigoPocao printfDigite o código do bruxo scanfd codigoBruxo printfDigite o código do paciente scanfd codigoPaciente printfDigite o código da poção scanfd codigoPocao if codigoBruxo 0 codigoBruxo numBruxos codigoPaciente 0 codigoPaciente numPacientes codigoPocao 0 codigoPocao numPocos Verificar se já há um tratamento em andamento para o paciente for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente printfJá existe um tratamento em andamento para o paciente return Criar o tratamento tratamentosnumTratamentosbruxo codigoBruxo tratamentosnumTratamentospaciente codigoPaciente tratamentosnumTratamentospocao codigoPocao printfDigite a quantidade de dias de tratamento scanfd tratamentosnumTratamentosdiasTratamento printfDigite a dosagem diária scanfd tratamentosnumTratamentosdosagemDiaria numTratamentos printfTratamento iniciado com sucesso else printfCódigo de bruxo paciente ou poção inválido PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA void ampliarTratamento int codigoPaciente printfDigite o código do paciente scanfd codigoPaciente if codigoPaciente 0 codigoPaciente numPacientes Procurar tratamento do paciente int indiceTratamento 1 for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente indiceTratamento i break if indiceTratamento 1 printfDigite a quantidade de dias a serem adicionados ao tratamento int dias scanfd dias tratamentosindiceTratamentodiasTratamento dias printfTratamento ampliado com sucesso else printfPaciente não está em tratamento else printfCódigo de paciente inválido void apagarTratamento int codigoPaciente printfDigite o código do paciente scanfd codigoPaciente if codigoPaciente 0 codigoPaciente numPacientes Procurar tratamento do paciente int indiceTratamento 1 for int i 0 i numTratamentos i if tratamentosipaciente codigoPaciente indiceTratamento i break if indiceTratamento 1 Remover o tratamento for int i indiceTratamento i numTratamentos 1 i tratamentosi tratamentosi 1 numTratamentos printfTratamento apagado com sucesso else printfPaciente não está em tratamento PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA else printfCódigo de paciente inválido int main int opcao do printf printfClínica Geralt de Rivia printf0 Sair printf1 Listar Bruxos printf2 Cadastrar Bruxo printf3 Excluir Bruxo printf4 Listar Poções printf5 Cadastrar Poção printf6 Excluir Poção printf7 Listar Pacientes printf8 Cadastrar Paciente printf9 Excluir Paciente printf10 Listar tratamentos do paciente printf11 Listar pacientes do bruxo printf12 Iniciar tratamento printf13 Ampliar tratamento printf14 Apagar tratamento printfDigite a opção desejada scanfd opcao switch opcao case 0 printfSaindo break case 1 listarBruxos break case 2 cadastrarBruxo break case 3 excluirBruxo break case 4 listarPocoes break case 5 cadastrarPocao break PROJETO FINAL EM C CLÍNICA GERALT DE RIVIA case 6 excluirPocao break case 7 listarPacientes break case 8 cadastrarPaciente break case 9 excluirPaciente break case 10 listarTratamentosPaciente break case 11 listarPacientesBruxo break case 12 iniciarTratamento break case 13 ampliarTratamento break case 14 apagarTratamento break default printfOpção inválida break while opcao 0 return 0