0% found this document useful (0 votes)
12 views5 pages

Code KTR

abc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views5 pages

Code KTR

abc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

# -*- coding: utf-8 -*-

"""
Spyder Editor

This is a temporary script file.


"""

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.name_label = tk.Label(self.window, text="Ho va ten")


self.name_label.grid(row= 0, column= 0)
self.name_entry = tk.Entry(self.window)
self.name_entry.grid(row= 0, column= 1)

self.diemtl_label = tk.Label(self.window, text="Diem tieu luan")


self.diemtl_label.grid(row= 1, column= 0)
self.diemtl_entry = tk.Entry(self.window)
self.diemtl_entry.grid(row= 1, column= 1)

self.diemthi_label = tk.Label(self.window, text="Diem thi")


self.diemthi_label.grid(row= 2, column= 0)
self.diemthi_entry = tk.Entry(self.window)
self.diemthi_entry.grid(row= 2, column= 1)

self.add_Button = tk.Button(self.window, text= "Them Sinh Vien", command=


self.add_student)
self.add_Button.grid(row= 3, column= 0, columnspan = 2)

self.Label_show = tk.Label(self.window, text= "Thong Tin Sinh Vien")


self.Label_show.grid(row = 4, column = 0, columnspan= 2)

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.student_listbox_scrollbar = tk.Scrollbar(self.show_frame, orient =


tk.VERTICAL)
self.student_listbox_scrollbar.grid(row = 0, column= 1, sticky= "ns")

self.Label_delete = tk.Label(self.window, text= "Muon xoa sinh vien, click


chuot vao ten sinh vien can xoa")
self.Label_delete.grid(row = 6, column= 0, columnspan = 2)

self.search_label = tk.Label(self.window, text= "Tim kiem sinh vien")


self.search_label.grid(row = 7, column= 0)

self.search_entry = tk.Entry(self.window)
self.search_entry.grid(row= 7, column= 1)

self.search_button = tk.Button(self.window, text= "Tim kiem", command=


self.search_student)
self.search_button.grid(row= 7, column= 2)

self.student_frame_rusult = tk.Frame(self.window)
self.student_frame_rusult.grid(row= 8, column= 0, columnspan= 2)

self.search_result_box = tk.Listbox(self.student_frame_rusult, width = 50,


height = 10)
self.search_result_box.grid(row= 0, column= 0, columnspan= 2, sticky=
"nsew")

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 handle_listbox_selection(self, event):


selection = event.widget.curselection()
if selection:
index = selection[0]
self.remove_student(index)

def remove_student(self, index):


confirmation= messagebox.askyesno("Xoa Sinh Vien", "Are you sure?")
if confirmation:
del database[index]
messagebox.showinfo("Thong Bao", "Xoa Thanh Cong")
update_data()
self.show_infor()

def format_student_infor(self, student: SinhVien):


info = f"{student.mssv} - {student.hoten} - {student.diemtl} -
{student.diemthi} - {student.diemtongket} - {student.xeploai}"
return info

def show_infor(self):
self.listbox_show.delete(0, tk.END)

self.sapxepGiamDanTheoDiemTongKet()

for i in range(0, len(database)):


student_info = self.format_student_infor(database[i])
self.listbox_show.insert(tk.END, student_info)

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

sv = SinhVien(self.create_Student_ID(), name, diemtl, diemthi)


database.append(sv)

messagebox.showinfo("Thong Bao", "Them Sinh Vien Moi Thanh Cong")


update_data()
self.show_infor()

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

def handle_name(self, name):


if len(name) == 0:
messagebox.showerror("Loi", "Moi ban nhap ten")
return 0
return 1

def handle_diemtl(self, diemtl):


if diemtl >= 0 and diemtl <= 10:
return 1
messagebox.showerror("Loi", "Moi ban nhap lai diem tl")
return 0

def handle_diemthi(self, diemthi):


if diemthi >= 0 and diemthi <= 10:
return 1
messagebox.showerror("Loi", "Moi ban nhap lai diem thi")
return 0

window = tk.Tk()

app = QuanLySinhVien(window, "Quan Ly Sinh Vien")

window.mainloop()

You might also like