Untitled

 avatar
unknown
plain_text
13 days ago
4.7 kB
6
Indexable
import sys

FILE_NAME = "students.cve"

def load_data():
    try:
        with open(FILE_NAME, "r") as file:
            return file.readlines()
    except (FileNotFoundError):
        return []

def save_data(data):
    f = open(FILE_NAME, "w")
    f.write("\n".join(data))
    f.close()

def add_student(student_id, name, surname, gpa):
    data = load_data()
    data.append(student_id + "," + name + "," + surname + "," + gpa)
    save_data(data)
    print("Student added successfully.")

def delete_student(student_id):
    data = load_data()
    updated_data = []

    for student in data:
        if student.split(",")[0] != student_id:
            updated_data.append(student)

    save_data(updated_data)
    print("Student deleted successfully.")

def update_student(student_id, name=None, surname=None, gpa=None):
    data = load_data()

    student_old = None
    student_new = None

    for student in data:
        data_student = student.split(",")

        data_student_id = data_student[0]
        data_student_name = data_student[1]
        data_student_surname = data_student[2]
        data_student_gpa = data_student[3]

        if data_student_id == student_id:

            if name:
                data_student_name = name
            if surname:
                data_student_surname = surname
            if gpa:
                data_student_gpa = gpa

            student = data_student_id + "," + data_student_name + "," + data_student_surname + "," + data_student_gpa
            break

    save_data(data)
    print("Student updated successfully.")

def search_by_id(student_id):
    data = load_data()
    for student in data:
        if student.split(",")[0] == student_id:
            print(student)
            return
    print("Student not found.")

def search_by_name_surname(name, surname):
    data = load_data()
    for student in data:
        if student.split(",")[1] and student.split(",")[2] == surname:
            print(student)
            return
    print("Student not found.")

def display_all_students():
    data = load_data()
    if not data:
        print("No students available.")
        return

    total_gpa = 0
    for student in data:
        print(student)
        total_gpa += float(student.split()[3])

    average_gpa = total_gpa / len(data)
    print(f"\nAverage GPA of all students: {average_gpa:.2f}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python script.py <command> [arguments]")
        print("commands:")
        print("- add <id> <name> <surname> <gpa> (Adds student to the file)")
        print("- update <id> <name> <surname> <gpa> (Updates student's information by their ID)")
        print("- search_by_id <id> (Finds student by their ID)")
        print("- search_by_name <name> <surname> (Finds student by their name & surname)")
        print("- delete <id> (Deletes student from file based on their ID)")
        print("- list (Lists all students)")
        sys.exit(1)

    command = sys.argv[1].lower()

    if command == "add":
        if len(sys.argv) != 6:
            print("Usage: python script.py add <id> <name> <surname> <gpa>")
        else:
            _, _, student_id, name, surname, gpa = sys.argv
            add_student(student_id, name, surname, gpa)

    elif command == "delete":
        if len(sys.argv) != 3:
            print("Usage: python script.py delete <id>")
        else:
            _, _, student_id = sys.argv
            delete_student(student_id)

    elif command == "update":
        if len(sys.argv) < 3:
            print("Usage: python script.py update <id> [name] [surname] [gpa]")
        else:
            student_id = sys.argv[2]
            name = sys.argv[3] if len(sys.argv) > 3 else None
            surname = sys.argv[4] if len(sys.argv) > 4 else None
            gpa = sys.argv[5] if len(sys.argv) > 5 else None
            update_student(student_id, name, surname, gpa)

    elif command == "search_by_id":
        if len(sys.argv) != 3:
            print("Usage: python script.py search_by_id <id>")
        else:
            _, _, student_id = sys.argv
            search_by_id(student_id)

    elif command == "search_by_name":
        if len(sys.argv) != 4:
            print("Usage: python script.py search_by_name <name> <surname>")
        else:
            _, _, name, surname = sys.argv
            search_by_name_surname(name, surname)

    elif command == "list":
        display_all_students()

    else:
        print("Invalid command. Available commands: add, delete, update, search_by_id, search_by_name, list.")
Leave a Comment