Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //Construir um controle de hospedagem de um hotel controlando os quartos disponíveis,
- //os quartos ocupados, os hóspedes do hotel e os funcionários.Todas as informações
- //deverão ser manipuladas utilizando as estruturas de dados ministradas e deverão ser
- //gravadas em arquivos txt. *Obs: Cada lista de dados em um arquivo separado
- //Estrutudas de Dados
- typedef struct hotel_hospede {
- char nome[100];
- char cpf[30];
- } Hospede;
- typedef struct hotel_quarto {
- int numero;
- Hospede hospede;
- } Quarto;
- typedef struct hotel_funcionario {
- char nome[100];
- char cpf[30];
- char telefone[30];
- int salario;
- int idade;
- } Funcionario;
- //Estruturas de Lista
- typedef struct no_hospede {
- struct no_hospede* prox;
- Hospede info;
- } NoHospede;
- typedef struct no_quarto {
- struct no_quarto* prox;
- Quarto info;
- } NoQuarto;
- typedef struct no_funcionario {
- struct no_funcionario* prox;
- Funcionario info;
- } NoFuncionario;
- //Variaveis Globais
- NoHospede* hospedes = NULL;
- NoQuarto* quartos = NULL;
- NoFuncionario* funcionarios = NULL;
- //Adicionar a Lista
- NoHospede* addHospede() {
- NoHospede* hospede = (NoHospede*)malloc(sizeof(NoHospede));
- hospede->prox = NULL;
- if(hospedes == NULL) {
- hospedes = hospede;
- }
- else {
- NoHospede* atual = hospedes;
- while(atual->prox != NULL)
- atual = atual->prox;
- atual->prox = hospede;
- }
- return hospede;
- }
- NoQuarto* addQuarto() {
- NoQuarto* quarto = (NoQuarto*)malloc(sizeof(NoQuarto));
- quarto->prox = NULL;
- if(quartos == NULL) {
- quartos = quarto;
- }
- else {
- NoQuarto* atual = quartos;
- while(atual->prox != NULL)
- atual = atual->prox;
- atual->prox = quarto;
- }
- return quarto;
- }
- NoFuncionario* addFuncionario() {
- NoFuncionario* funcionario = (NoFuncionario*)malloc(sizeof(NoFuncionario));
- funcionario->prox = NULL;
- if(funcionarios == NULL) {
- funcionarios = funcionario;
- }
- else {
- NoFuncionario* atual = funcionarios;
- while(atual->prox != NULL)
- atual = atual->prox;
- atual->prox = funcionario;
- }
- return funcionario;
- }
- //Remover da Lista
- int removerHospede(NoHospede* hospede) {
- if(hospedes == NULL)
- return 0;
- if(hospedes->prox == NULL) {
- if(hospedes == hospede) {
- free(hospedes);
- hospedes = NULL;
- return 1;
- }
- return 0;
- }
- NoHospede* passado = hospedes->prox;
- NoHospede* atual = hospedes->prox->prox;
- while(atual != NULL) {
- if(atual == hospede) {
- passado->prox = atual->prox;
- free(atual);
- return 1;
- }
- }
- return 0;
- }
- int removerQuarto(NoQuarto* quarto) {
- if(quartos == NULL)
- return 0;
- if(quartos->prox == NULL) {
- if(quartos == quarto) {
- free(quartos);
- quartos = NULL;
- return 1;
- }
- return 0;
- }
- NoQuarto* passado = quartos->prox;
- NoQuarto* atual = quartos->prox->prox;
- while(atual != NULL) {
- if(atual == quarto) {
- passado->prox = atual->prox;
- free(atual);
- return 1;
- }
- }
- return 0;
- }
- int removerFuncionario(NoFuncionario* funcionario) {
- if(funcionarios == NULL)
- return 0;
- if(funcionarios->prox == NULL) {
- if(funcionarios == funcionario) {
- free(funcionarios);
- funcionarios = NULL;
- return 1;
- }
- return 0;
- }
- NoFuncionario* passado = funcionarios->prox;
- NoFuncionario* atual = funcionarios->prox->prox;
- while(atual != NULL) {
- if(atual == funcionario) {
- passado->prox = atual->prox;
- free(atual);
- return 1;
- }
- }
- return 0;
- }
- //Localizar na Lista
- NoHospede* localizarHospede(char nome[100]) {
- NoHospede* atual;
- for(atual = hospedes; atual != NULL; atual = atual->prox) {
- if(strcmp(atual->info.nome, nome) == 0) {
- return atual;
- }
- }
- return NULL;
- }
- NoQuarto* localizarQuarto(int numero) {
- NoQuarto* atual;
- for(atual = quartos; atual != NULL; atual = atual->prox) {
- if(atual->info.numero == numero) {
- return atual;
- }
- }
- return NULL;
- }
- NoFuncionario* localizarFuncionario(char nome[100]) {
- NoFuncionario* atual;
- for(atual = funcionarios; atual != NULL; atual = atual->prox) {
- if(strcmp(atual->info.nome, nome) == 0) {
- return atual;
- }
- }
- return NULL;
- }
- //Ler entrada do Usuario
- void lerQuarto() {
- NoQuarto* quarto = addQuarto();
- printf("\nInsira o numero do quarto: ");
- scanf("%d", &quarto->info.numero);
- sprintf(quarto->info.hospede.nome, "Nenhum");
- sprintf(quarto->info.hospede.cpf, "000.000.000-00");
- printf("\nQuarto adicionado com sucesso.\n");
- }
- void lerHospede() {
- NoHospede* hospede = addHospede();
- printf("\nInsira o nome do hospede: ");
- scanf(" %[^\n]s", hospede->info.nome);
- printf("Insira o CPF do hospede: ");
- scanf(" %[^\n]s", hospede->info.cpf);
- printf("\nHospede adicionado com sucesso.\n");
- }
- void lerFuncionario() {
- NoFuncionario* funcionario = addFuncionario();
- printf("\nInsira o nome do funcionario: ");
- scanf(" %[^\n]s", funcionario->info.nome);
- printf("Insira o CPF do funcionario: ");
- scanf(" %[^\n]s", funcionario->info.cpf);
- printf("Insira o telefone do funcionario: ");
- scanf(" %[^\n]s", funcionario->info.telefone);
- printf("Insira o salario do funcionario: ");
- scanf("%d", &funcionario->info.salario);
- printf("Insira a idade do funcionario: ");
- scanf("%d", &funcionario->info.idade);
- printf("\nFuncionario adicionado com sucesso.\n");
- }
- //Apagar dados vindo do Usuario
- void apagarQuarto() {
- int num;
- printf("\nInsira o numero do quarto: ");
- scanf("%d", &num);
- NoQuarto* quarto = localizarQuarto(num);
- if(quarto != NULL) {
- removerQuarto(quarto);
- printf("\nQuarto removido com sucesso.\n");
- }
- else
- printf("\nQuarto nao localizado.\n");
- }
- void apagarHospede() {
- char str[100];
- printf("\nInsira o nome do hospede: ");
- scanf(" %[^\n]s", str);
- NoHospede* hospede = localizarHospede(str);
- if(hospede != NULL) {
- removerHospede(hospede);
- printf("\nHospede removido com sucesso.\n");
- }
- else
- printf("\nHospede nao localizado.\n");
- }
- void apagarFuncionario() {
- char str[100];
- printf("\nInsira o nome do funcionario: ");
- scanf(" %[^\n]s", str);
- NoFuncionario* funcionario = localizarFuncionario(str);
- if(funcionario != NULL) {
- removerFuncionario(funcionario);
- printf("\nFuncionario removido com sucesso.\n");
- }
- else
- printf("\nFuncionario nao localizado.\n");
- }
- //Mostrar dado ao Usuario
- void mostrarQuarto() {
- int num;
- printf("\nInsira o numero do quarto: ");
- scanf("%d", &num);
- NoQuarto* quarto = localizarQuarto(num);
- if(quarto != NULL)
- printf("\nNumero: %d\nHospede: %s\n\n", quarto->info.numero, quarto->info.hospede.nome);
- else
- printf("\nQuarto nao localizado.\n");
- }
- void mostrarHospede() {
- char str[100];
- printf("\nInsira o nome do hospede: ");
- scanf(" %[^\n]s", str);
- NoHospede* hospede = localizarHospede(str);
- if(hospede != NULL)
- printf("\nNome: %s\nCPF: %s\n\n", hospede->info.nome, hospede->info.cpf);
- else
- printf("\nHospede nao localizado.\n");
- }
- void mostrarFuncionario() {
- char str[100];
- printf("\nInsira o nome do funcionario: ");
- scanf(" %[^\n]s", str);
- NoFuncionario* funcionario = localizarFuncionario(str);
- if(funcionario != NULL)
- printf("\nNome: %s\nCPF: %s\nTelefone: %s\nSalario: %d\nIdade: %d\n\n", funcionario->info.nome, funcionario->info.cpf, funcionario->info.telefone, funcionario->info.salario, funcionario->info.idade);
- else
- printf("\nFuncionario nao localizado.\n");
- }
- //Hospedar hospede a um quarto
- void hospedarCliente() {
- if(quartos == NULL) {
- printf("\nNao ha quartos cadastrados.\n");
- return;
- }
- else if(hospedes == NULL) {
- printf("\nNao ha hospedes cadastrados.\n");
- return;
- }
- int num;
- char str[100];
- printf("\nInsira o numero do quarto: ");
- scanf("%d", &num);
- printf("Insira o nome do hospede: ");
- scanf(" %[^\n]s", str);
- NoQuarto* quarto = localizarQuarto(num);
- NoHospede* hospede = localizarHospede(str);
- if(quarto == NULL) {
- printf("\nQuarto nao localizado.\n");
- return;
- }
- else if(hospede == NULL) {
- printf("\nHospede nao localizado.\n");
- return;
- }
- quarto->info.hospede = hospede->info;
- printf("\nO cliente (%s) foi hospedado no quarto %d com sucesso.\n", quarto->info.hospede.nome, quarto->info.numero);
- }
- //Salvar dados
- void salvarDados() {
- FILE* file = fopen("hospedes.txt", "w");
- NoHospede* atualH;
- for(atualH = hospedes; atualH != NULL; atualH = atualH->prox) {
- fprintf(file, "Nome: %s\n", atualH->info.nome);
- fprintf(file, "CPF: %s\n", atualH->info.cpf);
- fprintf(file, "\n");
- }
- atualH = NULL;
- fclose(file);
- file = fopen("quartos.txt", "w");
- NoQuarto* atualQ;
- for(atualQ = quartos; atualQ != NULL; atualQ = atualQ->prox) {
- fprintf(file, "Numero: %d\n", atualQ->info.numero);
- fprintf(file, "Hospede: %s\n", atualQ->info.hospede.nome);
- fprintf(file, "\n");
- }
- atualQ = NULL;
- fclose(file);
- file = fopen("funcionarios.txt", "w");
- NoFuncionario* atualF;
- for(atualF = funcionarios; atualF != NULL; atualF = atualF->prox) {
- fprintf(file, "Nome: %s\n", atualF->info.nome);
- fprintf(file, "CPF: %s\n", atualF->info.cpf);
- fprintf(file, "Telefone: %s\n", atualF->info.telefone);
- fprintf(file, "Salario: %d\n", atualF->info.salario);
- fprintf(file, "Idade: %d\n", atualF->info.idade);
- fprintf(file, "\n");
- }
- atualF = NULL;
- fclose(file);
- }
- //Menus
- void menuQuartos() {
- int op = -1;
- Quarto quarto;
- while(op != 0) {
- system("cls");
- printf(".----<: Quartos :>----.\n");
- printf("1. Adicionar Quarto\n");
- printf("2. Remover Quarto\n");
- printf("3. Localizar Quarto\n");
- printf("0. Voltar\n");
- scanf("%d", &op);
- switch(op) {
- case 1:
- lerQuarto();
- break;
- case 2:
- apagarQuarto();
- break;
- case 3:
- mostrarQuarto();
- break;
- case 0:
- continue;
- default:
- continue;
- }
- system("pause");
- }
- }
- void menuHospedes() {
- int op = -1;
- Hospede hospede;
- while(op != 0) {
- system("cls");
- printf(".----<: Hospedes :>----.\n");
- printf("1. Adicionar Hospede\n");
- printf("2. Remover Hospede\n");
- printf("3. Localizar Hospede\n");
- printf("0. Voltar\n");
- scanf("%d", &op);
- switch(op) {
- case 1:
- lerHospede();
- break;
- case 2:
- apagarHospede();
- break;
- case 3:
- mostrarHospede();
- break;
- case 0:
- continue;
- default:
- continue;
- }
- system("pause");
- }
- }
- void menuFuncionarios() {
- int op = -1;
- Funcionario funcionario;
- while(op != 0) {
- system("cls");
- printf(".----<: Funcionarios :>----.\n");
- printf("1. Adicionar Funcionario\n");
- printf("2. Remover Funcionario\n");
- printf("3. Localizar Funcionario\n");
- printf("0. Voltar\n");
- scanf("%d", &op);
- switch(op) {
- case 1:
- lerFuncionario();
- break;
- case 2:
- apagarFuncionario();
- break;
- case 3:
- mostrarFuncionario();
- break;
- case 0:
- continue;
- default:
- continue;
- }
- system("pause");
- }
- }
- void menuPrincipal() {
- int op;
- while(1) {
- system("cls");
- printf(".----<: Controle de Hospedagem :>----.\n");
- printf("1. Acessar Quartos\n");
- printf("2. Acessar Hospedes\n");
- printf("3. Acessar Funcionarios\n");
- printf("4. Hospedar Cliente\n");
- printf("0. Sair\n");
- scanf("%d", &op);
- switch(op) {
- case 1:
- menuQuartos();
- break;
- case 2:
- menuHospedes();
- break;
- case 3:
- menuFuncionarios();
- break;
- case 4:
- hospedarCliente();
- system("pause");
- break;
- case 0:
- return;
- default:
- continue;
- }
- salvarDados();
- }
- }
- //Principal
- int main() {
- menuPrincipal();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement