This commit is contained in:
Bilou 2022-12-08 03:58:56 +01:00
parent 37eec841b8
commit dd088c00a2
38 changed files with 53533 additions and 53544 deletions

File diff suppressed because it is too large Load Diff

308
README.md
View File

@ -1,154 +1,154 @@
--- ---
titre: "Rapport_technique_Projet_IHM_Brinet_Besson_Boudjemline" titre: "Rapport_technique_Projet_IHM_Brinet_Besson_Boudjemline"
auteurs: "Félix Brinet / Romain Besson / Bilal Boudjemline" auteurs: "Félix Brinet / Romain Besson / Bilal Boudjemline"
date: "2022-12-04" date: "2022-12-04"
--- ---
## Sommaire ## Sommaire
- <div> - <div>
1. Introduction 1. Introduction
2. Utilisation de l'API 2. Utilisation de l'API
3. Diagramme 3. Diagramme
4. Fonctionnalitées 4. Fonctionnalitées
- Fonctionnalitées réussi - Fonctionnalitées réussi
- Fonctionnalitées non réussi - Fonctionnalitées non réussi
- Fonctionnalitées manquantes - Fonctionnalitées manquantes
5. Tests 5. Tests
- Tests réussi - Tests réussi
- Tests non réussi - Tests non réussi
- Tests montrant des bugs - Tests montrant des bugs
6. Conclusions 6. Conclusions
- Conclusion personnelles - Conclusion personnelles
- Conclusion générale - Conclusion générale
</div> </div>
## Utilisation de l'API ## Utilisation de l'API
Bilal a commencé le projet seul car Romain et Félix étaient encore sur le projet précédent. Il a pu commencer à utiliser à l'API et à tester en modèle non-persistant. À la suite, Félix a créé la base de données et a essayé d'aider Bilal pour le modèle persistant. Ensuite Romain à changé l'interface pour la rendre plus intuitive et plus agréable à utiliser. Il a par exemple utilisé des CardLayout et Jpanel pour éviter d'ouvrir une fenêtre pour chaque fonctionnalité. Il a pu aussi créer un menu afin d'accéder aux différentes applications. Bilal a commencé le projet seul car Romain et Félix étaient encore sur le projet précédent. Il a pu commencer à utiliser à l'API et à tester en modèle non-persistant. À la suite, Félix a créé la base de données et a essayé d'aider Bilal pour le modèle persistant. Ensuite Romain à changé l'interface pour la rendre plus intuitive et plus agréable à utiliser. Il a par exemple utilisé des CardLayout et Jpanel pour éviter d'ouvrir une fenêtre pour chaque fonctionnalité. Il a pu aussi créer un menu afin d'accéder aux différentes applications.
## Diagrammes ## Diagrammes
## Fonctionnalitées ## Fonctionnalitées
Pour les 3 vues, nous avons pas fait d'interface malgrès que les vues ont des méthodes en commun. En effet, nous voulons créer des applications indépendantes et déployable sans les autres donc une interface aurait empéché cette séparation. Pour les 3 vues, nous avons pas fait d'interface malgrès que les vues ont des méthodes en commun. En effet, nous voulons créer des applications indépendantes et déployable sans les autres donc une interface aurait empéché cette séparation.
### Fonctionnalitées réussi ### Fonctionnalitées réussi
**Administrateur :** **Administrateur :**
- <div> - <div>
- (M) Créer, supprimer et renommer un groupe; - (M) Créer, supprimer et renommer un groupe;
- (M) Ajouter un individu dans un groupe; - (M) Ajouter un individu dans un groupe;
- (M) Déplacer un individu dans un autre groupe; - (M) Déplacer un individu dans un autre groupe;
</div> </div>
**Professeur :** **Professeur :**
- <div> - <div>
- (M) Afficher la liste des groupes - (M) Afficher la liste des groupes
- (M) Afficher la liste des étudiant d'un groupe donné - (M) Afficher la liste des étudiant d'un groupe donné
- (S) Chercher le groupe d'un étudiant à partir des **3** premières lettres de son nom - (S) Chercher le groupe d'un étudiant à partir des **3** premières lettres de son nom
</div> </div>
**Elève :** **Elève :**
- <div> - <div>
- (M) Afficher la liste des groupes - (M) Afficher la liste des groupes
- (M) Afficher la liste des étudiants d'un groupe donné - (M) Afficher la liste des étudiants d'un groupe donné
- (M) Demandé à passé dans groupe ~~qui est moins pleins que le sien~~ en ajoutant une explication - (M) Demandé à passé dans groupe ~~qui est moins pleins que le sien~~ en ajoutant une explication
- (S) Voir les demandes de changement de groupe du type 2 - (S) Voir les demandes de changement de groupe du type 2
</div> </div>
### Fonctionnalitées non réussi ### Fonctionnalitées non réussi
**Administrateur :** **Administrateur :**
- <div> - <div>
- (S) Déplacer un individus en validant sa demande - (S) Déplacer un individus en validant sa demande
- (S) Refus d'une demande (de type 1) - (S) Refus d'une demande (de type 1)
- (C) Echanger des individus entre 2 groupes à leur demande respectives (demande de type 2) - (C) Echanger des individus entre 2 groupes à leur demande respectives (demande de type 2)
- (C) Refus d'une demande (de type 2) - (C) Refus d'une demande (de type 2)
</div> </div>
**Professeur :** **Professeur :**
- <div> - <div>
- Toutes les fonctionnalitées ont été réussi - Toutes les fonctionnalitées ont été réussi
</div> </div>
**Elève :** **Elève :**
- <div> - <div>
- (S) Demander à passer dans un groupe qui est de même taille ou plus grand en ajoutant une explication (demande de type 2 à faire valider) - (S) Demander à passer dans un groupe qui est de même taille ou plus grand en ajoutant une explication (demande de type 2 à faire valider)
</div> </div>
### Fonctionnalitées manquantes ### Fonctionnalitées manquantes
Par choix arbitraire, nous avons decidé de ne pas créer de sous groupe. Par choix arbitraire, nous avons decidé de ne pas créer de sous groupe.
Rajouter un bouton quitter sur la page d'accueil, ce n'est pas indispensable mais cela pourrait rendre l'interface plus intuitive. Rajouter un bouton quitter sur la page d'accueil, ce n'est pas indispensable mais cela pourrait rendre l'interface plus intuitive.
## Tests ## Tests
### Tests réussi ### Tests réussi
Lorsqu'un administrateur clique sur "Changer le groupe d'un étudiant", il peut voir le changement en direct sur l'affichage du tableau à droite. De plus la base de données et également mis à jour. Lorsqu'un administrateur clique sur "Changer le groupe d'un étudiant", il peut voir le changement en direct sur l'affichage du tableau à droite. De plus la base de données et également mis à jour.
Nous pensons que l'ensemble des fonctionnalités demandés ont été faite. (Mis a part ce qui se trouve dans la catégorie: Fonctionnalitées manquantes et Fonctionnalitées non reussi). Nous pensons que l'ensemble des fonctionnalités demandés ont été faite. (Mis a part ce qui se trouve dans la catégorie: Fonctionnalitées manquantes et Fonctionnalitées non reussi).
### Tests montrant des bugs ### Tests montrant des bugs
Nous avons fait essayer notre application à d'autres étudiants, dont Kilian Moulin. Il a pu détecter des bugs. Nous avons fait essayer notre application à d'autres étudiants, dont Kilian Moulin. Il a pu détecter des bugs.
Lors d'un clique sur "Affichage" puis "Plein écran" ou bien "Fenêtré", les différents onglets pour changer de vue de "Menu" disparaissent. Ce qui fait que nous sommes alors coincés sur la vue choisie. Lors d'un clique sur "Affichage" puis "Plein écran" ou bien "Fenêtré", les différents onglets pour changer de vue de "Menu" disparaissent. Ce qui fait que nous sommes alors coincés sur la vue choisie.
Si l'utilisateur se rend la vue Administrateur et qu'il choisit "Changer le groupe d'un étudiant" et que l'utilisateur se met ensuite sur la vue professeur ou bien élève en passant par le menu alors il peut déplacer des élèves sans être administrateur. Si l'utilisateur se rend la vue Administrateur et qu'il choisit "Changer le groupe d'un étudiant" et que l'utilisateur se met ensuite sur la vue professeur ou bien élève en passant par le menu alors il peut déplacer des élèves sans être administrateur.
## Conclusions ## Conclusions
### Conclusions personnelles ### Conclusions personnelles
Bilal: J'ai trouvé ce projet intéressant à faire. Il a demandé une mobilisation de quasi toutes les connaissances que nous avons pu acquerir dans le BUT2. Ce que je trouve dommage, c'est que nous étions restraint par l'API. Bilal: J'ai trouvé ce projet intéressant à faire. Il a demandé une mobilisation de quasi toutes les connaissances que nous avons pu acquerir dans le BUT2. Ce que je trouve dommage, c'est que nous étions restraint par l'API.
Felix: Ce Felix: Ce
Romain: () Romain: ()
### Conclusion générale ### Conclusion générale
Ce projet a été un challenge pour nous tous dans le projet. Tout d'abord en raison de sa complexité mais également car nous n'avions jamais travaillé ensemble au paravant. Nous sommes assez fier du rendu du projet mais nous aurions aimé rajouté plus de fonctionnalitées. Nous avons eu des problèmes sur la repartition des tâches à faire. Nous avons pu mettre en valeur les atouts de chacun dans se projet, Bilal pour l'utilisation de l'API et les fonctionnalités. Romain a pu mettre en avant ses compétences pour créer une interface intuitive et agréable à regarder. Félix a pu organiser les tâches à faire, aider lors de bug en faisaint du pair programming et la rédaction du rapport ainsi que la base de données. Ce projet a été un challenge pour nous tous dans le projet. Tout d'abord en raison de sa complexité mais également car nous n'avions jamais travaillé ensemble au paravant. Nous sommes assez fier du rendu du projet mais nous aurions aimé rajouté plus de fonctionnalitées. Nous avons eu des problèmes sur la repartition des tâches à faire. Nous avons pu mettre en valeur les atouts de chacun dans se projet, Bilal pour l'utilisation de l'API et les fonctionnalités. Romain a pu mettre en avant ses compétences pour créer une interface intuitive et agréable à regarder. Félix a pu organiser les tâches à faire, aider lors de bug en faisaint du pair programming et la rédaction du rapport ainsi que la base de données.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,47 +1,47 @@
package API; package API;
public interface Requete extends MonPrint { public interface Requete extends MonPrint {
/** /**
* Recuperer l'id de l'etudiant * Recuperer l'id de l'etudiant
* *
* @return l'id de l'etudiant a l'origine du message * @return l'id de l'etudiant a l'origine du message
* */ * */
public int getEtuId(); public int getEtuId();
/** /**
* Recuperer le message * Recuperer le message
* */ * */
public String getMessage(); public String getMessage();
/** /**
* Recuperer l'id d'un message * Recuperer l'id d'un message
* *
* @return l'id du message * @return l'id du message
* */ * */
public int getIdMessage(); public int getIdMessage();
/** /**
* Recuperer le type de la requete * Recuperer le type de la requete
* *
* @return le type de la requete 2 ou 1 * @return le type de la requete 2 ou 1
* */ * */
public int getType(); public int getType();
/** /**
* Recuperer le groupe que l'etudiant veut rejoindre * Recuperer le groupe que l'etudiant veut rejoindre
* */ * */
public int getWitchGroupe(); public int getWitchGroupe();
/** /**
* Recuperer le statut de la requete * Recuperer le statut de la requete
* */ * */
public String getStatut(); public String getStatut();
/** /**
* @see MonPrint * @see MonPrint
* NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici. * NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici.
*/ */
public default String monPrint() { public default String monPrint() {
return null; return null;
} }
} }

View File

@ -1,51 +1,51 @@
package MNP; package MNP;
import API.Requete; import API.Requete;
public class RequeteNP implements Requete { public class RequeteNP implements Requete {
private final int id; private final int id;
private final String message; private final String message;
private final int etuSource; private final int etuSource;
private final int type; private final int type;
private final int witchGroupe; private final int witchGroupe;
private final String status; private final String status;
public RequeteNP(int id, String message, int etuSource, int type, int witchGroupe, String status) { public RequeteNP(int id, String message, int etuSource, int type, int witchGroupe, String status) {
this.id = id; this.id = id;
this.message = message; this.message = message;
this.etuSource = etuSource; this.etuSource = etuSource;
this.type = type; this.type = type;
this.witchGroupe = witchGroupe; this.witchGroupe = witchGroupe;
this.status = status; this.status = status;
} }
@Override @Override
public int getEtuId() { public int getEtuId() {
return this.etuSource; return this.etuSource;
} }
@Override @Override
public String getMessage() { public String getMessage() {
return this.message; return this.message;
} }
@Override @Override
public int getIdMessage() { public int getIdMessage() {
return this.id; return this.id;
} }
@Override @Override
public int getType() { public int getType() {
return this.type; return this.type;
} }
@Override @Override
public int getWitchGroupe() { public int getWitchGroupe() {
return this.witchGroupe; return this.witchGroupe;
} }
@Override @Override
public String getStatut() { public String getStatut() {
return this.status; return this.status;
} }
} }

View File

@ -17,7 +17,9 @@ import java.util.Iterator;
import org.mariadb.jdbc.*; import org.mariadb.jdbc.*;
/** /**
* <p>Methodes pour les interaction avec une base de donnees</p> * <p>
* Methodes pour les interaction avec une base de donnees
* </p>
* *
* @author <a href="https://github.com/lalBi94">Bilal Boudjemline</a> * @author <a href="https://github.com/lalBi94">Bilal Boudjemline</a>
*/ */
@ -38,12 +40,13 @@ public class BDatabase {
try { try {
Class.forName("org.mariadb.jdbc.Driver"); Class.forName("org.mariadb.jdbc.Driver");
} catch(ClassNotFoundException e) { } catch (ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
this.sharedObject = DriverManager.getConnection(this.db_host + this.db_name, this.db_user, this.db_password); this.sharedObject = DriverManager.getConnection(this.db_host + this.db_name, this.db_user,
this.db_password);
this.status = true; this.status = true;
} catch (SQLException e) { } catch (SQLException e) {
System.out.println("Erreur de liaison avec la base de donnees."); System.out.println("Erreur de liaison avec la base de donnees.");
@ -61,12 +64,12 @@ public class BDatabase {
ArrayList<String> toReturn = new ArrayList<String>(); ArrayList<String> toReturn = new ArrayList<String>();
ResultSet rs = this.sharedObject.prepareStatement(request).executeQuery(); ResultSet rs = this.sharedObject.prepareStatement(request).executeQuery();
for(int i = 0; rs.next(); i++) { for (int i = 0; rs.next(); i++) {
toReturn.add(i, String.valueOf(rs.getString(1))); toReturn.add(i, String.valueOf(rs.getString(1)));
} }
return toReturn; return toReturn;
} catch(SQLException e) { } catch (SQLException e) {
System.out.println("Erreur de la requete : " + e); System.out.println("Erreur de la requete : " + e);
return null; return null;
} }
@ -87,17 +90,17 @@ public class BDatabase {
Iterator<String> iteVal = Arrays.stream(value).iterator(); Iterator<String> iteVal = Arrays.stream(value).iterator();
collumns.append("("); collumns.append("(");
while(iteCol.hasNext()) { while (iteCol.hasNext()) {
collumns.append(iteCol.next()).append(", "); collumns.append(iteCol.next()).append(", ");
} }
collumns.setLength(collumns.length()-2); collumns.setLength(collumns.length() - 2);
collumns.append(")"); collumns.append(")");
values.append("("); values.append("(");
while(iteVal.hasNext()) { while (iteVal.hasNext()) {
values.append("\"").append(iteVal.next()).append("\"").append(", "); values.append("\"").append(iteVal.next()).append("\"").append(", ");
} }
values.setLength(values.length()-2); values.setLength(values.length() - 2);
values.append(")"); values.append(")");
String request = "INSERT INTO " + table + collumns + " VALUES" + values + ";"; String request = "INSERT INTO " + table + collumns + " VALUES" + values + ";";
@ -107,13 +110,14 @@ public class BDatabase {
this.sharedObject.prepareStatement(request).executeQuery(); this.sharedObject.prepareStatement(request).executeQuery();
System.out.println("Succes: " + request); System.out.println("Succes: " + request);
return true; return true;
} catch(SQLException e) { } catch (SQLException e) {
return false; return false;
} }
} }
/** /**
* Faire des requetes de type UPDATE SET (il y aura plus d'argument prochainement). * Faire des requetes de type UPDATE SET (il y aura plus d'argument
* prochainement).
* *
* @param request La requete * @param request La requete
* @return Si oui ou non ca a fonctionne * @return Si oui ou non ca a fonctionne
@ -121,8 +125,9 @@ public class BDatabase {
public boolean updateRow(String request) { public boolean updateRow(String request) {
try { try {
this.sharedObject.prepareStatement(request).executeQuery(); this.sharedObject.prepareStatement(request).executeQuery();
System.out.println("Succes:" + request);
return true; return true;
} catch(SQLException e) { } catch (SQLException e) {
return false; return false;
} }
} }
@ -149,31 +154,27 @@ public class BDatabase {
* Recuperer la liste des etudiants (FIProjet Contexte) * Recuperer la liste des etudiants (FIProjet Contexte)
* *
* @return La liste des etudiants * @return La liste des etudiants
* */ */
public ArrayList<Etudiant> getEtuList() { public ArrayList<Etudiant> getEtuList() {
ArrayList<Etudiant> listEtu = new ArrayList<>(); ArrayList<Etudiant> listEtu = new ArrayList<>();
ArrayList<String> studPrenom = this.fetchAll("SELECT prenom FROM fi_eleves"); ArrayList<String> studPrenom = this.fetchAll("SELECT prenom FROM fi_eleves");
ArrayList<String> studNom = this.fetchAll("SELECT nom FROM fi_eleves"); ArrayList<String> studNom = this.fetchAll("SELECT nom FROM fi_eleves");
ArrayList<String> studGroupe = this.fetchAll("SELECT groupe FROM fi_eleves"); ArrayList<String> studGroupe = this.fetchAll("SELECT groupe FROM fi_eleves");
for(int i = 0; i <= studPrenom.size()-1; i++) { for (int i = 0; i <= studPrenom.size() - 1; i++) {
if(studPrenom.get(i) != null && studNom.get(i) != null && studGroupe.get(i) != null) { if (studPrenom.get(i) != null && studNom.get(i) != null && studGroupe.get(i) != null) {
try { try {
listEtu.add( listEtu.add(
new EtudiantNP( new EtudiantNP(
studNom.get(i), studNom.get(i),
studPrenom.get(i), studPrenom.get(i),
Integer.parseInt(studGroupe.get(i), 10) Integer.parseInt(studGroupe.get(i), 10)));
) } catch (NumberFormatException ignore) {
);
} catch(NumberFormatException ignore) {
listEtu.add( listEtu.add(
new EtudiantNP( new EtudiantNP(
studNom.get(i), studNom.get(i),
studPrenom.get(i), studPrenom.get(i),
-1 -1));
)
);
} }
} else { } else {
System.out.println("[!] Erreur lors du chargement de la liste des etudiants."); System.out.println("[!] Erreur lors du chargement de la liste des etudiants.");
@ -190,32 +191,28 @@ public class BDatabase {
* Recuperer la liste des groupes (FIProjet contexte) * Recuperer la liste des groupes (FIProjet contexte)
* *
* @return La liste des groupes * @return La liste des groupes
* */ */
public ArrayList<Groupe> getGroupeList() { public ArrayList<Groupe> getGroupeList() {
ArrayList<Groupe> listGroupe = new ArrayList<>(); ArrayList<Groupe> listGroupe = new ArrayList<>();
ArrayList<String> groupeId = this.fetchAll("SELECT id FROM fi_groupe"); ArrayList<String> groupeId = this.fetchAll("SELECT id FROM fi_groupe");
ArrayList<String> groupeNom = this.fetchAll("SELECT nom FROM fi_groupe"); ArrayList<String> groupeNom = this.fetchAll("SELECT nom FROM fi_groupe");
ArrayList<String> groupeMin = this.fetchAll("SELECT min FROM fi_groupe"); ArrayList<String> groupeMin = this.fetchAll("SELECT min FROM fi_groupe");
ArrayList<String> groupeMax = this.fetchAll("SELECT max FROM fi_groupe"); ArrayList<String> groupeMax = this.fetchAll("SELECT max FROM fi_groupe");
for (int i = 0; i <= groupeNom.size() - 1; i++) {
for(int i = 0; i <= groupeNom.size()-1; i++) { if (groupeId.get(i) != null && groupeNom.get(i) != null && groupeMin.get(i) != null
if(groupeId.get(i) != null && groupeNom.get(i) != null && groupeMin.get(i) != null && groupeMax.get(i) != null) { && groupeMax.get(i) != null) {
listGroupe.add( listGroupe.add(
new GroupeNP( new GroupeNP(
Integer.parseInt(groupeId.get(i), 10), Integer.parseInt(groupeId.get(i), 10),
groupeNom.get(i), groupeNom.get(i),
Integer.parseInt(groupeMin.get(i), 10), Integer.parseInt(groupeMin.get(i), 10),
Integer.parseInt(groupeMax.get(i), 10) Integer.parseInt(groupeMax.get(i), 10)));
)
);
} else { } else {
System.out.println("[!] Erreur lors du chargement de la liste des groupes."); System.out.println("[!] Erreur lors du chargement de la liste des groupes.");
System.exit(-1); System.exit(-1);
} }
} }
System.out.println("[+] Liste des groupes chargees."); System.out.println("[+] Liste des groupes chargees.");
return listGroupe; return listGroupe;
} }
@ -223,7 +220,7 @@ public class BDatabase {
* Recuperer les requetes * Recuperer les requetes
* *
* @return la liste des requetes * @return la liste des requetes
* */ */
public ArrayList<Requete> getRequestList() { public ArrayList<Requete> getRequestList() {
ArrayList<Requete> toReturn = new ArrayList<>(); ArrayList<Requete> toReturn = new ArrayList<>();
ArrayList<String> requestId = this.fetchAll("SELECT id FROM fi_demandes"); ArrayList<String> requestId = this.fetchAll("SELECT id FROM fi_demandes");
@ -233,17 +230,15 @@ public class BDatabase {
ArrayList<String> requestType = this.fetchAll("SELECT type FROM fi_demandes"); ArrayList<String> requestType = this.fetchAll("SELECT type FROM fi_demandes");
ArrayList<String> requestStatut = this.fetchAll("SELECT statut FROM fi_demandes"); ArrayList<String> requestStatut = this.fetchAll("SELECT statut FROM fi_demandes");
for(int i = 0; i <= requestId.size()-1; i++) { for (int i = 0; i <= requestId.size() - 1; i++) {
toReturn.add( toReturn.add(
new RequeteNP( new RequeteNP(
Integer.parseInt(requestId.get(i)), Integer.parseInt(requestId.get(i)),
requestMessage.get(i), requestMessage.get(i),
Integer.parseInt(requestEtu.get(i)), Integer.parseInt(requestEtu.get(i)),
Integer.parseInt(requestType.get(i)), Integer.parseInt(requestType.get(i)),
Integer.parseInt(requestWitchGrup.get(i)), Integer.parseInt(requestWitchGrup.get(i)),
requestStatut.get(i) requestStatut.get(i)));
)
);
} }
return toReturn; return toReturn;

File diff suppressed because it is too large Load Diff

View File

@ -66,7 +66,7 @@ public class ProfView extends JPanel {
settings.setPadding(new Insets(0, 0, 0, 50)); settings.setPadding(new Insets(0, 0, 0, 50));
String[] groupeList = new String[this.g.size()]; String[] groupeList = new String[this.g.size()];
for(int i = 0; i <= this.g.size()-1; i++) { for (int i = 0; i <= this.g.size() - 1; i++) {
groupeList[i] = this.g.get(i).getName(); groupeList[i] = this.g.get(i).getName();
} }
@ -97,7 +97,7 @@ public class ProfView extends JPanel {
this.text.setPreferredSize(new Dimension(110, 30)); this.text.setPreferredSize(new Dimension(110, 30));
text.addKeyListener(new KeyAdapter() { text.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) { public void keyTyped(KeyEvent e) {
if (text.getText().length() >= 3 ) if (text.getText().length() >= 3)
e.consume(); e.consume();
} }
}); });

View File

@ -61,7 +61,7 @@ public class StudentView extends JPanel {
settings.setPadding(new Insets(0, 0, 0, 50)); settings.setPadding(new Insets(0, 0, 0, 50));
String[] groupeList = new String[this.g.size()]; String[] groupeList = new String[this.g.size()];
for(int i = 0; i <= this.g.size()-1; i++) { for (int i = 0; i <= this.g.size() - 1; i++) {
groupeList[i] = this.g.get(i).getName(); groupeList[i] = this.g.get(i).getName();
} }