from tkinter import *
import csv
import pandas as pd
main = Tk()
main.title("Attendance")
main.geometry("1000x750")
def click():
file = open('data.csv', 'a', newline='')
w = csv.DictWriter(file, fieldnames=['First Name', 'Student Number', 'Score'])
with open('data.csv', 'r', newline='') as fr:
if len(list(csv.DictReader(fr))) == 0:
w.writeheader()
w.writerow({
'First Name': fname.get(),
'Student Number': snum.get(),
'Score': score.get()
})
get_data()
fname.delete(0, END)
snum.delete(0, END)
score.delete(0, END)
file.close()
def get_data():
file = open('data.csv', 'r', newline='')
r = csv.DictReader(file)
data = ''
for row in r:
data += f"{row['First Name']}, {row['Student Number']}, {row['Score']}\n"
messagebox.config(text=data)
file.close()
def sh2():
din = Toplevel(main)
din.title("Edit Data")
din.geometry("800x500")
global old_fname
global old_snum
global old_score
global new_name
global new_snum
global new_score
seperator = Frame(din, height=4, bg="black")
seperator.grid(row=3, column=0, columnspan=5, sticky="ew", pady=10)
x1 = Label(din, text="Enter Old First Name: ", font=("Arial", 24), pady=10)
x1.grid(row=0, column=0)
old_fname = Entry(din, font=("Arial", 24))
old_fname.grid(row=0, column=1)
x2 = Label(din, text="Enter Old Student Number: ", font=("Arial", 24), pady=10)
x2.grid(row=1, column=0)
old_snum = Entry(din, font=("Arial", 24))
old_snum.grid(row=1, column=1)
x3 = Label(din, text="Enter Old Score: ", font=("Arial", 24), pady=10)
x3.grid(row=2, column=0)
old_score = Entry(din, font=("Arial", 24))
old_score.grid(row=2, column=1)
x4 = Label(din, text="Enter New First Name: ", font=("Arial", 24), pady=10)
x4.grid(row=4, column=0)
new_name = Entry(din, font=("Arial", 24))
new_name.grid(row=4, column=1)
x5 = Label(din, text="Enter New Student Number: ", font=("Arial", 24), pady=10)
x5.grid(row=5, column=0)
new_snum = Entry(din, font=("Arial", 24))
new_snum.grid(row=5, column=1)
x6 = Label(din, text="Enter New Score: ", font=("Arial", 24), pady=10)
x6.grid(row=6, column=0)
new_score = Entry(din, font=("Arial", 24))
new_score.grid(row=6, column=1)
lan = Button(din, text="Submit", font=("Arial", 24), command=n, pady=10)
lan.grid(row=7, column=0, columnspan=1, sticky='ew')
def n():
df = pd.read_csv("data.csv")
first = old_fname.get()
snum = int(old_snum.get())
score = int(old_score.get())
mask = (
(df["First Name"] == first) &
(df["Student Number"] == snum) &
(df["Score"] == score)
)
df.loc[mask, "First Name"] = new_name.get()
df.loc[mask, "Student Number"] = int(new_snum.get())
df.loc[mask, "Score"] = int(new_score.get())
df.to_csv("data.csv", index=False)
def show():
win = Toplevel(main)
win.title("Delete Data")
win.geometry("800x500")
global h1
global h2
global h3
x1 = Label(win, text="Enter First Name: ", font=("Arial", 24), pady=10)
x1.grid(row=1, column=0)
h1 = Entry(win, font=("Arial", 24))
h1.grid(row=1, column=1)
x2 = Label(win, text="Enter Student Number: ", font=("Arial", 24), pady=10)
x2.grid(row=2, column=0)
h2 = Entry(win, font=("Arial", 24))
h2.grid(row=2, column=1)
x3 = Label(win, text="Enter Score: ", font=("Arial", 24), pady=10)
x3.grid(row=3, column=0)
h3 = Entry(win, font=("Arial", 24))
h3.grid(row=3, column=1)
a4 = Button(win, text="Submit", font=("Arial", 24), command=d, pady=10)
a4.grid(row=4, column=0, columnspan=1, sticky='ew')
def d():
df = pd.read_csv("data.csv")
first = h1.get()
snum = int(h2.get())
score = int(h3.get())
mask = (
(df["First Name"] == first) &
(df["Student Number"] == snum) &
(df["Score"] == score)
)
df = df[~mask]
df.to_csv("data.csv", index=False)
label1 = Label(main, text="First Name: ", font=("Arial", 24), pady=10)
label1.grid(row=0, column=0)
fname = Entry(main, font=("Arial", 24))
fname.grid(row=0, column=1)
label2 = Label(main, text="Student Number: ", font=("Arial", 24), pady=10)
label2.grid(row=1, column=0)
snum = Entry(main, font=("Arial", 24))
snum.grid(row=1, column=1)
label3 = Label(main, text="Score: ", font=("Arial", 24), pady=10)
label3.grid(row=2, column=0)
score = Entry(main, font=("Arial", 24))
score.grid(row=2, column=1)
btn = Button(main, text="Submit", font=("Arial", 24), command=click, pady=10)
btn.grid(row=3, column=0, columnspan=2, sticky='ew')
btn2 = Button(main, text="Get Data", font=("Arial", 24), command=get_data, pady=10)
btn2.grid(row=4, column=0, columnspan=2, sticky='ew')
btn3 = Button(main, text="Delete Data", font=("Arial", 24), command=show, pady=10)
btn3.grid(row=5, column=0, columnspan=2, sticky='ew')
btn4 = Button(main, text="Edit Data", font=("Arial", 24), command=sh2, pady=10)
btn4.grid(row=8, column=0, columnspan=2, sticky='ew')
messagebox = Message(main, text='', font=("Arial", 20), pady=10)
messagebox.grid(row=14, column=0, columnspan=2, sticky='ew')
main.mainloop()