Mudanças entre as edições de "Equipe-7"
Ir para navegação
Ir para pesquisar
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
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
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;
}