LOGICIEL DE GESTION D’UN RESULTAT D’ELECTION MISE EN RESEAU

LOGICIEL DE GESTION D’UN RESULTAT D’ELECTION MISE EN RESEAU

La programmation de la base de données 

Nous allons donc commencer par créer notre environnement, plus précisément : allouer un handle d’environnement. Dans ODBC 3.x, la fonction à utiliser est SQLAllocHandle. SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE * OutputHandlePtr); En premier argument, on doit spécifier le type du handle qu’on veut allouer. Dans notre cas il s’agit d’un handle d’environnement donc on met SQL_HANDLE_ENV. En deuxième argument, nous devons spécifier le « parent » du handle que l’on veut créer. Dans notre cas, on doit passer NULL car un environnement ne peut pas avoir de parent (mais un environnement par exemple est parent d’une éventuelle connexion). En troisième argument, nous devons fournir l’adresse de la variable dans laquelle nous voulons stocker le handle retourné. Et enfin, cette fonction retourne comme toutes SQL_SUCCESS ou SQL_SUCCESS_WITH_INFO en cas de succès, autre chose en cas d’erreur. Ensuite, comme nous voulons utiliser ODBC 3.x (que ce soit 3.0 ou 3.5x), nous devons configurer notre environnement de manière à supporter cette version. SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0); 27 A l’intérieur d’un environnement, on peut créer autant de connexions que l’on souhaite (dans la mesure où le système et/ou le SGBD le permet). Dans notre cas, nous allons créer une seule connexion [16]. SQLHDBC con; SQLAllocHandle(SQL_HANDLE_DBC, env, &con); Et maintenant, la partie la plus intéressante, nous allons nous connecter à la base de données représentée par la source de données election.mbd. La fonction à utiliser est SQLConnect. Et, pour exécuter notre requête, ce n’est pas plus compliqué : SQLExecDirect(stmt, « SELECT * FROM resultats; », SQL_NTS); SQL_NTS signifie Null Terminated String, c’est-à-dire chaîne de caractères terminée par zéro. Et avant de quitter on peut libérer le mémoire en utilisant la fonction SQLFreeHandle() et la fonction SQLDisconnect() pour déconnecter à la base. 

Les API Windows en C 

Windows est un système d’exploitation proposant une interface graphique. Celle-ci était déjà plus qu’une simple évolution graphique du langage : elle introduit à la notion de programmation visuelle, dans laquelle le dessin de l’interface de l’utilisation occupe la première place dans la phase de développement. La méthode de programmation visuelle associée à la mise en œuvre de composants prédéfinis a ainsi permis aux programmeurs occasionnels de développer rapidement et sans difficulté des logiciels sous Windows. 

 Création d’une fenêtre en C

 Les étapes à suivre pour créer une fenêtre sont les suivantes : – Enregistrer une classe (ou modèle) de fenêtre L’enregistrement d’une nouvelle classe de fenêtre peut se faire avec la fonction RegisterClass. Cette fonction nécessite comme paramètre l’adresse d’une structure de type WNDCLASS. WNDCLASS wc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.hCursor = LoadCursor(NULL, IDC_ARROW); 28 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hInstance = ; wc.lpfnWndProc = ; wc.lpszClassName = « Classe 1 »; wc.lpszMenuName = NULL; wc.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wc); – Créer une fenêtre (à partir d’un modèle existant) Après avoir enregistré une classe de fenêtre, on peut désormais créer une fenêtre. HWND hWnd; hWnd = CreateWindow(« Classe 1 », /* Classe de la fenêtre */ « Election. », /* Titre de la fenêtre */ WS_OVERLAPPEDWINDOW, /* Style de la fenêtre */ 100, /* Abscisse du coin supérieur gauche */ 100, /* Ordonnée du coin supérieur gauche */ 600, /* Largeur de la fenêtre */ 300, /* Hauteur de la fenêtre */ NULL, /* Fenêtre parent */ NULL, /* Menu */ , NULL /* Paramètres additionnels */); – L’afficher (en effet, la fenêtre est initialement invisible) – Ensuite on affiche la fenêtre à l’aide de la fonction suivante :ShowWindow(hWnd, ); Où est un entier censé indiquer la manière dont comment on souhaite afficher la fenêtre. On pourra utiliser par exemple les constantes SW_SHOW, SW_HIDE, SW_MINIMIZE, SZ_MAXIMIZE.D’habitude, on lui passe le paramètre nCmdShow de WinMain afin que la fenêtre s’affiche tout comme l’utilisateur l’a demandé. – Intercepter tous les messages (souris, clavier) puis les passer à la procédure de fenêtre. MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); 29 DispatchMessage(&msg); } La fonction GetMessage retourne TRUE tant qu’elle n’a pas reçu le message WM_QUIT. Une application doit donc envoyer ce message pour quitter la boucle. Une fois qu’on a quitté la boucle, on termine le programme [15]. – Une procédure de fenêtre est une fonction chargée de traiter les messages reçus. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0L; } 

Les messages

Sous Windows, la communication entre une fenêtre et le système se fait par l’intermédiaire de messages. Par exemple, lorsqu’une fenêtre est redimensionnée, Windows envoie à celle-ci le message WM_SIZE pour l’informer de cet événement. Chaque fenêtre doit avoir une fonction, appelée procédure de fenêtre, que Windows appellera automatiquement chaque fois que la fenêtre a reçu un message. Afin qu’un message atteigne effectivement cette procédure de fenêtre, l’application doit explicitement envoyer le message à la procédure en question en appelant la fonction DispatchMessage. Une procédure de fenêtre doit avoir le prototype suivant : LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 30 Un message est en fait une structure déclarée dans winuser.h comme suit : typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; – hwnd identifie le destinataire du message. – message spécifie le message proprement dit Exemple : WM_KEYDOWN, WM_SIZE. – wParam et lParam contiennent d’éventuelles informations supplémentaires concernant le message. Leur signification est donc entièrement dépendante du message. – time spécifie quand le message a été envoyé. – Et pt est une structure de type POINT qui contient la position du pointeur de la souris au moment où le message a été envoyé. • Le message WM_CREATE est envoyé lorsqu’une fenêtre a été créée, avant même que CreateWindow (ou CreateWindowEx). • Le message WM_CLOSE est envoyé lorsqu’une fenêtre est sur le point d’être fermée. Ce message est envoyé par exemple lorsque l’utilisateur a cliqué sur le bouton fermer. Si on passe ce message à DefWindowProc, la fonction DestroyWindow est appelée et la fenêtre sera donc détruite. • Le message WM_DESTROY est Envoyé lorsqu’une fenêtre est sur le point d’être détruite. 

Démarche méthodologique de construction d’une application

Avant de pouvoir réaliser une application, il convient de suivre des étapes biens précises. Le génie logiciel a été crée dans ce but. Il recommande de suivre les étapes suivantes : – Expression des besoins, – Analyse, – Conception, – Implémentation, – Tests de vérification, – Validation, – Maintenance et évolution [6].

 Expression des besoins

C’est la description informelle des besoins exprimés par l’utilisateur. • Besoins fonctionnels – Fonctionnalités attendues du système • Besoin techniques (pouvant déboucher sur du prototypage) – Moyen d’accès (local, distant, Internet) – Temps de réponses acceptable – Quantité d’information à stocker. – A la fin de cette étape, on devrait avoir un cahier des charges de l’application.

 Analyse 

Les services du système, ses contraintes et ses buts sont établis, en consultants le cahier de charge, puis nous les définissons pour qu’il soit compréhensible par les utilisateurs et les concepteurs. A la fin de cette étape, la spécification de l’application est obtenue : et comment elle peut être utilisée. 

Conception 

Elle consiste à apporter des solutions techniques aux descriptions définies lors de l’analyse : architecture technique ; performances et optimisation ; stratégie de programmation. On y définit les structures et les algorithmes. Cette phase sera validée lors des tests.

Implémentation

Au cours de cette étape, nous implémentons la conception du logiciel en un ensemble de programme ou d’unité de programmation. 

Les tests de vérifications

Il permet de réaliser des contrôles pour la qualité technique du système : il s’agit de relever les éventuels défauts de conception et de programmation (revue de code, tests des composants). Il faut instaurer ces tests tout au long du cycle de développement et non à la fin pour éviter des reprises conséquentes du travail. 

 Validation

Tout au long de ces étapes, il doit y avoir des validations en collaboration avec l’utilisateur. Une autre validation doit aussi être envisagée lors de l’achèvement du travail de développement, une fois que la qualité technique du système est démontrée. Elle permettra de garantir la logique et la complétude du système. 

Maintenance et évolution

Deux sortes de maintenances sont à considérer : – Une maintenance corrective, qui consiste à traiter les « buggs » – Une maintenance évolutive, qui permet au système d’intégrer de nouveaux besoins ou des changements technologiques . 

Table des matières

REMERCIEMENTS
LISTE DES ABREVIATIONS
INTRODUCTION GENERALE
CHAPITRE 1 : NOTIONS SUR LE SOCKET EN LANGAGE C ET LES BASES DE DONNEES
1.1 Caractéristiques du langage C
1.1.1 Introductions
1.1.2 Principe du langage C
1.1.3 Système Client / Serveur
1.1.4 Architecture de client / serveur
1.1.5 Notion d’un socket
1.1.6 Déroulement de la communication
1.2 Les bases de données
1.2.1 Qu’est-ce qu’une base de données ?
1.2.2 Utilité d’une base de données
1.2.3 La gestion d’une base de données
1.2.4 Différents types de bases de données
1.2.5 Objectifs et avantages de SGBD
1.2.6 Les principaux SGBD
CHAPITRE 2 : LA METHODE MERISE ET LE LANGAGE SQL
2.1 Notion d’une Merise et langage SQL
2.1.1 Présentation générale
2.1.2 Système d’information
2.1.3 Architecture et conception d’un Système d’information
2.1.4 Principe de la Merise
2.1.5 Modèle Conceptuel de données
2.1.6 L’algèbre relationnelle
2.1.6.1 Définition
2.1.6.2 Quelques remarques sur l’algèbre relationnelle
2.2 Le langage SQL
2.2.1 L’obtention des données
2.2.1.1 La mise à jour d’informations
2.2.2 Les types de données
2.2.3 La création de table
2.2.4 Création de BD avec MS Access
2.2.5 Les types de données
2.2.6 Les contraintes d’intégrités
CHAPITRE 3 : LA TECHNOLOGIE ODBC ET LES API WINDOWS EN C/C++
3.1 La technologie ODBC en C/C++
3.1.1 Introduction
3.1.2 Notions fondamentales
3.1.2.1 Les pilotes ODBC
3.1.2.2 Les sources de données ODBC
3.1.2.3 Le gestionnaire de pilotes ODBC
3.1.3 La programmation de la base de données
3.1.4 Les API Windows en C
3.1.4.1 Création d’une fenêtre en C
3.1.4.2 Les messages
CHAPITRE 4 : REALISATION DU LOGICIEL DE GESTION D’UN RESULTAT D’ELECTION
MISE EN RESEAU .
4.1 Démarche méthodologique de construction d’une application
4.1.1 Les différentes étape
4.1.1.1 Expression des besoins
4.1.1.2 Analyse
4.1.1.3 Conception
4.1.1.4 Implémentation
4.1.1.5 Les tests de vérifications
4.1.1.6 Validation
4.1.1.7 Maintenance et évolution
4.2 Modélisation de la partie statique du logiciel d’élection
4.2.1 Architecture matérielle
4.2.2 Organisation de gestion de l’élection
4.2.3 Modèle Conceptuel de données
4.2.3.1 Dictionnaire de données
4.2.4 Modèle logique de données
4.2.5 Problème actuel
4.3 Modélisation de la partie dynamique du logiciel d’élection
4.3.1 Description du fonctionnement de l’application
ANNEXES
ANNEXE 1 : RESULTAT DE L’APPLICATION
ANNEXE 2 : LES FONDEMENTS DU RESEAU
BIBLIOGRAPHIE
RENSEIGNEMENTS
RESUME
ABSTRACT

projet fin d'etude

Télécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *