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

Rispondi quotando