Untitled
unknown
plain_text
a year ago
5.0 kB
10
Indexable
import os
students = [] # Lista za studentariju prljavu
student_id_counter = 1 # Counter za generisanje ID
data_file = 'students.txt' # File za sejvovanje studentarije, ovde Studenti obitavaju
def add_student_to_file(student):
#Append Studentariju u text file.
with open(data_file, 'a') as file:
file.write(f"{student['id']},{student['name']},{student['grades']}\n")
def add_student_interactive():
#Dodaje novog studenta interaktivno sa ID-jem isto bi trebalo da pokrije ako neko ukuca nesto glupo
global student_id_counter # Ovo sranje mora ovako da se napise "global" zato sto ako ne napisem gleda ga samo kao lokalnu varijablu, morao za ovo sranje da gledam na netu objasnjenje
name = input("Enter student's name: ")
# Scenario ako slucajno nije slovo
if not name:
raise ValueError("Student name cannot be empty.")
#maleni while loop, trazi prompt od usera usranog sve dok ne ukuca "q" tj trazice da upisujes predmete dok ne stisnes to dugme brt
grades = {}
while True:
subject = input("Enter subject (or 'q' to quit): ")
if subject.lower() == 'q':
break
try:
grade = float(input(f"Enter grade for {subject}: "))
except ValueError:
print("Please enter a valid number for the grade.")
continue
# U slucaju da nije ocena, tj da nije broj i pojavi se bas ovaj tip error poruke.ps: mozemo da modifikujemo i da dodamo nesto, sta znam nemoj da me smaras.
if not isinstance(grade, (int, float)):
raise TypeError(f"Grade for {subject} must be a number.")
grades[subject] = grade
# Kreira novog studenta usranog sa sve ID-jem, ludnica jedna
student = {
'id': student_id_counter,
'name': name,
'grades': grades
}
students.append(student)
print(f"Added student: ID: {student_id_counter}, Name: {name}, Grades: {grades}")
# Append the student data to the file|mislim da ovde nema sta al ajde da komntarisem
add_student_to_file(student)
# Increment the ID counter for the next student|maleni counter klasicni
student_id_counter += 1
def update_grades():
#Promene ocena ako bas zelis
student_id = int(input("Enter student ID to update: "))
subject = input("Enter subject for which to update the grade: ")
# Trebalo bi da ga nadje Po ID-ju, studenta da nadje
for student in students:
if student['id'] == student_id:
# Ako postoji predmet
if subject in student['grades']:
try:
new_grade = float(input(f"Enter new grade for {subject}: "))
student['grades'][subject] = new_grade
print(f"Updated {student['name']}'s grade for {subject} to: {new_grade}")
# ovo da sejvuje, plus maleni value error ako izadje neki
save_students()
return
except ValueError:
print("Please enter a valid number for the grade.")
return
else:
print(f"No grade found for subject: {subject}")
return
print(f"Student with ID {student_id} not found.")
def save_students():
#Sacuvaj studentariju
with open(data_file, 'w') as file:
for student in students:
file.write(f"{student['id']},{student['name']},{student['grades']}\n")
def view_students():
#Pokazi mi studente
if not students:
print("No students available.")
return
#sledece linija bukvalno
print("\nStudents List:")
#neke crtice printa, izbacuje studentsku listu kao fiskalni racun od maksija
print("-" * 40)
for student in students:
print(f"ID: {student['id']}, Name: {student['name']}")
for subject, grade in student['grades'].items():
print(f" {subject}: {grade}")
print("-" * 40)
if os.path.exists(data_file):
with open(data_file, 'r') as file:
for line in file:
parts = line.strip().split(',')
student_id = int(parts[0])
name = parts[1]
grades = eval(parts[2]) # Konvertuje u dictionary
students.append({'id': student_id, 'name': name, 'grades': grades})
student_id_counter = max(student_id_counter, student_id + 1)
# Raspored funkcija se treba srediti, stavio sam da ide u txt fajl sve
# Treba testirati da se vidi da li pokrivamo sve scenarije ako neko izlupeta neke gluposti i upise npr "!" umesto ID
#NIKADA ME NECES ZAUSTAVITI SHOMI DA ISKOMENTARISM GLUPO KOD!!!
### neki meni da ubacim pa da ima sve ponudjene opcije sta da radi, sad mi palo na pamet dok pricam sa tobom
students = []
add_student_interactive()
update_grades()
view_students()
Editor is loading...
Leave a Comment