PROJET DE LANGAGE C " BASE DE DONNEES " " D ARINE 5 "

Documents pareils
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Introduction au langage C

Les fichiers. Chapitre 4

Le prototype de la fonction main()

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

TP2 : tableaux dynamiques et listes chaînées

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Le langage C. Séance n 4

Programmation système I Les entrées/sorties

Bases de programmation. Cours 5. Structurer les données

Java Licence Professionnelle CISII,

Programmation système en C/C++

Les structures. Chapitre 3

Programmation en langage C

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

I. Introduction aux fonctions : les fonctions standards

Initiation. àl algorithmique et à la programmation. en C

Chap III : Les tableaux

Introduction au Langage de Programmation C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Chapitre 1 : La gestion dynamique de la mémoire

Algorithmique et Programmation, IMA


Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmation Classique en langage C

Cours de Système : Gestion de Fichiers

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Cours 6 : Tubes anonymes et nommés

Programmation système de commandes en C

3IS - Système d'exploitation linux - Programmation système

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

INITIATION A LA PROGRAMMATION

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

V- Manipulations de nombres en binaire

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

GESTION DES FICHIERS C/UNIX

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Programmation C++ (débutant)/instructions for, while et do...while

Rappels Entrées -Sorties

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Langage Éric Guérin 5 octobre 2010

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Représentation d un entier en base b

Cours de Systèmes d Exploitation

Les structures de données. Rajae El Ouazzani

Programmation C. J.-F. Lalande. 15 novembre 2012

Cours 14 Les fichiers

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours Informatique Master STEP

OS Réseaux et Programmation Système - C5

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

PROJET 1 : BASE DE DONNÉES REPARTIES

Cours Programmation Système

Le système de gestion des fichiers, les entrées/sorties.

Compression de Données - Algorithme de Huffman Document de Conception

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Programmation impérative

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

BASES DE DONNEES TP POSTGRESQL

SUPPORT DE COURS. Langage C

Plan du cours. Historique du langage Nouveautés de Java 7

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Notions de Langage C

Outils pour la pratique

Chapitre 2. Classes et objets

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Les chaînes de caractères

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Testez votre installation. Créer un répertoire vide

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Cours de C. Allocation dynamique. Sébastien Paumier

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

Chapitre 10. Les interfaces Comparable et Comparator 1

Derrière toi Une machine virtuelle!

Programmer en JAVA. par Tama

Cours de programmation avancée. Le langage C. Université du Luxembourg

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Les processus légers : threads. Système L3, /31

Premiers Pas en Programmation Objet : les Classes et les Objets

TD3: tableaux avancées, première classe et chaînes

Examen Médian - 1 heure 30

ACTIVITÉ DE PROGRAMMATION

Transcription:

PROJET DE LANGAGE C " BASE DE DONNEES " " D ARINE 5 " Licence TAS Imran IDRIS Année 2006 1

/***************************************************************/ /*** LICENCE TECHNIQUES AERONAUTIQUES ET SPATIALES ***/ /*** LANGAGE C IMRAN IDRIS ***/ /*** PROJET : BASE DE DONNEES ARIANE 5 ***/ /***************************************************************/ I Introduction II Démarrage du programme Déclaration des bibliothèques Redéfinition du type Déclaration des variables globaux Déclaration des prototypes III Programme principal IV Sous programmes Fonction présentation : void presentation (void) Fonction affichage des configurations : void affichage_configurations (void) Fonction affichage des paramètres : void affichage_parametres (void) Mot de passe : int mot_de_passe (void) Liste des actions possibles : void liste_des_actions (void) Choix d une configuration : void choisir_une_configuration (void) Créer une configuration : int creer_une_configuration (void) Détruire une configuration : int détruire_une_configuration (void) Affichage d une liste des paramètres : void liste_des_parametres (void) Affichage d un paramètre particulier : void afficher_un_parametre (void) Ajouter un nouveau paramètre : void ajouter_un_parametre (void) Modifier un paramètre particulier : int modifier_un_parametre (void) Terminer le programme : void terminer_programme (void) Ecriture dans un fichier txt void ecriture_dans_fichier (void) VI Listing LICENCE TECHNIQUES AERONAUTIQUES ET SATIALES 2

I. Introduction : Le projet consiste à la réalisation d une base de données simplifiée, permettant de stocker les paramètres des diverses configurations de la fusée Ariane5, et de les restituer à la demande. La base de données dispose de neuf configurations possibles [1..9] et chaque configuration est composé de cent paramètres [0..99]. III. Démarrage du programme : /*** Déclaration des bibliothèques ***/ #include <stdio.h> #include <stdlib.h> #include <conio.h> // Flux entrer/sortie // Pour l instruction exit(0) // Pour l instruction getch() /*** Redéfinition du type ***/ #define CARACTERE 'c' // 1 ère valeur de la configuration test #define ENTIER 'e' // 2 ème valeur de la configuration test #define REEL 'r' // 3 ème valeur de la configuration test #define TEXTE 't' // 4 ème valeur de la configuration test #define PASSE #define INEXISTANT 'P' 'x' #define OK '1' // Mot de passe est correct #define KO '0' // Mot de passe incorrect /*** Déclaration des variables globaux ***/ int numero_de_la_configuration,numero_de_parametre,i,j; char ma_reponse,reponse; char les_configurations[10][50] = "Test","Config 1","","","Config 4","","","","",""; char les_noms_des_parametres[10][100][20] = "p","q","r","s"; char les_types_des_parametres[10][100] = CARACTERE,ENTIER,REEL,TEXTE; char les_valeurs_des_parametres[10][100][20] = "A","2","3.14159","quatre"; La configuration "test": 1 er paramètre p = A "CARACTERE" 2 ème paramètre q = 2 "ENTIER" 3 ème paramètre r = 3.14159 "REEL" 4 ème paramètre s = quatre "TEXTE" 3

/*** Déclaration des prototypes ***/ void presentation(void); void affichage_configurations(void); void affichage_parametres(void); int nom_utilisateur(void); int mot_de_passe(void); void choisir_une_configuration(void); int creer_une_configuration(void); int detruire_une_configuration(void); void liste_des_parametres(void); void afficher_un_parametre(void); int modifier_un_parametre(void); void ajouter_un_parametre(void); void mode_silencieux(void); void liste_des_actions(void); void terminer_programme(void); // Présentation // Affichage des configurations // Affichage des paramètres // Demande le nom de l utilisateur // Demande le mot de passe // Correspond à la touche c // Correspond à la touche n // Correspond à la touche d // Correspond à la touche l // Correspond à la touche p // Correspond à la touche m // Correspond à la touche a // Correspond à la touche s // Correspond à la touche h // Correspond à la touche q III Programme principal : void main (void) presentation(); while(1) liste_des_actions(); // Présentation // Boucle infinie // Liste des actions printf("choisir une action: "); // Saisie de l action choisie scanf("%s",&ma_reponse); switch(ma_reponse) case 'c': printf("vous avez choisi l'action: %c\n",ma_reponse); choisir_une_configuration(); // Choix d'une configuration case 'n': printf("vous avez choisi l'action: %c\n",ma_reponse); creer_une_configuration(); // Créer une nouvelle configuration case 'd': printf("vous avez choisi l'action: %c\n",ma_reponse); detruire_une_configuration(); // Détruire une configuration case 'l': printf("vous avez choisi l'action: %c\n",ma_reponse); liste_des_parametres(); // Donne la liste des parametres case 'p': printf("vous avez choisi l'action: %c\n",ma_reponse); afficher_un_parametre(); // Afficher un parametre particulier case 'm': printf("vous avez choisi l'action: %c\n",ma_reponse); modifier_un_parametre(); // Modifier un parametre case 'a': printf("vous avez choisi l'action: %c\n",ma_reponse); ajouter_un_parametre(); // Ajout d'un parametre 4

case 's': case 'h': case 'q': default: printf("vous avez choisi l'action: %c\n",ma_reponse); mode_silencieux(); // Ne rien faire printf("vous avez choisi l'action: %c\n",ma_reponse); liste_des_actions(); // Affichage des actions possibles printf("vous avez choisi l'action: %c\n",ma_reponse); terminer_programme(); // Quitter le programme printf ("-> Caractère non prévu\n\n"); On commence le programme principal par la fonction présentation, puis à travers la boucle infinie, on présente les différentes actions possibles que l utilisateur peut choisir. Suivant le cas choisie on fait appel au sous programme. Tous ces sous programme représente une tâche bien précise (créer une configuration, modifier un paramètre particulier ). Avant de terminer nôtre programme, on enregistre la base de donnée dans un fichier "ariane.txt". IV. Sous programme : 1) Fonction présentation : void presentation (void) printf("\n\n /*******************************/\n"); printf(" /*** Base de données Ariane5 ***/"); printf("\n /*******************************/\n\n"); printf(" Configurations d'ariane5 \n"); printf(" Commander chaque action par une lettre\n\n"); Il s agit d afficher le nom de la base de donnée dès le démarrage du programme. Voici le résultat : 5

2) Affichage des configurations : void affichage_configurations (void) printf("[-1] Configuration de test\n"); // Configuration [-1] printf(" [0] Arrêt du programme\n"); // Configuration [0] for(i=1;i<=9;i++) // Configuration de [1..9] printf(" [%d] '%s'\n",i,les_configurations[i]); Il s agit afficher la désignation des configurations, chacun ayant un numéro d ordre de 1 à 9, le cas [-1] et [0] est traité à part. Cette fonction est utilisée lorsqu on ajoute, supprime, modifie une configuration. Voici le résultat : 3) Affichage des paramètres : void affichage_parametres (void) printf("voici la liste de tous les paramètres:\n") ; printf("numero:[%d]\tnom:'%s'\ttype:%c\tvaleur:'%s'\n",numero_de_parametre, les_noms_des_parametres[numero_de_la_configuration][numero_de_parametre], les_types_des_parametres[numero_de_la_configuration][numero_de_parametre], les_valeurs_des_parametres[numero_de_la_configuration][numero_de_parametre]); Il s agit juste d un affichage des paramètres existants. Voici le résultat pour le cas de la configuration test : 6

4) Mot de passe : int mot_de_passe (void) int test,i,j; char password[10],reponse_passeword[10]="kgb2006"; for (i=0;i<3;i++) printf("\nentrer un mot de passe: "); scanf("%s",password); // On demande trois fois le mot de passe // Saisie du mot de passe test=ok; j=0; while(password[j]!='\0') // Parcourt du tableau jusqu à la fin c'est-à-dire le caractère nul if (reponse_passeword[j]!= password[j]) // Comparaison caractère à caractère test=ko; // entre les deux tableaux j++; if(test==ko) // la variable test est positionné sur KO car la comparaison n est pas bonne printf ("Le mot de passe est incorrect\n"); if(test==ok) // la variable test est positionné sur OK car la comparaison est bonne printf("le mot de passe est correct\n\n"); return(ok); // Dans ce cas la fonction retourne la variable test = OK if (i==3) // Si on a atteint i=3 cela signifie que le mot de passe n a pas été reconnu après trois essais printf("mot de passe est inccorecte\n"); return(ko); // Dans ce cas la fonction retourne la variable test = KO Avec le même raisonnement on programme la fonction suivante : int nom_utilisateur (void) Cette fonction permet d identifier le nom de l utilisateur, de la même façon on laisse trois possibilités, dans le cas contraire on sort du programme avec test = KO. Voici le résultat : 7

5) Liste des actions possibles : void liste_des_actions (void) printf("\n\n Actions possibles:\n"); printf(" [c] Choisir une configuration de fusée Ariane 5\n" ); printf(" [n] Créer une nouvelle configuration\n"); printf(" [d] Détruire une configuration existante \n"); printf(" [l] Donner la liste des paramètres existants\n"); printf(" [p] Afficher un paramètre avec son numéro\n"); printf(" [m] Modifier un paramètre dans cette configuration\n"); printf(" [a] Ajouter un nouveau paramètre a cette configuration\n"); printf(" [s] Juste faire ce qui est demande\n"); printf(" [h] Afficher la liste des actions possibles\n"); printf(" [q] Terminer ce programme \n\n"); Cette fonction donne le menu des actions possibles Voici le résultat : 8

6) Choix d une configuration : void choisir_une_configuration (void) printf("choisir une Configuration [1..9]?: "); // Saisie de la configuration scanf("%d",&numero_de_la_configuration); if(numero_de_la_configuration== 0) printf("etes vous sur (o/n)?: "); scanf("%s",&ma_reponse); // Cas ou la configuration = 0 alors on quitte // Demande de confirmation // si on quitte ou pas le programme if(ma_reponse=='o') // Si la réponse est oui, alors on quitte le programme printf("vous avez choisi d'arrêter le programme\nau revoir,et a bientôt\n"); printf("fin normal d'ariane5\n" ); getchar(); exit(0); else // Si la réponse est non, on ne quitte pas // On saisie à nouveau la configuration printf("\nquel Configuration: "); scanf("%d",&numero_de_la_configuration); if(numero_de_la_configuration== -1) // Cas pour la configuration de test // Seul configuration existante au début numero_de_la_configuration=0; // On force la configuration à test printf("vous avez choisi %s \n",les_configurations [numero_de_la_configuration]); On a prévu une configuration test dont le numéro est -1, c est la seule configuration existant au départ. A travers ce programme on test pas à pas s il s agit d une configuration 0, -1, ou [1..9]. 9

7) Créer une configuration : int creer_une_configuration (void) printf("quelle configuration voulez vous créer [1..9]?: "); // Saisie de la configuration scanf("%d",&numero_de_la_configuration); if(numero_de_la_configuration>0 && numero_de_la_configuration <=9) // Test si la conf. est [1..9] if(les_configurations[numero_de_la_configuration][0]=='\0') // Test si la configuration existe if(nom_utilisateur()==ko) // On fait appel à la fonction identification // le nom de l utilisateur et du mot de passe if(mot_de_passe()==ko) printf("entrer le nom de la configuration: "); // Si l identification est correct alors on peut scanf("%s",&les_configurations[numero_de_la_configuration]); // créer la nouvelle configuration affichage_configurations(); // Actualisation de l affichage else printf("cette configuration existe déjà \n"); else printf("numéro de configuration incorrect\n"); Dans ce sous programme avant de créer une nouvelle configuration, on test si la configuration est bien comprise entre 1 et 9, puis son existence. On demande l identification (le nom d utilisateur et le mot de passe), si celle-ci est exacte alors on peut créer la nouvelle configuration. 8) Détruire une configuration : int détruire_une_configuration (void) printf("quelle configuration voulez vous détruire [1..9]?: "); // Saisie de la configuration scanf("%d",&numero_de_la_configuration); if(numero_de_la_configuration>0 && numero_de_la_configuration <=9) // Test si la conf. est [1..9] if(les_configurations[numero_de_la_configuration][0]!='\0') // Test si la configuration existe if(nom_utilisateur()==ko) // On fait appel à la fonction identification // le nom de l utilisateur et du mot de passe if(mot_de_passe()==ko) printf("etes vous sur (o/n)?: "); scanf("%s",&reponse); // Demande de confirmation if(reponse=='o') // Si l identification est correct alors // On peut détruire la configuration les_configurations[numero_de_la_configuration][0]='\0'; affichage_configurations(); // Actualisation de l affichage printf("la Configuration a été détruite avec succès\n"); else printf("impossible de détruire une configuration vide\n"); else printf("numéro de configuration incorrect\n"); 10

Dans ce sous programme avant de détruire une configuration, on test si celle-ci est bien comprise entre 1 et 9, puis son existence. On demande l identification (le nom d utilisateur et le mot de passe), si celle-ci est exacte alors on demande une confirmation, dans le cas favorable on détruit la configuration en question. 9) Affichage d'une liste des paramètres : void liste_des_parametres (void) printf("\nvoici la liste de tous les paramètres: \n"); for(numero_de_parametre=0;numero_de_parametre<=99;numero_de_parametre++) if(les_noms_des_parametres[numero_de_la_configuration][numero_de_parametre][0]!='\0') affichage_parametres(); // Affichage des paramètres Afin d afficher tous les paramètres de la configuration en question, on introduit la boucle for. Comme il y a 100 paramètres, on ne prends pas en compte le paramètre vide et on affiche le reste. Voir l exemple suivant : 10) Affichage d'un paramètre particulier : void afficher_un_parametre (void) printf("quel paramètre [0..99]?: "); // Saisie du paramètre qu on désir afficher scanf("%d",& numero_de_parametre); printf("vous avez choisi le paramètre: %d\n\n",numero_de_parametre); if (0<=numero_de_parametre && numero_de_parametre <=99) // Test de l existance affichage_parametres(); // Affichage du paramètre else printf ("-> Numero non prevu\n"); On désir afficher un paramètre particulier On obtient le résultat suivant : 11

11) Ajouter un nouveau parametre : void ajouter_un_parametre (void) if(nom_utilisateur()==ko) if(mot_de_passe()==ko) // Test du nom de l utilisateur // Test du mot de passe if(les_configurations[numero_de_la_configuration][0]!='\0') // Test si le paramètre est bien vide printf("entrer le numéro de paramètre [0..99]?: "); // Saisie du numéro de paramètre scanf("%d",& numero_de_parametre); if (0<=numero_de_parametre && numero_de_parametre <=99) // Si le paramètre est bien // Compris entre 0 et 99 printf("entrer le nom du paramètre: "); scanf("%s",&les_noms_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("entrer le type du paramètre (c,e,r,t)?: "); scanf("%s",&les_types_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("entrer la valeur du paramètre: "); scanf("%s",&les_valeurs_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("le nouveau paramètre a été ajouter: \n"); // Actualisation de l affichage affichage_parametres(); else printf("-> Numéro non prévu\n"); else printf("cette configuration est vide\n"); On remarque que pour ajouter un nouveau paramètre, il d abord qu il soit vide de plus qu il soit compris entre 0 et 99. Après avoir effectuer les différents test on peut saisir les différents paramètres à ajouter à une configuration. 12

12) Modifier un paramètre particulier : int modifier_un_parametre (void) printf("entrer le numéro de paramètre a modifier [0..99]?: "); // Saisie du numéro de paramètre scanf("%d",& numero_de_parametre); // à modifier if (0<=numero_de_parametre && numero_de_parametre <=99) // Test de paramètre if(les_noms_des_parametres[numero_de_la_configuration][numero_de_parametre][0]!='\0') if(nom_utilisateur()==ko) // Test du nom de l utilisateur if(mot_de_passe()==ko) // Test du mot de passe printf("entrer le nom du paramètre: "); // Saisie des différents paramètres scanf("%s",&les_noms_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("entrer le type du paramètre (c,e,r,t)?: "); scanf("%s",& les_types_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("entrer la valeur du paramètre: "); scanf("%s",&les_valeurs_des_parametres[numero_de_la_configuration][numero_de_parametre]); printf("le nouveau paramètre a été modifie:\n"); // Actualisation de l affichage affichage_parametres(); else printf("impossible de modifier un paramètre vide\n"); else printf("-> Numéro non prévu\n"); On désire modifier un paramètre par son numéro, sachant qu on ne peut pas modifier un paramètre vide. Mais avant ceci il faut vérifier l existence de ce paramètre puis l identification (nom d utilisateur et mot de passe) et enfin saisir les nouveaux paramètres (le nom, le type ). 13

13) Terminer le programme : void terminer_programme (void) printf("vous avez décide de terminer le programme\n"); printf("fin normal d'ariane5\n"); printf("a bientôt"); getchar(); exit(0); Cette fonction permet de quitter le programme Voici le résultat : 14) Ecriture dans un fichier : void ecriture_dans_fichier(void) FILE * f; int tab[10]=1,2,3,4,5,i; // Pointeur sur fichier // Déclaration f=fopen("ariane5.txt","w"); // Ouverture du fichier if(f==null) // Dans le cas d erreur d ouverture du fichier printf("erreur d'ouverture du fichier"); for (i=0;i<5;i++) fprintf(f,"%d ",15); fprintf(f," %d\n",tab[i]); fclose(f); // Ecriture dans le fichier // Fermeture du fichier Pour terminer nôtre programme, on enregistre la base de donnée dans un fichier "ariane5.txt". 14