SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Rapport du TP1 Genie Logiciel Avanc´e
SONFACK S. Serge et ZONGO Sylvain
February 2018
UIVERSITE INSTITUT DE LA
NATIONALE FRANCOPHONIE
DE VIETNAM POUR L’INNOVATION
1
IFI-VNU Projet Genie Logiciel TP1
Table des mati`eres
1 Analyse et Conception 3
1.1 M´ethode agile extreme programming . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Analyse des sp´ecifications de l’application . . . . . . . . . . . . . . . . . . . 3
1.3 Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Premi`ere It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.3 Deuxi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.4 Troisi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.5 Sxi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.6 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Outils de d´eveloppement 26
3 Code source 27
Table des figures
1 planification du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Diagramme de s´equence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Diagramme de cas d’utilisation : consulter compte . . . . . . . . . . . . . . . . . . 9
5 Diagramme de sequence : consulter compte . . . . . . . . . . . . . . . . . . . . . . 10
6 Diagramme de cas d’utilisation : faire recherche . . . . . . . . . . . . . . . . . . . 12
7 Diagramme de sequence : faire recherche . . . . . . . . . . . . . . . . . . . . . . . 14
8 Diagramme de cas d’utilisation : faire transaction . . . . . . . . . . . . . . . . . . 16
9 Diagramme de sequence : faire transaction . . . . . . . . . . . . . . . . . . . . . . 18
10 Diagramme de cas d’utilisation: calcul interet . . . . . . . . . . . . . . . . . . . . 20
11 Diagramme de sequence : calcul interet . . . . . . . . . . . . . . . . . . . . . . . . 21
12 Diagramme de cas d’utilisation:produire rapport . . . . . . . . . . . . . . . . . . 23
13 Diagramme de sequence :produire rapport . . . . . . . . . . . . . . . . . . . . . . 24
14 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2
IFI-VNU Projet Genie Logiciel TP1
Introduction
Le g´enie logiciel (software engineering) repr´esente l’application de principes d’ing´enierie au
domaine de la cr´eation de logiciels. Il consiste `a identifier et `a utiliser des m´ethodes, des pratiques
et des outils permettant de maximiser les chances de r´eussite d’un projet logiciel. Ce TP (travail
Pratique) a donc pour objectif de nous permettre de rationaliser et d’optimiser le processus de
production d’un logiciel en int´egrant le concept de la programmation orient´ee objet. Nous allons
d’abord pr´esenter les sp´ecifications de l’application, ensuite nous allons appliquer la m´ethode
Agile extreme programming pour l’impl´ementation et la gestion de notre projet.
1 Analyse et Conception
1.1 M´ethode agile extreme programming
XP(extreme programming) est une m´ethode agile adapt´ee pour une ´equipe r´eduite et qui
permet de pousser `a l’extr`eme les principes simples. Cette m´ethode des gestions repose sur des
valeurs telles que : le courage, le simplicit´e, le respect et surtout la communication entre les
diff´erents membres de l’´equipe.
XP dans la pratique repose sur un cycle de d´evelopement qui commence par un planning qui
orgarnise le travail en tˆache dans un ordre de priorit´e. Par la suite chaque tˆache retir´e dans la liste
de priorit´e est ex´ecut´ee et repr´esente une it´eration. Chaque it´eration passe par une conception,
une implementation, un test et finie par un checking sur les modification `a apporter sur la ou les
it´eration pr´ecedente.
Tel sera notre m´ethodologie de travail.
1.2 Analyse des sp´ecifications de l’application
L’application r´ealis´ee a de diverses fonctionnalit´es. L’application permet la mise en œuvre d’un
syst`eme de gestion de comptes des clients dans une banque. Elle permet l’ouverture d’un ou de
plusieurs compte(s) pour tout client avec des taux d’int´erˆet diff´erents. Elle permet de faire une
transaction(faire un d´epˆot ou un retrait) sur un compte cr´e´e. L’application permettra ´egalement
de consulter un compte, de calculer le taux d’int´erˆet pour tous les comptes et de mettre le solde
de chaque compte `a jour. L’application permet de faire aussi des rapports qui incluent la liste
des comptes. L’application permet aussi de faire des recherches sur les comptes et de reconnaˆıtre
si un client poss`ede un ou plusieurs comptes dans une banque.
– cr´eer un nouveau compte,
– d´eposer un certain montant d’argent dans un compte,
– retirer un certain montant d’argent d’un compte,
– consulter le solde d’un compte,
– calculer l’int´erˆet pour tous les comptes et mettre `a jours leur solde,
– produire un rapport qui inclut une liste de comptes avec les informations suivantes : le
num´ero de compte, le solde, et les transactions effectu´ees (d´eposer et retirer l’argent) depuis
que le compte est cr´e´e.
– faire une recherche qui permet, `a partir du num´ero d’identification d’une personne, de
savoir si elle poss`ede un ou des comptes dans la banque.
1.3 Planning
Dans cette partie tout le projet est planifi´e et prioris´e en se basant sur les sp´ecifications
3
IFI-VNU Projet Genie Logiciel TP1
Fig. 1 – planification du projet
1.4 Conception
1.4.1 It´erration
1.4.2 Premi`ere It´erration
– Cas d’utilisation : creer compte
Fig. 2 – Diagramme de cas d’utilisation
– description
4
IFI-VNU Projet Genie Logiciel TP1
Cr´eer compte ID : CC-1
Acteur primaire Gestionnaire
Acteur secondaire Client
Description Permet au gestionnaire de cr´eer les comptes client
Auteurs SONFACK et ZONGO
Version 1.0
Syst`eme Syst`eme de gestion de banque
Intervenant gestionnaire
Pr´econdition Lancer l’application
Op´erations normale
1 Lancer ou ex´ecuter l’application
2 S´electionner l’option cr´eer compte
3 Affichage du formulaire de cr´eation de compte
4 Remplir le formulaire de cr´eation de compte
5 Enregistrer le formulaire
Post condition
1 Retour `a l’´etat initial
Exception
4.a Informations invalides
4.a.1 r´e-afficher le formulaire
4.a.2 Renseigner les champs erron´es
4.a.3 Passer au l’action 4
5.a Si le client existe
5.a.1 Demander voulez vous ajouter un nouveau compte?
5.a.2 Si oui
5.a.3 Demander l’identit´e du client
5.a.4 Retour `a l’action 4
5
IFI-VNU Projet Genie Logiciel TP1
– diagramme de s´equence : creer compte
Fig. 3 – Diagramme de s´equence
– code L’identifiant du compte est g´en´erer automatiquement
public class Compte{
public static int indiceCompte = 0;
% liste des transactions du compte
ArrayList<Transaction> listeTransaction = new ArrayList<Transaction>();
private Client client;
private int numCompte;
private double solde ;
public int tauxInteret;
public Compte(Client client, int taux ) {
Compte.indiceCompte = Compte.indiceCompte + 1;
this.numCompte = Compte.indiceCompte ;
this.solde = 0;
this.tauxInteret = taux;
client.listeCompte.add(this);
System.out.println("tCompte = "+this.numCompte+" ; nom client =
"+client.nomClient+" identifiant =
"+client.getIdClient(client)+" ; montant =
"+this.getSolde() +" et taux = "+this.tauxInteret+"%" );
}
– test
6
IFI-VNU Projet Genie Logiciel TP1
class ClientTest {
@Test
void test() {
Banque BIDV = new Banque();
assertNotNull("Non null", BIDV);
/*
Deux clients diffrentes de la meme banque sont diffrentes */
Client client1 = new Client(BIDV, "serge");
Client client2 = new Client(BIDV,"landry");
assertNotNull("Not null test",client1);
assertNotNull("Not null test",client2);
assertNotEquals(client1.nomClient, client2.nomClient);
assertNotEquals(client1.getIdClient(), client2.getIdClient());
assertNotEquals(client1.nomClient, client2.nomClient);
assertNotEquals(client1.getIdClient(), client2.getIdClient());
System.out.println("Fin test");
}
@FixMethodOrder()
class CompteTest {
@Test
void test0() {
Banque BIDV = new Banque();
assertNotNull("Non null", BIDV);
Client client1 = new Client(BIDV, "serge");
Client client2 = new Client(BIDV,"landry");
Compte cpt1 = new Compte(client1, 3);
7
IFI-VNU Projet Genie Logiciel TP1
Compte cpt2 = new Compte(client2, 4);
assertNotNull("Not null", cpt1);
assertNotNull("Not null", cpt2);
assertEquals(cpt1.getTaux(), 3);
assertEquals(cpt2.getTaux(), 4);
System.out.println("Fin test0");
}
– checking
Toujours cr´eer un client avant de cr´eer son compte Tout compte sans transaction doit avoir
un solde nul
8
IFI-VNU Projet Genie Logiciel TP1
1.4.3 Deuxi`eme It´erration
– Ajout du cas d’utilisation : consulter compte
Fig. 4 – Diagramme de cas d’utilisation : consulter compte
– description
Consulter compte ID: CC-2
Acteur primaire Gestionnaire
Acteur secondaire Client
Description Permet au gestionnaire de consulter les comptes des clients
Syst`eme Syst`eme de gestion de banque
Auteurs SONFACK et ZONGO
Version 1.0
Intervenant Gestionnaire
Pr´econdition Lancer l’application
Op´erations normale
1 Lancer ou ex´ecuter l’application
2 Demande de consultation de compte
3 affichage de la zone de saisie de l’identifant du compte
4 Saisir le nom ou l’identifiant du client
5 Choisir le type de recherche
6 Si recherche par identifiant
7 Affichage du contenu correspondant
8 Sinon si recherche par nom
9 Affichage des noms identiques
10 S´election de l’identifiant correspondant
11 Affichage du contenu compte
Post condition
1 Retour `a l’´etat initial
9
IFI-VNU Projet Genie Logiciel TP1
– diagramme de s´equence : consulter compte
Fig. 5 – Diagramme de sequence : consulter compte
– code
public class Client {
public static int indiceClient=0 ;
public String nomClient ;
private int idClient;
public ArrayList<Compte> listeCompte = new ArrayList<Compte>();
public Compte getCompte(int numCompte) {
Compte compte = null ;
for(int i = 0 ; i < this.listeCompte.size(); i++) {
if(this.listeCompte.get(i).getNumCompte() == numCompte) {
compte = this.listeCompte.get(i);
}
10
IFI-VNU Projet Genie Logiciel TP1
}
return compte;
}
– test
void test1() {
Banque BIDV = new Banque();
assertNotNull("Non null", BIDV);
Client client1 = new Client(BIDV, "serge");
Compte cpt1 = new Compte(client1, 2);
cpt1.setInteret();
assertEquals(cpt1.getSolde(), 0.0,0);
// type transaction
TypeTransaction typeTrs1 = new TypeTransaction(BIDV,"depot");
TypeTransaction typeTrs2 = new TypeTransaction(BIDV,"retrait");
// transaction
Transaction Trs1 = new Transaction(client1, cpt1, typeTrs1, 500);
Transaction Trs2 = new Transaction(client1, cpt1, typeTrs2, 200);
//consultation
assertEquals(cpt1.getSolde(), 300,0);
cpt1.setInteret();
double intCal = (300.0*2.0)/100.0 + 300.0;
assertEquals(cpt1.getSolde(), intCal,0);
}
– checking
Consulter une compte `a partir d’un num´ero donn´e et retourner les informations du compte
( solde et interet)
11
IFI-VNU Projet Genie Logiciel TP1
1.4.4 Troisi`eme It´erration
– Ajout de cas d’utilisation : faire recherche
Fig. 6 – Diagramme de cas d’utilisation : faire recherche
– description
12
IFI-VNU Projet Genie Logiciel TP1
Faire recherche ID : FR-1
Acteur primaire Gestionnaire
Acteur secondaire Client
Description Permet au gestionnaire de faire une recherche
Auteurs SONFACK et ZONGO
Version 1.0
Syst`eme Syst`eme de gestion de banque
Intervenant gestionnaire
Pr´econdition Lancer ou ex´ecuter l’application
Op´erations normale
1 Saisir le mot `a rechercher
2 Afficher le r´esultat de la recherche
Post condition
1 Retour `a l’´etat initial
Exception
3.a Informations invalides
3.a.1 r´e-afficher le formulaire
3.a. Renseigner les champs erron´es
3.a.3 Passer `a l’action 4
– diagramme de s´equence : faire recherche
– code
public class Banque {
// liste des clients de la banque
private HashSet<Client> listeClient = new HashSet();
// liste des types de transaction de la banque
private HashSet<TypeTransaction> listeTypeTransaction = new HashSet();
public HashSet<Client> getClient(){
return this.listeClient;
}
// recherche un client connaissant a partir de son identifiant
public Client getClient(int idClient) {
Client client = null ;
for(Client clt:this.listeClient) {
if(clt.getIdClient() == idClient) {
client = clt;
}
}
return client;
}
– test
/**
* Test recherche
*/
13
IFI-VNU Projet Genie Logiciel TP1
Fig. 7 – Diagramme de sequence : faire recherche
void test2() {
Banque BIDV = new Banque();
assertNotNull("Non null", BIDV);
assertNotEquals(BIDV.getTypeTransaction(), null);
assertEquals(BIDV.getClient(), null);
Client client1 = new Client(BIDV, "serge1");
Client client2 = new Client(BIDV,"landry1");
14
IFI-VNU Projet Genie Logiciel TP1
Client client3 = new Client(BIDV, "serge2");
Client client4 = new Client(BIDV,"landry2");
Client client5 = new Client(BIDV, "serge3");
Client client6 = new Client(BIDV,"landry3");
Client client7 = new Client(BIDV, "serge4");
Client client8 = new Client(BIDV,"landry4");
assertEquals(BIDV.getClient(1).nomClient, "serge1");
assertEquals(BIDV.getClient(10), null );
}
– checking
Recherche le client `a partir de la classe Banque Retourner l’objet client
15
IFI-VNU Projet Genie Logiciel TP1
Cinqui`eme It´errationAjout de cas d’utilisation : faire transaction Le diagramme de cas
d’utilisation Le diagramme de cas d’utilisation repr´esente la structure des grandes fonc-
tionnalit´es n´ecessaires aux utilisateurs du syst`eme. C’est diagramme statique du mod`ele
UML, celui o`u s’assure la relation entre l’utilisateur et les objets que le syst`eme met en
œuvre.
Fig. 8 – Diagramme de cas d’utilisation : faire transaction
–
– description
16
IFI-VNU Projet Genie Logiciel TP1
Faire transaction ID: FT-1
Acteur primaire Gestionnaire
Acteur secondaire Client
Description Permet au gestionnaire d’effectuer une transaction
Auteurs SONFACK et ZONGO
Version 1.0
Syst`eme Syst`eme de gestion de banque
Intervenant gestionnaire
Pr´e condition Lancer ou ex´ecuter l’application
Op´erations normale
1 Demande d’effectuer une transaction
2 Saisir l’identifiant client
3 Choisir l’op´eration `a effectuer
4 Si choix est d´epˆot
5 Enregistrer montant
6 Faire mise `a jour du compte
7 Si choix est retrait
8 V´erifier si montant `a retirer ¡montant du compte
9 Si oui effectuer l’op´eration
10 Mise `a jour du compte
Post condition
1 Retour `a l’´etat initial
Exception
3.a Informations invalides
3.a.1 r´e-afficher le formulaire
3.a.2 Renseigner les champs erron´es
3.a. Passer au l’action 4
– diagramme de s´equence : faire transaction
– code
class TransactionTest {
@Test
void test() {
Banque BIDV = new Banque();
assertNotNull("Non null", BIDV);
Client client1 = new Client(BIDV, "serge");
Client client2 = new Client(BIDV,"landry");
Compte cpt1 = new Compte(client1, 3);
Compte cpt2 = new Compte(client2, 4);
// type transaction
17
IFI-VNU Projet Genie Logiciel TP1
Fig. 9 – Diagramme de sequence : faire transaction
TypeTransaction typeTrs1 = new TypeTransaction(BIDV,"depot");
TypeTransaction typeTrs2 = new TypeTransaction(BIDV,"retrait");
// transaction
Transaction Trs1 = new Transaction(client1, cpt1, typeTrs1, 500);
Transaction Trs2 = new Transaction(client1, cpt1, typeTrs1,
-100);
18
IFI-VNU Projet Genie Logiciel TP1
Transaction Trs4 = new Transaction(client1, cpt1, typeTrs1, 0);
Transaction Trs5 = new Transaction(client1, cpt1, typeTrs2, 200);
assertEquals(cpt1.getSolde(), 300);
}
}
– test
– checking
Une transaction doit ˆetre definie avec son type et son montant, la date `a la quelle elle a
´et´et effectu´ee. Il ne doit pas y avoir des transaction negatives
19
IFI-VNU Projet Genie Logiciel TP1
Cinqui`eme It´errationAjout de cas d’utilisation : calcul interet Le diagramme de cas d’utili-
sation Le diagramme de cas d’utilisation repr´esente la structure des grandes fonctionnalit´es
n´ecessaires aux utilisateurs du syst`eme. C’est diagramme statique du mod`ele UML, celui
o`u s’assure la relation entre l’utilisateur et les objets que le syst`eme met en œuvre.
Fig. 10 – Diagramme de cas d’utilisation: calcul interet
–– description
– diagramme de s´equence : calcul interet
– code
– test
public class Banque {
// liste des clients de la banque
private HashSet<Client> listeClient = new HashSet();
// liste des types de transaction de la banque
private HashSet<TypeTransaction> listeTypeTransaction = new HashSet();
20
IFI-VNU Projet Genie Logiciel TP1
Fig. 11 – Diagramme de sequence : calcul interet
public HashSet<Client> getClient(){
return this.listeClient;
}
/*
* Calcul d’interet
*/
public void calculateInteret() {
for(Client clt:this.listeClient) {
System.out.println("Client : "+clt.nomClient);
for(int i = 0 ; i < clt.listeCompte.size() ; i++) {
System.out.println("Numero de complte"+
clt.listeCompte.get(i).getNumCompte());
System.out.println("----Solde :
21
IFI-VNU Projet Genie Logiciel TP1
"+clt.listeCompte.get(i).getSolde()+"----");
clt.listeCompte.get(i).setSolde((clt.listeCompte.get(i).getTaux()*
clt.listeCompte.get(i).getSolde())/100 +
clt.listeCompte.get(i).getSolde());
System.out.println("----Nouveau solde :
"+clt.listeCompte.get(i).
getSolde()+" pour Interet :
"+clt.listeCompte.get(i).getTaux()+" ----");
}
System.out.println("------------------------");
}
}
– checking
Calcul les interets des clients de la banque tout en mettant ajour leurs solde
1.4.5 Sxi`eme It´erration
– Ajout de cas d’utilisation : Produire rapport
– description
Produire rapport ID: CC-3
Acteur primaire Gestionnaire
Acteur secondaire Gestionnaire
Description Permet au gestionnaire de produire des rapports des clients
Auteurs SONFACK et ZONGO
Version 1.0
Syst`eme Syst`eme de gestion de banque
Intervenant Gestionnaire
Pr´econdition Lancer l’application
Op´erations normale
1 Demande de production de rapport
2 Affichage du rapport incluant la liste des comptes
Postcondition
1 Retour `a l’´etat initial
– diagramme de s´equence : produire rapport
– code
public class Banque {
// liste des clients de la banque
22
IFI-VNU Projet Genie Logiciel TP1
Fig. 12 – Diagramme de cas d’utilisation:produire rapport
private HashSet<Client> listeClient = new HashSet();
// liste des types de transaction de la banque
private HashSet<TypeTransaction> listeTypeTransaction = new HashSet();
public HashSet<Client> getClient(){
return this.listeClient;
}
/**
23
IFI-VNU Projet Genie Logiciel TP1
Fig. 13 – Diagramme de sequence :produire rapport
* Cette fonction retourn le rapport des transation de la banque
*/
public void printRapport() {
System.out.println("##############################################");
System.out.println("### Rapport des transaction de la banque ####");
System.out.println("##############################################");
for(Client clt:this.listeClient) {
System.out.println("Nom : "+clt.nomClient);
for(int index =0 ; index< clt.listeCompte.size(); index++) {
System.out.println("Compte NO: "+
clt.listeCompte.get(index).getNumCompte());
24
IFI-VNU Projet Genie Logiciel TP1
System.out.println("Sole :
"+clt.listeCompte.get(index).getSolde()+"Euros");
for(int intTrs = 0 ;
intTrs <
clt.listeCompte.get(index).getListeTransaction().size();
intTrs++) {
if(
clt.listeCompte.get(index).getListeTransaction().
get(intTrs).getNomTypeTransaction().equals("depot")) {
System.out.println("---- Dposer un montant de "+
clt.listeCompte.get(index).getListeTransaction().get(intTrs).
getMontantTransaction()+"Euros pour le compte "+
clt.listeCompte.
get(index).getNumCompte()+"au "+clt.listeCompte.get(index).
getListeTransaction().get(intTrs).getDateTransaction());
}else if(clt.listeCompte.get(index).getListeTransaction().
get(intTrs).getNomTypeTransaction().equals("retrait")) {
System.out.println("---- Retirer un montant de "+
clt.listeCompte.get(index).getListeTransaction().get(intTrs).
getMontantTransaction()+"Euros pour le compte "+
clt.listeCompte.get(index).getNumCompte()+"au "+
clt.listeCompte.get(index).
getListeTransaction().get(intTrs).getDateTransaction());
}
}
}
System.out.println("n-------------------n");
}
}
– test
– checking
Produire le rapport de tous les transactions effectu´ees dans la banque
1.4.6 Diagramme de classe
Le diagramme de classes montre la structure interne d’un syst`eme. Il permet de fournir une
repr´esentation abstraite des objets du syst`eme qui vont interagir ensemble pour r´ealiser les cas
d’utilisation. Le diagramme de classes permet de mod´eliser les classes du syst`eme et leurs relations
ind´ependamment d’un langage de programmation particulier.
25
IFI-VNU Projet Genie Logiciel TP1
Fig. 14 – Diagramme de classe
Conclusion
Ce projet nous a permis d’apprendre les bsaes de la modelisation Unify modeling Languange
(UML) qui est un language de mod´elisation. Il nous a egalement permis de comprendre les
concepts de la programmation orient´ee objet et de l´eappliquer avec le langage Java. Il nous aussi
pousser `a maˆıtriser l’utilisation de certains outils pour mener `a bien le projet.
2 Outils de d´eveloppement
– GanttProject
C’est un logiciel libre de gestion de projet, il permet la planification d’un projet `a travers la
r´ealisation d’un diagramme de Gantt. Ecrit en Java,il peut etre utiliser sur de nombreux OS tel
que Windows, Linux, MacOS. Ce projet a ´et´e lanc´e par un ´etudiant de l’universit´e de Marne La
Vall´ee en janvier 2003 et est maintenant propos´e sous licence libre (GNU GPL)
– Sharelatex
C’est un ´editeur LaTeX en ligne, collaboratif, en temps r´eel et compileur PDF. En comparaison
avec les autres ´editeurs LaTeX, ShareLaTeX est une application bas´ee sur un serveur web, qui
est donc accessible via un navigateur internet. Une version publique, et maintenue, est disponible
sur https://www.sharelatex.com
– EDI Eclipse
26
IFI-VNU Projet Genie Logiciel TP1
L’environnement de D´eveloppement Int´egr´e Eclipse est sous projet, du projet Eclipse qui est
d´eclin´e et organis´e en un ensemble de sous-projets de d´eveloppements logiciels, de la fondation
Eclipse visant `a d´evelopper un environnement de production de logiciels libre qui soit extensible,
universel et polyvalent, en s’appuyant principalement sur Java
– JRE : version 1.8
– StarUML
est un logiciel de mod´elisation UML, c´ed´e comme open source par son ´editeur, `a la fin de son
exploitation commerciale, sous une licence modifi´ee de GNU GPL
– FramaPad
est un service en ligne de traitement de texte (une sorte de Word tr`es simplifi´e), et de colla-
boratif (proche de Google Drive), mais reposant sur l’application libre EtherPad, reconnu dans
l’´education comme outil permettant la production `a plusieurs
– Github
C’est un service web d’h´ebergement et de gestion de d´eveloppement de logiciels, utilisant le
logiciel de gestion de versions Git
– Git
C’est un logiciel de gestion de versions d´ecentralis´e. C’est un logiciel libre cr´e´e par Linus Torvalds,
auteur du noyau Linux, et distribu´e selon les termes de la licence publique g´en´erale GNU version
2
3 Code source
/**
*
*/
package com.ckomsa.controller;
import java.util.ArrayList;
import com.ckomsa.main.Banque;
/**
* Classe permettant de grer les clients
* @author sonfack
*
*/
public class Client {
public static int indiceClient=0 ;
public String nomClient ;
private int idClient;
public ArrayList<Compte> listeCompte = new ArrayList<Compte>();
/**
27
IFI-VNU Projet Genie Logiciel TP1
* Constructeur de la classe Client n’ayant pas de compte dans la systme
* @param banque est l objet de la classe Banque
* @param nom est le nom du client a crer
* @param id represente l’identifiant du client
* le constructeur ajoute directement le client dans la liste de client
*/
public Client(Banque banque, String nom , int id) {
// TODO Auto-generated constructor stub
this.nomClient = nom.toUpperCase();
this.idClient = id ;
banque.setListeClient(this);
}
/**
* Constructeur de la classe Client n’ayant pas de compte dans la systme
* @param banque est l objet de la classe Banque
* @param nom est le nom du client a crer
* Le constructeur ajoute directement le client dans la liste de client
* Le constructeur cre automatique l’identifiant du client crer
*/
public Client(Banque banque, String nom) {
Client.indiceClient = Client.indiceClient +1;
this.nomClient = nom.toUpperCase();
this.idClient = Client.indiceClient ;
banque.setListeClient(this);
System.out.print("n---- Creer un nouveau compte pour "+this.nomClient+"
avec :n");
}
/**
* Cette methode permet de retourner l’identifiant d’un client
* @param client un objet de la classe Client
* @return idClient l’identifiant de l’objet pass
*/
public int getIdClient(Client client) {
return client.idClient;
}
/**
* Cette methode permet de retourner l’identifiant d’un client
* cette fonction est sans paramettre
* @return idClient l’identifiant de l’objet pass
*/
public int getIdClient() {
return this.idClient;
}
/**
28
IFI-VNU Projet Genie Logiciel TP1
* Cette fonction permet d’imprimer les comptes de tous les clients
*/
public void printCompteClient() {
int compte ;
if(this.listeCompte.size() >0) {
System.out.println("---- Le client : "+this.nomClient+" pour Id :
"+this.getIdClient()+" dispose de :"+this.listeCompte.size()
+" ----" );
for(int i = 0 ; i < this.listeCompte.size() ; i++) {
compte = i+1;
System.out.println("* compte "+compte+" pour numero de
compte: "+this.listeCompte.get(i).getNumCompte());
}
}else {
System.out.println("---- Aucun compte pour "+this.nomClient+ "
pour Id : "+this.getIdClient()+" ----");
}
}
/**
* Cette fonction returne un compte etant donn un numero de compte
* @param numCompte le numero dont on recherche le compte
* @return null si aucun compte n a le numero ou le compte
*/
public Compte getCompte(int numCompte) {
Compte compte = null ;
for(int i = 0 ; i < this.listeCompte.size(); i++) {
if(this.listeCompte.get(i).getNumCompte() == numCompte) {
compte = this.listeCompte.get(i);
}
}
return compte;
}
}
//////////////////////// compte ////////////////////////////
/**
*
*/
package com.ckomsa.controller;
import java.util.ArrayList;
import java.util.List;
/**
* @author sonfack
*
*/
29
IFI-VNU Projet Genie Logiciel TP1
public class Compte{
public static int indiceCompte = 0;
// liste des transactions du compte
ArrayList<Transaction> listeTransaction = new ArrayList<Transaction>();
//private Client client;
private int numCompte;
private double solde ;
public int tauxInteret;
/*
* Constructeur de la classe Compte qui permet de crer un compte sans transaction
*/
public Compte(Client client, int taux ) {
Compte.indiceCompte = Compte.indiceCompte + 1;
this.numCompte = Compte.indiceCompte ;
this.solde = 0;
this.tauxInteret = taux;
client.listeCompte.add(this);
System.out.println("tCompte = "+this.numCompte+" ; nom client =
"+client.nomClient+" identifiant = "+client.getIdClient(client)+" ;
montant = "+this.getSolde() +" et taux = "+this.tauxInteret+"%" );
}
public Compte(Client client) {
Compte.indiceCompte = Compte.indiceCompte + 1;
this.numCompte = Compte.indiceCompte ;
this.solde = 0;
this.tauxInteret = 0;
client.listeCompte.add(this);
System.out.println("tCompte = "+this.numCompte+" ; nom client =
"+client.nomClient+" identifiant = "+client.getIdClient(client)+" ;
montant = "+this.getSolde() +" et taux = "+this.tauxInteret+"%" );
}
public void printTransaction(Transaction transaction) {
if(transaction != null) {
if(transaction.getNomTypeTransaction().equals("depot")) {
System.out.println("---- Dpot un montant de
"+transaction.getMontantTransaction()+"Euros pour le
compte "+this.getNumCompte()+" au
"+transaction.getDateTransaction()+" ----");
}else if(transaction.getNomTypeTransaction().equals("retrait")) {
System.out.println("---- Retrait un montant de
"+transaction.getMontantTransaction()+"Euros pour le
compte "+this.getNumCompte()+" au
"+transaction.getDateTransaction()+" ----");
}
}else {
30
IFI-VNU Projet Genie Logiciel TP1
System.out.println("null");
}
}
public void printListeTransaction(String nomTypeTransaction) {
for (int i = 0; i < this.getListeTransaction().size(); i++) {
if(nomTypeTransaction.equals(this.getListeTransaction().get(i).getNomTypeTransaction(
{
if(nomTypeTransaction.equals("depot")) {
System.out.println("---- Dpot un montant de
"+this.getListeTransaction().get(i).getMontantTransaction()+"
pour le compte "+this.getNumCompte()+" au
"+this.getListeTransaction().get(i).getDateTransaction()+"
----");
}else if(nomTypeTransaction.equals("retrait")) {
System.out.println("---- Retrait un montant de
"+this.getListeTransaction().get(i).getMontantTransaction()+"
pour le compte "+this.getNumCompte()+" au
"+this.getListeTransaction().get(i).getDateTransaction()+"
----");
}
}
}
}
/**
* Cette fonction returne la liste des transaction d’un compte
*
*/
public ArrayList<Transaction> getListeTransaction() {
return this.listeTransaction ;
}
public void setListeTransaction(Transaction transaction) {
this.listeTransaction.add(transaction);
}
/**
* Cette methode calcul l’interet d’un solde
* @param taux
*/
public void setInteret() {
this.setSolde((this.getSolde()*this.getTaux())/100 + this.getSolde());
}
/**
* Cette fonction retourne le numro de compte
*/
31
IFI-VNU Projet Genie Logiciel TP1
public double getSolde() {
return this.solde;
}
/**
* Cette fonction retourne le taux d’interet d’un compte
*/
public int getTaux() {
return this.tauxInteret;
}
/**
*Cette fonction permet d’initialiser un numero de compte
*/
public void setNumCompte(int numcompte) {
this.numCompte = numcompte;
}
/**
* Cette fonction permet d’initialiser un solde
*/
public void setSolde(double solde) {
this.solde = solde;
}
/**
* Cette fonction retour
*/
public int getNumCompte() {
return this.numCompte;
}
/**
* Cette fonction permet d’ajouter une transaction a un compte
*
*/
public boolean setTransation(Transaction transaction) {
this.listeTransaction.add(transaction);
return true ;
}
}
//////////////////////////Transaction ////////////////////
/**
*
*/
package com.ckomsa.controller;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
32
IFI-VNU Projet Genie Logiciel TP1
import com.ckomsa.main.Banque;
/**
* @author sonfack
*
*/
public class Transaction {
private TypeTransaction typeTransaction ;
private Date dateTransation ;
private double montantTransaction ;
/**
* Cration d’une transaction avec un type de transaction et sans montant
* @param client
* @param compte
* @param type
* @param montant
*/
public Transaction(Client client, Compte compte, TypeTransaction type, double
montant) {
if(montant > 0) {
switch(type.getTypeTransaction()) {
case "retrait":{
if(compte.getSolde() < montant) {
System.out.println("Solde insufisant");
}else {
DateFormat dateFormat = new
SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
this.dateTransation = new Date();
// le montant doit etre positif
this.montantTransaction = montant;
this.typeTransaction = type;
// ajout de la transaction dans le compte
compte.getListeTransaction().add(this);
compte.setSolde(compte.getSolde() - montant);
System.out.println("Transaction OK");
compte.printTransaction(this);
}
break ;
}
case "depot" : {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd
HH:mm:ss");
this.dateTransation = new Date();
// le montant doit etre positif
this.montantTransaction = montant;
this.typeTransaction = type;
// ajout de la transaction dans le compte
compte.getListeTransaction().add(this);
compte.setSolde(compte.getSolde() + montant);
System.out.println("Transaction OK");
compte.printTransaction(this);
33
IFI-VNU Projet Genie Logiciel TP1
break;
}
}
}else {
System.out.println("Echec transation n---- Montant nul ou
negatif ----");
}
}
/**
* Cette methode permet de retouner le nom d’une transaction
* @return nom du type de transaction
*/
public String getNomTypeTransaction() {
String nomTypeTransaction ;
nomTypeTransaction = this.typeTransaction.getTypeTransaction();
return nomTypeTransaction;
}
/**
* Cette methode permet de retourner la date d’une transaction
* @return date d’une transaction
*/
public Date getDateTransaction() {
return this.dateTransation;
}
/**
* Cette fonction permet de retourner le montant d’une transaction
* @return montant de la transaction
*/
public double getMontantTransaction() {
return this.montantTransaction ;
}
}
///////////////////////TypeTransaction //////////////////
/**
* Cette classe permet de creer des types de transaction
*/
package com.ckomsa.controller;
import com.ckomsa.main.Banque;
/**
* @author sonfack
*
*/
public class TypeTransaction {
private String nomTypeTransaction ;
34
IFI-VNU Projet Genie Logiciel TP1
/**
* Constructeur de type de transaction
* NB: ne doit par crer une transation existante
* @param banque qui est la Banque
* @param type est le type de transaction
* Ce constructeur ajoute automatiquement le type
* de transaction dans la liste des transaction de la banque
*/
public TypeTransaction(Banque banque, String type) {
this.setTypeTransaction(type);
if(! banque.getTypeTransaction().contains(this)) {
banque.setListeTypeTransaction(this);
}
}
/**
* Cette methode permet d’affecter le nom du type de transaction
* @param type
*/
public void setTypeTransaction(String type) {
this.nomTypeTransaction = type.toLowerCase();
}
/**
* Cette methode permet de retourner le nom d’un type de transaction
* @return le nom du type de transaction
*/
public String getTypeTransaction() {
return this.nomTypeTransaction;
}
}
///////////////// Banque //////////////
/**
*
*/
package com.ckomsa.main;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import com.ckomsa.controller.Client;
import com.ckomsa.controller.Compte;
import com.ckomsa.controller.Transaction;
import com.ckomsa.controller.TypeTransaction;
import com.ckomsa.view.Menu;
35
IFI-VNU Projet Genie Logiciel TP1
/**
* @author sonfack
*
*/
public class Banque {
// liste des clients de la banque
private HashSet<Client> listeClient = new HashSet();
// liste des types de transaction de la banque
private HashSet<TypeTransaction> listeTypeTransaction = new HashSet();
public HashSet<Client> getClient(){
return this.listeClient;
}
/**
* Cette fonction retourne la liste des types transaction
*/
public HashSet<TypeTransaction> getTypeTransaction() {
return this.listeTypeTransaction;
}
public TypeTransaction getTypeTransaction(String nomTypeTransaction) {
TypeTransaction type = null;
for(TypeTransaction trs:this.listeTypeTransaction) {
if(trs.getTypeTransaction().equals(nomTypeTransaction)) {
type = trs;
}
}
return type;
}
/**
* recherche un client connaissant a partir de son identifiant
*/
public Client getClient(int idClient) {
Client client = null ;
for(Client clt:this.listeClient) {
if(clt.getIdClient() == idClient) {
client = clt;
}
}
return client;
}
/**
* @return the listeTypeTransaction
*/
public void setListeClient(Client client) {
int count = 0;
for(Client clt:this.listeClient) {
36
IFI-VNU Projet Genie Logiciel TP1
if(clt.getIdClient() != client.getIdClient()) {
count ++;
}
}
if(count >= this.listeClient.size()) {
this.listeClient.add(client);
}
}
/**
* @param
*/
public void setListeTypeTransaction(TypeTransaction typeTransaction) {
this.listeTypeTransaction.add(typeTransaction);
}
/**
* Calcule d’interet
*/
public void calculateInteret() {
if(this.listeClient.size() == 0) {
System.out.println("---- Aucun client dans la banque ----");
}else {
for(Client clt:this.listeClient) {
System.out.println("Client : "+clt.nomClient);
for(int i = 0 ; i < clt.listeCompte.size() ; i++) {
System.out.println("Numero de
complte"+clt.listeCompte.get(i).getNumCompte());
System.out.println("----Solde :
"+clt.listeCompte.get(i).getSolde()+"----");
clt.listeCompte.get(i).setInteret();
//clt.listeCompte.get(i).setSolde((clt.listeCompte.get(i).getTaux()*clt.
+ clt.listeCompte.get(i).getSolde());
System.out.println("----Nouveau solde :
"+clt.listeCompte.get(i).getSolde()+" pour
Interet : "+clt.listeCompte.get(i).getTaux()+"
----");
}
System.out.println("----------------------------------------------------------"
}
}
}
/**
*
*/
public void printListeClient() {
for(Client clt:this.listeClient) {
System.out.println(clt.nomClient);
}
}
37
IFI-VNU Projet Genie Logiciel TP1
/**
* Cette fonction retourn le rapport des transation de la banque
*/
public void printRapport() {
System.out.println("##############################################");
System.out.println("### Rapport des transaction de la banque ####");
System.out.println("##############################################");
for(Client clt:this.listeClient) {
System.out.println("Nom : "+clt.nomClient);
for(int index =0 ; index< clt.listeCompte.size(); index++) {
System.out.println("Compte NO: "+
clt.listeCompte.get(index).getNumCompte());
System.out.println("Sole :
"+clt.listeCompte.get(index).getSolde()+"Euros");
for(int intTrs = 0 ;
intTrs <
clt.listeCompte.get(index).getListeTransaction().size();
intTrs++) {
if(
clt.listeCompte.get(index).getListeTransaction().
get(intTrs).getNomTypeTransaction().equals("depot"))
{
System.out.println("---- Dposer un montant
de "+
clt.listeCompte.get(index).getListeTransaction().get(intTrs).
getMontantTransaction()+"Euros pour le
compte "+ clt.listeCompte.
get(index).getNumCompte()+"au
"+clt.listeCompte.get(index).
getListeTransaction().get(intTrs).getDateTransaction());
}else
if(clt.listeCompte.get(index).getListeTransaction().
get(intTrs).getNomTypeTransaction().equals("retrait"))
{
System.out.println("---- Retirer un montant
de "+
clt.listeCompte.get(index).getListeTransaction().get(intTr
getMontantTransaction()+"Euros pour
le compte "+
clt.listeCompte.get(index).getNumCompte()+"au
"+clt.listeCompte.get(index).getListeTransaction().ge
}
}
}
System.out.println("n----------------------------------------n");
}
}
/**
*
38
IFI-VNU Projet Genie Logiciel TP1
*/
public void printListeTypeTransaction() {
for(TypeTransaction trs:this.listeTypeTransaction) {
System.out.println(trs.getTypeTransaction());
}
}
/**
* Constructeur de la classe banque
*/
public Banque() {
TypeTransaction typetransaction1 = new TypeTransaction(this, "depot");
TypeTransaction typetransaction2 = new TypeTransaction(this, "retrait");
}
/**
* @param args
*/
public static void main(String[] args) {
// TypeTransaction typeTransaction =
//System.out.println(BIDV.getTypeTransaction("depot").getTypeTransaction());
//BIDV.printListeClient();
//BIDV.getClient(1);
/*
* Client clt = new Client(BIDV, "serge0", 1);
Client clt1 = new Client(BIDV, "serge1", 1);
Client clt2 = new Client(BIDV, "serge2", 6);
Client clt3 = new Client(BIDV, "serge3", 5);
Client clt4 = new Client(BIDV, "serge4", 2);
Client clt5 = new Client(BIDV, "serge5", 3);
Client clt6 = new Client(BIDV, "serge6", 4);
Compte cpt = new Compte(clt, 122);
System.out.println("///////////////////////////");
*/
try {
Banque BIDV = new Banque();
boolean fin = true;
do {
Menu MenuBanque = Menu.getInstanceMenu(BIDV," ");
Scanner sc =new Scanner(System.in);
try {
System.out.print("nn*Choix : ");
int choix = sc.nextInt();
if(choix < 0) {
// choix negatif
System.out.println("*Reponse : ---- Votre
choix doit etre un entier positif ----");
39
IFI-VNU Projet Genie Logiciel TP1
}else if(choix > 0) {
switch(choix) {
case 1 : {
MenuBanque.menuConsulteSolde(BIDV);
break;
}
case 2 : {
MenuBanque.menuCreerCompte(BIDV);
break;
}
case 3 : {
MenuBanque.menuTransaction(BIDV);
break;
}
case 4 : {
MenuBanque.menuCalculateInteret(BIDV);
break;
}
case 5 : {
BIDV.printRapport();
break ;
}
case 6 : {
MenuBanque.menuRecherche(BIDV);
break;
}
default :{
MenuBanque.messageErreur();
}
}
//MenuBanque =
Menu.getInstanceMenu(BIDV, " ");
//choix = sc.nextInt();
}else if(choix == 0) {
fin = false;
}
}catch(InputMismatchException e) {
System.out.println("*Reponse : ---- Votre choix
doit etre un entier en 0 et 6, verifiez le menu
et entrez a nouveau ----");
}
}while(fin);
BIDV.printListeClient();
}catch(Error e) {
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
System.out.println("$$$$$$$$ Une erreur grave est survenue : " +
e+" $$$$$$$$$$");
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
}
40
IFI-VNU Projet Genie Logiciel TP1
System.out.println("Programme termine");
System.exit(0);
/*try {
while(choix != 0) {
}
BIDV.printListeClient();
System.out.println("Programme termine");
System.exit(0);
}catch(InputMismatchException e) {
System.out.println("---- Votre choix doit etre un entier ----");
}
* * TypeTransaction tr1 = new TypeTransaction(BIDV, "depot");
TypeTransaction tr2 = new TypeTransaction(BIDV, "retrait");
BIDV.printListeTypeTransaction();
System.out.println("/////////");
Client clt = new Client(BIDV, "serge", 1);
Compte cpt = new Compte(clt, 122);
Compte cpt2 = new Compte(clt, 12);
Transaction tr = new Transaction(clt, cpt, tr1, 300.0);
Transaction tr00 = new Transaction(clt, cpt, tr1, 600.0);
System.out.println("/////////////////");
System.out.println(tr.getDateTransaction().toString());
System.out.println(tr.getMontantTransaction());
System.out.println("/////////////////");
System.out.println(cpt.getSolde());
// cpt.setListeTransaction(tr);
System.out.println(cpt.getListeTransaction().size());
Client clt2 = new Client(BIDV, "landry", 3);
Client clt4 = new Client(BIDV, "landry", 3);
Client clt3 = new Client(BIDV, "sylvain", 23);
*/
}
}
Lien github: www.github.com/sonfack/simple_bank
41

Contenu connexe

Tendances

Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logiciel
Siwar GUEMRI
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoins
Ismahen Traya
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
El Aber Haythem
 

Tendances (20)

Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
Merise 60 affaires classées
Merise 60 affaires classées  Merise 60 affaires classées
Merise 60 affaires classées
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learning
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 
Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logiciel
 
Rapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc Informatique
 
Présentation du pfa
Présentation du pfaPrésentation du pfa
Présentation du pfa
 
Exam 15.02.2022.pdf
Exam 15.02.2022.pdfExam 15.02.2022.pdf
Exam 15.02.2022.pdf
 
2 TUP
2 TUP2 TUP
2 TUP
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoins
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
 
Métriques de qualité logicielle
Métriques de qualité logicielleMétriques de qualité logicielle
Métriques de qualité logicielle
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
 
Qualité logiciel - Generalités
Qualité logiciel - GeneralitésQualité logiciel - Generalités
Qualité logiciel - Generalités
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
 

Similaire à Rapport genie logiciel

RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
Lina Meddeb
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
guestf223f9
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
guestf223f9
 
conception de gestion d'une station de service
conception de gestion d'une station de service conception de gestion d'une station de service
conception de gestion d'une station de service
Nesrine Hached
 
Android VoIP/SIP Softphone
Android VoIP/SIP SoftphoneAndroid VoIP/SIP Softphone
Android VoIP/SIP Softphone
Hamza Lazaar
 
Skan it 6.0 user manual french
Skan it 6.0 user manual frenchSkan it 6.0 user manual french
Skan it 6.0 user manual french
Lenin TaMe
 

Similaire à Rapport genie logiciel (20)

Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...
 
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti MohammedRapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifs
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
Fourth year internship report
Fourth year internship reportFourth year internship report
Fourth year internship report
 
hasnfra3rapp113.pdf
hasnfra3rapp113.pdfhasnfra3rapp113.pdf
hasnfra3rapp113.pdf
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
conception de gestion d'une station de service
conception de gestion d'une station de service conception de gestion d'une station de service
conception de gestion d'une station de service
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD)
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
 
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
 
Rapport Projet de Fin d'Etudes
Rapport Projet de Fin d'EtudesRapport Projet de Fin d'Etudes
Rapport Projet de Fin d'Etudes
 
Android VoIP/SIP Softphone
Android VoIP/SIP SoftphoneAndroid VoIP/SIP Softphone
Android VoIP/SIP Softphone
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revient
 
Skan it 6.0 user manual french
Skan it 6.0 user manual frenchSkan it 6.0 user manual french
Skan it 6.0 user manual french
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFE
 
Rapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboardRapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboard
 

Plus de serge sonfack

Plus de serge sonfack (19)

Plongement de mots :Modèle basé sur les réseaux de neurones
Plongement de mots :Modèle basé sur les réseaux de neuronesPlongement de mots :Modèle basé sur les réseaux de neurones
Plongement de mots :Modèle basé sur les réseaux de neurones
 
Presentation Interaction Homme Machine
Presentation Interaction Homme MachinePresentation Interaction Homme Machine
Presentation Interaction Homme Machine
 
Semantic annotation
Semantic annotation Semantic annotation
Semantic annotation
 
Suivi de l’avancement d’un projet Agile/Scrum
Suivi de l’avancement d’un projet Agile/ScrumSuivi de l’avancement d’un projet Agile/Scrum
Suivi de l’avancement d’un projet Agile/Scrum
 
Traitement d'image
Traitement d'image Traitement d'image
Traitement d'image
 
Expose : Fashion
Expose : FashionExpose : Fashion
Expose : Fashion
 
Réalité virtuelle
Réalité virtuelle Réalité virtuelle
Réalité virtuelle
 
Fouille logiciel
Fouille logicielFouille logiciel
Fouille logiciel
 
Coder
CoderCoder
Coder
 
Ckomsa
Ckomsa Ckomsa
Ckomsa
 
Diplomarbeit ens renewed
Diplomarbeit ens renewedDiplomarbeit ens renewed
Diplomarbeit ens renewed
 
Presentation du Laboratoire Open Source
Presentation du Laboratoire Open SourcePresentation du Laboratoire Open Source
Presentation du Laboratoire Open Source
 
IMPROVING GUINEA PIGS QUALITY AND QUANTITY IN CAMEROON
IMPROVING GUINEA PIGS QUALITY AND QUANTITY  IN CAMEROONIMPROVING GUINEA PIGS QUALITY AND QUANTITY  IN CAMEROON
IMPROVING GUINEA PIGS QUALITY AND QUANTITY IN CAMEROON
 
Migration vers les Solutions Libres/Open Sources
Migration vers les Solutions Libres/Open SourcesMigration vers les Solutions Libres/Open Sources
Migration vers les Solutions Libres/Open Sources
 
Develop your first app on Firefox OS
Develop your first app on Firefox OSDevelop your first app on Firefox OS
Develop your first app on Firefox OS
 
Firefox os
Firefox os Firefox os
Firefox os
 
Opensource
Opensource Opensource
Opensource
 
Emmabuntus
EmmabuntusEmmabuntus
Emmabuntus
 
Jerry SFD Cameroon
Jerry SFD CameroonJerry SFD Cameroon
Jerry SFD Cameroon
 

Rapport genie logiciel

  • 1. Rapport du TP1 Genie Logiciel Avanc´e SONFACK S. Serge et ZONGO Sylvain February 2018 UIVERSITE INSTITUT DE LA NATIONALE FRANCOPHONIE DE VIETNAM POUR L’INNOVATION 1
  • 2. IFI-VNU Projet Genie Logiciel TP1 Table des mati`eres 1 Analyse et Conception 3 1.1 M´ethode agile extreme programming . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Analyse des sp´ecifications de l’application . . . . . . . . . . . . . . . . . . . 3 1.3 Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.1 It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.2 Premi`ere It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.3 Deuxi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.4 Troisi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4.5 Sxi`eme It´erration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.4.6 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2 Outils de d´eveloppement 26 3 Code source 27 Table des figures 1 planification du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 Diagramme de s´equence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 Diagramme de cas d’utilisation : consulter compte . . . . . . . . . . . . . . . . . . 9 5 Diagramme de sequence : consulter compte . . . . . . . . . . . . . . . . . . . . . . 10 6 Diagramme de cas d’utilisation : faire recherche . . . . . . . . . . . . . . . . . . . 12 7 Diagramme de sequence : faire recherche . . . . . . . . . . . . . . . . . . . . . . . 14 8 Diagramme de cas d’utilisation : faire transaction . . . . . . . . . . . . . . . . . . 16 9 Diagramme de sequence : faire transaction . . . . . . . . . . . . . . . . . . . . . . 18 10 Diagramme de cas d’utilisation: calcul interet . . . . . . . . . . . . . . . . . . . . 20 11 Diagramme de sequence : calcul interet . . . . . . . . . . . . . . . . . . . . . . . . 21 12 Diagramme de cas d’utilisation:produire rapport . . . . . . . . . . . . . . . . . . 23 13 Diagramme de sequence :produire rapport . . . . . . . . . . . . . . . . . . . . . . 24 14 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2
  • 3. IFI-VNU Projet Genie Logiciel TP1 Introduction Le g´enie logiciel (software engineering) repr´esente l’application de principes d’ing´enierie au domaine de la cr´eation de logiciels. Il consiste `a identifier et `a utiliser des m´ethodes, des pratiques et des outils permettant de maximiser les chances de r´eussite d’un projet logiciel. Ce TP (travail Pratique) a donc pour objectif de nous permettre de rationaliser et d’optimiser le processus de production d’un logiciel en int´egrant le concept de la programmation orient´ee objet. Nous allons d’abord pr´esenter les sp´ecifications de l’application, ensuite nous allons appliquer la m´ethode Agile extreme programming pour l’impl´ementation et la gestion de notre projet. 1 Analyse et Conception 1.1 M´ethode agile extreme programming XP(extreme programming) est une m´ethode agile adapt´ee pour une ´equipe r´eduite et qui permet de pousser `a l’extr`eme les principes simples. Cette m´ethode des gestions repose sur des valeurs telles que : le courage, le simplicit´e, le respect et surtout la communication entre les diff´erents membres de l’´equipe. XP dans la pratique repose sur un cycle de d´evelopement qui commence par un planning qui orgarnise le travail en tˆache dans un ordre de priorit´e. Par la suite chaque tˆache retir´e dans la liste de priorit´e est ex´ecut´ee et repr´esente une it´eration. Chaque it´eration passe par une conception, une implementation, un test et finie par un checking sur les modification `a apporter sur la ou les it´eration pr´ecedente. Tel sera notre m´ethodologie de travail. 1.2 Analyse des sp´ecifications de l’application L’application r´ealis´ee a de diverses fonctionnalit´es. L’application permet la mise en œuvre d’un syst`eme de gestion de comptes des clients dans une banque. Elle permet l’ouverture d’un ou de plusieurs compte(s) pour tout client avec des taux d’int´erˆet diff´erents. Elle permet de faire une transaction(faire un d´epˆot ou un retrait) sur un compte cr´e´e. L’application permettra ´egalement de consulter un compte, de calculer le taux d’int´erˆet pour tous les comptes et de mettre le solde de chaque compte `a jour. L’application permet de faire aussi des rapports qui incluent la liste des comptes. L’application permet aussi de faire des recherches sur les comptes et de reconnaˆıtre si un client poss`ede un ou plusieurs comptes dans une banque. – cr´eer un nouveau compte, – d´eposer un certain montant d’argent dans un compte, – retirer un certain montant d’argent d’un compte, – consulter le solde d’un compte, – calculer l’int´erˆet pour tous les comptes et mettre `a jours leur solde, – produire un rapport qui inclut une liste de comptes avec les informations suivantes : le num´ero de compte, le solde, et les transactions effectu´ees (d´eposer et retirer l’argent) depuis que le compte est cr´e´e. – faire une recherche qui permet, `a partir du num´ero d’identification d’une personne, de savoir si elle poss`ede un ou des comptes dans la banque. 1.3 Planning Dans cette partie tout le projet est planifi´e et prioris´e en se basant sur les sp´ecifications 3
  • 4. IFI-VNU Projet Genie Logiciel TP1 Fig. 1 – planification du projet 1.4 Conception 1.4.1 It´erration 1.4.2 Premi`ere It´erration – Cas d’utilisation : creer compte Fig. 2 – Diagramme de cas d’utilisation – description 4
  • 5. IFI-VNU Projet Genie Logiciel TP1 Cr´eer compte ID : CC-1 Acteur primaire Gestionnaire Acteur secondaire Client Description Permet au gestionnaire de cr´eer les comptes client Auteurs SONFACK et ZONGO Version 1.0 Syst`eme Syst`eme de gestion de banque Intervenant gestionnaire Pr´econdition Lancer l’application Op´erations normale 1 Lancer ou ex´ecuter l’application 2 S´electionner l’option cr´eer compte 3 Affichage du formulaire de cr´eation de compte 4 Remplir le formulaire de cr´eation de compte 5 Enregistrer le formulaire Post condition 1 Retour `a l’´etat initial Exception 4.a Informations invalides 4.a.1 r´e-afficher le formulaire 4.a.2 Renseigner les champs erron´es 4.a.3 Passer au l’action 4 5.a Si le client existe 5.a.1 Demander voulez vous ajouter un nouveau compte? 5.a.2 Si oui 5.a.3 Demander l’identit´e du client 5.a.4 Retour `a l’action 4 5
  • 6. IFI-VNU Projet Genie Logiciel TP1 – diagramme de s´equence : creer compte Fig. 3 – Diagramme de s´equence – code L’identifiant du compte est g´en´erer automatiquement public class Compte{ public static int indiceCompte = 0; % liste des transactions du compte ArrayList<Transaction> listeTransaction = new ArrayList<Transaction>(); private Client client; private int numCompte; private double solde ; public int tauxInteret; public Compte(Client client, int taux ) { Compte.indiceCompte = Compte.indiceCompte + 1; this.numCompte = Compte.indiceCompte ; this.solde = 0; this.tauxInteret = taux; client.listeCompte.add(this); System.out.println("tCompte = "+this.numCompte+" ; nom client = "+client.nomClient+" identifiant = "+client.getIdClient(client)+" ; montant = "+this.getSolde() +" et taux = "+this.tauxInteret+"%" ); } – test 6
  • 7. IFI-VNU Projet Genie Logiciel TP1 class ClientTest { @Test void test() { Banque BIDV = new Banque(); assertNotNull("Non null", BIDV); /* Deux clients diffrentes de la meme banque sont diffrentes */ Client client1 = new Client(BIDV, "serge"); Client client2 = new Client(BIDV,"landry"); assertNotNull("Not null test",client1); assertNotNull("Not null test",client2); assertNotEquals(client1.nomClient, client2.nomClient); assertNotEquals(client1.getIdClient(), client2.getIdClient()); assertNotEquals(client1.nomClient, client2.nomClient); assertNotEquals(client1.getIdClient(), client2.getIdClient()); System.out.println("Fin test"); } @FixMethodOrder() class CompteTest { @Test void test0() { Banque BIDV = new Banque(); assertNotNull("Non null", BIDV); Client client1 = new Client(BIDV, "serge"); Client client2 = new Client(BIDV,"landry"); Compte cpt1 = new Compte(client1, 3); 7
  • 8. IFI-VNU Projet Genie Logiciel TP1 Compte cpt2 = new Compte(client2, 4); assertNotNull("Not null", cpt1); assertNotNull("Not null", cpt2); assertEquals(cpt1.getTaux(), 3); assertEquals(cpt2.getTaux(), 4); System.out.println("Fin test0"); } – checking Toujours cr´eer un client avant de cr´eer son compte Tout compte sans transaction doit avoir un solde nul 8
  • 9. IFI-VNU Projet Genie Logiciel TP1 1.4.3 Deuxi`eme It´erration – Ajout du cas d’utilisation : consulter compte Fig. 4 – Diagramme de cas d’utilisation : consulter compte – description Consulter compte ID: CC-2 Acteur primaire Gestionnaire Acteur secondaire Client Description Permet au gestionnaire de consulter les comptes des clients Syst`eme Syst`eme de gestion de banque Auteurs SONFACK et ZONGO Version 1.0 Intervenant Gestionnaire Pr´econdition Lancer l’application Op´erations normale 1 Lancer ou ex´ecuter l’application 2 Demande de consultation de compte 3 affichage de la zone de saisie de l’identifant du compte 4 Saisir le nom ou l’identifiant du client 5 Choisir le type de recherche 6 Si recherche par identifiant 7 Affichage du contenu correspondant 8 Sinon si recherche par nom 9 Affichage des noms identiques 10 S´election de l’identifiant correspondant 11 Affichage du contenu compte Post condition 1 Retour `a l’´etat initial 9
  • 10. IFI-VNU Projet Genie Logiciel TP1 – diagramme de s´equence : consulter compte Fig. 5 – Diagramme de sequence : consulter compte – code public class Client { public static int indiceClient=0 ; public String nomClient ; private int idClient; public ArrayList<Compte> listeCompte = new ArrayList<Compte>(); public Compte getCompte(int numCompte) { Compte compte = null ; for(int i = 0 ; i < this.listeCompte.size(); i++) { if(this.listeCompte.get(i).getNumCompte() == numCompte) { compte = this.listeCompte.get(i); } 10
  • 11. IFI-VNU Projet Genie Logiciel TP1 } return compte; } – test void test1() { Banque BIDV = new Banque(); assertNotNull("Non null", BIDV); Client client1 = new Client(BIDV, "serge"); Compte cpt1 = new Compte(client1, 2); cpt1.setInteret(); assertEquals(cpt1.getSolde(), 0.0,0); // type transaction TypeTransaction typeTrs1 = new TypeTransaction(BIDV,"depot"); TypeTransaction typeTrs2 = new TypeTransaction(BIDV,"retrait"); // transaction Transaction Trs1 = new Transaction(client1, cpt1, typeTrs1, 500); Transaction Trs2 = new Transaction(client1, cpt1, typeTrs2, 200); //consultation assertEquals(cpt1.getSolde(), 300,0); cpt1.setInteret(); double intCal = (300.0*2.0)/100.0 + 300.0; assertEquals(cpt1.getSolde(), intCal,0); } – checking Consulter une compte `a partir d’un num´ero donn´e et retourner les informations du compte ( solde et interet) 11
  • 12. IFI-VNU Projet Genie Logiciel TP1 1.4.4 Troisi`eme It´erration – Ajout de cas d’utilisation : faire recherche Fig. 6 – Diagramme de cas d’utilisation : faire recherche – description 12
  • 13. IFI-VNU Projet Genie Logiciel TP1 Faire recherche ID : FR-1 Acteur primaire Gestionnaire Acteur secondaire Client Description Permet au gestionnaire de faire une recherche Auteurs SONFACK et ZONGO Version 1.0 Syst`eme Syst`eme de gestion de banque Intervenant gestionnaire Pr´econdition Lancer ou ex´ecuter l’application Op´erations normale 1 Saisir le mot `a rechercher 2 Afficher le r´esultat de la recherche Post condition 1 Retour `a l’´etat initial Exception 3.a Informations invalides 3.a.1 r´e-afficher le formulaire 3.a. Renseigner les champs erron´es 3.a.3 Passer `a l’action 4 – diagramme de s´equence : faire recherche – code public class Banque { // liste des clients de la banque private HashSet<Client> listeClient = new HashSet(); // liste des types de transaction de la banque private HashSet<TypeTransaction> listeTypeTransaction = new HashSet(); public HashSet<Client> getClient(){ return this.listeClient; } // recherche un client connaissant a partir de son identifiant public Client getClient(int idClient) { Client client = null ; for(Client clt:this.listeClient) { if(clt.getIdClient() == idClient) { client = clt; } } return client; } – test /** * Test recherche */ 13
  • 14. IFI-VNU Projet Genie Logiciel TP1 Fig. 7 – Diagramme de sequence : faire recherche void test2() { Banque BIDV = new Banque(); assertNotNull("Non null", BIDV); assertNotEquals(BIDV.getTypeTransaction(), null); assertEquals(BIDV.getClient(), null); Client client1 = new Client(BIDV, "serge1"); Client client2 = new Client(BIDV,"landry1"); 14
  • 15. IFI-VNU Projet Genie Logiciel TP1 Client client3 = new Client(BIDV, "serge2"); Client client4 = new Client(BIDV,"landry2"); Client client5 = new Client(BIDV, "serge3"); Client client6 = new Client(BIDV,"landry3"); Client client7 = new Client(BIDV, "serge4"); Client client8 = new Client(BIDV,"landry4"); assertEquals(BIDV.getClient(1).nomClient, "serge1"); assertEquals(BIDV.getClient(10), null ); } – checking Recherche le client `a partir de la classe Banque Retourner l’objet client 15
  • 16. IFI-VNU Projet Genie Logiciel TP1 Cinqui`eme It´errationAjout de cas d’utilisation : faire transaction Le diagramme de cas d’utilisation Le diagramme de cas d’utilisation repr´esente la structure des grandes fonc- tionnalit´es n´ecessaires aux utilisateurs du syst`eme. C’est diagramme statique du mod`ele UML, celui o`u s’assure la relation entre l’utilisateur et les objets que le syst`eme met en œuvre. Fig. 8 – Diagramme de cas d’utilisation : faire transaction – – description 16
  • 17. IFI-VNU Projet Genie Logiciel TP1 Faire transaction ID: FT-1 Acteur primaire Gestionnaire Acteur secondaire Client Description Permet au gestionnaire d’effectuer une transaction Auteurs SONFACK et ZONGO Version 1.0 Syst`eme Syst`eme de gestion de banque Intervenant gestionnaire Pr´e condition Lancer ou ex´ecuter l’application Op´erations normale 1 Demande d’effectuer une transaction 2 Saisir l’identifiant client 3 Choisir l’op´eration `a effectuer 4 Si choix est d´epˆot 5 Enregistrer montant 6 Faire mise `a jour du compte 7 Si choix est retrait 8 V´erifier si montant `a retirer ¡montant du compte 9 Si oui effectuer l’op´eration 10 Mise `a jour du compte Post condition 1 Retour `a l’´etat initial Exception 3.a Informations invalides 3.a.1 r´e-afficher le formulaire 3.a.2 Renseigner les champs erron´es 3.a. Passer au l’action 4 – diagramme de s´equence : faire transaction – code class TransactionTest { @Test void test() { Banque BIDV = new Banque(); assertNotNull("Non null", BIDV); Client client1 = new Client(BIDV, "serge"); Client client2 = new Client(BIDV,"landry"); Compte cpt1 = new Compte(client1, 3); Compte cpt2 = new Compte(client2, 4); // type transaction 17
  • 18. IFI-VNU Projet Genie Logiciel TP1 Fig. 9 – Diagramme de sequence : faire transaction TypeTransaction typeTrs1 = new TypeTransaction(BIDV,"depot"); TypeTransaction typeTrs2 = new TypeTransaction(BIDV,"retrait"); // transaction Transaction Trs1 = new Transaction(client1, cpt1, typeTrs1, 500); Transaction Trs2 = new Transaction(client1, cpt1, typeTrs1, -100); 18
  • 19. IFI-VNU Projet Genie Logiciel TP1 Transaction Trs4 = new Transaction(client1, cpt1, typeTrs1, 0); Transaction Trs5 = new Transaction(client1, cpt1, typeTrs2, 200); assertEquals(cpt1.getSolde(), 300); } } – test – checking Une transaction doit ˆetre definie avec son type et son montant, la date `a la quelle elle a ´et´et effectu´ee. Il ne doit pas y avoir des transaction negatives 19
  • 20. IFI-VNU Projet Genie Logiciel TP1 Cinqui`eme It´errationAjout de cas d’utilisation : calcul interet Le diagramme de cas d’utili- sation Le diagramme de cas d’utilisation repr´esente la structure des grandes fonctionnalit´es n´ecessaires aux utilisateurs du syst`eme. C’est diagramme statique du mod`ele UML, celui o`u s’assure la relation entre l’utilisateur et les objets que le syst`eme met en œuvre. Fig. 10 – Diagramme de cas d’utilisation: calcul interet –– description – diagramme de s´equence : calcul interet – code – test public class Banque { // liste des clients de la banque private HashSet<Client> listeClient = new HashSet(); // liste des types de transaction de la banque private HashSet<TypeTransaction> listeTypeTransaction = new HashSet(); 20
  • 21. IFI-VNU Projet Genie Logiciel TP1 Fig. 11 – Diagramme de sequence : calcul interet public HashSet<Client> getClient(){ return this.listeClient; } /* * Calcul d’interet */ public void calculateInteret() { for(Client clt:this.listeClient) { System.out.println("Client : "+clt.nomClient); for(int i = 0 ; i < clt.listeCompte.size() ; i++) { System.out.println("Numero de complte"+ clt.listeCompte.get(i).getNumCompte()); System.out.println("----Solde : 21
  • 22. IFI-VNU Projet Genie Logiciel TP1 "+clt.listeCompte.get(i).getSolde()+"----"); clt.listeCompte.get(i).setSolde((clt.listeCompte.get(i).getTaux()* clt.listeCompte.get(i).getSolde())/100 + clt.listeCompte.get(i).getSolde()); System.out.println("----Nouveau solde : "+clt.listeCompte.get(i). getSolde()+" pour Interet : "+clt.listeCompte.get(i).getTaux()+" ----"); } System.out.println("------------------------"); } } – checking Calcul les interets des clients de la banque tout en mettant ajour leurs solde 1.4.5 Sxi`eme It´erration – Ajout de cas d’utilisation : Produire rapport – description Produire rapport ID: CC-3 Acteur primaire Gestionnaire Acteur secondaire Gestionnaire Description Permet au gestionnaire de produire des rapports des clients Auteurs SONFACK et ZONGO Version 1.0 Syst`eme Syst`eme de gestion de banque Intervenant Gestionnaire Pr´econdition Lancer l’application Op´erations normale 1 Demande de production de rapport 2 Affichage du rapport incluant la liste des comptes Postcondition 1 Retour `a l’´etat initial – diagramme de s´equence : produire rapport – code public class Banque { // liste des clients de la banque 22
  • 23. IFI-VNU Projet Genie Logiciel TP1 Fig. 12 – Diagramme de cas d’utilisation:produire rapport private HashSet<Client> listeClient = new HashSet(); // liste des types de transaction de la banque private HashSet<TypeTransaction> listeTypeTransaction = new HashSet(); public HashSet<Client> getClient(){ return this.listeClient; } /** 23
  • 24. IFI-VNU Projet Genie Logiciel TP1 Fig. 13 – Diagramme de sequence :produire rapport * Cette fonction retourn le rapport des transation de la banque */ public void printRapport() { System.out.println("##############################################"); System.out.println("### Rapport des transaction de la banque ####"); System.out.println("##############################################"); for(Client clt:this.listeClient) { System.out.println("Nom : "+clt.nomClient); for(int index =0 ; index< clt.listeCompte.size(); index++) { System.out.println("Compte NO: "+ clt.listeCompte.get(index).getNumCompte()); 24
  • 25. IFI-VNU Projet Genie Logiciel TP1 System.out.println("Sole : "+clt.listeCompte.get(index).getSolde()+"Euros"); for(int intTrs = 0 ; intTrs < clt.listeCompte.get(index).getListeTransaction().size(); intTrs++) { if( clt.listeCompte.get(index).getListeTransaction(). get(intTrs).getNomTypeTransaction().equals("depot")) { System.out.println("---- Dposer un montant de "+ clt.listeCompte.get(index).getListeTransaction().get(intTrs). getMontantTransaction()+"Euros pour le compte "+ clt.listeCompte. get(index).getNumCompte()+"au "+clt.listeCompte.get(index). getListeTransaction().get(intTrs).getDateTransaction()); }else if(clt.listeCompte.get(index).getListeTransaction(). get(intTrs).getNomTypeTransaction().equals("retrait")) { System.out.println("---- Retirer un montant de "+ clt.listeCompte.get(index).getListeTransaction().get(intTrs). getMontantTransaction()+"Euros pour le compte "+ clt.listeCompte.get(index).getNumCompte()+"au "+ clt.listeCompte.get(index). getListeTransaction().get(intTrs).getDateTransaction()); } } } System.out.println("n-------------------n"); } } – test – checking Produire le rapport de tous les transactions effectu´ees dans la banque 1.4.6 Diagramme de classe Le diagramme de classes montre la structure interne d’un syst`eme. Il permet de fournir une repr´esentation abstraite des objets du syst`eme qui vont interagir ensemble pour r´ealiser les cas d’utilisation. Le diagramme de classes permet de mod´eliser les classes du syst`eme et leurs relations ind´ependamment d’un langage de programmation particulier. 25
  • 26. IFI-VNU Projet Genie Logiciel TP1 Fig. 14 – Diagramme de classe Conclusion Ce projet nous a permis d’apprendre les bsaes de la modelisation Unify modeling Languange (UML) qui est un language de mod´elisation. Il nous a egalement permis de comprendre les concepts de la programmation orient´ee objet et de l´eappliquer avec le langage Java. Il nous aussi pousser `a maˆıtriser l’utilisation de certains outils pour mener `a bien le projet. 2 Outils de d´eveloppement – GanttProject C’est un logiciel libre de gestion de projet, il permet la planification d’un projet `a travers la r´ealisation d’un diagramme de Gantt. Ecrit en Java,il peut etre utiliser sur de nombreux OS tel que Windows, Linux, MacOS. Ce projet a ´et´e lanc´e par un ´etudiant de l’universit´e de Marne La Vall´ee en janvier 2003 et est maintenant propos´e sous licence libre (GNU GPL) – Sharelatex C’est un ´editeur LaTeX en ligne, collaboratif, en temps r´eel et compileur PDF. En comparaison avec les autres ´editeurs LaTeX, ShareLaTeX est une application bas´ee sur un serveur web, qui est donc accessible via un navigateur internet. Une version publique, et maintenue, est disponible sur https://www.sharelatex.com – EDI Eclipse 26
  • 27. IFI-VNU Projet Genie Logiciel TP1 L’environnement de D´eveloppement Int´egr´e Eclipse est sous projet, du projet Eclipse qui est d´eclin´e et organis´e en un ensemble de sous-projets de d´eveloppements logiciels, de la fondation Eclipse visant `a d´evelopper un environnement de production de logiciels libre qui soit extensible, universel et polyvalent, en s’appuyant principalement sur Java – JRE : version 1.8 – StarUML est un logiciel de mod´elisation UML, c´ed´e comme open source par son ´editeur, `a la fin de son exploitation commerciale, sous une licence modifi´ee de GNU GPL – FramaPad est un service en ligne de traitement de texte (une sorte de Word tr`es simplifi´e), et de colla- boratif (proche de Google Drive), mais reposant sur l’application libre EtherPad, reconnu dans l’´education comme outil permettant la production `a plusieurs – Github C’est un service web d’h´ebergement et de gestion de d´eveloppement de logiciels, utilisant le logiciel de gestion de versions Git – Git C’est un logiciel de gestion de versions d´ecentralis´e. C’est un logiciel libre cr´e´e par Linus Torvalds, auteur du noyau Linux, et distribu´e selon les termes de la licence publique g´en´erale GNU version 2 3 Code source /** * */ package com.ckomsa.controller; import java.util.ArrayList; import com.ckomsa.main.Banque; /** * Classe permettant de grer les clients * @author sonfack * */ public class Client { public static int indiceClient=0 ; public String nomClient ; private int idClient; public ArrayList<Compte> listeCompte = new ArrayList<Compte>(); /** 27
  • 28. IFI-VNU Projet Genie Logiciel TP1 * Constructeur de la classe Client n’ayant pas de compte dans la systme * @param banque est l objet de la classe Banque * @param nom est le nom du client a crer * @param id represente l’identifiant du client * le constructeur ajoute directement le client dans la liste de client */ public Client(Banque banque, String nom , int id) { // TODO Auto-generated constructor stub this.nomClient = nom.toUpperCase(); this.idClient = id ; banque.setListeClient(this); } /** * Constructeur de la classe Client n’ayant pas de compte dans la systme * @param banque est l objet de la classe Banque * @param nom est le nom du client a crer * Le constructeur ajoute directement le client dans la liste de client * Le constructeur cre automatique l’identifiant du client crer */ public Client(Banque banque, String nom) { Client.indiceClient = Client.indiceClient +1; this.nomClient = nom.toUpperCase(); this.idClient = Client.indiceClient ; banque.setListeClient(this); System.out.print("n---- Creer un nouveau compte pour "+this.nomClient+" avec :n"); } /** * Cette methode permet de retourner l’identifiant d’un client * @param client un objet de la classe Client * @return idClient l’identifiant de l’objet pass */ public int getIdClient(Client client) { return client.idClient; } /** * Cette methode permet de retourner l’identifiant d’un client * cette fonction est sans paramettre * @return idClient l’identifiant de l’objet pass */ public int getIdClient() { return this.idClient; } /** 28
  • 29. IFI-VNU Projet Genie Logiciel TP1 * Cette fonction permet d’imprimer les comptes de tous les clients */ public void printCompteClient() { int compte ; if(this.listeCompte.size() >0) { System.out.println("---- Le client : "+this.nomClient+" pour Id : "+this.getIdClient()+" dispose de :"+this.listeCompte.size() +" ----" ); for(int i = 0 ; i < this.listeCompte.size() ; i++) { compte = i+1; System.out.println("* compte "+compte+" pour numero de compte: "+this.listeCompte.get(i).getNumCompte()); } }else { System.out.println("---- Aucun compte pour "+this.nomClient+ " pour Id : "+this.getIdClient()+" ----"); } } /** * Cette fonction returne un compte etant donn un numero de compte * @param numCompte le numero dont on recherche le compte * @return null si aucun compte n a le numero ou le compte */ public Compte getCompte(int numCompte) { Compte compte = null ; for(int i = 0 ; i < this.listeCompte.size(); i++) { if(this.listeCompte.get(i).getNumCompte() == numCompte) { compte = this.listeCompte.get(i); } } return compte; } } //////////////////////// compte //////////////////////////// /** * */ package com.ckomsa.controller; import java.util.ArrayList; import java.util.List; /** * @author sonfack * */ 29
  • 30. IFI-VNU Projet Genie Logiciel TP1 public class Compte{ public static int indiceCompte = 0; // liste des transactions du compte ArrayList<Transaction> listeTransaction = new ArrayList<Transaction>(); //private Client client; private int numCompte; private double solde ; public int tauxInteret; /* * Constructeur de la classe Compte qui permet de crer un compte sans transaction */ public Compte(Client client, int taux ) { Compte.indiceCompte = Compte.indiceCompte + 1; this.numCompte = Compte.indiceCompte ; this.solde = 0; this.tauxInteret = taux; client.listeCompte.add(this); System.out.println("tCompte = "+this.numCompte+" ; nom client = "+client.nomClient+" identifiant = "+client.getIdClient(client)+" ; montant = "+this.getSolde() +" et taux = "+this.tauxInteret+"%" ); } public Compte(Client client) { Compte.indiceCompte = Compte.indiceCompte + 1; this.numCompte = Compte.indiceCompte ; this.solde = 0; this.tauxInteret = 0; client.listeCompte.add(this); System.out.println("tCompte = "+this.numCompte+" ; nom client = "+client.nomClient+" identifiant = "+client.getIdClient(client)+" ; montant = "+this.getSolde() +" et taux = "+this.tauxInteret+"%" ); } public void printTransaction(Transaction transaction) { if(transaction != null) { if(transaction.getNomTypeTransaction().equals("depot")) { System.out.println("---- Dpot un montant de "+transaction.getMontantTransaction()+"Euros pour le compte "+this.getNumCompte()+" au "+transaction.getDateTransaction()+" ----"); }else if(transaction.getNomTypeTransaction().equals("retrait")) { System.out.println("---- Retrait un montant de "+transaction.getMontantTransaction()+"Euros pour le compte "+this.getNumCompte()+" au "+transaction.getDateTransaction()+" ----"); } }else { 30
  • 31. IFI-VNU Projet Genie Logiciel TP1 System.out.println("null"); } } public void printListeTransaction(String nomTypeTransaction) { for (int i = 0; i < this.getListeTransaction().size(); i++) { if(nomTypeTransaction.equals(this.getListeTransaction().get(i).getNomTypeTransaction( { if(nomTypeTransaction.equals("depot")) { System.out.println("---- Dpot un montant de "+this.getListeTransaction().get(i).getMontantTransaction()+" pour le compte "+this.getNumCompte()+" au "+this.getListeTransaction().get(i).getDateTransaction()+" ----"); }else if(nomTypeTransaction.equals("retrait")) { System.out.println("---- Retrait un montant de "+this.getListeTransaction().get(i).getMontantTransaction()+" pour le compte "+this.getNumCompte()+" au "+this.getListeTransaction().get(i).getDateTransaction()+" ----"); } } } } /** * Cette fonction returne la liste des transaction d’un compte * */ public ArrayList<Transaction> getListeTransaction() { return this.listeTransaction ; } public void setListeTransaction(Transaction transaction) { this.listeTransaction.add(transaction); } /** * Cette methode calcul l’interet d’un solde * @param taux */ public void setInteret() { this.setSolde((this.getSolde()*this.getTaux())/100 + this.getSolde()); } /** * Cette fonction retourne le numro de compte */ 31
  • 32. IFI-VNU Projet Genie Logiciel TP1 public double getSolde() { return this.solde; } /** * Cette fonction retourne le taux d’interet d’un compte */ public int getTaux() { return this.tauxInteret; } /** *Cette fonction permet d’initialiser un numero de compte */ public void setNumCompte(int numcompte) { this.numCompte = numcompte; } /** * Cette fonction permet d’initialiser un solde */ public void setSolde(double solde) { this.solde = solde; } /** * Cette fonction retour */ public int getNumCompte() { return this.numCompte; } /** * Cette fonction permet d’ajouter une transaction a un compte * */ public boolean setTransation(Transaction transaction) { this.listeTransaction.add(transaction); return true ; } } //////////////////////////Transaction //////////////////// /** * */ package com.ckomsa.controller; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; 32
  • 33. IFI-VNU Projet Genie Logiciel TP1 import com.ckomsa.main.Banque; /** * @author sonfack * */ public class Transaction { private TypeTransaction typeTransaction ; private Date dateTransation ; private double montantTransaction ; /** * Cration d’une transaction avec un type de transaction et sans montant * @param client * @param compte * @param type * @param montant */ public Transaction(Client client, Compte compte, TypeTransaction type, double montant) { if(montant > 0) { switch(type.getTypeTransaction()) { case "retrait":{ if(compte.getSolde() < montant) { System.out.println("Solde insufisant"); }else { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); this.dateTransation = new Date(); // le montant doit etre positif this.montantTransaction = montant; this.typeTransaction = type; // ajout de la transaction dans le compte compte.getListeTransaction().add(this); compte.setSolde(compte.getSolde() - montant); System.out.println("Transaction OK"); compte.printTransaction(this); } break ; } case "depot" : { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); this.dateTransation = new Date(); // le montant doit etre positif this.montantTransaction = montant; this.typeTransaction = type; // ajout de la transaction dans le compte compte.getListeTransaction().add(this); compte.setSolde(compte.getSolde() + montant); System.out.println("Transaction OK"); compte.printTransaction(this); 33
  • 34. IFI-VNU Projet Genie Logiciel TP1 break; } } }else { System.out.println("Echec transation n---- Montant nul ou negatif ----"); } } /** * Cette methode permet de retouner le nom d’une transaction * @return nom du type de transaction */ public String getNomTypeTransaction() { String nomTypeTransaction ; nomTypeTransaction = this.typeTransaction.getTypeTransaction(); return nomTypeTransaction; } /** * Cette methode permet de retourner la date d’une transaction * @return date d’une transaction */ public Date getDateTransaction() { return this.dateTransation; } /** * Cette fonction permet de retourner le montant d’une transaction * @return montant de la transaction */ public double getMontantTransaction() { return this.montantTransaction ; } } ///////////////////////TypeTransaction ////////////////// /** * Cette classe permet de creer des types de transaction */ package com.ckomsa.controller; import com.ckomsa.main.Banque; /** * @author sonfack * */ public class TypeTransaction { private String nomTypeTransaction ; 34
  • 35. IFI-VNU Projet Genie Logiciel TP1 /** * Constructeur de type de transaction * NB: ne doit par crer une transation existante * @param banque qui est la Banque * @param type est le type de transaction * Ce constructeur ajoute automatiquement le type * de transaction dans la liste des transaction de la banque */ public TypeTransaction(Banque banque, String type) { this.setTypeTransaction(type); if(! banque.getTypeTransaction().contains(this)) { banque.setListeTypeTransaction(this); } } /** * Cette methode permet d’affecter le nom du type de transaction * @param type */ public void setTypeTransaction(String type) { this.nomTypeTransaction = type.toLowerCase(); } /** * Cette methode permet de retourner le nom d’un type de transaction * @return le nom du type de transaction */ public String getTypeTransaction() { return this.nomTypeTransaction; } } ///////////////// Banque ////////////// /** * */ package com.ckomsa.main; import java.util.ArrayList; import java.util.HashSet; import java.util.InputMismatchException; import java.util.Iterator; import java.util.List; import java.util.Scanner; import com.ckomsa.controller.Client; import com.ckomsa.controller.Compte; import com.ckomsa.controller.Transaction; import com.ckomsa.controller.TypeTransaction; import com.ckomsa.view.Menu; 35
  • 36. IFI-VNU Projet Genie Logiciel TP1 /** * @author sonfack * */ public class Banque { // liste des clients de la banque private HashSet<Client> listeClient = new HashSet(); // liste des types de transaction de la banque private HashSet<TypeTransaction> listeTypeTransaction = new HashSet(); public HashSet<Client> getClient(){ return this.listeClient; } /** * Cette fonction retourne la liste des types transaction */ public HashSet<TypeTransaction> getTypeTransaction() { return this.listeTypeTransaction; } public TypeTransaction getTypeTransaction(String nomTypeTransaction) { TypeTransaction type = null; for(TypeTransaction trs:this.listeTypeTransaction) { if(trs.getTypeTransaction().equals(nomTypeTransaction)) { type = trs; } } return type; } /** * recherche un client connaissant a partir de son identifiant */ public Client getClient(int idClient) { Client client = null ; for(Client clt:this.listeClient) { if(clt.getIdClient() == idClient) { client = clt; } } return client; } /** * @return the listeTypeTransaction */ public void setListeClient(Client client) { int count = 0; for(Client clt:this.listeClient) { 36
  • 37. IFI-VNU Projet Genie Logiciel TP1 if(clt.getIdClient() != client.getIdClient()) { count ++; } } if(count >= this.listeClient.size()) { this.listeClient.add(client); } } /** * @param */ public void setListeTypeTransaction(TypeTransaction typeTransaction) { this.listeTypeTransaction.add(typeTransaction); } /** * Calcule d’interet */ public void calculateInteret() { if(this.listeClient.size() == 0) { System.out.println("---- Aucun client dans la banque ----"); }else { for(Client clt:this.listeClient) { System.out.println("Client : "+clt.nomClient); for(int i = 0 ; i < clt.listeCompte.size() ; i++) { System.out.println("Numero de complte"+clt.listeCompte.get(i).getNumCompte()); System.out.println("----Solde : "+clt.listeCompte.get(i).getSolde()+"----"); clt.listeCompte.get(i).setInteret(); //clt.listeCompte.get(i).setSolde((clt.listeCompte.get(i).getTaux()*clt. + clt.listeCompte.get(i).getSolde()); System.out.println("----Nouveau solde : "+clt.listeCompte.get(i).getSolde()+" pour Interet : "+clt.listeCompte.get(i).getTaux()+" ----"); } System.out.println("----------------------------------------------------------" } } } /** * */ public void printListeClient() { for(Client clt:this.listeClient) { System.out.println(clt.nomClient); } } 37
  • 38. IFI-VNU Projet Genie Logiciel TP1 /** * Cette fonction retourn le rapport des transation de la banque */ public void printRapport() { System.out.println("##############################################"); System.out.println("### Rapport des transaction de la banque ####"); System.out.println("##############################################"); for(Client clt:this.listeClient) { System.out.println("Nom : "+clt.nomClient); for(int index =0 ; index< clt.listeCompte.size(); index++) { System.out.println("Compte NO: "+ clt.listeCompte.get(index).getNumCompte()); System.out.println("Sole : "+clt.listeCompte.get(index).getSolde()+"Euros"); for(int intTrs = 0 ; intTrs < clt.listeCompte.get(index).getListeTransaction().size(); intTrs++) { if( clt.listeCompte.get(index).getListeTransaction(). get(intTrs).getNomTypeTransaction().equals("depot")) { System.out.println("---- Dposer un montant de "+ clt.listeCompte.get(index).getListeTransaction().get(intTrs). getMontantTransaction()+"Euros pour le compte "+ clt.listeCompte. get(index).getNumCompte()+"au "+clt.listeCompte.get(index). getListeTransaction().get(intTrs).getDateTransaction()); }else if(clt.listeCompte.get(index).getListeTransaction(). get(intTrs).getNomTypeTransaction().equals("retrait")) { System.out.println("---- Retirer un montant de "+ clt.listeCompte.get(index).getListeTransaction().get(intTr getMontantTransaction()+"Euros pour le compte "+ clt.listeCompte.get(index).getNumCompte()+"au "+clt.listeCompte.get(index).getListeTransaction().ge } } } System.out.println("n----------------------------------------n"); } } /** * 38
  • 39. IFI-VNU Projet Genie Logiciel TP1 */ public void printListeTypeTransaction() { for(TypeTransaction trs:this.listeTypeTransaction) { System.out.println(trs.getTypeTransaction()); } } /** * Constructeur de la classe banque */ public Banque() { TypeTransaction typetransaction1 = new TypeTransaction(this, "depot"); TypeTransaction typetransaction2 = new TypeTransaction(this, "retrait"); } /** * @param args */ public static void main(String[] args) { // TypeTransaction typeTransaction = //System.out.println(BIDV.getTypeTransaction("depot").getTypeTransaction()); //BIDV.printListeClient(); //BIDV.getClient(1); /* * Client clt = new Client(BIDV, "serge0", 1); Client clt1 = new Client(BIDV, "serge1", 1); Client clt2 = new Client(BIDV, "serge2", 6); Client clt3 = new Client(BIDV, "serge3", 5); Client clt4 = new Client(BIDV, "serge4", 2); Client clt5 = new Client(BIDV, "serge5", 3); Client clt6 = new Client(BIDV, "serge6", 4); Compte cpt = new Compte(clt, 122); System.out.println("///////////////////////////"); */ try { Banque BIDV = new Banque(); boolean fin = true; do { Menu MenuBanque = Menu.getInstanceMenu(BIDV," "); Scanner sc =new Scanner(System.in); try { System.out.print("nn*Choix : "); int choix = sc.nextInt(); if(choix < 0) { // choix negatif System.out.println("*Reponse : ---- Votre choix doit etre un entier positif ----"); 39
  • 40. IFI-VNU Projet Genie Logiciel TP1 }else if(choix > 0) { switch(choix) { case 1 : { MenuBanque.menuConsulteSolde(BIDV); break; } case 2 : { MenuBanque.menuCreerCompte(BIDV); break; } case 3 : { MenuBanque.menuTransaction(BIDV); break; } case 4 : { MenuBanque.menuCalculateInteret(BIDV); break; } case 5 : { BIDV.printRapport(); break ; } case 6 : { MenuBanque.menuRecherche(BIDV); break; } default :{ MenuBanque.messageErreur(); } } //MenuBanque = Menu.getInstanceMenu(BIDV, " "); //choix = sc.nextInt(); }else if(choix == 0) { fin = false; } }catch(InputMismatchException e) { System.out.println("*Reponse : ---- Votre choix doit etre un entier en 0 et 6, verifiez le menu et entrez a nouveau ----"); } }while(fin); BIDV.printListeClient(); }catch(Error e) { System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); System.out.println("$$$$$$$$ Une erreur grave est survenue : " + e+" $$$$$$$$$$"); System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); } 40
  • 41. IFI-VNU Projet Genie Logiciel TP1 System.out.println("Programme termine"); System.exit(0); /*try { while(choix != 0) { } BIDV.printListeClient(); System.out.println("Programme termine"); System.exit(0); }catch(InputMismatchException e) { System.out.println("---- Votre choix doit etre un entier ----"); } * * TypeTransaction tr1 = new TypeTransaction(BIDV, "depot"); TypeTransaction tr2 = new TypeTransaction(BIDV, "retrait"); BIDV.printListeTypeTransaction(); System.out.println("/////////"); Client clt = new Client(BIDV, "serge", 1); Compte cpt = new Compte(clt, 122); Compte cpt2 = new Compte(clt, 12); Transaction tr = new Transaction(clt, cpt, tr1, 300.0); Transaction tr00 = new Transaction(clt, cpt, tr1, 600.0); System.out.println("/////////////////"); System.out.println(tr.getDateTransaction().toString()); System.out.println(tr.getMontantTransaction()); System.out.println("/////////////////"); System.out.println(cpt.getSolde()); // cpt.setListeTransaction(tr); System.out.println(cpt.getListeTransaction().size()); Client clt2 = new Client(BIDV, "landry", 3); Client clt4 = new Client(BIDV, "landry", 3); Client clt3 = new Client(BIDV, "sylvain", 23); */ } } Lien github: www.github.com/sonfack/simple_bank 41