Code KTR
Code KTR
"""
Spyder Editor
import tkinter as tk
from tkinter import messagebox
import random
import json
class SinhVien():
def __init__(self, mssv, hoten, diemtl, diemthi):
self.mssv = mssv
self.hoten = hoten
self.diemtl = diemtl
self.diemthi = diemthi
self.diemtongket = (diemthi + diemtl) / 2
self.xeploai_Theo_He_4()
def xeploai_Theo_He_4(self):
if self.diemtongket >=8.5:
self.xeploai = "A"
return
elif self.diemtongket >= 7 and self.diemtongket <= 8.4:
self.xeploai = "B"
return
elif self.diemtongket >= 5.5 and self.diemtongket <= 6.9:
self.xeploai = "C"
return
elif self.diemtongket >= 4 and self.diemtongket <= 5.4:
self.xeploai = "D"
return
self.xeploai = "F"
return
try:
with open("students.json", "r") as file:
data = json.load(file)
except (FileExistsError, FileNotFoundError):
ketqua = []
with open("students.json", "w") as file:
json.dump(ketqua, file)
database = []
for item in data:
mssv = item["mssv"]
hoten = item["hoten"]
diemtl = item["diemtl"]
diemthi = item["diemthi"]
sv = SinhVien(mssv, hoten, diemtl, diemthi)
database.append(sv)
def update_data():
with open("students.json", "w") as file:
ketquaxuat = []
for i in range(0,len(database)):
data = {
"mssv":database[i].mssv,
"hoten":database[i].hoten,
"diemtl":database[i].diemtl,
"diemthi":database[i].diemthi
}
ketquaxuat.append(data)
json.dump(ketquaxuat, file)
class QuanLySinhVien():
def __init__(self, window: tk, title):
self.window = window
self.title = title
self.init_window()
def init_window(self):
self.window.geometry("400x600")
self.window.title(self.title)
self.show_frame = tk.Frame(self.window)
self.show_frame.grid(row= 5, column= 0, columnspan = 2)
self.listbox_show = tk.Listbox(self.show_frame, width = 50, height = 10)
self.listbox_show.grid(row= 0, column= 0, sticky= "nsew")
self.listbox_show.bind(("<<ListboxSelect>>"),self.handle_listbox_selection)
self.search_entry = tk.Entry(self.window)
self.search_entry.grid(row= 7, column= 1)
self.student_frame_rusult = tk.Frame(self.window)
self.student_frame_rusult.grid(row= 8, column= 0, columnspan= 2)
self.show_infor()
self.window.mainloop()
def search_student(self):
search_term = self.search_entry.get().lower()
matching_student = []
for student in database:
if search_term in student.hoten.lower() or search_term in
student.mssv.lower():
matching_student.append(student)
self.search_result_box.delete(0, tk.END)
for student in matching_student:
student_info= self.format_student_infor(student)
self.search_result_box.insert(tk.END, student_info)
def show_infor(self):
self.listbox_show.delete(0, tk.END)
self.sapxepGiamDanTheoDiemTongKet()
def add_student(self):
name = self.name_entry.get()
try:
diemtl = (float)(self.diemtl_entry.get())
except ValueError:
messagebox.showerror("Loi", "Moi ban nhap lai diem tl")
return
try:
diemthi = (float)(self.diemthi_entry.get())
except ValueError:
messagebox.showerror("Loi", "Moi ban nhap lai diem thi")
return
if self.handle_name(name) == 0:
return
if self.handle_diemtl(diemtl) == 0:
return
if self.handle_diemthi(diemthi) == 0:
return
def sapxepGiamDanTheoDiemTongKet(self):
for i in range(0, len(database) - 1):
for j in range(i + 1, len(database)):
if (float)(database[i].diemtongket) < (float)
(database[j].diemtongket):
k = database[i]
database[i] = database[j]
database[j] = k
def create_Student_ID(self):
namnhaphoc = str(random.randint(2010, 2023))
khoa = "14"
mssv = namnhaphoc + khoa
a = []
while len(a) != 4:
flag = 1
temp = random.randint(0, 9)
for i in range(0, len(a)):
if temp == a[i]:
flag = 0
if flag == 1:
a.append(temp)
chusocuoi = ""
for i in range(0, 4):
chusocuoi = chusocuoi + "".join(str(a[i]))
mssv = mssv + chusocuoi
return mssv
window = tk.Tk()
window.mainloop()