ANNEXES
Annexe A :Lecture d'une étiquette RFID
à travers la communication série avec WLangage.
PROCEDURE LectureRFID ()
// thread en boucle infini
TANTQUE 1>0
// le port est deja ouvert
nNombre est un entier= sDansFileEntrée(gnPortCarte)
sMessagelu est une chaîne=sLit(gnPortCarte,nNombre) // on
lit ce qui entre par le port choisi
Temporisation(10) // on temporise
// LECTURE DES LIVRES ET CARTES AVEC UN SEUL LECTEUR RFID
FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_CodeLu..Valeur=sMessagelu
// On verifie si le code saisi correspond a un des livres
reconnus par le systme sinon on verifie s'il conrrespond a un lecteur
SI Taille(SC_Fiche.SAI_CodeLu..Valeur) >6 ALORS // on
verifie si le port serie a livree le nombre de caractere suffisant pourque l'on
decode le code
// on supprime dabord l'element du tableau
Supprime(gtabLedesvaleurslues,1) // le tableau ne contient qu'un
seul element, on le supprime
Ajoute(gtabLedesvaleurslues,SC_Fiche.SAI_CodeLu..Valeur)// on
garde le message lu dans un tableau avant d'enregistrer.
//ToastAffiche(gsVariableCodeLecteur)
HLitRecherche(Livres,CodeLivre,gtabLedesvaleurslues[1]) // ON
VERIFIE DANS LA TABLE LIVRE D'ABORD
HLitRecherche(lecteur,CodeLecteur,gtabLedesvaleurslues[1]) //
PUIS ON VERIFIE DANS LA TABLE LECTEURS
// si c;est la carte qui a ete detectee
SI HTrouve(lecteur) ALORS
SC_Fiche.SAI_IDlecteur=lecteur.IDlecteur
SC_Fiche.SAI_Nom_Lecteur=lecteur.Noms
FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Code_lecteur..CouleurFond=Blanc
FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Code_lecteur=lecteur.CodeLecteur
// on supprime dabord l'element du tableau
Supprime(gptabTabledesvaleurs,1) // le tableau ne contient qu'un
seul element
Ajoute(gptabTabledesvaleurs,SC_Fiche.SAI_Code_lecteur..Valeur)// on garde le
message lu dans un tableau avant d'enregistrer.
//ToastAffiche("lecteur trouvé")
FIN
// si c'est le livre qui a ete detectee
SI HTrouve(Livres) ALORS
SC_Fiche.SAI_IDLivre=Livres.IDLivres
SC_Fiche.SAI_Titre_Livre=Livres.Titre
FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Code_livre..CouleurFond=Blanc
FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Code_livre=sMessagelu
Supprime(gptabTabledesvaleurs_livres,1) // le tableau ne
contient qu'un seul element
Ajoute(gptabTabledesvaleurs_livres,SC_Fiche.SAI_Code_livre..Valeur)// on garde
le message lu dans un tableau avant d'enregistrer.
FIN
// si le code n'est ni livre ni carte
SI PAS HTrouve(lecteur) ET PAS HTrouve(Livres) ALORS
ToastAffiche("Cette Carte ou Livre n'est pas reconnu dans notre
système",toastCourt,cvMilieu,chCentre,RVB(255,0,0))
FIN
FIN
// on enregistre l'emprunt des livres
SI FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Nom_Lecteur<>""
ET FEN_Fiche_EmpruntLivre.SC_Fiche.SAI_Titre_Livre<>"" ET
COL_Mode_Auto_Manuel.gnMode=1 ALORS
Enregistrer_Emprunt()
FIN
// temporisation
Temporisation(100)
// ferme le port
//sFerme(gnPortCarte)
//ToastAffiche("la commande a ete envoyee")
//FIN
ThreadPause(100)
FIN
Annexe B :Script SQL du système
« I-Library »
-- Script généré par WinDev le 01/06/2017
23 :57 :15
-- Tables de l'analyse IBiblio.wda
-- pour SQL générique (ANSI 92)
-- Création de la table Auteur
CREATE TABLE "Auteur" (
"IDAuteur" INTEGER PRIMARY KEY ,
"NomAuteur" VARCHAR(50) ,
"Annee" VARCHAR(10) );
CREATE INDEX "WDIDX_Auteur_NomAuteur" ON "Auteur"
("NomAuteur");
-- Création de la table CategorieLivre
CREATE TABLE "CategorieLivre" (
"IDCategorieLivre" INTEGER PRIMARY KEY ,
"NomCategorie" VARCHAR(50) ,
"Commentaire" VARCHAR(50) );
CREATE INDEX "WDIDX_CategorieLivre_NomCategorie" ON
"CategorieLivre" ("NomCategorie");
-- Création de la table Editeur
CREATE TABLE "Editeur" (
"IDEditeur" INTEGER PRIMARY KEY ,
"NomEditeur" VARCHAR(50) ,
"LieuEdition" VARCHAR(50) ,
"SiteWebEditeur" VARCHAR(50) );
CREATE INDEX "WDIDX_Editeur_NomEditeur" ON "Editeur"
("NomEditeur");
CREATE INDEX "WDIDX_Editeur_LieuEdition" ON "Editeur"
("LieuEdition");
-- Création de la table EmpruntLivre
CREATE TABLE "EmpruntLivre" (
"IDEmpruntLivre" INTEGER PRIMARY KEY ,
"DateEmprunt" DATE ,
"CodeLecteur" VARCHAR(12) ,
"CodeLivre" VARCHAR(15) ,
"TitreLivre" VARCHAR(50) ,
"DateRetour" DATE ,
"IDlecteur" INTEGER UNIQUE ,
"IDLivres" INTEGER );
CREATE INDEX "WDIDX_EmpruntLivre_CodeLecteur" ON "EmpruntLivre"
("CodeLecteur");
CREATE INDEX "WDIDX_EmpruntLivre_CodeLivre" ON "EmpruntLivre"
("CodeLivre");
CREATE INDEX "WDIDX_EmpruntLivre_TitreLivre" ON "EmpruntLivre"
("TitreLivre");
CREATE INDEX "WDIDX_EmpruntLivre_IDLivres" ON "EmpruntLivre"
("IDLivres");
-- Création de la table lecteur
CREATE TABLE "lecteur" (
"IDlecteur" INTEGER PRIMARY KEY ,
"CodeLecteur" VARCHAR(12) UNIQUE ,
"Matricule" VARCHAR(10) ,
"Noms" VARCHAR(50) ,
"Telephone" VARCHAR(13) ,
"Email" VARCHAR(25) );
-- Création de la table Livres
CREATE TABLE "Livres" (
"IDLivres" INTEGER PRIMARY KEY ,
"Titre" VARCHAR(50) ,
"Auteur" VARCHAR(50) ,
"TypeDocument" VARCHAR(50) ,
"ISBN" VARCHAR(50) ,
"Anneeedition" NUMERIC(10,0) ,
"MsonEdition" VARCHAR(50) ,
"NombrePage" INTEGER ,
"EtatLivre" VARCHAR(50) ,
"CodeLivre" VARCHAR(15) UNIQUE ,
"CategorieLivre" VARCHAR(50) ,
"IDCategorieLivre" INTEGER ,
"IDEditeur" INTEGER ,
"IDAuteur" INTEGER ,
"IDTypeDocument" INTEGER ,
"IDEmpruntLivre" INTEGER );
CREATE INDEX "WDIDX_Livres_Titre" ON "Livres" ("Titre");
CREATE INDEX "WDIDX_Livres_Auteur" ON "Livres" ("Auteur");
CREATE INDEX "WDIDX_Livres_ISBN" ON "Livres" ("ISBN");
CREATE INDEX "WDIDX_Livres_MsonEdition" ON "Livres"
("MsonEdition");
CREATE INDEX "WDIDX_Livres_IDCategorieLivre" ON "Livres"
("IDCategorieLivre");
CREATE INDEX "WDIDX_Livres_IDEditeur" ON "Livres"
("IDEditeur");
CREATE INDEX "WDIDX_Livres_IDAuteur" ON "Livres" ("IDAuteur");
CREATE INDEX "WDIDX_Livres_IDTypeDocument" ON "Livres"
("IDTypeDocument");
CREATE INDEX "WDIDX_Livres_IDEmpruntLivre" ON "Livres"
("IDEmpruntLivre");
-- Création de la table RemiseLivre
CREATE TABLE "RemiseLivre" (
"IDEmpruntLivre" INTEGER PRIMARY KEY ,
"CodeLecteur" VARCHAR(12) ,
"CodeLivre" VARCHAR(15) ,
"TitreLivre" VARCHAR(50) ,
"DateRemise" DATE ,
"IDlecteur" INTEGER ,
"IDLivres" INTEGER );
CREATE INDEX "WDIDX_RemiseLivre_CodeLecteur" ON "RemiseLivre"
("CodeLecteur");
CREATE INDEX "WDIDX_RemiseLivre_CodeLivre" ON "RemiseLivre"
("CodeLivre");
CREATE INDEX "WDIDX_RemiseLivre_TitreLivre" ON "RemiseLivre"
("TitreLivre");
CREATE INDEX "WDIDX_RemiseLivre_IDlecteur" ON "RemiseLivre"
("IDlecteur");
CREATE INDEX "WDIDX_RemiseLivre_IDLivres" ON "RemiseLivre"
("IDLivres");
-- Création de la table TypeDocument
CREATE TABLE "TypeDocument" (
"IDTypeDocument" INTEGER PRIMARY KEY ,
"TypeDocument" VARCHAR(30) );
CREATE INDEX "WDIDX_TypeDocument_TypeDocument" ON "TypeDocument"
("TypeDocument");
-- Contraintes d'intégrité
ALTER TABLE "RemiseLivre" ADD FOREIGN KEY ("IDLivres") REFERENCES
"Livres" ("IDLivres");
ALTER TABLE "EmpruntLivre" ADD FOREIGN KEY ("IDLivres")
REFERENCES "Livres" ("IDLivres");
ALTER TABLE "Livres" ADD FOREIGN KEY ("IDTypeDocument")
REFERENCES "TypeDocument" ("IDTypeDocument");
ALTER TABLE "Livres" ADD FOREIGN KEY ("IDAuteur") REFERENCES
"Auteur" ("IDAuteur");
ALTER TABLE "Livres" ADD FOREIGN KEY ("IDEditeur") REFERENCES
"Editeur" ("IDEditeur");
ALTER TABLE "Livres" ADD FOREIGN KEY ("IDCategorieLivre")
REFERENCES "CategorieLivre" ("IDCategorieLivre");
ALTER TABLE "RemiseLivre" ADD FOREIGN KEY ("IDlecteur")
REFERENCES "lecteur" ("IDlecteur");
ALTER TABLE "EmpruntLivre" ADD FOREIGN KEY ("IDlecteur")
REFERENCES "lecteur" ("IDlecteur")
|