📚 ΕΡΓΑΣΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Σύστημα Διαχείρισης Βαθμολογίας Μαθητών

📋 Πληροφορίες Εργασίας

Μάθημα: Προγραμματισμός σε C
Θεματική Ενότητα: Κεφάλαια 1-5 (Βασικές Έννοιες, Μεταβλητές, Δομές Ελέγχου, Πίνακες, Συναρτήσεις)
Βαθμολογία: 10 μονάδες
Απαιτούμενες Λειτουργίες: 11 πλήρεις λειτουργίες
Τρόπος Υποβολής: Αρχείο .c με πλήρη σχολιασμό

🎯 Περιγραφή Εργασίας

Να αναπτύξετε ένα πρόγραμμα σε γλώσσα C που θα λειτουργεί ως σύστημα διαχείρισης βαθμολογίας μαθητών. Το πρόγραμμά σας θα πρέπει να διαβάζει τους βαθμούς 5 μαθητών, να υπολογίζει στατιστικά στοιχεία και να εμφανίζει τα αποτελέσματα με οργανωμένο τρόπο μέσω ενός διαδραστικού μενού.

📋 Απαιτήσεις - Οι 11 Λειτουργίες

Το πρόγραμμά σας θα πρέπει να υλοποιεί όλες τις παρακάτω 11 λειτουργίες:

1Μενού επιλογών με επανάληψη

  • Δημιουργήστε μενού με επιλογές:
    1. Εισαγωγή βαθμών
    2. Εμφάνιση στατιστικών
    3. Αναζήτηση μαθητή
    4. Έξοδος
  • Χρησιμοποιήστε βρόχο do-while για επανάληψη
  • Χρησιμοποιήστε switch-case για τις επιλογές

2Δημιουργία πινάκων για δεδομένα

  • Πίνακας int grades[5] για 5 βαθμούς
  • Πίνακας char names[5][50] για τα ονόματα (5 μαθητές, 50 χαρακτήρες)

3Εισαγωγή ονομάτων και βαθμών με έλεγχο

  • Διαβάστε το όνομα κάθε μαθητή με scanf("%s", names[i])
  • Διαβάστε 5 βαθμούς με έλεγχο ορίων (0-100)
  • Αν ο βαθμός είναι εκτός ορίων, ζητήστε ξανά

4Υπολογισμός μέσου όρου

  • Υπολογίστε το άθροισμα με βρόχο
  • Διαιρέστε με 5 (χρησιμοποιήστε (float) για δεκαδικά)
  • Εμφανίστε με 2 δεκαδικά ψηφία

5Εύρεση μέγιστου και ελάχιστου βαθμού

  • Βρείτε τον υψηλότερο βαθμό και το όνομα του μαθητή
  • Βρείτε τον χαμηλότερο βαθμό και το όνομα του μαθητή

6Μετατροπή αριθμητικού βαθμού σε γράμμα

  • 90-100 → A (Άριστα)
  • 80-89 → B (Πολύ Καλά)
  • 70-79 → C (Καλά)
  • 60-69 → D (Μέτρια)
  • 0-59 → F (Αποτυχία)

7Καταμέτρηση επιτυχόντων

  • Μετρήστε πόσοι μαθητές πέρασαν (βαθμός ≥ 50)
  • Υπολογίστε το ποσοστό επιτυχίας

8Ταξινόμηση βαθμών

  • Ταξινομήστε τους βαθμούς από τον μικρότερο στον μεγαλύτερο
  • Εμφανίστε τους ταξινομημένους βαθμούς

9Αναζήτηση μαθητή

  • Ζητήστε όνομα μαθητή
  • Αναζητήστε συγκρίνοντας χαρακτήρα-χαρακτήρα
  • Εμφανίστε τον βαθμό και το γράμμα αν βρεθεί

10Εμφάνιση πλήρων στατιστικών

  • Λίστα όλων των μαθητών με βαθμούς και γράμματα
  • Μέσος όρος με γράμμα
  • Μέγιστος/ελάχιστος με ονόματα
  • Αριθμός και ποσοστό επιτυχόντων
  • Ταξινομημένοι βαθμοί

11Οργάνωση και εμφάνιση

  • Ευανάγνωστη μορφοποίηση
  • Τίτλοι και διαχωριστές
  • Το μενού επαναλαμβάνεται μετά από κάθε επιλογή

💻 Παραδείγματα Εκτέλεσης

Παράδειγμα 1: Εκκίνηση και Μενού

$ ./sistema_bathmologias
==================================== ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΑΣ ==================================== --- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 1

Παράδειγμα 2: Εισαγωγή Βαθμών

==================================== ΕΙΣΑΓΩΓΗ ΒΑΘΜΩΝ ==================================== Εισάγετε όνομα μαθητή 1: Γιώργος Εισάγετε βαθμό (0-100): 85 Εισάγετε όνομα μαθητή 2: Μαρία Εισάγετε βαθμό (0-100): 92 Εισάγετε όνομα μαθητή 3: Νίκος Εισάγετε βαθμό (0-100): 78 Εισάγετε όνομα μαθητή 4: Ελένη Εισάγετε βαθμό (0-100): 65 Εισάγετε όνομα μαθητή 5: Κώστας Εισάγετε βαθμό (0-100): 88 ✅ Οι βαθμοί αποθηκεύτηκαν επιτυχώς!

Παράδειγμα 3: Έλεγχος Ορίων

Εισάγετε όνομα μαθητή 1: Πέτρος Εισάγετε βαθμό (0-100): 105 ❌ Μη έγκυρος βαθμός! Πρέπει να είναι μεταξύ 0 και 100. Εισάγετε βαθμό (0-100): 95 Εισάγετε όνομα μαθητή 2: Άννα Εισάγετε βαθμό (0-100): -5 ❌ Μη έγκυρος βαθμός! Πρέπει να είναι μεταξύ 0 και 100. Εισάγετε βαθμό (0-100): 72

Παράδειγμα 4: Εμφάνιση Στατιστικών (Πλήρης Έξοδος)

==================================== ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΑΣ ==================================== --- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 2 ==================================== ΣΤΑΤΙΣΤΙΚΑ ΒΑΘΜΟΛΟΓΙΑΣ ==================================== 📊 ΛΙΣΤΑ ΜΑΘΗΤΩΝ: ------------------------------------ 1. Γιώργος : 85 (B - Πολύ Καλά) 2. Μαρία : 92 (A - Άριστα) 3. Νίκος : 78 (C - Καλά) 4. Ελένη : 65 (D - Μέτρια) 5. Κώστας : 88 (B - Πολύ Καλά) 📈 ΓΕΝΙΚΑ ΣΤΑΤΙΣΤΙΚΑ: ------------------------------------ Μέσος όρος : 81.60 (B - Πολύ Καλά) Μέγιστος βαθμός: 92 (A) - Μαρία Ελάχιστος βαθμός: 65 (D) - Ελένη ✅ ΕΠΙΤΥΧΟΝΤΕΣ: ------------------------------------ Αριθμός επιτυχόντων: 5/5 μαθητές Ποσοστό επιτυχίας : 100.00% 📋 ΤΑΞΙΝΟΜΗΜΕΝΟΙ ΒΑΘΜΟΙ: ------------------------------------ 65, 78, 85, 88, 92

Παράδειγμα 5: Αναζήτηση Μαθητή (Βρέθηκε)

--- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 3 ==================================== ΑΝΑΖΗΤΗΣΗ ΜΑΘΗΤΗ ==================================== Εισάγετε όνομα μαθητή: Μαρία ✓ Μαθητής βρέθηκε! ------------------------------------ Όνομα: Μαρία Βαθμός: 92 Αξιολόγηση: A (Άριστα)

Παράδειγμα 6: Αναζήτηση Μαθητή (Δεν Βρέθηκε)

==================================== ΑΝΑΖΗΤΗΣΗ ΜΑΘΗΤΗ ==================================== Εισάγετε όνομα μαθητή: Πέτρος ❌ Ο μαθητής 'Πέτρος' δεν βρέθηκε στο σύστημα.

Παράδειγμα 7: Έξοδος από το Πρόγραμμα

--- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 4 Ευχαριστούμε! Το πρόγραμμα τερματίστηκε.

Παράδειγμα 8: Μη Έγκυρη Επιλογή Μενού

--- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 9 ❌ Μη έγκυρη επιλογή! Παρακαλώ επιλέξτε 1-4. --- ΜΕΝΟΥ --- 1. Εισαγωγή βαθμών 2. Εμφάνιση στατιστικών 3. Αναζήτηση μαθητή 4. Έξοδος Επιλέξτε λειτουργία (1-4): 2 ⚠️ Παρακαλώ εισάγετε πρώτα τους βαθμούς (επιλογή 1)!

📊 Κριτήρια Αξιολόγησης

Κριτήριο Ποσοστό Περιγραφή
Ορθότητα 35% Το πρόγραμμα λειτουργεί σωστά και δίνει σωστά αποτελέσματα
Πληρότητα 35% Υλοποίηση όλων των 11 απαιτούμενων λειτουργιών
Ποιότητα κώδικα 20% Ευκρίνεια, οργάνωση, σχόλια, ονόματα μεταβλητών
Έλεγχος σφαλμάτων 10% Χειρισμός ακραίων περιπτώσεων και εσφαλμένων δεδομένων

⚠️ Σημαντική Σημείωση

Όλες οι 11 λειτουργίες πρέπει να υλοποιηθούν πλήρως για να θεωρηθεί επιτυχημένη η εργασία. Μη ολοκληρωμένες εργασίες θα βαθμολογούνται αναλογικά.

📤 Οδηγίες Υποβολής

Τι πρέπει να περιέχει η υποβολή σας:

  1. Αρχείο κώδικα (.c): Με όνομα onoma_epiteto_AM.c
  2. Σχόλια στον κώδικα:
    • Στην αρχή: Όνομα, ΑΜ, ημερομηνία
    • Σε κάθε συνάρτηση: Τι κάνει
    • Σε σημαντικά σημεία: Εξήγηση λογικής
  3. Μεταγλωττισμένο πρόγραμμα: Βεβαιωθείτε ότι μεταγλωττίζεται χωρίς σφάλματα

💡 Συμβουλές Επιτυχίας

✅ Πώς να Ξεκινήσετε

  1. Δημιουργήστε πρώτα το βασικό μενού με do-while και switch
  2. Υλοποιήστε την εισαγωγή βαθμών με έλεγχο
  3. Προσθέστε μία-μία τις υπόλοιπες λειτουργίες
  4. Δοκιμάστε κάθε λειτουργία ξεχωριστά
  5. Τέλος, ενοποιήστε όλα μαζί

⚠️ Συνηθισμένα Λάθη που Πρέπει να Αποφύγετε

  • ❌ Ξεχνάτε τον έλεγχο ορίων (0-100) στην εισαγωγή βαθμών
  • ❌ Δεν βάζετε break στον βρόχο αναζήτησης
  • ❌ Ξεχνάτε το (float) στη διαίρεση για δεκαδικά
  • ❌ Οι πίνακες ξεκινούν από 0, όχι από 1
  • ❌ Ξεχνάτε να αρχικοποιείτε τις μεταβλητές

✅ Checklist Πριν την Υποβολή

Ελέγξτε τα παρακάτω:

  • ☐ Το πρόγραμμα μεταγλωττίζεται χωρίς errors
  • ☐ Χρησιμοποιώ συναρτήσεις για οργάνωση του κώδικα
  • ☐ Όλες οι 11 λειτουργίες δουλεύουν
  • ☐ Το μενού επαναλαμβάνεται μέχρι την έξοδο
  • ☐ Ο έλεγχος ορίων (0-100) λειτουργεί
  • ☐ Η αναζήτηση βρίσκει ΚΑΙ δεν βρίσκει σωστά
  • ☐ Τα στατιστικά υπολογίζονται σωστά
  • ☐ Η ταξινόμηση δουλεύει
  • ☐ Έχω σχόλια στον κώδικα
  • ☐ Το αρχείο έχει σωστό όνομα

🎓 Τι θα μάθετε από αυτή την εργασία

Με την ολοκλήρωση αυτής της εργασίας θα έχετε εξασκηθεί σε:

  • ✅ Δομημένο προγραμματισμό με συναρτήσεις
  • ✅ Διαδραστικά μενού με switch-case
  • ✅ Χειρισμό πινάκων (int και char)
  • ✅ Αλγόριθμους αναζήτησης και ταξινόμησης
  • ✅ Έλεγχο εισόδου και χειρισμό σφαλμάτων
  • ✅ Υπολογισμούς και στατιστική ανάλυση
  • ✅ Χρήση συναρτήσεων με παραμέτρους και επιστροφή τιμών

Καλή επιτυχία με την εργασία σας! 🚀