From 8b8209d9cee30048602bb75c4e5ee3b2bdf9fa8d Mon Sep 17 00:00:00 2001
From: Adrienucl <adrien.payen@student.uclouvain.be>
Date: Sun, 3 Dec 2023 12:37:31 +0100
Subject: [PATCH] project 95% done

---
 Data_Base.xlsx                                | Bin 0 -> 28989 bytes
 .../algorithme_gestion_etudiants.py           |  76 +++++++++++-------
 2 files changed, 46 insertions(+), 30 deletions(-)
 create mode 100644 Data_Base.xlsx

diff --git a/Data_Base.xlsx b/Data_Base.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..d9513acf2c25892a5e2e901484c9020144c85240
GIT binary patch
literal 28989
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

literal 0
HcmV?d00001

diff --git a/projet_personnel/algorithme_gestion_etudiants.py b/projet_personnel/algorithme_gestion_etudiants.py
index 49466a2..1de243a 100644
--- a/projet_personnel/algorithme_gestion_etudiants.py
+++ b/projet_personnel/algorithme_gestion_etudiants.py
@@ -539,54 +539,83 @@ def sort_descending(data):
     export_option(sorted_data)
 
 def sort_by_date(data):
+    data['Date of Birth'] = pd.to_datetime(data['Date of Birth'], format='%d/%m/%Y')
     sorted_data = data.sort_values(by='Date of Birth')
+    sorted_data['Date of Birth'] = sorted_data['Date of Birth'].dt.strftime('%d/%m/%Y')
     see_the_data(sorted_data, columns_to_show=['Firstname', 'Lastname', 'Date of Birth'])
     export_option(sorted_data)
 
 def sort_by_age(data):
-    data['Age'] = (pd.to_datetime('today') - pd.to_datetime(data['Date of Birth'])).astype('<m8[Y]')
+    data['Date of Birth'] = pd.to_datetime(data['Date of Birth'], format='%d/%m/%Y')
+    today = pd.to_datetime('today')
+    age_timedelta = today - data['Date of Birth']
+    data['Age'] = (age_timedelta / pd.Timedelta(days=365.25)).astype(int)
     sorted_data = data.sort_values(by='Age', ascending=True)
     see_the_data(sorted_data, columns_to_show=['Firstname', 'Lastname', 'Age'])
     export_option(sorted_data)
 
-
-
-
 def sort_by_matricule(data):
     sorted_data = data.sort_values(by='Matricule', ascending=True)
     see_the_data(sorted_data, columns_to_show=['Firstname', 'Lastname', 'Matricule'])
     export_option(sorted_data)
 
 def sort_by_academic_year(data):
-    sorted_data = data.sort_values(by='AcademicYear', ascending=True)
-    see_the_data(sorted_data, columns_to_show=['Firstname', 'Lastname', 'AcademicYear'])
+    sorted_data = data.sort_values(by='Academic Year', ascending=True)
+    see_the_data(sorted_data, columns_to_show=['Firstname', 'Lastname', 'Academic Year'])
     export_option(sorted_data)
 
 
-
-
 # attention il faut pouvoir matcher ceci avec les résultats obtenus
 def sort_passed(data):
-    passed_data = data[data['PassedCourse'] == True]
-    see_the_data(passed_data, columns_to_show=['Firstname', 'Lastname', 'PassedCourse'])
+    course_columns = data.columns[11:]
+    print("Available Courses:")
+    for i, course in enumerate(course_columns, 1):
+        print(f"{i}. {course}")
+    
+    while True:
+        try:
+            choice = int(input("Enter the number of the course you want to display: "))
+            selected_course = course_columns[choice - 1]
+            break
+        except (ValueError, IndexError):
+            print("Invalid choice. Please enter a valid number.")
+
+    passed_data = data[data[selected_course] >= 10]
+    
+    # Notez que 'selected_course' doit être passé comme une liste pour inclure la note du cours dans 'columns_to_show'
+    see_the_data(passed_data, columns_to_show=['Firstname', 'Lastname', selected_course])
     export_option(passed_data)
 
-def sort_failed(data):
-    failed_data = data[data['PassedCourse'] == False]
-    see_the_data(failed_data, columns_to_show=['Firstname', 'Lastname', 'PassedCourse'])
-    export_option(failed_data)
 
 
+def sort_failed(data):
+    course_columns = data.columns[11:]
+    print("Available Courses:")
+    for i, course in enumerate(course_columns, 1):
+        print(f"{i}. {course}")
+    
+    while True:
+        try:
+            choice = int(input("Enter the number of the course you want to display: "))
+            selected_course = course_columns[choice - 1]
+            break
+        except (ValueError, IndexError):
+            print("Invalid choice. Please enter a valid number.")
 
+    failed_data = data[data[selected_course] < 10]
+    
+    # Notez que 'selected_course' doit être passé comme une liste pour inclure la note du cours dans 'columns_to_show'
+    see_the_data( failed_data, columns_to_show=['Firstname', 'Lastname', selected_course])
+    export_option( failed_data)
 
 
 def sort_bachelor(data):
-    bachelor_data = data[data['Academic Year'] == 'BAC1' or 'BAC2' or 'BAC3']
+    bachelor_data = data[data['Academic Year'].isin(['BAC1', 'BAC2', 'BAC3'])].sort_values(by=['Academic Year', 'Lastname'], ascending=[True, True])
     see_the_data(bachelor_data, columns_to_show=['Firstname', 'Lastname', 'Academic Year'])
     export_option(bachelor_data)
 
 def sort_master(data):
-    master_data = data[data['Academic Year'] == 'MA1' or 'MA2']
+    master_data = data[data['Academic Year'].isin(['MA1', 'MA2'])].sort_values(by=['Academic Year', 'Lastname'], ascending=[True, True])
     see_the_data(master_data, columns_to_show=['Firstname', 'Lastname', 'Academic Year'])
     export_option(master_data)
 
@@ -598,6 +627,7 @@ def export_option(data):
         filename = filename + '.xlsx'
         export_data_to_excel(data, filename)
 
+
 def export_data_to_excel(data, filename):
     data.to_excel(filename, index=False)
     print(f"\nData exported to {filename}")
@@ -613,20 +643,6 @@ def see_the_data(data, columns_to_show=None):
 
 
 
-# Example usage
-# Replace 'data' with the name of your DataFrame
-
-
-
-
-
-
-
-
-
-
-
-
 # STATS
 
 def statistics_analysis(data):
-- 
GitLab