Code : Tout sélectionner/*
*Programme permettant d'afficher les lignes prêtes, les lignes à préparer,
* et de changer les lignes à préparer en prêtes lorsque l'utilisateur l'indique.
*/
package coopenoix;
import java.util.Scanner;
public class Coopenoix {
public static void main(String[] args) {
// Déclaration des variables
int choix;
boolean etatCMD;
String [][]tabCMD = {
{"No commande"," Date commande "," Etat commande "," No client "," Ref produit "," variete "," quantite (kg) "},
{" 0067 "," 03/12/2014 "," true "," C0031E "," RF242G45P09 "," cernaux "," 0.125 "},
{" 00132 "," 05/11/2014 "," false "," C0045A "," RF363G47P07 "," seches "," 10 "},
{" 00224 "," 27/11/2014 "," true "," C0153P "," RF121G69P03 "," fraiches"," 05 "},
{" 00296 "," 06/12/2014 "," false "," C0201E "," RF363G47P07 "," seches "," 20 "},
{" 00306 "," 11/12/2014 "," false "," C0015P "," RF121G69P03 "," fraiches"," 0.500 "},
{" 00308 "," 12/12/2014 "," true "," C0086A "," RF242G45P09"," cernaux "," 1 "}};
// Affichage et modification des lignes de commandes
do {
choix = choixUser();
// Appelle la fonction pour que l'utilisateur puisse choisir ce qu'il souhaite faire
// Si "choix = 1 ou 2", la boucle recommencera, sinon, le programme s'arrete
switch(choix) {
case 1 : // Si "choix = 1"
etatCMD = false;
printTab(etatCMD,tabCMD);
// Appelle la fonction permettant d'afficher les lignes du tableau
choixLigne(tabCMD);
// Appelle la fonction permettant de choisir la ligne à préparer
break; // Fin du "si"
case 2 : // Si "choix = 2"
etatCMD = true;
printTab(etatCMD,tabCMD);
// Appelle la fonction permettant d'afficher les lignes du tableau
break; // Fin du "si"
}
}while ((choix == 1)||(choix == 2));
}
/**
* Demande ce que l'utilisateur souhaite faire (voir et préparer les commandes,
* ou voir les commandes pretes.
* @return Entier indiquant le choix de l'utilisateur
*/
static int choixUser(){
// Déclaration des variables
int choix;
boolean test = false;
Scanner lectureClavier=new Scanner(System.in);
// Affichage et demande du choix
do {
System.out.print("** Que souhaitez-vous faire ? **\n"
+ "\t\n1 :\tVoir les commandes à préparer."
+ "\t\n2 :\tVoir la liste des commandes prêtes.\n"
+ "\t\nVotre choix (0 pour quitter) : ");
choix = Integer.parseInt(lectureClavier.nextLine());
// Transtypage du choix de l'utilisateur en entier
if ((choix == 0)||(choix == 1)||(choix == 2)) {
// Si l'utilisateur a entrer une des trois valeurs définient, fin de la boucle
test = true;
}else{
// Sinon, affichage de l'erreur, et retour au début de la boucle
System.out.println("Valeur incompatible !");
}
} while (test == false);
return choix;
// Retourne à la variable du programme appelant cette fonction la valeur du choix
}
/**
* Affiche toutes les lignes de commandes d'un tableau donné, soit à préparer, soit prête.
* @param etatCMD Boolean indiquand l'état de la commande voulue
* @param tab Tableau des commandes
*/
static void printTab(boolean etatCMD,String tab[][]) {
// Déclaration des variables
boolean test;
// Affiche la première ligne du tableau
System.out.print("\nDétails commande :\t");
for(int i=0 ; i<tab[0].length ; i++) {
System.out.print(" "+tab[0][i]);
}
System.out.println("\n");
// Affiche les lignes du tableau dont "etat commande" est "FALSE"
for(int i=1 ; i<tab.length ; i++) {
test = Boolean.parseBoolean(tab[i][2].trim());
if (test == etatCMD) {
/* Si la cellule correspondante à l'état de la commande est égale
à ce que l'on recherche, affichage de la ligne. */
System.out.print("Ligne "+i+" :\t \t");
for(int j=0 ; j<tab[i].length ; j++) {
System.out.print(" "+tab[i][j]);
}
System.out.println(); // Permet un saut de lignes
}
}
System.out.print("\n"); // Permet des sauts de lignes, pour aérer l'affichage
}
/**
* Permet à l'utilisateur de choisir la ligne qu'il souhaite préparer.
* @param tab Tableau des commandes
*/
static void choixLigne (String tab[][]) {
// Déclaration des variables
int noLigne ;
boolean test = false;
Scanner lectureClavier=new Scanner(System.in);
// Demande la ligne choisie, et vérifie si le numéro saisie est bon
do {
System.out.print(" Quelle ligne souhaitez-vous préparer ?"
+ "(0 pour quitter) : ");
noLigne = Integer.parseInt(lectureClavier.nextLine());
// Transtype du choix de l'utilisateur en entier
if (noLigne == 0){
/* Si l'utilisateur saisit 0, il souhaite quitter le programme
On le fait donc sortir de la boucle. */
test = true ;
} else {
if ((noLigne > 0) && (noLigne < tab.length )) {
/* Si le numéro de ligne saisie est compris entre 0 et
la longueur max du tableau. */
boolean etat = Boolean.parseBoolean(tab[noLigne][2].trim());
// Transtypage de l'etat de la commande en boolean
if (etat == false) {
/* Si l'etat de la commande est bien égale à faux,
on sort de la boucle. */
test = true ;
} else {
System.out.println("Cette commande est déjà prête.");
}
} else {
System.out.println("Cette ligne n'existe pas.");
}
}
} while (test == false) ;
System.out.println(""); // Permet un saut de lignes, pour aérer l'affichage
// Mise de la ligne choisie en préparation
if (noLigne != 0) {
// Si l'utilisateur n'a pas saisie "0" (pour quitter)
tab[noLigne][2] = "En préparation";
// La valeur de la 3ème colonne de la ligne est changée.
System.out.print("Ligne "+noLigne+" :\t|");
// Affichage de la ligne modifiée
for(int i=0 ; i<tab[noLigne].length ; i++) {
System.out.print(tab[noLigne][i]+" ");
}
System.out.println("\n"); // Permet un saut de lignes, pour aérer l'affichage
finPrepa(tab, noLigne);
// Appelle la fonction changeant l'état de la commande
}
}
/**
* Permet de changer l'état de la commande en fonction de l'utilisateur
* @param tab Tableau des commandes
* @param noLigne Numéro de la ligne choisie par l'utilisateur
*/
static void finPrepa (String tab[][], int noLigne) {
// Déclaration des variables
int choix;
// Affichage et demande du choix
Scanner lectureClavier=new Scanner(System.in);
do {
System.out.print("** La commande est-elle prête ? **\n"
+ "\t\n1 :\tOui."
+ "\t\n2 :\tNon.\n"
+ "\t\nVotre choix : ");
choix = Integer.parseInt(lectureClavier.nextLine());
} while ((choix != 1)&&(choix != 2)) ;
// L'utilisateur est obligé de faire un choix.
switch(choix) {
case 1 :
// Changement de la ligne pour qu'elle soit "prête"
tab[noLigne][2] = " true ";
break;
case 2 :
// Changement de la ligne pour qu'elle revienne en "à préparer"
tab[noLigne][2] = " false ";
break;
}
System.out.print("\n"); // Permet des sauts de lignes, pour aérer l'affichage
}
}