Equipe-7

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Integrantes

  • João Leonardo
  • Nelson
  • Thiago Grisolfi

Descrição

Implementar um programa que atue de forma a gerenciar salas fictícias e seus respectivos aparelhos de ar condicionado. Conforme solicitado, o sistema deverá acionar o ar condicionado automaticamente, conforme uma faixa de temperatura previamente estipulada.

Projeto Preliminar

  • Cadastrar Salas de Aula(Identificação, Potência do ar condicionado, quantidade de alunos, dimensões da sala);
  • Capacidade de editar todos os itens previamente cadastrados;
  • Verificação temporal das salas de aula;
  • Agendamento de alimentação do ar condicionado;
  • Verificar a alimentação do ar condicionado.

Implementação

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h>
#include <unistd.h>
#include <time.h>


int temp;
#define NOME_ARQUIVO "salas.txt"
int modificou = 0;

struct TSalas
{
    int num_sala; /* numero da sala */
    float temp_sala;
    int on_off;
    struct TSalas *next;   /* Tem que criar um arquivo pra jogar as inf da sala*/
}*head,*tail,*aux;




void adicionar_sala(int nsala, float temp_sala, int status_sala)
{
    struct TSalas *p = malloc(sizeof(struct TSalas));
    struct TSalas *aux;
    int j, encontrou = 0;
    
       time_t rawtime;
        struct tm *tminfo;

   time ( &rawtime );
   tminfo = localtime ( &rawtime );

    p->next = NULL;
    if (tail == NULL)                 /* lista vazia */
    {
        tail = head = p;
        p->num_sala = nsala;
        p->temp_sala = temp_sala;
        p->on_off = status_sala;
        modificou = 1;
        printf("Sala %d adicionada com sucesso!\n",nsala);
        
       
    }
    else                           /*lista não vazia */
    {
        for (aux=head; aux != NULL; aux=aux->next)
        {
            if (aux->num_sala == nsala) {
                encontrou = 1;
            }

        }
        if (encontrou)
        {
            free(p);
            printf("Não adicionada! Já existe a sala %d!\n", nsala);
        }
        else {
            tail->next = p;
            tail = p;

            p->num_sala = nsala;
            p->temp_sala = temp_sala;
            p->on_off = status_sala;
            modificou = 1;
            printf("Sala %d adicionada com sucesso!\n",nsala);
            
        }
    }
}

void status(){
int i;
char status_onoff[3];

    struct TSalas *p;
    for (p=head; p != NULL; p=p->next){
        printf("Sala %d\n -Temp %f\n %d\n\n",p->num_sala,p->temp_sala,p->on_off);
    if (p==NULL){
            printf("Não há salas adicionadas\n");
    }

}

}

void apagar_sala(int nsala)
{
    struct TSalas *aux, *apaga;
    aux=head;
    while(aux->next->num_sala != nsala)
        aux = aux->next;
    apaga = aux->next;
    aux->next = apaga->next;
    free(apaga);
    modificou = 1;
}
int editar_sala(int nsala)
{
    int j,troca_sala,opcao_alterar;
    float temp_nova;
    struct TSalas *p;
    p=head;
    for (j=0; p->num_sala!=nsala; j++)
    {
        if (p->num_sala=nsala)
        {
            printf("O que deseja alterar?\n1 número da sala\n2 Temperatura\n");
            scanf("%d",&opcao_alterar);
            switch(opcao_alterar)
            {
            case 1:
                printf("\nPara que número deseja alterar?\n");
                scanf("%d",&troca_sala);
                p->num_sala=troca_sala;
                goto esta_sala;
            case 2:
                printf("\nPara qual temperatura deseja alterar?\n");
                scanf("%f",&temp_nova);
                p->temp_sala=temp_nova;
                goto esta_sala;
            }
        }
        else
        {
            p->next=p;

        };
    };

esta_sala:
return;
}

/*void log1()
{
    FILE *log1;
    fopen("log.txt","a");
    for(;;)
    {
        struct TSalas *p;
        p=head;
        fprintf(log1,"%d\n",p->num_sala);
        p=p->next;
    }
}*/

/* Grava a lista ligada num arquivo novo */
void salvarAlteracoes()
{
    if (modificou)
    {
        FILE *arquivo;
        struct TSalas *p;

        arquivo = fopen(NOME_ARQUIVO, "w"); /* zera o arquivo*/
        fclose(arquivo);

        arquivo = fopen(NOME_ARQUIVO, "a");
        for (p = head; p != NULL; p = p->next)
        {
            fprintf (arquivo, "%d:%f:%d\n", p->num_sala, p->temp_sala,p->on_off);
        }
        fclose(arquivo);

        printf("Alterações salvas com sucesso!\n");
        modificou = 0;
    }
    else printf("Todas as alterações já foram salvas anteriormente!\n");

}

/* Carrega as informações das salas na lista ligada, a partir do arquivo */
void carregarInfoDasSalas()
{
    FILE *arquivo;
    int num_sala;
    float temp_sala;
    int on_off;
    status();
    arquivo = fopen(NOME_ARQUIVO, "r");
    if (arquivo != NULL) {
        while (fscanf(arquivo, "%d:%f:%d\n", &num_sala, &temp_sala,&on_off) != EOF) {
            adicionar_sala(num_sala, temp_sala,on_off);
        }
        fclose(arquivo);
    }
}

int main ()
{
    int opcao, aux,aux2;
    float temp1;
    int on_off1;
    carregarInfoDasSalas();
//log1();
topo:
    printf("O que voce deseja fazer:\n\n Gerenciamento das salas:\n   1 - Adicionar sala \n   2 - Status\n   3 - Apagar sala\n   4 - Editar sala\n   5 - Salvar Alteracoes\n   6 - Sair\n\nR:");
    scanf ("%d",&opcao);
    switch(opcao)
    {
    case 1:
        printf("Número da sala:\n-> ");
        scanf("%d",&aux);
        printf("Qual a temperatura desejada?\n-> ");
        scanf("%f",&temp1);
        printf("ON(1) ou OFF(0)?\n");
        scanf("%d",&on_off1);
        adicionar_sala(aux, temp1,on_off1);
        goto topo;
    case 2:
        status();
        goto topo;
    case 3:
        printf("Qual sala deseja excluir?\nR:");
        scanf("%d",&aux);
        apagar_sala(aux);
        goto topo;
    case 4:
        printf("Qual sala deseja alterar?\nR:");
        scanf("%d",&aux);
        editar_sala(aux);
        goto topo;
    case 5:
        salvarAlteracoes();
        goto topo;
    case 6:
        salvarAlteracoes();
        break;

    }

    return 0;
}