QUATRIEME PARTIE
PROGRAMMATION
La programmation constitue la dernière étape de
la réalisation effective du projet. Il s'agit de concevoir l'ensemble
des programmes devant réaliser les tâches de gestion
souhaitées en traduisant la structure logique en une structure physique
de données appelée base de données. Pour ce faire, nous
avons choisi comme outil de réalisation le SGBDR Oracle version 9i et
son outil de développement Oracle developer 6.0.
Nous avons choisi de développer en Oracle pour les
raisons suivantes :
v La CNSS utilise comme SGBDR Oracle et comme outil de
développement Oracle developer.
v Nous voulons que ce stage soit pour nous une occasion
d'apprendre quelque chose de nouveau afin d'augmenter nos connaissances.
v Oracle est un outil permettant une meilleure
intégrité, une cohérence et une sécurité des
données.
Au cours de cette étape notre démarche
sera : la présentation de Oracle, la présentation de
quelques interfaces graphiques et enfin quelques codes.
I. PRESENTATION DE ORACLE
I.1.
Historique
L'histoire d'Oracle débute avec la création
d'Oracle corporation en 1977. Sa première version était
commercialisée en 1979. L'année 1986 à été
marquée par l'introduction de l'architecture client / serveur qui tend
à devenir aujourd'hui sa spécialité.
I.2.
Caractéristiques
La fonction première d'Oracle est de gérer d'une
façon intégrée l'ensemble de données d'une
entreprise et de les rendre accessibles à un nombre important
d'utilisateurs et d'applications tout en garantissant leur
sécurité, leur cohérence et leur
intégrité.
Ecrit en forte proportion en langage C, Oracle est de ce fait
disponible sur une très grande variété de plates-formes
matérielles et systèmes d'exploitations. Toutes les versions
d'Oracle sur ces différentes machines et système d'exploitation
sont identiques et offrent les mêmes fonctionnalités. De ce fait,
le partage d'une application et de données oracle d'une machine à
l'autre peut se faire sans modifications majeures. Ceci entraîne une
certaine indépendance des données et applications
vis-à-vis de l'environnement matériel et logiciel.
Cette portabilité d'Oracle sur une grande
variété de plates-formes associée à sa
compatibilité aux normes internationales et son architecture
répartie font de lui un SGBDR à architecture ouverte.
Oracle offre en plus de son SGBD une très grande
variété d'outils utilisables dans toutes les étapes d'un
projet d'informatisation depuis la spécification de besoins
jusqu'à l'exploitation d'applications.
I.3. Outil de
développement : Oracle Developer
Les outils de développement constituent une composante
principale de Oracle. C'est un ensemble d'outils de quatrième
génération composé d'un générateur
d'application à base de grille d'écran (Forms), un
générateur de graphique (Graphic builder), un
générateur d'état (Report builder), un outil permettant
d'écrire les procédures (Procedure builder), un
intégrateur d'applications (Menu), des pré compilateurs
permettant d'accéder aux données d'Oracle depuis les langages de
troisième génération, une interface interactive permettant
d'envoyer des requêtes PL/SQL. Le langage de programmation est PL/SQL
(Procedural Language/SQL).
I.4. Langage de
programmation PL/SQL
Le PL/SQL est une extension du langage SQL incluant les
fonctionnalités de conception des langages de programmation. Il permet
de regrouper les instructions SQL dans un seul block et d'envoyer ce dernier au
serveur en un seul appel ; ce qui permet de réduire le trafic sur
le réseau et d'augmenter alors les performances des applications. Le
langage PL/SQL permet de faire appel à des procédures externes,
c'est-à-dire des procédures écrites dans un autre langage.
Il offre un moyen d'identifier et de traiter les éventuelles erreurs
à l'aide du mécanisme des exceptions.
Syntaxe :
DECLARE
<Déclaration des variables, curseurs et
types>
BEGIN
<Corps du programme>
[EXCEPTION
WHEN<nom de l'exception>
THEN
<Code à exécuter>]
END ;
I.5. Quelques interfaces
graphiques
Au lancement de notre application, s'affiche l'écran de
connexion. L'utilisateur doit entrer son nom d'utilisateur, son mot de passe et
la chaîne de connexion de à la base de données. Il
n'accède au menu général que si ces données
entrées sont correctes.
Fig1 : écran de connexion
Fig2 : formulaire de saisie d'un
dossier
Fig3 : formulaire de saisie d'un bon
Fig4 : formulaire permettant de
confier des dossiers à un ASC
I.6. Extrait de quelques
codes
1.6.1 Création de la table dossier
Create table DOSSIER (
Num_ord_dossier number (6) not null,
Num_enr number (6) not null,
Date_recep_doss date not null,
Num_assurce_ass number (8) not null,
Motif_enq2 varchar2 (100) not null,
Date_transmission date,
Code_nat number (3) not null,
Code_agence numbers (3),
Code_service numbers (3),
Num_bon numbers (6),
Num_dde_solde numbers (6),
Num_dde_avce numbers (6),
Constraint PK_DOSSIER primary key (num_ord_dossier),
Constraint FK_DOSSIER_BON foreign key (num_bon)
References BON (num_bon),
Constraint FK_DOSSIER_NATURE foreign key (Code_nat)
References NATURE (Code_nat),
Constraint FK_DOSSIER_DEMANDE_ foreign key (num_dde_solde) 20
References DEMANDE_SOLDE (num_dde_solde),
Constraint FK_DOSSIER_DEMANDE_ foreign key (Num_dde_avce) 22
References DEMANDE_AVANCE (Num_dde_avce),
Constraint FK_DOSSIER_AGENCE foreign key (code_agence)
References AGENCE (code_agence),
Constraint FK_DOSSIER_SERVICE foreign key code_service)
References SERVICE (code_service),
Constraint FK_DOSSIER_ASSURES foreign key (num_assurce_ass)
References ASSURES (num_assurce_ass)
) ;
1.6.2. Procedure d'enregistrement d'un
dossier
PROCEDURE valider IS
BEGIN
go_block ('dossier');
first_record;
Loop
If: choix = 1 then
INSERT into presenter_1 (num_ord_dossier, num_etat,
date_etat)
Values (:num_ord_dossier, 4, :etat. date_etat);
End if;
Next_record;
Exit when :num_ord_dossier is null;
End loop;
Commit;
Message ('Dossier(s) classés');
END;
1.6.3. Procédure d'enregistrement d'une
demande d'avance
PROCEDURE p_valider IS
BEGIN
Declare
nbre number;
i number:=0;
Begin
Insert into demande_avance (num_dde_avce, date_dde_avce)
Values (:demande_avance.num_dde_avce, :bon.dat);
Select count (*) into nbre from dossier where
num_bon=:list_bon;
go_block ('dossier');
first_record;
For i in 1..nbre
Loop
If :dossier.cocher=1 then
Update dossier
Set num_dde_avce=:demande_avance.num_dde_avce
Where num_ord_dossier=:dossier.num_ord_dossier;
End if; Next_record;
Exit when i=nbre;
End loop; Commit;
End;
Message ('Enregistrement effectué');
END;
|