package exoventes; /** * Une application pour réaliser plusieurs opérations sur le thème des ventes de * dans une concession de voitures, via un menu d'opérations. Ce fichier propose * un squelette à compléter. Les données sont modélisées (dans le main) ciomme * ceci: Les ventes de modèles de voitures par vendeur sont modélisées par un * tableau à deux dimensions: - dimension de lignes: position d'un vendeur - * dimension de colonnes: position d'un modèle Les noms de vendeurs sont stockés * dans un tableau de String. La chaîne d'indice i, correspond au nom du vendeur * de la ligne i du tableau de ventes. Les noms de voitures sont stockés dans un * tableau de String. La chaîne d'indice j, correspond au nom du modèle de la * colonne j du tableau de ventes. Les prix par modèles sont stockes dans un * tableu de double (même conventions sur les indices que pour le tableau de * modèles). * */ public class MenuVentesSquel { /** * Affiche les ventes par vendeur. * * @param v tableau de ventes * @param vend tableau de vendeurs * @param m tableau de modeles */ public static void afficheVentes(int[][] v, String[] vend, String[] m) { Terminal.ecrireStringln("Tableau de ventes:"); Terminal.ecrireStringln("******************"); for (int i = 0; i < v.length; i++) { System.out.print(" " + vend[i] + " : "); for (int j = 0; j < v[i].length; j++) { System.out.print(m[j] + " : "); Terminal.ecrireString(v[i][j] + ", "); } Terminal.sautDeLigne(); } } /** * Retourne le nombre d'exemplaires vendus du modèle de position posModele * * @param posModele position (colonne) du modèle * @param v tableau de ventes * @return */ public static int nbVendusModele(int posModele, int[][] v) { int nbVendus = 0; for (int i = 0; i < v.length; i++) { nbVendus = nbVendus + v[i][posModele]; } return nbVendus; } /** * Retourne le chiffre d'affaires pour le vendeur d'indice posVendeur * * @param posVendeur indice du vendeur dans tous les tableaux * @param prix prix des modeles * @param v matrice des ventes * @return */ public static double chiffreVendeur(int posVendeur, double[] prix, int[][] v) { double res = 0; for (int j = 0; j < v[0].length; j++) { res = res + v[posVendeur][j] * prix[j]; } return res; } /** * Lit un entier compris entre inf et su. Redemande la saisie en cas * d'erreur de saisie ou d'une entrée non coprise dans ces bornes. * * @param inf borne inférieure pour l'entier lu * @param sup borne supérieure pour l'entier lu * @param invite message affiché pour demander une saisie * @param erreur message affiché en cas de non respect des bornes * @return un entier valide compris dans les bornes */ public static int lireInt(int inf, int sup, String invite, String erreur) { int x; while (true) { try { System.out.print(invite); x = Terminal.lireInt(); if (x < inf || x > sup) { System.out.println(erreur); } else { return x; } } catch (TerminalException e) { System.out.println("Erreur de saisie, recomencez."); } } } /** * Affiche le menu d'opérations ops, lit et retourne un choix valide parmi * les numéros d'opérations 1...ops.length. * * @param ops intitulés des opérations * @return un numéro d'opération comprise dans les choix du tableau ops. */ public static int lireChoixMenu(String[] ops) { afficheTabString(ops, "Veuillez choisir parmi les operations: ", ""); int choix = lireInt(1, ops.length, "Votre choix --> ", "Opération inexistante, recommencez."); return (choix); } /** * Affiche un message initial m, puis le tableau t de String, un par ligne, * avec lignes numerotees. * * @param t * @param m */ public static void afficheTabString(String[] t, String m, String pre) { System.out.println(m); for (int i = 0; i < t.length; i++) { System.out.println(pre + (i + 1) + ". " + t[i]); } } /** * Boucle d'affichage et de choix et réalisation des opérations du menu. * * @param vend noms des vendeurs * @param mod noms des modèles * @param prix prix par modèle * @param stock quantité disponible par modèle * @param vendus matrice avec quantité de ventes vendeur/modèle */ public static void menu(String[] vend, String[] mod, double[] prix, int[] stock, int[][] vendus) { // Les opéations du menu String[] ops = { "Ventes pour tous les vendeurs", "Modeles par popularite", "Chiffre pour un vendeur", "Etat du stock", "Ajouter une vente", "Quitter"}; boolean fin = false; while (!fin) { int choix = lireChoixMenu(ops); if (choix == 1) { afficheVentes(vendus, vend, mod); System.out.println(); } else if (choix == 2) { System.out.println(" *** Opération non encore implanté\n"); System.out.println(); } else if (choix == 3) { afficheTabString(vend, " No. des vendeurs:", " "); int v = lireInt(1, vend.length, " Donnez no. vendeur --> ", " No. vendeur invalide"); System.out.println(" => Chiffre pour " + vend[v - 1] + ":" + chiffreVendeur(v - 1, prix, vendus)); } else if (choix == 4) { System.out.println(" *** Opération non encore implanté\n"); } else if (choix == 5) { System.out.println(" *** Opération non encore implanté\n"); } else if (choix == 6) { System.out.println(" ***** Au revoir ********"); System.out.println(); fin = true; } } } public static void main(String[] args) { // Vendeurs et modèles considérés. String[] vendeurs = {"andre", "ingemar", "jean_jerome", "cindy", "joey"}; String[] modeles = {"twingo", "clio", "megane", "velsatis"}; double[] prixModeles = {25.000, 35.000, 54.000, 62.000}; int[] modelesEnStock = {3, 0, 1, 0}; // Initialisation tableau de ventes. // Devrait se faire par lecture au clavier. int[][] ventes = { {0, 3, 2, 0}, {2, 3, 0, 1}, {1, 1, 1, 1}, {5, 1, 0, 0}, {1, 1, 2, 0}}; menu(vendeurs, modeles, prixModeles, modelesEnStock, ventes); } }