IV.5. DEVELOPPEMENT DES MODULES DU SYSTEME
Le système étant vaste et complexe, nous avons pris
soin de développer deux modules : un module servant d'indentification et
authentification du client ; un autre module servant à la gestion des
transactions.
IV.5.1. Choix du langage de programmation
Le choix d'un langage de programmation dépende souvent de
la préférence du développeur et du type de logiciel
à produire. Pour réussir à développer nos deux
modules, nous avons préféré les langages de programmation
ci-après : Le Java et le langage C.
T.F.E 2015 | Benito Lubuma L2 Génie info
81
IV.5.2. Quelques interfaces graphiques
Une fois que le client se présentera devant le G.A.B
tournant sous notre système, il verra sur l'écran LCD l'image
ressemblant à celle-ci :
Une fois l'authentification terminée, le système
affichera une image ressemblant à
celle-ci :
Le client aura le choix entre les trois propositions qui lui
sera présenté par le système. Sur l'image ci-dessous nous
pouvons apercevoir que le client a choisi de retirer de l'argent...
82
Sur cette image, nous pouvons apercevoir un
échantillon des données enregistrées après
enrôlement d'un certain nombre des clients dans notre
système.
IV.5.3. Quelques morceaux des codes
#include "mex.h" #include "matrix.h" #include "math.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const
mxArray *prhs[])
{
unsigned char *edgeim;
int rmin,rmax;
const int *dimensioni;
int rows,cols;
int nradii;
int dimensioni3d[3];
double *p;
int hr,hc,hrhc;
T.F.E 2015 | Benito Lubuma L2 Génie info
83
double weigth = 1.0;
int *xd,*yd,*px,*py;
int *x,*y,*changed;
int Lx,Ly,Lxd,Lyd;
int cx,cy;
int radius;
double fractpart, intpart,prodotto;
int ii,jj,cont,index,posjj,posii,n,pos,Lmax,vx,vy;
edgeim = mxGetData(prhs[0]);
rmin = mxGetScalar(prhs[1]);
rmax = mxGetScalar(prhs[2]);
dimensioni = mxGetDimensions(prhs[0]);
rows = dimensioni[0];
cols = dimensioni[1]; nradii =
rmax-rmin+1;
dimensioni3d[0] = rows; dimensioni3d[1] =
cols; dimensioni3d[2] = nradii;
plhs[0] =
mxCreateNumericArray(3,dimensioni3d,mxDOUBLE_CLASS,mxREAL);
p = mxGetData(plhs[0]);
hr = rows; hc = cols; hrhc =
hr*hc;
x = mxCalloc(hrhc,sizeof(int));
y = mxCalloc(hrhc,sizeof(int));
cont = 0;
for (jj=0;jj<hc;jj++)
{
posjj = jj*hr;
for (ii=0;ii<hr;ii++)
{
posii = posjj+ii;
if (*(edgeim+posii)>0)
{
x[cont]=jj;
y[cont]=ii;
cont++;
}
}
}
Lx = cont; Ly = cont;
Lmax = (int)(floor((nradii+rmin)/sqrt(2))+1)+1;
changed = mxCalloc(hrhc,sizeof(int));
xd = mxCalloc(Lmax,sizeof(int));
yd = mxCalloc(Lmax,sizeof(int));
px = mxCalloc(8*(Lmax),sizeof(int));
py = mxCalloc(8*(Lmax),sizeof(int));
for (index=0;index<Ly;index++)
{
cx = x[index];
cy = y[index];
for (n=1;n<=nradii;n++)
{
radius = n+rmin;
T.F.E 2015 | Benito Lubuma L2 Génie info
84
Lxd = (int)(((double)radius/sqrt(2))+1);
Lyd = Lxd;
for (ii=0;ii<Lxd;ii++) {
xd[ii] = ii;
prodotto =
(double)radius*sqrt(1-((double)(ii*ii))/((double)(radius*radius)));
if ((prodotto-(int)prodotto)>=0.5)
{
yd[ii] = (int)(prodotto)+1;
}
else
{
yd[ii] = (int)(prodotto);
}
}
for (ii=0;ii<Lxd;ii++)
{
vx = xd[ii];
vy = yd[ii];
px[ii] = cy+vx; py[ii] = cx+vy;
px[ii+Lxd] = cy+vy; py[ii+Lxd] = cx+vx;
px[ii+2*Lxd] = cy+vy; py[ii+2*Lxd] =
cx-vx;
px[ii+3*Lxd] = cy+vx; py[ii+3*Lxd] =
cx-vy;
px[ii+4*Lxd] = cy-vx; py[ii+4*Lxd] =
cx-vy;
px[ii+5*Lxd] = cy-vy; py[ii+5*Lxd] =
cx-vx;
px[ii+6*Lxd] = cy-vy; py[ii+6*Lxd] =
cx+vx;
px[ii+7*Lxd] = cy-vx;
py[ii+7*Lxd] = cx+vy;
}
for (ii=0;ii<hrhc;ii++)
{
changed[ii] = 0;
}
for (ii=0;ii<Lxd*8;ii++)
{
if ((px[ii]>=0) && (px[ii]<hr) &&
(py[ii]>=0) && (py[ii]<hc))
{
pos = px[ii]+hr*py[ii];
if (changed[pos]==0)
{
p[(n-1)*hrhc+pos] += weigth;
changed[pos] = 1;
}
}
}
T.F.E 2015 | Benito Lubuma L2 Génie info
T.F.E 2015 | Benito Lubuma L2 Génie info
85
}
}
mxFree(xd); mxFree(yd);
mxFree(px); mxFree(py); mxFree(x);
mxFree(y); mxFree(changed);
T.F.E 2015 | Benito Lubuma L2 Génie info
86
|