Système de gestion de bibliothèque efficace
Système de gestion de bibliothèque efficace
Scope of Project:
Page | 1
Modèle de processus utilisé
Dans mon projet, j'ai utilisé le modèle en cascade. Ce modèle est utilisé lorsque
les exigences sont bien définies et raisonnablement stables, et dans mon projet
Le système de gestion des bibliothèques, toutes les exigences sont bien définies.
J'ai défini des activités et les ai représentées dans des phases de processus séparées.
Toutes les étapes se chevauchent et se nourrissent d'informations les unes des autres. Ce n'est pas simple.
modèle linéaire mais implique une séquence d'itérations d'activités de développement.
Ce modèle est approprié pour mon projet car j'avais beaucoup de temps pour
la conception, donc les contraintes de temps n'étaient pas présentes. Ce modèle généralement
prend plus de temps pour compléter le cycle de vie du logiciel car lorsqu'une étape
une fois terminé, il est validé et le développement passe à l'étape suivante.
Page | 2
Spécification des exigences logicielles
Functional requirements:
4, 120 Mo de RAM.
Page | 3
Services fournis à l'utilisateur
Les fonctions que le système de gestion de bibliothèque fournit sont les suivantes :
[Link]ÉRER : Cette opération est effectuée lorsque de nouvelles données doivent être ajoutées.
ajouté au système, par exemple lorsque le département achète un nouveau livre,
L'entrée du livre est insérée dans la base de données des livres. Cette option a
trois choix :
a)Livre : Ce choix permet d'entrer des données sur les nouvelles acquisitions.
des livres dans la base de données des livres. Les données saisies incluent
book’s author, title, publisher, cost and various other fields
fournis sous forme. Les données doivent être précises et doivent être
entré dans le format correct tel qu'indiqué dans les formulaires.
b) Enseignant : Cette option est utilisée pour entrer des données pour un nouvel enseignant
dans la base de données des enseignants. Cette option est choisie lorsqu'un enseignant
rejoins le collège.
c) Étudiant : Cela enregistrera un nouvel enregistrement pour un étudiant dans le registre de l'étudiant.
base de données. Cette option est choisie lorsqu'un étudiant est inscrit dans le
collège.
[Link] : Cette opération efface les enregistrements existants dans les divers
bases de données. Il est utilisé par exemple lorsqu'un membre quitte le collège ou lorsque
le livre est retiré de la bibliothèque. Mais il faut faire attention pendant que
effectuer cette opération et permission obtenue de la tête de
bibliothèque parce que le système pourrait perdre des données importantes.
Il peut être effectué sur toutes les bases de données et les trois choix sont :
a)Livre : Cela introduira une valeur nulle pour le livre dont l'accession
un numéro est saisi dans le champ prévu dans le formulaire respectif.
Cette opération est effectuée lorsqu'un livre est retiré de la bibliothèque.
Page | 4
b) Enseignant : Cela effacera le dossier d'un enseignant en particulier
dont le numéro d'identification est saisi. Cette option est choisie
quand un enseignant quitte le collège.
c) Étudiant : Cela effacera le dossier de l'étudiant en particulier
dont le dossier doit être supprimé en entrant son numéro de rôle dans
le champ requis. Cette option est choisie lorsqu'un étudiant part
collège.
[Link] À JOUR : Cette fonction met à jour les données dans les différents enregistrements. Cela
database. This function can search for data related to all the three
entities:
a)Livre : Pour chercher un livre particulier, pour savoir s'il est
actuellement disponible dans la bibliothèque ou non. Cela peut être fait par
entrer une valeur dans un ou plusieurs champs du formulaire pour effectuer
la recherche par titre ou nom d'auteur.
b) Enseignant : Cela permettra de déterminer l'enseignant particulier qui est actuellement
a le livre pour lequel la recherche est effectuée.
c) Étudiant : Cela permettra de trouver l'étudiant particulier qui possède
le livre particulier.
5. PROBLÈME : Cette opération est utilisée pour émettre un livre à un membre de la
bibliothèque. Pour que cette opération soit réussie, le membre doit répondre à certains
des critères comme elle ne devrait pas avoir émis de livres à sa limite maximale
Auparavant. Tous ces contrôles sont effectués par des logiciels. Si l'opération est
réussi, alors le système stocke automatiquement la date d'émission et le
date limite à laquelle le livre doit être rendu.
a)Étudiant : Lorsqu'un étudiant emprunte un livre, l'entrée du livre est
stocké automatiquement dans la base de données de l'étudiant avec la date d'échéance
de ce livre.
b) Enseignant : Dans le cas où un membre du personnel enseignant prête un livre le
l'entrée est stockée dans la base de données de l'enseignant avec la date d'échéance du
livre.
Page | 5
[Link] : En utilisant cette opération, un membre retourne les articles, qui
elle a emprunté, de la bibliothèque pour le rendre. Si le livre, qui est prêté
n'est pas retourné dans le délai spécifié, le membre se retrouve comme un
défaillant et elle est tenue de payer une amende qui est calculée
automatiquement par le logiciel.
a) Enseignant : Cela supprimera l'entrée correspondante faite dans
base de données des enseignants.
b) Étudiant : Cela supprimera l'entrée correspondante faite dans
base de données des étudiants.
[Link] : Ceci est utilisé pour afficher chaque enregistrement, c'est-à-dire
enregistrement de chaque livre, enseignant et étudiant dans la bibliothèque.
a)Livre : Enregistrement de chaque livre, c'est-à-dire son numéro d'accès,
author name, publisher name, etc.
b) Enseignant : Dossier de chaque enseignant, c'est-à-dire son identifiant, son département,
Page | 6
Page | 7
Diagrammes de flux de données
Page | 8
Page | 9
Page | 10
Code source
//**********************************************************
// BIBLIOTHÈQUE DE PROJET
//**********************************************************
//**********************************************************
// FICHIERS D'EN-TÊTE INCLUS
//**********************************************************
#include <iostream.h>
#include <fstream.h>
#include <process.h>
#inclure <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>
//**********************************************************
// CETTE CLASSE CONTRÔLE TOUTES LES FONCTIONS DU MENU
//**********************************************************
classe MENU
{
public
void menu_principal(void) ;
void introduction(void) ;
private :
void éditer_menu(void) ;
void modifier_livre(void) ;
void modifier_membre(void);
} ;
//**********************************************************
// CETTE CLASSE CONTIENT DES FONCTIONS LIÉES AUX LIVRES
//**********************************************************
classe LIVRE
{
public
void liste(void) ;
char *nomdelivre(int);
protégé
void ajouter_nouveau_livre(int, char tname[33], char
tauteur[26],flottant,int,int) ;
void mettre_a_jour_exemplaires(int,int,int) ;
void modifier(int,char[],char[],float);
void suppression(void);
Page | 11
int livre_trouvé(int);
int nom_livre_trouvé(char []) ;
int recordno(int);
int disponible(int);
char *nomd'auteur(int) ;
float prixLivre(int);
int nombre_de_copies(int);
int codeDuLivreDe(char[]) ;
vide afficher(int);
int reccount(void);
void supprimer_rec(int);
privé
int codeLivre, exemplaires ;
char nom[33], auteur[26] ;
flottant prix ;
int disponible ;
} ;
//**********************************************************
// CETTE CLASSE CONTIENT DES FONCTIONS LIÉES AUX MEMBRES
//**********************************************************
classe MEMBRE
{
public
void liste(void) ;
protégé
void ajouter_mémoire(int,int,char [],char [],char[],int,
int,int) ;
void modifier(int,char[],char[],char[]) ;
int membre_trouvé(int) ;
void mettre_a_jour_livre(int,int,int,int,int);
char *nommembre(int);
char *membretelephone(int) ;
char *adresse_membre(int) ;
int recordno(int);
int lastcode(void) ;
int émis(int);
int fine(int);
void afficher(int) ;
void delete_rec(int);
privé
int memcode, bookcode ;
char name[26], phone[10], address[33] ;
int dd, mm, aa ;// DATE DE RETOUR DU LIVRE //
} ;
//**********************************************************
// CECI EST DÉRIVÉ DE LA CLASSE LIVRE & MEMBRE ET CONTIENT
// FONCTIONS POUR TRAVAILLER (PROBLÈME, RETOUR, ETC).
//**********************************************************
Page | 12
void emettreLivre(void);
void rendreLivre(void) ;
void ajouter_livre(void);
void ajouter_membre(void);
void modifier_livre(void);
void modifier_membre(void) ;
void supprimer_livre(void) ;
void supprimer_membre(void);
} ;
//**********************************************************
// CETTE CLASSE CONTIENT DES FONCTIONS LIÉES À LA DATE ET À L'AMENDE
//**********************************************************
classe DATE
{
public
void étendre_date(int,int,int,int);
int diff(int,int,int,int,int,int);
int jour, mois, an ;
} ;
//**********************************************************
// FONCTION POUR PROLONGER UNE DATE DONNÉE DE 15 JOURS
//**********************************************************
void DATE :: étendre_date(int d1, int m1, int y1, int jours)
{
statique int mois[] = {31,29,31,30,31,30,31,31,30,31,30,31} ;
pour (int i=1; i<=jours; i++)
{
d1++ ;
si ((d1 > month[m1-1]) || (y1%4 != 0 && m1 == 2 && d1 > 28))
{
d1 = 1 ;
m1++ ;
}
si (m1 > 12)
{
m1 = 1 ;
y1++ ;
}
}
day = d1 ;
mon = m1 ;
year = y1 ;
}
//**********************************************************
// CETTE FONCTION RENVOIE LA DIFFÉRENCE ENTRE DEUX DONNÉES DONNÉES
// DATES
//**********************************************************
Page | 13
int DATE :: diff(int j1, int m1, int a1, int j2, int m2, int a2)
{
int jours = 0 ;
si ((y2<y1) || (y2==y1 && m2<m1) || (y2==y1 && m2==m1 && d2<d1))
retourner les jours ;
statique int mois[] = {31,29,31,30,31,30,31,31,30,31,30,31} ;
tant que (d1 != d2 || m1 != m2 || y1 != y2)
{
jours++ ;
d1++ ;
si ((d1 > mois[m1-1]) || (y1%4 != 0 && m1 == 2 && d1 > 28))
{
d1 = 1 ;
m1++ ;
}
si (m1 > 12)
{
m1 = 1 ;
y1++ ;
}
}
retourner jours ;
}
//**********************************************************
// FONCTION POUR AFFICHER LE MENU PRINCIPAL & CONTRÔLER TOUTES LES FONCTIONS
// DANS LE MENU PRINCIPAL.
//**********************************************************
Page | 14
cout << "0. QUITTER" ;
gotoxy(30,20) ;
cout << "Entrez votre choix : " ;
ch = getche() ;
si (ch == 27)
pause ;
sinon
si (ch == '1')
introduction() ;
sinon
si (ch == '2')
{
TRAVAILLER W ;
W.ajouter_livre() ;
}
sinon
si (ch == '3')
{
TRAVAILLER W ;
W.ajouter_membre() ;
}
autre
si (ch == '4')
{
TRAVAILLEMENT W ;
[Link]() ;
}
sinon
si (ch == '5')
{
TRAVAILLER
[Link]() ;
}
sinon
si (ch == '6')
{
BOOK B ;
[Link]() ;
}
sinon
si (ch == '7')
{
MEMBRE M ;
[Link]() ;
}
sinon
si (ch == '8')
modifier_menu() ;
sinon
si (ch == '0')
pause ;
}
}
//**********************************************************
// FONCTION POUR AFFICHER LE MENU D'EDITION
Page | 15
//**********************************************************
//**********************************************************
// FONCTION POUR AFFICHER LE MENU D'ÉDITION POUR LE LIVRE & LE CONTRÔLE
// TOUTES LES FONCTIONS DU MENU ÉDITER.
//**********************************************************
Page | 16
gotoxy(31,17) ;
cout << "Entrez votre choix : " ;
ch = getche() ;
si (ch == 27)
pause ;
sinon
si (ch == '1')
{
TRAVAILLER W ;
W.modifier_livre();
}
sinon
si (ch == '2')
{
TRAVAILLER W ;
W.supprimer_livre() ;
}
sinon
si (ch == '0')
pause ;
}
}
//**********************************************************
// FONCTION POUR AFFICHER LE MENU D'ÉDITION POUR LES MEMBRES ET LE CONTRÔLE
// TOUTES LES FONCTIONS DU MENU ÉDITER.
//**********************************************************
Page | 17
si (ch == '2')
{
TRAVAIL EN C;
W.supprimer_membre() ;
}
sinon
si (ch == '0')
pause ;
}
}
//**********************************************************
// FONCTION POUR AFFICHER L'INTRODUCTION DU PROJET.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE 0 SI LE CODE DU LIVRE DONNÉ N'EST PAS TROUVÉ
//**********************************************************
Page | 18
tant que ([Link]((char *)this,sizeof(BOOK)))
{
si (codeLivre == codeT)
{
found = 1 ;
pause ;
}
}
[Link]() ;
retourner trouvé ;
}
//**********************************************************
// CETTE FONCTION RENVOIE 0 SI LE NOM DU LIVRE DONNÉ N'EST PAS TROUVÉ
//**********************************************************
//**********************************************************
// CETTE FONCTION RETOURNE LE NUMÉRO D'ENREGISTREMENT POUR LE CODE DU LIVRE
//**********************************************************
Page | 19
//**********************************************************
// Cette fonction retourne les exemplaires disponibles pour le donné
// CODE DU LIVRE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE NOMBRE DE COPIES POUR LE DONNÉ
// CODE DU LIVRE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE NOM DU LIVRE DU LIVRE DONNÉ
// CODE.
//**********************************************************
Page | 20
[Link](0,ios::beg) ;
char tname[33] ;
tandis que ([Link]((char *)this,sizeof(LIVRE)))
{
si (codeLivre == codeT)
{
strcpy(tname, nom) ;
pause ;
}
}
[Link]() ;
retourner tname ;
}
//**********************************************************
// CETTE FONCTION RETOURNE LE NOM DE L'AUTEUR DU LIVRE DONNÉ
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE PRIX DU LIVRE DU LIVRE DONNÉ
// CODE.
//**********************************************************
Page | 21
}
[Link]() ;
return tprice ;
}
//**********************************************************
// CETTE FONCTION RENVOIE LE CODE DU LIVRE DU LIVRE DONNÉ
// NOM.
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS THE NO. OF THE RECORDS IN THE BOOK
// FICHIER.
//**********************************************************
//**********************************************************
// CETTE FONCTION SUPPRIME L'ENREGISTREMENT DU CODE DE LIVRE DONNÉ.
//**********************************************************
Page | 22
[Link]("[Link]", ios::out) ;
[Link](0,ios::beg) ;
tant que ( ![Link]() )
{
[Link]((char *)this,sizeof(BOOK)) ;
si ( [Link]() )
pause ;
si ( bookcode != tcode )
[Link]((char *)this,sizeof(BOOK)) ;
}
[Link]() ;
[Link]() ;
[Link]("[Link]", ios::out) ;
[Link]("[Link]", ios::in) ;
[Link](0,ios::beg) ;
tant que ( ![Link]() )
{
[Link]((char *)this,sizeof(BOOK)) ;
si ( [Link]() )
pause ;
[Link]((char *)this,sizeof(BOOK)) ;
}
fermer le fichier() ;
[Link]() ;
}
//**********************************************************
// CETTE FONCTION AJOUTE L'ENREGISTREMENT DANS LE FICHIER DU LIVRE
//**********************************************************
//**********************************************************
// CETTE FONCTION MET À JOUR L'ENREGISTREMENT DANS LE FICHIER DE LIVRE POUR LE
// CODE DE LIVRE DONNE
//**********************************************************
Page | 23
[Link]("[Link]", ios::out);
[Link](0, ios::beg);
tant que ( ![Link]() )
{
[Link]((char *)this,sizeof(BOOK)) ;
si ( [Link]() )
pause ;
si ( codeLivre == codeT )
{
copies = tcopies ;
avail = tavail ;
[Link]((char *)this,sizeof(BOOK)) ;
}
sinon
[Link]((char *)this,sizeof(BOOK)) ;
}
[Link]() ;
[Link]() ;
[Link]("[Link]", ios::sortie);
[Link]("[Link]", ios::in) ;
[Link](0,ios::beg) ;
tant que ( ![Link]() )
{
[Link]((char *)this,sizeof(BOOK)) ;
si ( [Link]() )
pause ;
[Link]((char *)this,sizeof(BOOK)) ;
}
[Link]() ;
[Link]() ;
}
//**********************************************************
// THIS FUNCTION MODIFY THE RECORD IN THE BOOK FILE FOR THE
// CODE DE LIVRE DONNÉ
//**********************************************************
Page | 24
}
sinon
[Link]((char *)this,sizeof(BOOK)) ;
}
[Link]() ;
[Link]() ;
[Link]("[Link]", ios::out) ;
[Link]("[Link]", ios::in) ;
[Link](0,ios::beg) ;
while ( ![Link]() )
{
[Link]((char *)this,sizeof(BOOK));
si ( [Link]() )
pause ;
[Link]((char *)this,sizeof(BOOK)) ;
}
[Link]() ;
[Link]() ;
}
//**********************************************************
// CETTE FONCTION AFFICHE L'ENREGISTREMENT DU FICHIER DE LIVRE
// POUR LE CODE DU LIVRE DONNÉ
//**********************************************************
//**********************************************************
// CETTE FONCTION AFFICHE LA LISTE DES LIVRES.
//**********************************************************
Page | 25
void LIVRE :: lister(void)
{
clrscr() ;
int ligne = 6, trouvé = 0, drapeau = 0;
char ch ;
gotoxy(33,2) ;
LISTE DES LIVRES
gotoxy(32,3) ;
cout << "~~~~~~~~~~~~~~~" ;
gotoxy(1,4) ;
cout << "NOM DU LIVRE DE CODE AUTEUR
PRIX EXEMPLES
gotoxy(1,5) ;
coût
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~" ;
fstream fichier ;
[Link]("[Link]", ios::in);
[Link](0,ios::beg) ;
tandis que ([Link]((char *)this,sizeof(BOOK)))
{
flag = 0 ;
retard(20) ;
found = 1 ;
gotoxy(2,ligne) ;
cout <<codeLivre ;
gotoxy(7,ligne) ;
cout << nom ;
gotoxy(40, ligne) ;
cout <<auteur ;
gotoxy(66,row) ;
cout <<prix ;
gotoxy(73,row) ;
cout <<copies ;
fondTexte(Blanc) ; couleurTexte(Noir) ;
gotoxy(40,row+1) ;
cprintf("ÉTAT : ") ;
textcolor(NOIR+CLIGNOTANT) ;
printf("%d copies disponibles", avail) ;
fondtexte(NOIR) ; couleurtexte(GRISCLAIR) ;
si ( ligne == 22 )
{
flag = 1 ;
row = 6 ;
gotoxy(1,25) ;
appuyez sur une touche pour continuer ou appuyez sur <ESC> pour
sortie
ch = getch() ;
si (ch == 27)
pause ;
effacer() ;
gotoxy(33,2) ;
cout << "LISTE DES LIVRES" ;
gotoxy(32,3) ;
cout << "~~~~~~~~~~~~~~~" ;
gotoxy(1,4) ;
Page | 26
cout <<"NOM DU LIVRE DE CODE AUTEUR "
PRIX COPIES
gotoxy(1,5) ;
coût
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~" ;
}
sinon
ligne = ligne + 2 ;
}
si (!trouvé)
{
gotoxy(5,10) ;
cout <<" Enregistrements non trouvés" ;
}
si (!flag)
{
gotoxy(1,25) ;
Appuyez sur une touche pour continuer...
getche() ;
}
[Link]();
}
//**********************************************************
// CETTE FONCTION RETOURNE 0 SI LE CODE DE MEMBER DONNÉ N'EST PAS TROUVÉ
//**********************************************************
//**********************************************************
// CETTE FONCTION RETOURNE 0 SI LE MEMBRE N'A PAS ÉMIS AUCUN
// LIVRE.
//**********************************************************
Page | 27
[Link](0,ios::beg);
int missue=0 ;
tant que ([Link]((char *)this,sizeof(MEMBER)))
{
si (memcode == mcode)
{
missue = bookcode ;
pause ;
}
}
[Link]() ;
retourner le problème ;
}
//**********************************************************
// CETTE FONCTION CALCULE ET RENVOIE L'AMENDE POUR LE DONNÉ
// CODE MEMBRE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE DERNIER CODE DU FICHIER MEMBRE.
//**********************************************************
Page | 28
tant que ([Link]((char *)this,sizeof(MEMBER)))
mcode = memcode ;
[Link]() ;
retourne mcode ;
}
//**********************************************************
// CETTE FONCTION RENVOIE LE NOM DU MEMBRE DU MEMBRE DONNÉ
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE TÉLÉPHONE DU MEMBRE DONNÉ
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RETOURNE L'ADRESSE DU MEMBRE DONNÉ
Page | 29
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION RENVOIE LE NUMÉRO DE DOSSIER DU MEMBRE DONNÉ
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION SUPPRIME L'ENREGISTREMENT POUR LE CODE DE MEMBRE DONNÉ.
//**********************************************************
Page | 30
[Link]((char *)this,sizeof(MEMBER)) ;
si ( [Link]() )
pause ;
si ( memcode != mcode )
[Link]((char *)this,sizeof(MEMBER)) ;
}
fermer le fichier() ;
[Link]() ;
[Link]("[Link]", ios::sortie);
[Link]("[Link]", ios::in) ;
[Link](0,ios::beg) ;
tant que ( ![Link]() )
{
[Link]((char *)this,sizeof(MEMBER)) ;
si ( [Link]() )
pause ;
[Link]((char *)this,sizeof(MEMBER)) ;
}
[Link]() ;
[Link]() ;
}
//**********************************************************
// CETTE FONCTION MET À JOUR L'ENREGISTREMENT POUR LE CODE DE MEMBRE DONNÉ.
//**********************************************************
Page | 31
[Link]((char *)this,sizeof(MEMBER)) ;
si ( [Link]() )
pause ;
[Link]((char *)this,sizeof(MEMBER)) ;
}
[Link]() ;
[Link]() ;
}
//**********************************************************
// THIS FUNCTION MODIFY RECORD FOR THE GIVEN MEMBER CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION AJOUTE UN ENREGISTREMENT DANS LE FICHIER POUR LE DONNÉ
// CODE MEMBRE.
Page | 32
//**********************************************************
//**********************************************************
// CETTE FONCTION AFFICHE L'ENREGISTREMENT POUR LE MEMBRE DONNÉ
// CODE.
//**********************************************************
//**********************************************************
// CETTE FONCTION AFFICHE LA LISTE DES MEMBRES
//**********************************************************
Page | 33
effacer() ;
LIVRE B ;
int row = 6 , found=0, flag=0 ;
char ch ;
gotoxy(32,2) ;
cout <<"LISTE DES MEMBRES" ;
gotoxy(31,3) ;
cout << "~~~~~~~~~~~~~~~~~" ;
gotoxy(1,4) ;
cout <<"CODE LIVRE CODE NOM TÉLÉPHONE" ;
gotoxy(1,5) ;
coût
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~" ;
fstream fichier ;
[Link]("[Link]", ios::in);
[Link](0,ios::beg);
tant que ([Link]((char *)this,sizeof(MEMBER)))
{
drapeau = 0 ;
retard(20) ;
found = 1 ;
gotoxy(2,ligne) ;
cout <<memcode ;
gotoxy(10,ligne) ;
cout <<codeLivre ;
gotoxy(19,ligne) ;
cout <<nom ;
gotoxy(48,ligne) ;
cout <<téléphone ;
textearrière-plan(BLANC) ; textecouleur(NOIR) ;
gotoxy(7,row+1) ;
si (codeLivres == 0)
cprintf("NOM DU LIVRE : (Non Émis)");
sinon
{
printf("NOM DU LIVRE : %s", [Link](codeLivre)) ;
gotoxy(42,row+1) ;
printf("Date de retour : ") ;
textcolor(NOIR+CLIGNOTANT) ;
cprintf("%d/%d/%d",dd,mm,yy) ;
}
fondtexte(NOIR) ; couleuretexte(GRIS CLAIR) ;
si ( ligne == 22 )
{
flag = 1 ;
row = 6 ;
gotoxy(1,25) ;
Appuyez sur n'importe quelle touche pour continuer ou appuyez sur <ESC> pour
sortie
ch = getch() ;
si (ch == 27)
pause ;
clrscr() ;
gotoxy(32,2) ;
cout << "LISTE DES MEMBRES" ;
gotoxy(31,3) ;
Page | 34
cout <<"~~~~~~~~~~~~~~~~~" ;
gotoxy(1,4) ;
cout << "CODE LIVRE CODE NOM "
PHONE" ;
gotoxy(1,5) ;
coût
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~" ;
}
sinon
ligne = ligne + 2 ;
}
si (!trouvé)
{
gotoxy(5,10) ;
Enregistrements non trouvés
}
si (!drapeau)
{
gotoxy(1,25) ;
Appuyez sur une touche pour continuer...
getche() ;
}
[Link] ();
}
//**********************************************************
// CETTE FONCTION FOURNIT DES DONNÉES POUR AJOUTER UN ENREGISTREMENT DANS LE FICHIER DE LIVRE.
//**********************************************************
Page | 35
gotoxy(5,5) ;
cout << "Code n° " ;
gets(t) ;
tc = atoi(t) ;
tcode = tc ;
si (tcode == 0)
retourner ;
si (livre_trouvé(tcode))
{
found = 1 ;
gotoxy(19,8) ;
cout <<nomDuLivre(tcode) ;
gotoxy(19,9) ;
cout << nomAuteur(tcode);
gotoxy(22,10) ;
cout << bookprice(tcode) ;
}
gotoxy(5,8) ;
cout <<"Nom du livre : " ;
gotoxy(5,9) ;
cout << "Nom de l'auteur : " ;
gotoxy(5,10) ;
cout <<"Prix : Rs." ;
gotoxy(5,12) ;
cout <<"Copies : " ;
valid = 0 ;
tant que (!valide && !trouvé)
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nom du livre" ;
gotoxy(19,8) ; clreol() ;
gets(tname) ;
strupr(tname) ;
si (tname[0] == '0')
retourner ;
si (strlen(tname) < 1 || strlen(tname) > 32)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
Entrez correctement (Plage : 1..32)
getch() ;
}
}
valid = 0 ;
tant que (!valide && !trouvé)
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nom de l'auteur du livre" ;
gotoxy(19,9) ; clreol() ;
get(tauthor);
strupr(tauthor) ;
si (tauteur[0] == '0')
retourner ;
si (strlen(tauthor) < 1 || strlen(tauthor) > 25)
{
Page | 36
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement (Plage : 1..25)" ;
getch();
}
}
valid = 0 ;
tandis que (!valide && !trouvé)
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le prix du livre" ;
gotoxy(22,10) ; clreol() ;
gets(t1) ;
t2 = atof(t1) ;
tprice = t2 ;
si (t1[0] == '0')
retourner ;
si (tprix < 1 || tprix > 9999)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement" ;
getch() ;
}
}
valid = 0 ;
tant que (!valide)
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nombre d'exemplaires du livre à ajouter" ;
gotoxy(19,12) ; clreol() ;
obtient(t) ;
tc = atoi(t) ;
tcopies = tc ;
si (t[0] == '0')
retourner ;
if (tcopies < 1 || tcopies > 50)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement" ;
getch() ;
}
}
tavail = available(tcode) + tcopies ;
tcopies = no_of_copies(tcode) + tcopies ;
gotoxy(5,25) ; clreol() ;
faire
{
gotoxy(5,15) ; clreol() ;
Souhaitez-vous enregistrer (o/n) :
ch = getche() ;
ch = toupper(ch) ;
}tandis que (ch != 'Y' && ch != 'N') ;
Page | 37
si (ch == 'Y')
{
si (trouvé)
mettre_a_jour_copies(tcode, tcopies, tavail) ;
sinon
ajouter_nouveau_livre(codet,nomt,auteur,prix,copies,disponibilité);
}
faire
{
gotoxy(5,17) ; clreol() ;
cout << "Voulez-vous ajouter plus (o/n) : ";
ch = getche() ;
ch = toupper(ch) ;
}tant que (ch != 'Y' && ch != 'N') ;
}tant que (ch == 'Y') ;
}
//**********************************************************
// CETTE FONCTION FOURNIT DES DONNÉES POUR AJOUTER UN ENREGISTREMENT DANS LE FICHIER DES MEMBRES
//**********************************************************
Page | 38
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nom du nouveau membre";
gotoxy(15,10) ; clreol() ;
gets(mname) ;
strupr(mname) ;
si (mname[0] == '0')
retourner ;
si (strlen(mname) < 1 || strlen(mname) > 25)
{
valide = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement (Plage : 1..25)" ;
getch() ;
}
}tant que (!valide) ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
Entrez le numéro de téléphone du membre ou appuyez sur <ENTRER>
pour aucun
gotoxy(15,12) ; clreol() ;
gets(mphone) ;
si (mphone[0] == '0')
retourner ;
si ((strlen(mphone) < 7 && strlen(mphone) > 0) ||
(strlen(mphone) > 9))
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement";
getch() ;
}
}tandis que (!valide) ;
si (strlen(mphone) == 0)
strcpy(mphone,"-") ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez l'adresse du nouveau membre" ;
gotoxy(15,14) ; clreol() ;
obtient(madresse) ;
strupr(madresse) ;
si (maddress[0] == '0')
retour ;
si (strlen(maddress) < 1 || strlen(maddress) > 32)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<"\7Entrez correctement (Plage : 1..32)" ;
getch() ;
}
}pendant (!valide) ;
Page | 39
gotoxy(5,25) ; clreol() ;
faire
{
gotoxy(5,17) ; clreol() ;
cout <<"Voulez-vous enregistrer (o/n) : ";
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retourner ;
}tant que (ch != 'Y' && ch != 'N') ;
si (ch == 'Y')
{
bcode = 0 ;
d1 = 0 ;
m1 = 0 ;
y1 = 0 ;
ajouter_mem(mcode,bcode,mname,maddress,mphone,d1,m1,y1);
mcode++ ;
}
faire
{
gotoxy(5,19) ; clreol() ;
cout << "Voulez-vous en ajouter plus (o/n) : " ;
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retourner ;
}tant que (ch != 'Y' && ch != 'N') ;
}Tant que (ch == 'Y') ;
}
//**********************************************************
// CETTE FONCTION EMET LE LIVRE
//**********************************************************
Page | 40
cout << "Date : " << d1 << "/" << m1 << "/" << y1 ;
gotoxy(72,1) ;
cout <<"<0>=Sortie" ;
gotoxy(5,5) ;
cout << "Entrez le code ou le nom du livre à émettre" ;
gotoxy(5,6) ;
cout <<" ou " ;
gotoxy(5,7) ;
cout << "Appuyez sur <ENTRER> pour de l'aide ";
gets(t1code) ;
si (t1code[0] == '0')
retourner ;
si (strlen(t1code) == 0)
[Link]() ;
sinon
pause ;
}
t2code = atoi(t1code) ;
tcode = t2code ;
si ((tcode == 0 && !bookname_found(t1code)) || (tcode != 0
&& !livre_trouvé(tcode)))
{
valid = 0 ;
gotoxy(5,10) ;
Enregistrement non trouvé
gotoxy(5,11) ;
cout <<"Appuyez sur <ESC> pour quitter ou sur une autre touche pour
continuer...
ch = getch() ;
si (ch == 27)
retour ;
}
}tant que (!valide) ;
si (tcode == 0)
tcode = bookcodeof(t1code) ;
si (!disponible(tcode))
{
gotoxy(5,10) ;
cout <<" Désolé ! Le livre (« <<bookname(tcode) <<") n'est pas
disponible
gotoxy(5,11) ;
Veuillez émettre un autre livre
gotoxy(5,12) ;
cout <<"Voir la liste des livres" ;
getch() ;
retourner ;
}
faire
{
valid = 1 ;
tant que (1)
{
clrscr() ;
gotoxy(72,1) ;
<<0>=Sortie
gotoxy(5,2) ;
cout << "Date : " << d1 << "/" << m1 << "/" << y1 ;
Page | 41
gotoxy(5,5) ;
cout << "Nom du Livre : " << bookname(tcode) ;
gotoxy(5,7) ;
cout << "Entrez le numéro de code du membre" ;
gotoxy(5,8) ;
cout <<" ou ";
gotoxy(5,9) ;
Appuyez sur <ENTRÉE> pour obtenir de l'aide
gets(t1code) ;
si (t1code[0] == '0')
retourner ;
si (strlen(t1code) == 0)
[Link]() ;
sinon
pause ;
}
t2code = atoi(t1code);
mcode = t2code ;
si (mcode == 0)
{
valid = 0 ;
gotoxy(5,25) ;
cout <<" Entrez correctement" ;
getch() ;
}
si (!membre_trouvé(mcode) && valide)
{
valid = 0 ;
gotoxy(5,13) ;
cout <<" Enregistrement non trouvé" ;
gotoxy(5,14) ;
cout << "Appuyez sur <ESC> pour quitter ou sur une autre touche pour";
continue...
ch = getch() ;
si (ch == 27)
retourner ;
}
}tant que (!valide) ;
int tcopies, tavail ;
tcopies = no_of_copies(tcode) ; // member function of BOOK
tavail = available(tcode) - 1 ; // member function of BOOK
mettre_à_jour_exemplaires(tcode, tcopies, tavail); // fonction membre de LIVRE
D.extend_date(d1,m1,y1,15) ;
d1 = [Link] ;
m1 = [Link] ;
y1 = [Link] ;
mettre_à_jour_le_livre(mcode,tcode,d1,m1,y1) ; // fonction membre de MEMBRE
gotoxy(5,13) ;
cout <<" Le livre est attribué à " <<membername(mcode);
gotoxy(5,15) ;
cout <<"Date de retour : " <<d1 <<"/" <<m1 <<"/" <<y1 ;
getch() ;
}
//**********************************************************
// THIS FUNCTION RETURNS THE BOOK FOR THE MEMBER
Page | 42
//**********************************************************
Page | 43
retour ;
}
si (!émis(mcode) && valide)
{
valid = 0 ;
gotoxy(5,13) ;
cout <<" Le membre n'a aucun livre à rendre" ;
gotoxy(5,14) ;
cout << "Appuyez sur <ESC> pour quitter ou sur une autre touche pour
continue...
ch = getch() ;
si (ch == 27)
retourner ;
}
}tant que (!valide) ;
int bcode, tcopies, tavail ;
bcode = émis(mcode) ;
gotoxy(5,13) ;
cout << "Code du Livre : " << bcode ;
gotoxy(5,14) ;
cout << "Nom du livre : " << bookname(bcode) ;
tcopies = nombre_de_copies(bcode) ;
tavail = available(bcode) + 1 ;
int f ;
f = amende(mcode) ;
si (f != 0)
{
gotoxy(5,16) ;
Vous devez payer une amende de Rs.
gotoxy(5,17) ;
Veuillez ne pas retarder le retour du livre à nouveau.
}
mettre_à_jour_exemplaires(bcode,tcopies,tavail) ;
mettre_a_jour_livre(mcode,0,0,0,0) ;
gotoxy(5,19) ;
cout <<" Le livre a été retourné" ;
getch() ;
}
//**********************************************************
// CETTE FONCTION FOURNIT DES DONNÉES POUR MODIFIER L'ENREGISTREMENT DU LIVRE
//**********************************************************
Page | 44
gotoxy(72,1) ;
cout <<"<0>=Sortie" ;
gotoxy(5,5) ;
cout << "Entrez le code ou le nom du livre à modifier"
;
gotoxy(5,6) ;
cout <<" ou ";
gotoxy(5,7) ;
cout <<"Appuyez sur <ENTRER> pour obtenir de l'aide ";
gets(t1code) ;
si (t1code[0] == '0')
retourner ;
si (strlen(t1code) == 0)
[Link]() ;
sinon
pause ;
}
t2code = atoi(t1code) ;
tcode = t2code ;
si ((tcode == 0 && !bookname_found(t1code)) || (tcode != 0
&& !livre_trouvé(tcode)))
{
valid = 0 ;
gotoxy(5,10) ;
cout <<" Enregistrement non trouvé" ;
gotoxy(5,11) ;
cout << "Appuyez sur <ESC> pour quitter ou sur une autre touche pour
continuer...
ch = getch();
si (ch == 27)
retourner ;
}
}tant que (!valide) ;
si (tcode == 0)
tcode = codeDuLivre(t1code) ;
clrscr() ;
gotoxy(72,1) ;
cout <<"<0>=Sortie" ;
LIVRE::afficher(tcode) ;
faire
{
gotoxy(5,13) ; clreol() ;
cout << "Voulez-vous modifier cet enregistrement (o/n) : " ;
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retour ;
}tant que (ch != 'Y' && ch != 'N');
si (ch == 'N')
retourner ;
gotoxy(5,16) ;
Nom du livre :
gotoxy(5,17) ;
cout << "Nom de l'auteur : " ;
gotoxy(5,18) ;
cout << "Prix : Rs." ;
faire
Page | 45
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nom du livre ou <ENTRER> pour aucun changement"
;
gotoxy(19,16) ; clreol() ;
obtient(tname) ;
strupr(tname) ;
si (tname[0] == '0')
retourner ;
si (strlen(tname) > 32)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement (Plage : 1..32)" ;
getch() ;
}
}tant que (!valide) ;
si (strlen(tname) == 0)
strcpy(tname,bookname(tcode)) ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le nom de l'auteur ou <ENTRÉE> pour ne pas changer" ;
gotoxy(19,17) ; clreol() ;
gets(tauthor) ;
strupr(tauthor) ;
si (tauthor[0] == '0')
retourner ;
si (strlen(tauthor) > 25)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
Entrez correctement (Plage : 1..25)
getch() ;
}
}tant que (!valide) ;
si (strlen(tauthor) == 0)
strcpy(tauthor,auteurnom(tcode)) ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout << "Entrez le prix ou <ENTRER> pour aucun changement" ;
gotoxy(22,18) ; clreol() ;
gets(t1) ;
t2 = atof(t1) ;
tprice = t2 ;
si (t1[0] == '0')
retourner ;
si (strlen(t1) == 0)
pause ;
si (tprice < 1 || tprice > 9999)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
Page | 46
Entrez correctement
getch() ;
}
}tant que (!valide) ;
si (strlen(t1) == 0)
prix = prixLivre(tcode) ;
gotoxy(5,25) ; clreol() ;
faire
{
gotoxy(5,20) ; clreol() ;
Voulez-vous enregistrer les modifications (o/n) :
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retourner ;
}tant que (ch != 'Y' && ch != 'N') ;
si (ch == 'N')
retourner ;
LIVRE::modifier(tcode,tname,tauthor,tprice) ;
gotoxy(5,23) ;
Enregistrement modifié
getch() ;
}
//**********************************************************
// CETTE FONCTION DONNE DES DONNÉES POUR MODIFIER LE DOSSIER DU MEMBRE
//**********************************************************
Page | 47
pause ;
}
si (mcode == 0)
{
valid = 0 ;
gotoxy(5,25) ;
cout <<" Entrez correctement" ;
getch() ;
}
si (valide && !membre_trouvé(mcode))
{
valid = 0 ;
gotoxy(5,13) ;
cout <<" Enregistrement non trouvé" ;
gotoxy(5,14) ;
Appuyez sur <ESC> pour quitter ou sur une autre touche pour
continue...
ch = getch() ;
si (ch == 27)
retourner ;
}
}tant que (!valide) ;
clrscr() ;
gotoxy(72,1) ;
cout <<"<0>=Sortie" ;
MEMBRE::afficher(mcode) ;
faire
{
gotoxy(5,10) ; clreol() ;
cout << "Voulez-vous modifier cet enregistrement (o/n) : " ;
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retour ;
}tandis que (ch != 'Y' && ch != 'N') ;
si (ch == 'N')
retour ;
gotoxy(5,13) ;
cout <<"Nom : ";
gotoxy(5,14) ;
téléphone :
gotoxy(5,15) ;
cout << "Adresse : " ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout <<"Entrez le nom du membre ou <ENTRER> pour aucun
changer
gotoxy(19,13) ; clreol() ;
gets(mname) ;
strupr(mname) ;
si (mname[0] == '0')
retourner ;
si (strlen(mname) > 25)
{
valid = 0 ;
Page | 48
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement (Plage : 1..25)" ;
getch();
}
}
tant que (!valide) ;
si (strlen(mname) == 0)
strcpy(mname,membername(mcode)) ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
cout <<"Entrez le numéro de téléphone du membre ou <ENTRER> pour aucun"
changer
gotoxy(19,14) ; clreol() ;
obtient(mphone) ;
si (mphone[0] == '0')
return ;
si ((strlen(mphone) < 7 && strlen(mphone) > 0) ||
(strlen(mphone) > 9))
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement" ;
getch();
}
}tant que (!valide) ;
si (strlen(mphone) == 0)
strcpy(mphone,membretelephone(mcode)) ;
faire
{
valid = 1 ;
gotoxy(5,25) ; clreol() ;
Entrez l'adresse du membre ou <ENTRER> pour rien
changer
gotoxy(19,15) ; clreol() ;
gets(madresse) ;
strupr(madresse);
si(maddress[0]=='0')
retour ;
si (strlen(maddress) > 32)
{
valid = 0 ;
gotoxy(5,25) ; clreol() ;
cout <<" Entrez correctement (Plage : 1..32)" ;
getch() ;
}
}tant que (!valide) ;
si (strlen(madresse) == 0)
strcpy(maddress,membreadresse(mcode)) ;
gotoxy(5,25) ; clreol() ;
faire
{
gotoxy(5,18) ; clreol() ;
cout <<"Voulez-vous enregistrer les modifications (o/n) : ";
ch = getche();
ch = toupper(ch) ;
Page | 49
si (ch == '0')
retourner ;
}tant que (ch != 'Y' && ch != 'N') ;
si (ch == 'N')
retourner ;
MEMBER::modify(mcode,mname,mphone,maddress) ;
gotoxy(5,23) ;
Enregistrement Modifié
getch() ;
}
//**********************************************************
// THIS FUNCTION GIVES BOOK CODE TO DELETE THE BOOK RECORD
//**********************************************************
Page | 50
si (ch == 27)
retourner ;
}
}tandis que (!valide) ;
si (tcode == 0)
tcode = codeLivreDe(t1code) ;
clrscr() ;
gotoxy(72,1) ;
cout <<"<0>=Sortir" ;
LIVRE::afficher(tcode) ;
faire
{
gotoxy(5,13) ; clreol() ;
cout << "Voulez-vous supprimer cet enregistrement (o/n) : ";
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retour ;
}while (ch != 'Y' && ch != 'N') ;
si (ch == 'N')
retour ;
int travail, tcopies ;
tavail = available(tcode) ;
tcopies = no_of_copies(tcode) ;
si (tavail != tcopies)
{
gotoxy(5,15) ;
cout <<" L'enregistrement ne peut pas être supprimé. Ce livre est emprunté." ;
getch();
retourner ;
}
LIVRE::supprimer_rec(tcode) ;
gotoxy(5,23) ;
cout <<" Enregistrement supprimé" ;
getch() ;
}
//**********************************************************
// CETTE FONCTION ATTRIBUE UN CODE DE MEMBRE POUR SUPPRIMER LE MEMBRE
// ENREGISTRER
//**********************************************************
Page | 51
gotoxy(5,7) ;
cout << "Entrez le numéro de code du membre à supprimer" ;
gotoxy(5,8) ;
cout <<" ou " ;
gotoxy(5,9) ;
Appuyez sur <ENTREE> pour obtenir de l'aide
gets(m1code) ;
m2code = atoi(m1code) ;
mcode = m2code ;
si (m1code[0] == '0')
retour ;
si (strlen(m1code) == 0)
[Link]() ;
sinon
pause ;
}
si (mcode == 0)
{
valid = 0 ;
gotoxy(5,25) ;
cout <<" Entrez correctement" ;
getch() ;
}
si (valide && !membre_trouvé(mcode))
{
valide = 0 ;
gotoxy(5,13) ;
cout <<" Enregistrement non trouvé" ;
gotoxy(5,14) ;
cout << "Appuyez sur <ESC> pour quitter ou sur une autre touche pour " ;
continue...
ch = getch() ;
si (ch == 27)
retour ;
}
}tant que (!valide) ;
clrscr() ;
gotoxy(72,1) ;
cout <<"<0>=Quitter" ;
MEMBRE::afficher(mcode) ;
faire
{
gotoxy(5,10) ; clreol() ;
cout <<"Do you want to Delete this record (y/n) : " ;
ch = getche() ;
ch = toupper(ch) ;
si (ch == '0')
retourner ;
}tant que (ch != 'Y' && ch != 'N') ;
si (ch == 'N')
retourner ;
si (émis(mcode))
{
gotoxy(5,15) ;
cout << " L'enregistrement ne peut pas être supprimé. Le membre a un livre";
getch() ;
retour ;
Page | 52
}
MEMBRE::supprimer_enr(mcode) ;
gotoxy(5,23) ;
cout <<" Enregistrement Modifié" ;
getch() ;
}
//**********************************************************
// APPEL DE LA FONCTION PRINCIPALE INTRODUCTION ET MENU PRINCIPAL
//**********************************************************
void main(void)
{
MENU menu ;
[Link]() ;
menu.menu_principal() ;
}
SORTIE
Page | 53
Page | 54
Menu principal du programme.
Page | 55
Dans le menu principal, le choix 1 est sélectionné.
Page | 56
le choix 5 est sélectionné.
Page | 57
Dans le menu principal, le choix 3 est sélectionné.
Page | 58
Le choix 5 est sélectionné.
Page | 59
Le choix 6 est sélectionné pour émettre un livre à l'étudiant.
Page | 60
Le choix 5 est sélectionné pour montrer les changements dans les informations de l'étudiant après l'émission d'un
livre.
Test
Page | 61
C'est une partie intégrante du cycle de vie de développement de tout système, sans lequel le
le système développé est sûr de faillir et de provoquer une perte économique et
investissements en main-d'œuvre en plus de l'insatisfaction des utilisateurs et de la chute de
réputation.
Les tests système sont l'étape de mise en œuvre qui vise à garantir que
Le système fonctionne avec précision et efficacité avant l'opération réelle.
commences. No program or system design is perfect, communication
entre l'utilisateur et le designer n'est pas toujours complet ou clair. Tout cela
peut entraîner des erreurs.
Une autre raison pour le test système est son utilité en tant que véhicule orienté vers l'utilisateur.
avant la mise en œuvre. Le système d'application n'a aucune valeur s'il ne répond pas
les besoins de l'utilisateur, ainsi le système doit être testé pour voir s'il répond à l'utilisateur
exigences.
Les tests ici sont réalisés selon une approche ascendante comme suit :
Module testing: Here testing is done at each module level. Each case
a été soigneusement testé pour découvrir les pièges.
Tests système : Les tests sont effectués après que tous les modules ont été
intégré.
Bibliographie
Page | 62
1. Laissez-nous C par Yashavant Kanetkar
2. Informatique, C++ par Sumita Arora
3. La référence complète, C++ par Herbert Schildt
4. Ingénierie logicielle par Roger S. Pressman
Page | 63