thingol:
Dona Paula, onde estão os anexos I, II e III?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TAM_STRING 30
FILE *entrada;
typedef struct
{
int dia;
int mes;
int ano;
} data;
typedef struct opcionais_hardware
{
char nome[TAM_STRING];
char descricao[TAM_STRING*2];
struct opcionais_hardware *proximo;
} opcionais_hardware;
typedef struct aplicativos
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
struct aplicativos *proximo;
} aplicativos;
typedef struct
{
char fabricante[TAM_STRING/2];
char modelo[TAM_STRING/2];
float clock;
} processador;
typedef struct
{
processador cpu;
int memoria;
int hd;
opcionais_hardware *op_hw;
} hardware;
typedef struct
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
char senha[TAM_STRING];
} sistema_operacional;
typedef struct
{
sistema_operacional so;
aplicativos *app;
} software;
typedef struct
{
char setor[TAM_STRING];
char responsavel[TAM_STRING];
int patrimonio;
} logistica;
typedef struct computador
{
hardware hw;
software sw;
logistica logt;
} computador;
typedef struct no_computador
{
computador *pc;
struct no_computador *proximo;
} no_computador;
typedef struct lista
{
no_computador *inicio;
no_computador *fim;
} lista;
lista *lerArquivo(char endereco[])
{
lista *l=NULL;
//implemente aqui
return l;
}
void escreverSaida1(lista *l,char endereco[],int memoria)
{
//implemente aqui
} void escreverSaida2(lista *l,char endereco[],char nome[],char versao[])
{
//implemente aqui
} void imprimir(lista *l)
{
no_computador *aux=l->inicio;
while (aux!=NULL)
{
printf("fabricante: %s\n",aux->pc->hw.cpu.fabricante);
printf("modelo: %s\n",aux->pc->hw.cpu.modelo);
printf("clock: %f\n",aux->pc->hw.cpu.clock);
printf("memoria: %d\n",aux->pc->hw.memoria);
printf("hd: %d\n",aux->pc->hw.hd);
opcionais_hardware *aux1=aux->pc->hw.op_hw;
while (aux1!=NULL)
{
printf("opcional: %s %s\n",aux1->nome,aux1->descricao);
aux1=aux1->proximo;
}
printf("s.o.: %s\n",aux->pc->sw.so.nome);
printf("versao: %s\n",aux->pc->sw.so.versao);
printf("instalacao: %d/%d/%d\n",aux->pc->sw.so.data_instalacao.dia,aux->pc-
>sw.so.data_instalacao.mes,aux->pc->sw.so.data_instalacao.ano);
printf("senha: %s\n",aux->pc->sw.so.senha);
aplicativos *aux2=aux->pc->sw.app;
while (aux2!=NULL)
{
printf("aplicativos: %s %s %d/%d/%d\n",aux2->nome,aux2->versao,aux2-
>data_instalacao.dia,aux2->data_instalacao.mes,aux2->data_instalacao.ano);
aux2=aux2->proximo;
}
printf("setor: %s\n",aux->pc->logt.setor);
printf("responsavel: %s\n",aux->pc->logt.responsavel);
printf("patrimonio: %d\n\n",aux->pc->logt.patrimonio);
aux=aux->proximo;
}
}
void menu()
{
system("cls");
printf("\n |------------------------------------------------|\n");
printf(" | |\n");
printf(" | UNIVERS
IDADE DO TOCANTINS |\n");
printf(" | |\n");
printf(" |------------------------------------------------|\n");
printf(" | |\n");
printf(" | <1> Abrir \"entrada.txt\" |\n");
printf(" | <2> Imprimir |\n");
printf(" | <3> Relatorio 1 (\"saida1.txt\") |\n");
printf(" | <4> Relatorio 2 (\"saida2.txt\") |\n");
printf(" | <5> Sair |\n");
printf(" | |\n");
printf(" |------------------------------------------------|\n\n");
printf("\t\tOpcao: ");
}
int main() { lista *l=NULL;
char opcao;
do
{
menu();
fflush(stdin);
opcao=getchar();
switch(opcao)
{
case '1':
l=lerArquivo("entrada.txt");
system("cls");
printf("\n\tArquivo aberto com sucesso!\n\n\n");
system("pause");
break;
case '2':
system("cls");
if (l!=NULL) imprimir(l);
else
printf("\n\tLista vazia!\n\n\n");
system("pause");
break;
case '3':
system("cls");
if (l!=NULL)
{ int memoria;
printf("\n\n\tMemoria menor que : ");
scanf("%d",&memoria);
escreverSaida1(l,"saida1.txt",memoria);
printf("\n\tRelatorio 1 emitido com sucesso!\n\n\n");
}
else printf("\n\tNao foi possivel emitir relatorio 1!\n\n\n");
system("pause");
break;
case '4':
system("cls");
if (l!=NULL)
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
printf("\n\n\tNome : ");
fflush(stdin);
fgets(nome,TAM_STRING,stdin);
nome[strlen(nome)-1]='\0';
printf("\n\tVersao : ");
fflush(stdin);
fgets(versao,TAM_STRING/2,stdin);
versao[strlen(versao)-1]='\0';
escreverSaida2(l,"saida2.txt",nome,versao);
printf("\n\tRelatorio 2 emitido com sucesso!\n\n\n");
}
else
printf("\n\tNao foi possivel emitir relatorio 2!\n\n\n");
system("pause");
break;
default:
if (opcao!='5')
continue;
}
} while(opcao!='5');
}
ANEXO II
Descrição do arquivo de entrada O arquivo de entrada organiza os dados com uso de tag de formatação (marcação). Cada tag é delimitada pelos sinais ?<? para abertura da tag e ?>? para seu fechamento. Para toda tag de abertura obrigatoriamente deve existir uma tag de fechamento. A tag de fechamento é caracterizada com o uso do sinal ?/? logo após a abertura da tag como, por exemplo, ?</ … >?. Entre cada tag de abertura e fechamento há a informação referente ao que representa a tag, como por exemplo, ?<TAG>Informacao</TAG>?. No arquivo de entrada há uma tag principal que representa um computador, ou seja, a tag ?<computador>? que é fechada pela marcação ?</computador>?. Essa marcação principal possui três informações principais que caracterizam um computador, que são: hardware, software e logística. A caracterização do hardware do computador é descrita a seguir: A marcação processador possui os campos para sua caracterização, como fabricante, onde deve delimitar a informação do nome do fabricante do processador do computador em questão (por exemplo: Intel). Também possui a marcação que delimita o modelo do processador (por exemplo: Core 2 Duo). E, por fim, a marcação da informação de freqüência do clock do processador (por exemplo: 2.5). A tag memoria é destinada à delimitação da informação referente à quantidade de memória RAM em megabytes existente no computador (por exemplo: 2048). A marcação hd delimita a informação referente à quantidade de memória de armazenamento em gigabytes existente no computador (por exemplo: 250).
A marcação opcionais_hardware possui dois campos, uma tag nome com a função de delimitar o nome de um dispositivo adicional existente no computador (por exemplo: Placa de video) e o campo descricao que contém a descrição do dispositivo (porexemplo: NVIDIA 9600 GT). Um mesmo computador pode possuir quantas marcações opcionais_hardware forem necessárias, inclusive nenhuma. A caracterização do software instalado no computador é descrita a seguir: O campo sistema_operacional possui as marcações nome, que indica o nome do Sistema Operacional instalado no computador (por exemplo: Windows); a tag versao delimita a versão do sistema operacional instalado (por exemplo: Vista), o campo data_instalacao contém o dia/mês/ano da instalação do computador e, por fim, o campo senha que expressa a senha do usuário administrador do sistema operacional instalado. A marcação aplicativos é destinada para indicar os aplicativos instalados no computador. Um computador pode possuir nenhum, um ou vários aplicativos instalados. Cada aplicativo deve possuir um nome, campo nome (por exemplo: Br.office); a versão do software através do campo versao (por exemplo: 3.0); e a data de instalação do aplicativo, através do campo data_instalacao que representa dia/mês/ano. A caracterização do local onde o computador está sendo utilizado e seu responsável é realizada através do campo logistica, que por sua vez possui as tag setor, que informa de fato o setor/departamento da organização onde o computador está alocado; o campo responsavel que delimita o nome do responsável pelo equipamento (pessoa física). E, por fim, o campo patrimonio que informa o identificador do patrimônio do computador (um número inteiro).
ANEXO III
<computador>
<hardware>
<processador>
<fabricante>Intel</fabricante>
<modelo>Core 2 Duo</modelo>
<clock>2.5</clock>
</processador>
<memoria>2048</memoria>
<hd>250</hd>
<opcionais>
<nome>Placa de video</nome>
<descricao>NVIDIA 9600 GT</descricao>
</opcionais>
<opcionais>
<nome>Placa de captura</nome>
<descricao>Pinacle</descricao>
</opcionais>
<opcionais>
<nome>Webcam</nome>
<descricao>Microsoft 1.3 MP</descricao>
</opcionais>
</hardware>
<software>
<sistema_operacional>
<nome>Microsoft Windows</nome>
<versao>Vista</versao>
<data_instalacao>
<dia>16</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
<senha>123mudar</senha>
</sistema_operacional>
<aplicativos>
<nome>Br.office</nome>
<versao>3.0</versao>
<data_instalacao>
<dia>16</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
<aplicativos>
<nome>Adobe Reader</nome>
<versao>9.0</versao>
<data_instalacao>
<dia>17</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
</software>
<logistica>
<setor>DTIC</setor>
<responsavel>Joana Maria</responsavel>
<patrimonio>20333</patrimonio>
</logistica>
</computador>