dancer
-
Modifié le 1 juin 2020 à 08:59
KX
Messages postés16754Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 2024
-
31 mai 2020 à 23:27
Bonjour,
je suis debutante en programmation POO en JAVA de ce fait je rencontre un problème au niveau de mon code pour mon projet de gestion d'un atelier de fabrication, plus precisemment dans la classe de calcul de fiabilité des machines.
je vous mets en dessous ce que j'ai pu écrire meme si il y a toujours quelques erreurs la dedans et surtout que je ne sais pas si ce que j'ai fait est juste.
svp veuillez m'aider la dessus j'en ai vrmnt besoin en urgence
merci.
Ps : c'est sous forme d'une interface graphique
le fichier est une liste de machine avec leur reference et la date et lheure de panne
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashSet;
import static jdk.nashorn.internal.objects.NativeMath.min;
public class fiabilite extends javax.swing.JFrame {
private Object afficher_machines_dispo;
/**
* Creates new form fiabilite
*/
public fiabilite() {
initComponents();
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jTextField3 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
jTextField4 = new javax.swing.JTextField();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
jButton4 = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
texte = new javax.swing.JScrollPane();
text = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("La fiabilité peut etre calculée pour les machines dont la réfèrence est la suivante : ");
jLabel2.setText("La fiabilité de la machine de réfèrence ");
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
reference_machine(evt);
}
});
jLabel3.setText("est de :");
jTextField3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Valeur_fiabilite(evt);
}
});
jButton1.setText("Calculer");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Calculer_Fiabilite(evt);
}
});
jLabel4.setText("Clasement des machines par ordre décroissant de fiabilité : ");
jTextField4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
zone_classement(evt);
}
});
jButton2.setText("Classer");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
classer(evt);
}
});
jButton3.setText("Quitter");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Quitter_fiabilité(evt);
}
});
jLabel5.setText("(%)");
jButton4.setText("Afficher");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
afficher_machines_dispo(evt);
}
});
jLabel6.setText("nombre total des machines : 10 machines");
text.setColumns(20);
text.setRows(5);
text.addAncestorListener(new javax.swing.event.AncestorListener() {
public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
}
public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
text(evt);
}
public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
}
});
texte.setViewportView(text);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup().addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup().addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 408, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jButton4))
.addGroup(layout.createSequentialGroup().addComponent(jLabel4).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jButton2))
.addGroup(layout.createSequentialGroup().addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jButton3))
.addGroup(layout.createSequentialGroup().addComponent(jLabel2).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel5).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82, Short.MAX_VALUE).addComponent(jButton1)))
.addGap(22, 22, 22))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLabel6).addComponent(texte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE)))));
layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup().addGap(14, 14, 14).addComponent(jLabel6).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jButton4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(texte, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(11, 11, 11)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jLabel3)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jButton1).addComponent(jLabel5))
.addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel4).addComponent(jButton2)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
pack();
}
private void reference_machine(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void zone_classement(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
// afficher les machines a partir de mon fichier texte
private void afficher_machines_dispo(java.awt.event.ActionEvent evt) {
}
// methode de calcul de fiabilité
private void Calculer_Fiabilite(java.awt.event.ActionEvent evt) {
Valeur_fiabilite.setText("");
String a = reference_machine.getText();
System.out.println(a);
String Fichier = "fichier_fiabilité.txt";
float Val = fiabilite_machine(Fichier, a);
System.out.println(Val);
Valeur_fiabilite.setText(String.valueOf(Val));
}
private void Quitter_fiabilité(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
// afficher les machines disponible dans le fichier
private void text(javax.swing.event.AncestorEvent evt) {
ArrayList<String> tab_dispo = new ArrayList<String>();
String Fichier = "C://Users/NAZHA/Desktop/fichier_fiabilité.txt";
tab_dispo = Machinedispo(Fichier);
int i;
for (i = 0; i < tab_dispo.size(); i++) {
text.setText(text.getText() + "/n" + tab_dispo.get(i));
}
}
// classement des machines par fiabilité
private void classer(java.awt.event.ActionEvent evt) {
zone_classement.setText("");
String Fichier = "C://Users/NAZHA/Desktop/fichier_fiabilité.txt";
ArrayList<Float> fiabilite = new ArrayList<Float>();
ArrayList<String> machine_dispo = new ArrayList<String>();
machine_dispo = Machinedispo(Fichier);
for (String j : machine_dispo) {
fiabilite.add(fiabilite_machine(Fichier, j));
}
String[] Tableau_nom = new String[machine_dispo.size()];
float[] Tableau_fiabilite = new float[machine_dispo.size()];
for (int i = 0; i < machine_dispo.size(); i++) {
Tableau_nom[i] = machine_dispo.get(i);
Tableau_fiabilite[i] = (fiabilite.get(i));
}
for (int i = 0; i < machine_dispo.size(); i++) {
System.out.println(Tableau_nom[i]);
System.out.println(Tableau_fiabilite[i]);
}
int debut = 0;
int pos_min;
while (debut < machine_dispo.size()) { // tri
pos_min = min(Tableau_fiabilite, debut, machine_dispo.size());
permute(Tableau_fiabilite, Tableau_nom, debut, pos_min);
debut++;
}
System.out.println();
for (int i = 0; i < machine_dispo.size(); i++) {
System.out.println(Tableau_nom[i] + " " + Tableau_fiabilite[i]);
zone_classement.setText(zone_classement.getText(+"\n" + Tableau_nom[i] + " " + Tableau_fiabilite[i]));
}
}
private void Valeur_fiabilite(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(fiabilite.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(fiabilite.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(fiabilite.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(fiabilite.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(() -> {
new fiabilite().setVisible(true);
});
System.out.println("-------------fiabilité------------------");
}
// calcul de fiabilite de machine en fonction des evenement dans le fichier
static float fiabilite_machine(String fichier, String machine) {
float heures_annee = (366 * 14);
String[] attributs;
ArrayList<String> evenement = new ArrayList<>();
ArrayList<String> date = new ArrayList<>();
try (BufferedReader machines = new BufferedReader(new FileReader(fichier))) {
String lignelue = null; // relevé des evenement et dates dune machine specifique
while ((lignelue = machines.readLine()) != null) {
attributs = lignelue.split(" ");
String a = attributs[3];
if (a.equals(machine)) {
evenement.add(attributs[4]);
date.add(attributs[0] + " " + attributs[1] + " " + attributs[2]);
}
}
} catch (FileNotFoundException err) {
System.out.println("Erreur : le fichier n'existe pas!\n" + err);
} catch (IOException err) {
System.out.println(err);
}
int y = 0;
float duree_actif1 = 0;
float duree_actif1a = 0; // a pour des journees de 14h car duree de fab 6-20h
float duree_actif2 = 0;
float duree_actif2a = 0;
float duree_actif3 = 0;
float duree_actif3a = 0;
for (String j : evenement) {
// calcul du debut de fonct jusquau 1er arret
if (y == 0) {
duree_actif1 = (DiffHeures(date.get(y), "00012021 00:00"));
duree_actif1a = duree_actif1 - (int) (duree_actif2 / 24) * 10 - 6;
System.out.println("duree actif 1 : " + duree_actif1a);
}
// calcul du nombre dheure entre un depart et un arret
if (j.equals("D")) {
String temps1 = (date.get(y));
System.out.println(temps1);
int z = y + 1;
if (z < evenement.size()) {
String temps2 = (date.get(z));
System.out.println(temps2);
duree_actif2 = duree_actif2 + DiffHeures(temps2, temps1);
duree_actif2a = duree_actif2 - (int) (duree_actif2 / 24) * 10;
System.out.println("duree actif 2 : " + DiffHeures(temps2, temps1);
// caclcul de nbre dheure sil y a depart jusqu'a fin dannee
if ((y == evenement.size() - 1 && (evenement.get(evenement.size() - 1)).equals("D"))) {
duree_actif3 = DiffHeures("00012021 00:00", date.get(evenement.size() - 1));
duree_actif3a = duree_actif3 - (int) (duree_actif2 / 24) * 10;
System.out.println("duree actif 3 : " + duree_actif3a);
}
y++;
}
// duree total de fonctionnment pendant un an
float duree_actif_totale = duree_actif1a + duree_actif2a + duree_actif3a;
float heure_annee = 0;
return (duree_actif_totale / heure_annee) * 100;
}
}
return 0;
}
// renvoie tableau des machines dispo
static ArrayList Machinedispo(String fichier) {
String[] attributs;
ArrayList<String> machinedispo = new ArrayList<>();
try {
BufferedReader machine = new BufferedReader(new FileReader(fichier));
String lignelue;
// remplissage du tableau machinedispo
while ((lignelue = machine.readLine()) != null) {
attributs = lignelue.split(" ");
machinedispo.add(attributs[3]);
}
// suppression des doublons
HashSet h = new HashSet(machinedispo);
machinedispo.clear();
machinedispo.addAll(h);
} catch (IOException ex) {
Logger.getLogger(fiabilite.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextArea text;
private javax.swing.JScrollPane texte;
// End of variables declaration
}