This commit is contained in:
2025-09-18 01:02:03 +02:00
commit 8abb94290b
7 changed files with 295 additions and 0 deletions

36
pom.xml Normal file
View File

@@ -0,0 +1,36 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>bibliotheque</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- Dépendances du projet -->
<dependencies>
<!-- JUnit 4 pour les tests -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- Configuration du build -->
<build>
<plugins>
<!-- Maven Surefire Plugin pour exécuter les tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,33 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
*/
package com.mycompany.bibliotheque;
/**
*
* @author dthev
*/
import java.util.Scanner;
public class Bibliotheque {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Livre l1 = new Livre("1984", 10.0);
Utilisateur u1 = new Utilisateur("Alice");
System.out.println("Bienvenue dans la bibliothèque !");
System.out.println("1. Afficher un livre");
System.out.println("2. Emprunter un livre");
System.out.println("Votre choix : ");
int choix = sc.nextInt();
if (choix == 1) {
System.out.println("Livre : " + l1.getTitre());
} else if (choix == 2) {
boolean ok = Emprunt.effectuerEmprunt(u1, l1);
System.out.println(ok ? "Emprunt réussi !" : "Échec de l'emprunt.");
}
}
}

View File

@@ -0,0 +1,25 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque;
/**
*
* @author dthev
*/
public class Emprunt {
// TODO: logique métier d'emprunt
public static boolean effectuerEmprunt(Utilisateur u, Livre l) {
if (l.isEmprunte()) {
return false; // déjà emprunté
}
if (u.getEmprunts().size() >= 3) {
return false; // trop de livres empruntés
}
l.setEmprunte(true);
return u.emprunterLivre(l);
}
}

View File

@@ -0,0 +1,45 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque;
/**
*
* @author dthev
*/
public class Livre {
private String titre;
private double prixHT;
private boolean emprunte;
public Livre(String titre, double prixHT) {
this.titre = titre;
this.prixHT = prixHT;
this.emprunte = false;
}
public String getTitre() {
return titre;
}
public double getPrixHT() {
return prixHT;
}
public boolean isEmprunte() {
return emprunte;
}
public void setEmprunte(boolean emprunte) {
this.emprunte = emprunte;
}
// TODO: calculer le prix TTC avec une TVA de 5.5%
public double getPrixTTC() {
return 0.0; // à compléter
}
}

View File

@@ -0,0 +1,36 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque;
/**
*
* @author dthev
*/
import java.util.ArrayList;
import java.util.List;
public class Utilisateur {
private String nom;
private List<Livre> emprunts;
public Utilisateur(String nom) {
this.nom = nom;
this.emprunts = new ArrayList<>();
}
public String getNom() {
return nom;
}
public List<Livre> getEmprunts() {
return emprunts;
}
// TODO: ajouter un emprunt si l'utilisateur a moins de 3 livres
public boolean emprunterLivre(Livre livre) {
return false; // à compléter
}
}

View File

@@ -0,0 +1,52 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/UnitTests/JUnit4TestClass.java to edit this template
*/
package com.mycompany.bibliotheque;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class LivreTest {
private Livre livre;
@Before
public void setUp() {
// Création d'un livre avant chaque test
livre = new Livre("Java Basics", 20.0);
}
@Test
public void testGetTitre() {
assertEquals("pb titre","Java Basic", livre.getTitre());
}
@Test
public void testGetPrixHT() {
// Vérification du prix HT arrondi à 3 décimales
//assertEquals(20.0, livre.getPrixHT(), 0.001);
}
@Test
public void testIsEmprunte() {
// Par défaut, le livre n'est pas emprunté
assertFalse(livre.isEmprunte());
}
@Test
public void testSetEmprunte() {
livre.setEmprunte(true);
assertTrue(livre.isEmprunte());
livre.setEmprunte(false);
assertFalse(livre.isEmprunte());
}
@Test
public void testGetPrixTTC() {
// Calcul du prix TTC avec TVA 5.5% arrondi à 2 décimales
//assertEquals(21.1, livre.getPrixTTC(), 0.01);
}
}

View File

@@ -0,0 +1,68 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/UnitTests/JUnit4TestClass.java to edit this template
*/
package com.mycompany.bibliotheque;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author dthev
*/
public class UtilisateurTest {
public UtilisateurTest() {
}
@Before
public void setUp() {
}
/**
* Test of getNom method, of class Utilisateur.
*/
@Test
public void testGetNom() {
System.out.println("getNom");
Utilisateur instance = null;
String expResult = "";
String result = instance.getNom();
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
/**
* Test of getEmprunts method, of class Utilisateur.
*/
@Test
public void testGetEmprunts() {
System.out.println("getEmprunts");
Utilisateur instance = null;
List<Livre> expResult = null;
List<Livre> result = instance.getEmprunts();
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
/**
* Test of emprunterLivre method, of class Utilisateur.
*/
@Test
public void testEmprunterLivre() {
System.out.println("emprunterLivre");
Livre livre = null;
Utilisateur instance = null;
boolean expResult = false;
boolean result = instance.emprunterLivre(livre);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
}