from csv import *
from tkinter import *
def get_next_id():
try:
with open("Exel_Peractis_Code.csv", mode='r', newline='') as f:
rows = list(DictReader(f))
if not rows:
return 1
return int(rows[-1]['id']) + 1
except FileNotFoundError:
return 1
def writer_csv():
with open("Exel_Peractis_Code.csv", mode = "a", newline="") as file:
dict_students = {'id':get_next_id(),'name':name.get(),'student_number':student_number.get(),'score':score.get()}
writerer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])
with open('Exel_Peractis_Code.csv', mode = 'r', newline="") as fr:
if len(list(DictReader(fr))) == 0:
writerer.writeheader()
writerer.writerow(dict_students)
def edit_csv():
target_id = edit_id.get().strip()
if not target_id:
print("No id entered")
return
new_data = []
with open("Exel_Peractis_Code.csv", mode='r', newline='') as file:
reader = DictReader(file)
for row in reader:
if row['id'] == target_id:
row['name'] = name_edit.get()
row['student_number'] = student_number_edit.get()
row['score'] = score_edit.get()
new_data.append(row)
with open("Exel_Peractis_Code.csv", mode='w', newline='') as file:
writer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])
writer.writeheader()
writer.writerows(new_data)
def delete_csv():
target_id = id_delete.get().strip()
if not target_id:
print("No id entered")
return
new_data = []
found = False
with open("Exel_Peractis_Code.csv", mode='r', newline='') as file:
reader = DictReader(file)
for row in reader:
if row['id'] != target_id:
new_data.append(row)
else:
found = True
if found:
with open("Exel_Peractis_Code.csv", mode='w', newline='') as file:
writer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])
writer.writeheader()
writer.writerows(new_data)
print(f"Row with id {target_id} deleted.")
else:
print(f"No row with id {target_id} found.")
main = Tk()
main.geometry("700x500")
main.title("Peractis")
name_label = Label(main, text="First_Name:")
student_number_label = Label(main, text="Student_Number:")
score_label = Label(main, text="Score:")
name = Entry(main)
student_number = Entry(main)
score = Entry(main)
btn = Button(main, text="Register", command=writer_csv)
name_label.grid(row=0, column=0)
name.grid(row=0, column=1)
student_number_label.grid(row=1, column=0)
student_number.grid(row=1, column=1)
score_label.grid(row=2, column=0)
score.grid(row=2, column=1)
btn.grid(row=3, column=0)
# EDIT
name_label_edit = Label(main, text="First_Name:")
student_number_label_edit = Label(main, text="Student_Number:")
score_label_edit = Label(main, text="Score:")
name_edit = Entry(main)
student_number_edit = Entry(main)
score_edit = Entry(main)
button = Button(main, text="Edit", command=edit_csv)
name_label_edit.grid(row=4, column=0)
name_edit.grid(row=4, column=1)
student_number_label_edit.grid(row=5, column=0)
student_number_edit.grid(row=5, column=1)
score_label_edit.grid(row=6, column=0)
score_edit.grid(row=6, column=1)
label_edit = Label(main, text='edit_id:')
edit_id = Entry(main)
edit_id.grid(row=7, column=1)
label_edit.grid(row=7, column=0)
button.grid(row=8, column=0)
# DELETE
id_delete_label = Label(main, text="Id_For_Delete:")
id_delete = Entry(main)
id_delete.grid(row=9, column=1)
id_delete_label.grid(row=9, column=0)
btn_delete = Button(main, text="Delete", command=delete_csv)
btn_delete.grid(row=10, column=0)
main.mainloop()