prob sérialisation

prob sérialisation - Java - Programmation

Marsh Posté le 06-03-2006 à 22:07:36    

Bonjour à tous,
 
 
Bon alors pour commencer je vous expose ma programmation.
Le programme consiste en la création d'une base de donnée qui charge les élèves dans une liste et dans laquelle on peut inscrire leurs notes.
 
j'ai donc créé une classe étudiant dans laquelle je défini certaines méthodes :
 

Citation :

class personne{
  String nom;
  String prenom;
   personne (){
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
   personne(String n,String p){
     nom=n;
     prenom=p;
   }
 
  private void jbInit() throws Exception {
  }
}
 
 
class etudiant extends personne{
  float NotesElec[];
  float notesInfo[];
 
  float p1;
  float p2;
  final int NbrNotesMax=10;
  int CompteurNotesElec=0;
  int CompteurNotesInfo=0;
 
 
   etudiant(){}
 
   etudiant(String n,String p){
     super(n,p);
     NotesElec=new float[NbrNotesMax];
     notesInfo=new float[NbrNotesMax];
   }
 
void AjoutNotesElec(float n){
  if(CompteurNotesElec<NbrNotesMax){
    NotesElec[CompteurNotesElec]=n;
    CompteurNotesElec ++;
  }}
 
void AjoutNotesInfo(float n){
  if(CompteurNotesInfo<NbrNotesMax){
    notesInfo[CompteurNotesInfo]=n;
    CompteurNotesInfo ++;
  }}
 
void MoyenneNotesElec(){
 
  float SommeNote=0;
for (int i=0;i<NbrNotesMax;i++){
  SommeNote=SommeNote+NotesElec[i];
 
  }
  p1=SommeNote/CompteurNotesElec;
 
}
 
 
void MoyenneNotesInfo(){
 
  float SommeNote=0;
 
 for (int i=0;i<NbrNotesMax;i++){
    SommeNote=SommeNote+notesInfo[i];
 
   }
   p2=SommeNote/CompteurNotesInfo;
 
}


 
 
et ensuite un applet dans lequel j'utilse ces méthodes:
 
 
il est composé d'une listeetudiant qui charge dans un fichier texte la liste des étudiant
de 2 textfields pour ajouter les notes de 2 matieres (donc 2 boutons pour l'ajout)
de 2 liste dans lesquelles s'insere les notes entrées
et de 2 autres textfields  (MnotesInfo et MnotesElec) pour calculer les moyenne en fonction des notes ajouter dans les listes.
 
Mon problème se situe au niveau du calcul de moyenne,la méthode de l'applet et la suivante :
 

Citation :

void Valider1_actionPerformed(ActionEvent e) {
 
   
 
  float Ne= Float.parseFloat(NotesInfo.getText());
  int position = listeEtudiant.getSelectedIndex();
  etudiant et = LesEtudiants[position];
  LesEtudiants[position].AjoutNotesInfo(Ne);
  listeInfo.add(NotesInfo.getText());


 
qui marche,cependan jai ajouter une methode pour suprimer une note selectionner dans une des 2listes de notes:
 

Citation :

public void SupprimeNote_actionPerformed(ActionEvent e) {
  String element = listeElec.getSelectedItem();
  listeInfo.remove(element);
  MnotesInfo.setText(" " );


 
 
et le calcul de moyenne ne reprend pas avec les éléments de la liste restant mais avec en memoire les éléments de la liste ayant déja été insérer puis supprimer par ma méthode.
Auriez-vous une méthode pour supprimer des éléments de la liste et recalculer la moyenne en fonction de ces seuls derniers.
 
Ma deuxième question concerne la sauvegarde,j'aurais besoin d'aide pour sauvegarder les notes de chacun des éléves dans un fichier texte extérieur (donc défini par leur nom et leur notes)
j'ai entendu parler d'une méthode par sérialisation,auriez-vous + de détails à ce sujet voir un exemple adapté à mon problème.
 
 
Merci d'avance de vos réponses et de votre aide.  :)   :)  
 

Reply

Marsh Posté le 06-03-2006 à 22:07:36   

Reply

Marsh Posté le 07-03-2006 à 09:23:22    

Bonjour !
Dans ta méthode "SupprimeNote_actionPerformed()", tu ne fais que supprimer un élément dans la liste de ton interface graphique; en réalité tu ne retires rien de ton tableau "NotesElec[]" ou "notesInfo[]". Ces tableaux étant inchangés, ton calcul de moyenne (qui est basé sur ces tableaux) est donc inchangé également !

Reply

Marsh Posté le 07-03-2006 à 19:51:34    

Merci de ta réponse mais c'est ce que je pensais avoir exprimer en disant :" et le calcul de moyenne ne reprend pas avec les éléments de la liste restant mais avec en memoire les éléments de la liste ayant déja été insérer puis supprimer par ma méthode."
 
Le problème étant que je n'arrive pas à trouver une méthode pour modifier ces tableaux justement.
Quelqu'un aurais-t-il une suggestion?
 
Merci

Reply

Marsh Posté le 07-03-2006 à 20:34:36    

j'ai en effet besoin d'une méthode pour récupérer l'ensemble des élément de la liste un par un pour qu'il devienne des NotesElec[],je ne sais cependant pas du tout comment faire.
Y aurais-t-il un truc du genre :
 
 int position = listeEtudiant.getSelectedIndex();
  etudiant et = LesEtudiants[position];
et.notesElec=listeElec.getElement;
 
?????

Reply

Marsh Posté le 08-03-2006 à 09:20:14    

En utilisant "int position = listeEtudiant.getSelectedIndex()",
je pense que le mieux est de modifier le tableau NotesElec[] en décalant vers le haut toutes les notes comprises entre "position" et "CompteurNotesElec", ce qui va écraser la valeur que tu as retiré de la liste, puis de faire "CompteurNotesElec--;". Ca ressemblerait à ça :
 

Code :
  1. int position = listeEtudiant.getSelectedIndex();
  2. for( int i=position; i < (CompteurNotesElec-1) ; i++ )
  3. {
  4.     NotesElec[i] = NotesElec[i+1];
  5. }
  6. CompteurNotesElec--;


Message édité par post_it le 08-03-2006 à 09:20:47
Reply

Marsh Posté le 08-03-2006 à 21:10:54    

Merci de ta reponse je pense que je devrais m'en sortir avec cette méthode. Mais en ce qui concerne la sérialisation des notes enregistrées pour chaque étudiant je n'ai vraiment aucune idée de la méthode à utiliser quelqu'un aurait -t-il un exemple adapté aux bases de données??

Reply

Marsh Posté le 08-03-2006 à 22:13:03    

En réalité il n'est pas possible de procéder par cette méthode, car les éléments supprimer dans la liste peuvent être au milieu, à la fin ou au début.
Il faudrait en réalité que la méthode relise clairement les éléments de la liste un par un puis calcul la moyenne pour que cela marche.
Existe -t-il une méthode en java pour scanner les éléments d'une liste et les mettre dans un tableau??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed