# data[].attributes.body
Após a realização dos programas Cliente e Servidor, os alunos realizaram uma sessão de teste das aplicações Cliente e Servidor criadas pelo Grupo 3. Após este teste, foi-lhes submetido um questionário de avaliação e foram obtidos os resultados que se anexam.

# data[].attributes.body
#include <cstdlib>
#include <iostream>
#include <unistd.h>
#include <Windows.h>
#include <fstream>
#include <string.h>

using namespace std;

struct valor {
char nome[255];
float v;
int trans;
} v1, v2, v3;

float altera (float valor) {
float one=0,variant=0, valoralt=0;
int soma;
one = rand() % 25 + 1 ;
one = one/1000;
variant = valor * one;
soma = rand() % 2+1;
switch (soma) {
case 1:
valoralt = valor + variant;
break;
case 2:
valoralt = valor - variant;
break;
}
return valoralt;
}

int main(int argc, char *argv[])
{
srand(time(NULL));
ofstream bolsa;
bolsa.open("z:\\poropopo.txt");
if (bolsa.is_open()) {
int cont=0, transa;
cout<<"Nome 1:";
gets(v1.nome);
// cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout<<"Valor 1:";
cin>>v1.v;
cout<<"Nome 2:";1\
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
gets(v2.nome);

cout<<"Valor 2:";
cin>>v2.v;
cout<<"Nome 3:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
gets(v3.nome);
cout<<"Valor 3:";
cin>>v3.v;
v1.trans=0;
v2.trans=0;
v3.trans=0;
cout<<"titulos: "<<v1.nome<<"  "<<v2.nome<<"  "<<v3.nome<<endl;
for (cont=0;cont<30;cont++) {
Sleep(10000);
cout<<"---------------------------------"<<endl;
v1.v = altera(v1.v);
bolsa << v1.nome << endl;
bolsa << v1.v << endl;
cout<<v1.nome<<": "<<v1.v<<endl;
v1.trans++;
v2.v = altera(v2.v);
bolsa << v2.nome << endl;
bolsa << v2.v << endl;
cout<<v2.nome<<": "<<v2.v<<endl;
v2.trans++;
v3.v = altera(v3.v);
bolsa << v3.nome << endl;
bolsa << v3.v << endl;
cout<<v3.nome<<": "<<v3.v<<endl;
v3.trans++;
bolsa << "---------------------- \n";
}
transa = v1.trans + v2.trans + v3.trans;
cout<<"Numero de transacoes: "<<transa<<endl;
}
else cout<<"Penta Xau"<<endl;
system("PAUSE");

return EXIT_SUCCESS;
}

# data[].attributes.body
Criação de um projeto dividido em duas aplicações:
- Uma aplicação Servidor, que durante 5 minutos gera cotações de 3 títulos a cada 10 segundos.
- Uma aplicação Cliente que consulta as cotações disponíveis no momento e permite que cada utilizador efetue compras e vendas com um montante que tem à disposição.

A realização do projeto foi separada em fases, discriminadas a seguir:
1ª fase do trabalho:

Desenvolva uma função que recebe o valor da cotação de um título de bolsa e retorna o seu valor alterado, podendo subir ou descer até 2,5% da sua cotação, de acordo com funções de geração de números aleatórios. A função deverá devolver a nova cotação do título.

2ª fase do trabalho:

Crie uma aplicação que vá variando a cotação de um título de bolsa de 10 em 10 segundos, durante 5 minutos. De cada vez que calcula uma nova cotação, deve imprimi-la. O valor inicial do título pode ser de 30,00 €.

3ª fase do trabalho:

Modifique a aplicação de modo a que este faça a gestão de 3 títulos. Cujo nome e cotação inicial são fornecidos pelo utilizador, e guarde numa estrutura, que deve guardar, também, o nº de títulos transacionados. A cotação de cada título deve alterar a cada 10 segundos, após o início de sessão em bolsa, de acordo com as regras definidas na 1ª fase.

4ª fase do trabalho:

A aplicação deve ser capaz de gravar um ficheiro chamado “z:\valores.txt” numa pasta da rede com os dados dos 3 títulos (nome, cotação).

Aplicação Cliente

5ª fase do trabalho:

Crie uma aplicação cliente, que corra em cada posto, que vai consultando a cotação de cada um dos 3 títulos, no ficheiro “cotacoes.txt” da pasta de rede, e mostra-as. Enquanto  a aplicação servidor estiver a alterar cotações (enquanto a sessão de bolsa estiver aberta), a aplicação cliente aceita ordens de compra e de venda dos títulos, tendo em conta que o utilizador não pode investir mais dinheiro do que tiver em caixa nem pode vender títulos que não tenha comprado. O valor inicial no início da sessão de bolsa é de 1000 euros. No final de cada transação realizada, o programa cliente grava um ficheiro na pasta da rede com o nome do utilizador e extensão txt, no qual vai gravar os seguintes dados, pela ordem dada:

- valor monetário em caixa (disponível para investir)

- Nº de títulos detidos por cada um dos títulos em bolsa

Ex:            Valor no ficheiro                Significado

1243.78                ->              Estão disponíveis 1.243,78 € para investir

12                              ->              o investidor tem em carteira 12 unidades do título 1

8                                 ->              o investidor tem em carteira 8 unidades do título 2

0                                 ->              o investidor tem em carteira 0 unidades do título 3

# data[].attributes.body
Vídeo sobre a framework Yii

# data[].attributes.attachment_link.title
Yii Framework PHP - 1: Introducción al Curso