# Ε.Α.Π. Πληροφορική
# Αθανασίου Κωνσταντίνος
# Α.Μ. 170612
# ΗΛΕ-52
# 2η Γραπτή Εργασία - ΠΛΗΠΡΟ
# Υποεργασία 3: ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΒΛΙΟΘΗΚΗΣ

def display_menu():
    print("\n=== ΣΥΣΤΗΜΑ ΒΙΒΛΙΟΘΗΚΗΣ ===")
    print("1. Εμφάνιση βιβλίων")
    print("2. Νέος δανεισμός")
    print("3. Επιστροφή βιβλίου")
    print("4. Στατιστικά βαθμολογίας")
    print("5. Έξοδος")

# Λεξικό βιβλιοθήκης
# Κάθε βιβλίο έχει ως "κλειδί" το ISBN του.
# Η τιμή κάθε κλειδιού είναι ένα δεύτερο λεξικό με τα στοιχεία του βιβλίου.
Library = {
    '9789604618020': {'titlos': 'Ιλιάδα', 'syggrafeas': 'Όμηρος', 'diathesimo': True},
    '9789604619126': {'titlos': '1984', 'syggrafeas': 'Όργουελ', 'diathesimo': True},
    '9789604617153': {'titlos': 'Ο Πρίγκιπας', 'syggrafeas': 'Μακιαβέλι', 'diathesimo': True},
    '9789604618884': {'titlos': 'Η Δημοκρατία', 'syggrafeas': 'Πλάτωνας', 'diathesimo': True}
}

# Λίστα με τα ονόματα των δανειζομένων
daneizomenoi = ['Πετρίδου Μαρία', 'Δημόκα Μαρία', 'Κοσμίδης Γεώργιος']

# Λεξικό που περιέχει τις βαθμολογίες που έχει λάβει κάθε βιβλίο
vathmologies = {
    '9789604618020': [4, 5, 4],
    '9789604619126': [5, 4, 5, 4],
    '9789604617153': [3, 4, 4],
    '9789604618884': [4, 3, 4, 4]
}



# Βήμα 1:Εμφάνιση των βιβλίων του λεξικού βιβλιοθήκης
def display_books():
   print("\n=== ΚΑΤΑΛΟΓΟΣ ΒΙΒΛΙΩΝ ===")
   print("ISBN | ΤΙΤΛΟΣ - ΣΥΓΓΡΑΦΕΑΣ | ΔΙΑΘΕΣΙΜΟΤΗΤΑ")
   print("-"*60)
   for ISBN, details in Library.items():
       if details["diathesimo"] == True:
           status = "ΔΙΑΘΕΣΙΜΟ"
       else:
           status = "ΔΑΝΕΙΣΜΕΝΟ"
       print(f"{ISBN} | {details['titlos']} - {details['syggrafeas']} - {status}")
       

# Βήμα 2: ΝΕΟΣ ΔΑΝΕΙΣΜΟΣ (με βάση το ISBN με έλεγχο)
def add_new_loan():
    isbn = input("Δώστε ISBN βιβλίου: ")
    if isbn in Library:
        if Library[isbn]['diathesimo'] == True:
            lender = input("Όνομα δανειζόμενου: ")
            Library[isbn]['diathesimo'] = False
            daneizomenoi.append(lender)
            print("Προστέθηκε νέος δανειζόμενος: ", lender)
            print("Δανειστήκατε επιτυχώς το βιβλίο: ", Library[isbn]['titlos'])
        else:
            print("Το βιβλίο είναι ήδη νοικιασμένο")
    else:        
        print("Δεν υπάρχει βιβλίο με αυτό το ISBN στη βιβλιοθήκη")
    

# Βήμα 3: ΕΠΙΣΤΡΟΦΗ ΒΙΒΛΙΟΥ (με βάση το ISBN με έλεγχο)
# -------------------------------
def return_book():
   isbn_return = input("Δώστε ISBN βιβλίου για επιστροφή: ")
   if isbn_return in Library:
       if Library[isbn_return]['diathesimo'] == False:
           Library[isbn_return]['diathesimo'] = True
           print("Επιστρέφετε το βιβλίο: ", Library[isbn_return]['titlos'])
           while True:
               rate_book = int(input("Βαθμολογία βιβλίου (1-5): "))
               if rate_book >= 1 and rate_book <= 5:
                   vathmologies[isbn_return].append(rate_book)
                   print("Ευχαριστούμε για την βαθμολογία")
                   break
               else:
                   print("Δώστε αριθμό από 1 έως 5!")
       else:
           print("Το βιβλίο δεν είναι δανεισμένο")           
   else:
       print("Το βιβλίο δέν υπάρχει στην βιβλιοθήκη ")

# Βήμα 4: ΣΤΑΤΙΣΤΙΚΑ ΒΑΘΜΟΛΟΓΙΑΣ (Εύρεση και εμφάνιση ΜΟ Βαθμολογιας κάθε βιβλίου
#                                 με 1 δεκαδικό ψηφίο και πλήθους αξιολογήσεων)
# -------------------------------
def display_rating_statistics():
    
    print("=== ΣΤΑΤΙΣΤΙΚΑ ΒΑΘΜΟΛΟΓΙΑΣ ===") 
    
    # Διατρέχουμε τα κλειδιά (ISBN) του λεξικού
    for isbn in Library:
        details = Library[isbn]  # Παίρνουμε τα στοιχεία του βιβλίου
        
        # Υπολογισμός μέσου όρου
        if isbn in vathmologies:
            lista_vathmwn = vathmologies[isbn]
            plithos = len(lista_vathmwn)
            if plithos > 0:
                mesos_oros = sum(lista_vathmwn) / plithos
            else:
                mesos_oros = 0.0
        else:
            plithos = 0
            mesos_oros = 0.0

        # ISBN | Τίτλος - Συγγραφέας | Βαθμός (από Χ αξιολογήσεις)
        print(f"{isbn} | {details['titlos']} - {details['syggrafeas']} | {mesos_oros:.1f} (από {plithos} αξιολογήσεις)")

# -------------------------------

print("=== ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΒΛΙΟΘΗΚΗΣ ===")

while True:
    display_menu()
    epilogi = input("Επιλογή (1-5): ")

    if epilogi == "1":
        display_books()
    elif epilogi == "2":
        add_new_loan()
    elif epilogi == "3":
        return_book()
    elif epilogi == "4":
        display_rating_statistics()
    elif epilogi == "5":
        print("Τέλος προγράμματος.")
        break
    else:
        print("Μη έγκυρη επιλογή, προσπαθήστε ξανά.")

