allego il sw (scusate se è scritto malissimo e ha bisogno di assunzioni)
codice:
//swiluppo SW per il controllo accessi
#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <ctime>
using namespace std;
//definizione badge con le sue funzioni
class Badge
{
public:
int id; //numero identificativo tessera
char nome [20];
string cognome;
string indirizzo;
bool aut [6]; //atorizzazione
public:
int read_id ();
void autorizzazioni ();
};
//definizione del cartellino con le sue funzioni, relative alla raccolta degli orari di entrata e uscita dei singoli
class Cartellino
{
public:
char nome [20];
char cognome [20];
int id;
int mese;
int anno [4];
int giorno;
int timeIN;
int timeOUT;
void clock_in ();
void clock_out ();
};
class leggi_badge
{
public:
int id;
int modulo_varco; //il modulo varco è il sistema che comanda l'elettroserratura,la barriera infrarossi e l'accensione luce.
private:
string door1;
string door2;
string lab1;
string lab2;
string lab3;
string lab4;
string lab5;
string lab6;
};
//definizione dei badge
Badge b0,b1,b2,b3;
//definizione modulo varco
int leggi_badge::modulo_varco (string d1, string d2, string l1, string l2, string l3, string l4, string l5, string l6)
{
this->door1=d1; // modulo varco lettura ingresso
this->door2=d2; // modulo varco lettura uscita
this->lab1=l1; // modulo varco primo laboratorio
this->lab2=l2; // modulo varco secondo laboratorio
this->lab3=l3;
this->lab4=l4;
this->lab5=l5;
this->lab6=l6;
}
//implementazioni dei metodi
int Badge::read_id () //lettura del badge
{
return id;
};
//definizioni "autorizzazioni" con ciclo aurorizzati viene autorizzato in questo caso quattro badge
void Badge::autorizzazioni ()
{
int i;
b0.aut [0] = true;
b1.aut [2] = true;
b1.aut [4] = true;
b2.aut [6] = true;
for (i=0; i<6; i++)
b3.aut [i] = true;
};
main()
{
do
{
Badge = procedura flag; // la prcedura "flag" interna al modulo varco attende e si aggiorna tutte le volte che c'è una nuova informazione (badge)
} // qui leggo il badge appena il badge è valido lui esce dal ciclo attesa
while (Badge == 0);
switch (leggi_badge.modulo_vaco)
{
case 1: //modulo varco utilizzato all'ingresso inserimento orario d'entrata
time_t timer; //utilizzo della libreria ctime
struct tm y2k;
double seconds;
y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0;
y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;
time(&timer); //prende l'ora attuale uguale: timer = time(NULL)
seconds = difftime(timer,mktime(&y2k));
return 0;
case 2: //modulo varco utilizzato all'uscita inserimento orario d'uscita
time_t timer;
struct tm y2k;
double seconds;
y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0;
y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;
time(&timer); //prende l'ora attuale uguale: timer = time(NULL)
seconds = difftime(timer,mktime(&y2k));
return 0;
case 3: // modulo varco utilizzato dal primo lab
leggi_badge.modulo_varco; //risposta dal lab
int countF, countP; //counF conta il primo, countP conta le persone
if (Badge.aut (0)) (leggi_badge.modulo_varco()); // lettore di fronte al lab se autorizzato apre la porta (b0)
if (leggi_badge.modulo_varco()) (countF = countF + 1);
if (countF==1) (leggi_badge.modulo_varco());//accende la luce
countF--;//conta al contrario
if (countF=0) (leggi_badge.modulo_varco());//spenge la luce
case 4: // modulo varco utilizzato dal secondo lab
case 5: // modulo varco utilizzato dal terzo lab
case 6: // modulo varco utilizzato dal quarto lab
case 7: // modulo varco utilizzato dal quinto lab
case 8: // modulo varco utilizzato dal sesto lab