Neste arquivo você verá:
- Linguagem
- Introdução
- Problemática
- Descrição
- Organização do repositório
- Listas encadeadas
- Funções em Médico
- Funções em Paciente
- Funções em tratativas
- Funções em main
-
ChatGPT: O ChatGPT é um modelo de linguagem desenvolvido pela OpenAI, projetado para interagir e responder a perguntas em linguagem natural, com base em um amplo conjunto de dados.
-
Github Copilot: O GitHub Copilot é uma ferramenta de programação baseada em inteligência artificial, desenvolvida pela GitHub e pela OpenAI. Ele fornece sugestões de código em tempo real enquanto você escreve, usando modelos de linguagem avançados para aumentar a produtividade dos desenvolvedores.
A administração de um posto de saúde é essencial para assegurar seu funcionamento adequado e eficiente, envolvendo a gestão dos pacientes e dos médicos. Um sistema de gerenciamento dedicado para postos de saúde é desenvolvido com o objetivo de simplificar todas as operações necessárias para o funcionamento da instituição.
Projete um sistema na Linguagem C para gerenciamento de um posto de satde. Seu sistema deve ser capaz de manipular médicos e pacientes.
Os médicos devem ter os seguintes atributos:
- nome;
- especialidade;
- CRM (Conselho Regional de Medicina);
- pacientes atendidos.
Os pacientes devem ter os seguintes atributos:
- nome;
- idade;
- enfermidade;
- histórico médico.
Um menu com as seguintes opções deverá ser apresentado:
- Registrar médico;
- Consultar paciente;
- Remover médico;
- Remover paciente;
- Editar informações do paciente;
- Buscar paciente;
- Listar médicos e seus pacientes;
- Sair;
A opção Sair é a única que permite sair do programa. Sendo assim, após cada operaçao, o programa volta ao menu. Além disso, você deve levar em consideração O seguinte: a cada execuçao do seu programa, OS dados devem ser carregados (armazenados em um arquivo texto); cada novo médico ou paciente cadastrado deve ser inserido em ordem alfabética (para isso, você pode utilizar as funções da biblioteca padrão deC, string.h); você deve atualizar o arquivo texto para refletir o estado atual dos dados em virtude da adição ou remoção.
A organização desse repositório está disposta da seguinte forma:
📁 - GerenciamentoDePostoDeSaude
│
└─── bin
│
└─── include
│
├──medico.h
├──paciente.h
├──funcoes.h
│
└─── src
│
├──medico.c
├──paciente.c
├──main.c
├──funcoes.c
├──dados.txt
│
└───README.md
Neste projeto, o sistema de gerenciamento para óticas foi desenvolvido utilizando listas encadeadas, que possibilitam percorrer a lista em uma única direção, do início ao fim.
As listas encadeadas são compostas por nós que armazenam dados e um ponteiro para o próximo nó na sequência. Essa estrutura proporciona uma maneira eficiente de lidar com conjuntos de dados dinâmicos.
Apesar de permitirem apenas a travessia sequencial da lista, as listas encadeadas simples oferecem uma solução eficaz para diversas aplicações de gestão de dados, especialmente quando a ordem dos elementos é relevante e as operações de inserção e remoção são frequentes.
As principais vantagens apresentadas pelo uso de Listas encadeadas são:
-
Flexibilidade: Oferecem flexibilidade na inserção e remoção de elementos, uma vez que não requerem uma alocação contígua de memória.
-
Inserção e remoção eficiente: Em comparação com estruturas de dados como vetores, as listas encadeadas oferecem operações eficientes de inserção e remoção de elementos, especialmente quando se trata de operações no meio da lista.
-
Baixo custo de realocação: A inserção e remoção de elementos em uma lista encadeada não requerem realocação de memória, o que pode ser vantajoso em situações onde a quantidade de elementos na lista é desconhecida ou variável.
As principais desvantagens apresentadas pelo uso de Listas encadeadas são:
-
Acesso sequencial e menor desempenho: O acesso aos elementos de uma lista encadeada é sequencial, o que pode resultar em desempenho inferior em comparação com estruturas de dados que oferecem acesso aleatório, como arrays.
-
Consumo de memória: As listas encadeadas podem consumir mais memória do que outras estruturas de dados, devido à necessidade de armazenar ponteiros adicionais para cada elemento.
- Descrição: Esta função cria um novo nó de médico e o adiciona à lista encadeada de médicos.
void CriaListaMedico(ListaMedico **lista);
- Descrição: Esta função pega os dados informados pelo usuário como, por exemplo, nome, especialidade e crm do médico, e adiciona na lista.
void AdicionaMedico(ListaMedico **lista, Medico *medico);
- Descrição: Esta função imprime os detalhes de todas as consultas presentes na lista encadeada. Se a lista estiver vazia, uma mensagem indicando que não há consultas é exibida.
void imprimir_consultas(Consulta *lista_consultas);
- Descrição: Esta função remove o médico presente na lista usando o crm digitado pelo usuário.
void RemoveMedico(ListaMedico **lista, int crm);
- Descrição: Esta função carrega os dados dos médicos presentes no banco de dados(dados.txt).
ListaMedico *AdicionaMedicosDoArquivo(char NomeMedico[], char Especialidade[], int CRM);
- Descrição: Esta função cria um novo nó de paciente e o adiciona à lista encadeada de pacientes.
void CriaListaPaciente(ListaPaciente **lista);
- Descrição: Esta função pega os dados informados pelo usuário como, por exemplo, nome, idade, enfermidade e histórico médico do paciente, e adiciona na lista.
void AdicionaPaciente(ListaPaciente **lista, Paciente *paciente);
- Descrição: Esta função remove o paciente presente na lista usando o nome digitado pelo usuário.
void RemovePaciente(ListaPaciente **lista, char *nome);
- Descrição: Esta função edita todos os dados do paciente selecionado pelo usuário.
void EditarInformacoesDoPaciente(ListaPaciente **lista);
- Descrição: Esta função pede o nome do médico ao qual o paciente é designado e em seguida o nome do paciente, após isso ele lista as informações do paciente.
void BuscarPaciente(ListaPaciente **lista);
- Descrição: Esta função lista os médicos e os pacientes que estão designados.
void Listarmedico(ListaMedico **lista);
- Descrição: Esta função carrega os dados dos pacientes presentes no banco de dados(dados.txt).
void NovoPacienteTxt(ListaPaciente **lista, char *nome, int idade, char *enfermidade, char *historico_medico);
- Descrição: Esta função vai verrificar se há algum caractere especial, exceto 'espaço'.
int verificaCaracterEspecial (char* nome);
- Descrição: Esta função alterar todas as letras para maiúscula.
void passarMaiuscula(char *nome);
- Descrição: Esta função é usada para verificar se o usuário escolheu apenas as opções contidas no menu.
char verificaEscolha(char escolha);
- Descrição: Esta função cria o menu principal do código.
void menu();
- Descrição: Esta função verifica se tem número na string que o usuário digitou.
int Verificanum(char* nome);
- Descrição: Esta função vai unir as funções Verificanum e verificaCaracterEspecial.
int Verificachar(char* nome);
- Descrição: Esta função vai verirficar se o que o usuário digitou não contém letras ou caracteres especiais.
int VerificanumInt(int *nome);```
## **10.0-Funções em main**
### Função menu
- **Descrição:** Esta função cria o menu principal do código.
```c
void menu();