Equipe-7: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Linha 7: | Linha 7: | ||
=Descrição= | =Descrição= | ||
Implementar um programa que atue de forma a gerenciar o sistema de ar condicionado de salas | 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= | |||
<syntaxhighlight lang=c> | |||
#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; | |||
} | |||
</syntaxhighlight> |
Edição atual tal como às 07h37min de 12 de dezembro de 2014
1 Integrantes
- João Leonardo
- Nelson
- Thiago Grisolfi
2 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.
3 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.
4 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;
}