18 Commits
ines ... ilona

Author SHA1 Message Date
ilona.cardot
14d700295a Classe test 2024-09-26 11:55:57 +02:00
famille Thevenot
6472118666 ajout gestion entreprise 2024-09-24 11:54:50 +02:00
famille Thevenot
8b82fb5acd ajout CommandeTest 2024-09-19 08:29:56 +02:00
famille Thevenot
a8cd335fa6 commantaires dans ajouter de Commande 2024-09-18 18:36:04 +02:00
famille Thevenot
7136c719cc modif supprimer dans commande 2024-09-18 17:38:05 +02:00
ines.benalia
926b12ec55 test de la classe commande 2024-09-12 11:54:27 +02:00
ilona.cardot
8f366b4003 modification de la méthode ajouter et de la méthode supprimer 2024-09-12 10:34:40 +02:00
ilona.cardot
ebe6f29978 modification de la méthode ajouter 2024-09-12 10:28:32 +02:00
sio
0f472d5df2 modification déclaration hashmap dans Commande 2024-09-12 10:11:11 +02:00
morgann.david
8543fbf45b modif classe entreprise 2024-09-12 09:41:17 +02:00
sio
935512aa7b mise à jour création commande 2024-09-12 09:38:59 +02:00
morgann.david
43cbdc54de Merge origin/master 2024-09-12 09:35:43 +02:00
b854ed53f4 Merge pull request 'ines' (#1) from ines into master
Reviewed-on: #1
2024-09-12 09:35:26 +02:00
ilona.cardot
51bb96a809 Merge origin/master 2024-09-12 09:30:01 +02:00
morgann.david
2f47f5aa52 Merge origin/master 2024-09-12 09:28:29 +02:00
morgann.david
427b1e0887 modif classe entreprise 2024-09-12 09:26:35 +02:00
sio
558c7f786c création classe test 2024-09-12 09:23:07 +02:00
ilona.cardot
47b73d352e ajout des éléments de la classe commande 2024-09-12 09:19:49 +02:00
13 changed files with 2455 additions and 2020 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
#pour netbeans
Libraries/*
Test Libraries/*
/nbproject/private/
/build/

View File

@@ -7,8 +7,8 @@
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="MusicAndCo" default="default" basedir=".">
<description>Builds, tests, and runs the project MusicAndCo.</description>
<project name="MusicAndCoV3" default="default" basedir=".">
<description>Builds, tests, and runs the project MusicAndCoV3.</description>
<import file="nbproject/build-impl.xml"/>
<!--
@@ -58,7 +58,7 @@
An example of overriding the target for project execution could look like this:
<target name="run" depends="MusicAndCo-impl.jar">
<target name="run" depends="MusicAndCoV3-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>

View File

@@ -19,7 +19,7 @@ is divided into following sections:
- cleanup
-->
<project xmlns:if="ant:if" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" xmlns:unless="ant:unless" basedir=".." default="default" name="MusicAndCo-impl">
<project xmlns:if="ant:if" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" xmlns:unless="ant:unless" basedir=".." default="default" name="MusicAndCoV3-impl">
<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
<not>
@@ -619,7 +619,7 @@ is divided into following sections:
</fileset>
</union>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MusicAndCo" testname="TestNG tests" workingDir="${work.dir}">
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MusicAndCoV3" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
@@ -716,7 +716,7 @@ is divided into following sections:
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
<isset property="test.method"/>
</condition>
<condition else="-suitename MusicAndCo -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<condition else="-suitename MusicAndCoV3 -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<matches pattern=".*\.xml" string="@{testClass}"/>
</condition>
<delete dir="${build.test.results.dir}" quiet="true"/>
@@ -1057,7 +1057,7 @@ is divided into following sections:
<delete file="${built-jar.properties}" quiet="true"/>
</target>
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
<echo level="warn" message="Cycle detected: MusicAndCo was already built"/>
<echo level="warn" message="Cycle detected: MusicAndCoV3 was already built"/>
</target>
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
<mkdir dir="${build.dir}"/>
@@ -1728,7 +1728,7 @@ is divided into following sections:
<delete file="${built-clean.properties}" quiet="true"/>
</target>
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
<echo level="warn" message="Cycle detected: MusicAndCo was already built"/>
<echo level="warn" message="Cycle detected: MusicAndCoV3 was already built"/>
</target>
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
<mkdir dir="${build.dir}"/>

View File

@@ -1,8 +1,8 @@
build.xml.data.CRC32=ad09f6ef
build.xml.script.CRC32=fbce868f
build.xml.stylesheet.CRC32=f85dc8f2@1.109.0.48
build.xml.data.CRC32=0e137893
build.xml.script.CRC32=e04698ea
build.xml.stylesheet.CRC32=f85dc8f2@1.111.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=ad09f6ef
nbproject/build-impl.xml.script.CRC32=4c0de17b
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.109.0.48
nbproject/build-impl.xml.data.CRC32=0e137893
nbproject/build-impl.xml.script.CRC32=63f48240
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.111.0.48

View File

@@ -28,10 +28,10 @@ debug.test.modulepath=\
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/MusicAndCo.jar
dist.jar=${dist.dir}/MusicAndCoV3.jar
dist.javadoc.dir=${dist.dir}/javadoc
dist.jlink.dir=${dist.dir}/jlink
dist.jlink.output=${dist.jlink.dir}/MusicAndCo
dist.jlink.output=${dist.jlink.dir}/MusicAndCoV3
excludes=
includes=**
jar.compress=false
@@ -48,7 +48,11 @@ javac.source=21
javac.target=21
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
${build.classes.dir}:\
${libs.testng.classpath}:\
${libs.junit_5.classpath}:\
${libs.junit_4.classpath}:\
${libs.hamcrest.classpath}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
@@ -70,8 +74,8 @@ jlink.additionalmodules=
# The jlink additional command line parameters
jlink.additionalparam=
jlink.launcher=true
jlink.launcher.name=MusicAndCo
main.class=
jlink.launcher.name=MusicAndCoV3
main.class=Test
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false

View File

@@ -3,7 +3,7 @@
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MusicAndCo</name>
<name>MusicAndCoV3</name>
<source-roots>
<root id="src.dir"/>
</source-roots>

63
src/NewClass.java Normal file
View File

@@ -0,0 +1,63 @@
import java.util.ArrayList;
import java.util.Scanner;
import métiers.Commande;
import métiers.Entreprise;
import métiers.Instrument;
/*
* 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
*/
/**
*VERSION SANS PLUSIEURS MENU
* @author ilona.cardot
*/
public class NewClass {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Entreprise lEntreprise=new Entreprise("MusicAndCo");
Commande laCommande = new Commande(1,1,"12/09/2024");
ArrayList<Instrument> lesInstrumentsEnt = lEntreprise.getLesInstruments();
Scanner clavier = new Scanner(System.in);
String choixUtil0="";
lEntreprise.ajouterCommande(laCommande);
while(!choixUtil0.equals("N")){
System.out.println("Commande numero : "+laCommande.getNoCom()+("\t\t Date : "+laCommande.getDateCom()));
System.out.println("----------------------------------------------------------------");
System.out.println("Instruments disponible : ");
for (int i = 0; i < lesInstrumentsEnt.size(); i ++) {
System.out.println("Instrument "+(i+1)+" : "+lesInstrumentsEnt.get(i));//on ajoute 1 à l'index pour ne pas afficher instrument 0
}
System.out.println("Quel instrument souhaitez vous ajouter? (entrez son numero)");
int instrAjoutSaisie = clavier.nextInt()-1; //on supprime 1 pour avoir le bon index
System.out.println("Combien souhaitez vous en ajouter?");
int instrQteAjout = clavier.nextInt();
if (laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout)==true){
System.out.println("Instrument ajoute avec succes");
laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout);
} else {
System.out.println("Ajout impossible, instrument non existant ou quantite choisie superieur à la quantite disponible");
}
System.out.println("----------------------------------------------------------------");
System.out.println("Souhaitez vous ajouter des instruments à la commande? (O/N)");
choixUtil0 = clavier.next();
}
//finalisation de la commande
System.out.println("---------------------------Contenu de la commande numero "+laCommande.getNoCom()+"------------------------------");
System.out.println(laCommande.getLesLignes());
System.out.println("Validez vous la commande?(O/N)");
String choixUtil2 = clavier.next();
if (choixUtil0.equals("O")){
System.out.println("Commande validée");
lEntreprise.ajouterCommande(laCommande);
}else {
System.out.println("Commande annulée");
}
System.out.println("----------------------------------------------------------------");
}
}

89
src/Test.java Normal file
View File

@@ -0,0 +1,89 @@
import java.util.ArrayList;
import métiers.*;
import java.util.Scanner;
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
*/
/**
*
* @author sio
*/
public class Test {
Entreprise lEntreprise=new Entreprise("MusicAndCo");
Commande laCommande = new Commande(1,1,"12/09/2024");
ArrayList<Instrument> lesInstrumentsEnt = lEntreprise.getLesInstruments();
Scanner clavier = new Scanner(System.in);
/**
* Création d'une nouvelle commande et ajout si validée
*/
public Test(){
}
public void nouvelleCommande(){
String choixUtil0="";
lEntreprise.ajouterCommande(laCommande);
while(!choixUtil0.equals("N")){
System.out.println("Commande numero : "+laCommande.getNoCom()+("\t\t Date : "+laCommande.getDateCom()));
System.out.println("----------------------------------------------------------------");
System.out.println("Instruments disponible : ");
for (int i = 0; i < lesInstrumentsEnt.size(); i ++) {
System.out.println("Instrument "+(i+1)+" : "+lesInstrumentsEnt.get(i));//on ajoute 1 à l'index pour ne pas afficher instrument 0
}
System.out.println("Quel instrument souhaitez vous ajouter? (entrez son numero)");
int instrAjoutSaisie = clavier.nextInt()-1; //on supprime 1 pour avoir le bon index
System.out.println("Combien souhaitez vous en ajouter?");
int instrQteAjout = clavier.nextInt();
if (laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout)==true){
System.out.println("Instrument ajoute avec succes");
laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout);
} else {
System.out.println("Ajout impossible, instrument non existant ou quantite choisie superieur à la quantite disponible");
}
System.out.println("----------------------------------------------------------------");
System.out.println("Souhaitez vous ajouter des instruments à la commande? (O/N)");
choixUtil0 = clavier.next();
}
//finalisation de la commande
System.out.println("---------------------------Contenu de la commande numero "+laCommande.getNoCom()+"------------------------------");
System.out.println(laCommande.getLesLignes());
System.out.println("Validez vous la commande?(O/N)");
String choixUtil2 = clavier.next();
if (choixUtil0.equals("O")){
System.out.println("Commande validée");
lEntreprise.ajouterCommande(laCommande);
}else {
System.out.println("Commande annulée");
}
System.out.println("----------------------------------------------------------------");
}
public void commandesExistantes(){
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Test test1;
test1 = new Test();
int choixUtil=0;
while(choixUtil!=3){
System.out.println("Que souhaitez vous faire?\n\t1 : Créer une nouvelle commande \n\t 2: Annuler une commande existante\n\t 3: Fermer l'application");
switch(choixUtil){
case 1 :
test1.nouvelleCommande();
break;
/*case 2 :
test1.commandesExistantes;
break;*/
case 3 :
break;
}
}
}

View File

@@ -2,12 +2,129 @@
* 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 métiers;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
*
* @author famille Thevenot
* @author ilona
*/
public class Commande {
private int noCom, noVendeur;
private String dateCom;
private final HashMap<Instrument, Integer> lesLignes = new HashMap<>();
public Commande(int noCom, int noVendeur, String dateCom) {
this.noCom = noCom;
this.noVendeur = noVendeur;
this.dateCom = dateCom;
}
/**
* Ajoute une quantité donnée d'un instrument à la commande
* @param unInstrument instrument à ajouter
* @param qte quantité à ajouter
* @return true si l'ajout est bon
*/
public boolean ajouter(Instrument unInstrument, int qte){
//il faut gérer l'ajout d'un instrument existant dans la commande, ce sera une mise à jour de la ligne
//il faut empêcher l'ajout d'une ligne avec une quantité à 0
//bien s'assurer que le stock est suffisant
boolean ajoutOK;
int qteDisponible = unInstrument.getQteStock();
if (qteDisponible<qte){
ajoutOK = false;
}else {
ajoutOK = true;
lesLignes.put(unInstrument,qte);
unInstrument.setQteStock(qteDisponible-qte);
}
return ajoutOK;
}
/**
* Supprimer un instrument de la commande
* @param unInstrument instrument à supprimer
* @return true si la suppression est effectuée
*/
public boolean supprimer(Instrument unInstrument){
//lesLignes.remove(unInstrument);
boolean suppOK = false;
if (lesLignes.containsKey(unInstrument) == true){
suppOK = true;
int qteCommande = lesLignes.get(unInstrument);
lesLignes.remove(unInstrument);
int qteDisponible = unInstrument.getQteStock();
unInstrument.setQteStock(qteDisponible+qteCommande);
}
return suppOK;
}
/////////////////////////////////////////////////////////////////////////////////
public int getNoCom() {
return noCom;
}
public int getNoVendeur() {
return noVendeur;
}
public String getDateCom() {
return dateCom;
}
public HashMap<Instrument, Integer> getLesLignes() {
return lesLignes;
}
public void setNoCom(int noCom) {
this.noCom = noCom;
}
public void setNoVendeur(int noVendeur) {
this.noVendeur = noVendeur;
}
public void setDateCom(String dateCom) {
this.dateCom = dateCom;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Commande other = (Commande) obj;
if (this.noCom != other.noCom) {
return false;
}
if (this.noVendeur != other.noVendeur) {
return false;
}
return Objects.equals(this.dateCom, other.dateCom);
}
@Override
public String toString() {
return "numero de commande : " + noCom + "\t \t date de la commadne : " + dateCom + "\n contenu de la commande : " + lesLignes + '}';
}
}

View File

@@ -4,7 +4,9 @@
*/
package métiers;
import java.util.ArrayList;
import métiers.Commande;
import métiers.Instrument;
/**
*
@@ -12,9 +14,18 @@ import métiers.Commande;
*/
public class Entreprise {
private String raisonSociale;
private ArrayList<Commande> lesCommandes = new ArrayList<>();
private ArrayList<Instrument> lesInstruments = new ArrayList<>();
public Entreprise(String raisonSociale) {
this.raisonSociale = raisonSociale;
Instrument instr1=new Instrument(23,"Piano droit",3, 8300f);
Instrument instr2=new Instrument(54,"Violon Alto",5, 105f);
Instrument instr3=new Instrument(67,"Guitare Classique",8, 575f);
lesInstruments.add(instr1);
lesInstruments.add(instr2);
lesInstruments.add(instr3);
}
public String getRaisonSociale() {
@@ -32,12 +43,43 @@ public class Entreprise {
public void ajouterCommande(Commande uneCommande){
lesCommandes.add(uneCommande);
}
public void supprimerCommande(Commande uneCommande){
//parcours pour supprimer les instruments de la commande
//suppression de la commande
lesCommandes.remove(uneCommande);
}
public Commande rechercherCommande(int noCom){
Commande laCommande=null;
return laCommande;
Commande uneCommande = null;
for(Commande laCommande : lesCommandes){
if(laCommande.getNoCom() == noCom){
uneCommande = laCommande;
break;
}
}
return uneCommande;
}
public ArrayList<Commande> getLesCommandes() {
return lesCommandes;
}
public ArrayList<Instrument> getLesInstruments() {
return lesInstruments;
}
public void setLesCommandes(ArrayList<Commande> lesCommandes) {
this.lesCommandes = lesCommandes;
}
public void setLesInstruments(ArrayList<Instrument> lesInstruments) {
this.lesInstruments = lesInstruments;
}
}

View File

@@ -25,7 +25,7 @@ public class Instrument {
@Override
public String toString() {
return "Instrument{" + "ref=" + ref + ", designation=" + designation + ", qteStock=" + qteStock + ", prix=" + prix + '}';
return "reference : " + ref + "\t designation : " + designation + "\t quantite en stock : " + qteStock + "\t prix : " + prix + '}';
}
public void setRef(int ref) {

View File

@@ -0,0 +1,91 @@
/*
* 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 métiers;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author famille Thevenot
*/
public class CommandeTest {
public CommandeTest() {
}
@Before
public void setUp() {
}
/**
* Test of ajouter method, of class Commande.
*/
@Test
public void testAjouter() {
Instrument instr1=new Instrument(1,"Piano",10, 8300f);
Instrument instr2=new Instrument(2,"Violon",9, 105f);
Commande laCommande = new Commande(1,1,"12/09/2024");
System.out.println("ajouter");
boolean ajoutRes= laCommande.ajouter(instr1, 2);
boolean ajoutAttendu = true;
System.out.println("cas0 : cas normal, ajout une ligne de commande");
assertEquals("Test0 ajout 2 instr1",ajoutAttendu,ajoutRes);
int stockRes=instr1.getQteStock();
int stockAttendu=8;
assertEquals("Test0 stock",stockAttendu,stockRes);
int qteRes=laCommande.getLesLignes().get(instr1);
int qteAttendu=2;
assertEquals("Test0 quantite",qteRes, qteAttendu);
System.out.println("Cas1 : ajout autre ligne de commande");
laCommande.ajouter(instr2, 6);
int tailleR=laCommande.getLesLignes().size();
int tailleAttendue=2;
assertEquals("Test1 taille",tailleAttendue,tailleR);
/* System.out.println("Cas2 : màj quantité commandée d'une ligne existante");
laCommande.ajouter(instr2, 5);
stockRes=instr2.getQteStock();
stockAttendu=4;
assertEquals("test2 stock",stockAttendu,stockRes );
/*qteRes=laCommande.getLesLignes().get(instr2);
qteAttendu=5;
assertEquals("Test2 quantite", qteAttendu,qteRes);
System.out.println("Cas3 : ajout nouvelle ligne avec quantité > stock");
System.out.println("Cas4 : ajout nouvelle ligne avec quantité 0");
System.out.println("Cas5 : mise à 0 quantité commandée d'une ligne existante");
System.out.println("Cas6 : màj d'une ligne existante avec qté>stock");*/
}
@Test
public void testSupprimer(){
Instrument instr1 = new Instrument(1,"Piano",10,8300f);
Instrument instr2 = new Instrument(2,"Violon",9,105f);
Commande laCommande2 = new Commande(1,1,"12/09/2024");
laCommande2.ajouter(instr1,2);
boolean expectedResult=false;
boolean expectedResult2=true;
int stockAttendu=10;
System.out.println("Test de la méthode supprimer");
boolean test = laCommande2.supprimer(instr2);
boolean test2 = laCommande2.supprimer(instr1);
int test3 = instr1.getQteStock();
assertEquals("suppression impossible : ",expectedResult,test);
assertEquals("suppression possible : ",expectedResult2,test2);
assertEquals("Quantité d'instr1 en stock",stockAttendu,test3);
}
}

View File

@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MusicAndCo">
<!--
see examples at http://testng.org/doc/documentation-main.html#testng-xml
<suite-files>
<suite-file path="./junit-suite.xml" />
</suite-files>
<test name="TimeOut">
<classes>
<class name="test.timeout.TimeOutTest" />
<class name="test.timeout.TimeOutFromXmlTest"/>
<class name="test.timeout.TimeOutThreadLocalSampleTest"/>
</classes>
</test>
-->
<test name="métiers suite">
<packages>
<package name="métiers"/>
</packages>
</test>
</suite>