Mục Lục:Mục Lục:...4 Phần 1: Lý Do Chọn Đề Tài...6 Phần 2 : Mục Tiêu...7 Đề tạo ra một giao diện đơn giản quản lý học sinh tiểu học tạo ra sự tiện lợi cho quản lí học sinh và có những ch
Mục Tiêu
Mục tiêu
Tạo ra một giao diện đơn giản, dễ sử dụng để quản lý học sinh tiểu học.
Giao diện hệ thống cần đáp ứng các chức năng cơ bản như nhập thông tin học sinh mới, cập nhật thông tin học sinh, xem thông tin học sinh, quản lý điểm số và in báo cáo.
Yêu cầu
Giao diện cần có bố cục rõ ràng, khoa học, dễ nhìn.
Sử dụng các thuật ngữ đơn giản, dễ hiểu đối với học sinh tiểu học.
Chức năng cần được thiết kế đơn giản, dễ sử dụng, hạn chế tối đa các thao tác phức tạp.
Hệ thống cần có khả năng lưu trữ dữ liệu an toàn, bảo mật.
Cần có hướng dẫn sử dụng chi tiết để người dùng có thể dễ dàng sử dụng hệ thống.
Gợi ý giao diện
Hiển thị danh sách các chức năng chính của hệ thống như: o Quản lý học sinh o Quản lý điểm số o In báo cáo
Hiển thị thông tin nhanh về số lượng học sinh, lớp học, giáo viên.
Cho phép nhập thông tin học sinh mới: o Họ và tên o Ngày sinh o Giới tính o Lớp học o Địa chỉ o Thông tin phụ huynh
Cho phép cập nhật thông tin học sinh đã có.
Cho phép xem thông tin chi tiết của học sinh.
Cho phép tìm kiếm học sinh theo tên, lớp học,
Cho phép nhập điểm số cho từng môn học của học sinh.
Cho phép cập nhật điểm số.
Cho phép xem điểm số của học sinh theo từng môn học, học kỳ, năm học.
Cho phép tính điểm trung bình cho học sinh.
Cho phép in danh sách học sinh theo lớp học.
Cho phép in bảng điểm của học sinh theo từng môn học, học kỳ, năm học.
Cho phép in báo cáo kết quả học tập của học sinh.
Lưu ý
Giao diện cần được thiết kế phù hợp với độ tuổi và trình độ nhận thức của học sinh tiểu học.
Cần sử dụng hình ảnh, màu sắc và âm thanh một cách hợp lý để thu hút sự chú ý của học sinh.
Hệ thống cần có khả năng hoạt động ổn định trên các trình duyệt web phổ biến.
Có sự tiện dụng và có thể sử dụng trên mọi thiết bị và dễ tiếp cận không yêu cầu nhiều về mặt cài đặt
Phạm Vi Đề Tài
Quản lý giáo viên
Với giao diện đăng nhập với khả năng tạo ra liên kết với giao diện và có khả năng quản lý đăng nhập thông tin
Với hiển thị đăng nhập có khả năng nhập tài khoản và nhập mật khẩu
Nhập đúng mật khẩu và đăng nhập
Nhập sai mật khẩu với thông báo nhập sai mật khẩu và không thể đăng nhập
Hiển Thị Danh Sách Các Chức Năng Chính: Hệ thống cung cấp một loạt các chức năng quan trọng, bao gồm:
Quản lý giáo viên cho phép người dùng nhập và cập nhật thông tin giáo viên, đồng thời xem chi tiết và tìm kiếm theo tên hoặc lớp học Tính năng này giúp giáo viên dễ dàng quan sát và nâng cao tính minh bạch trong quản lý.
In Báo Cáo: Việc in danh sách giáo viên theo lớp học và bảng điểm theo từng môn học, học kỳ
Việc in danh sách học sinh theo lớp học giúp quản lý thông tin một cách hệ thống và có trình tự, mang lại lợi ích cho việc quản lý lớp học cũng như học sinh Đây còn là công cụ quan trọng trong việc lập kế hoạch giáo dục hiệu quả.
Hiển Thị Thông Tin Nhanh: Hệ thống cung cấp thông tin tổng quan nhanh chóng về số lượng của từng học sinh, lớp học, và giáo viên.
Quản Lý giáo viên: Mục này là trọng tâm của hệ thống, với các chức năng chi tiết như:
Nhập Thông Tin giáo viên: Bao gồm các trường thông tin cơ bản như họ và tên, ngày sinh, giới tính, lớp học, địa chỉ
Cập Nhật Thông Tin giáo viên: Cho phép chỉnh sửa thông tin của giáo viên đã có trong hệ thống.
Tất cả dữ liệu được lưu trữ dưới định dạng file JSON, cho phép kết nối với bảng dữ liệu xuất mà giáo viên và học sinh đã nhập qua giao diện.
quan các nghiên cứu có liên quan
Mẫu sổ tay quản lý học sinh
Đây là mẫu truyền thống được sử dụng từ lâu đời.
Mẫu sổ tay thường bao gồm các thông tin cơ bản về học sinh như họ và tên, ngày sinh, giới tính, địa chỉ, lớp học,
Ngoài ra, sổ tay còn có thể ghi chép điểm số, kết quả thi cử, các hoạt động ngoại khóa, vi phạm kỷ luật của học sinh.
Ưu điểm: Dễ sử dụng, chi phí thấp.
Nhược điểm: Cồng kềnh, khó quản lý số lượng học sinh lớn, dễ bị thất lạc.
Mẫu quản lý học sinh trên file Excel
Mẫu này sử dụng phần mềm Excel để lưu trữ và quản lý thông tin học sinh.
Ưu điểm: Dễ sử dụng, có thể lọc, tra cứu thông tin nhanh chóng, có thể tạo biểu đồ, báo cáo.
Nhược điểm: Cần có kiến thức cơ bản về Excel, khó chia sẻ dữ liệu với nhiều người cùng lúc.
Mẫu quản lý học sinh trên phần mềm quản lý học sinh
Hiện nay, có nhiều phần mềm quản lý học sinh được phát triển với nhiều tính năng đa dạng, bao gồm quản lý thông tin học sinh, theo dõi điểm số, lập lịch học và quản lý học phí.
Ưu điểm: Tự động hóa nhiều thao tác, quản lý số lượng học sinh lớn hiệu quả, chia sẻ dữ liệu dễ dàng, có thể truy cập từ xa.
Nhược điểm: Chi phí cao, cần có kiến thức về phần mềm, phụ thuộc vào nhà cung cấp phần mềm.
Mẫu quản lý học sinh trên website
Mẫu này sử dụng website để lưu trữ và quản lý thông tin học sinh.
Ưu điểm: Truy cập từ xa dễ dàng, chia sẻ dữ liệu dễ dàng, có thể tích hợp nhiều tính năng khác như diễn đàn, thư viện,
Nhược điểm: Cần có kiến thức về lập trình web, chi phí duy trì website.
Mẫu quản lý học sinh trên ứng dụng di động
Mẫu này sử dụng ứng dụng di động để quản lý thông tin học sinh.
Ưu điểm: Tiện lợi, dễ sử dụng, có thể tra cứu thông tin mọi lúc mọi nơi.
Nhược điểm: Cần có smartphone, phụ thuộc vào nhà phát triển ứng dụng.
Mẫu quản lý học sinh bằng excel
Quản lý học sinh tại các trung tâm giáo dục hiện nay đang áp dụng những phương pháp hiệu quả và tiện lợi, mặc dù là hình thức truyền thống Ưu điểm của phương pháp này là sự đơn giản trong cách sử dụng, phù hợp với mọi loại thiết bị và công cụ phổ biến, giúp nâng cao hiệu quả quản lý.
Nhược điểm của hệ thống là việc xuất nhập dữ liệu sữa thông tin học sinh gặp nhiều lỗi, cùng với một số hạn chế trong quản lý và bảo vệ dữ liệu Điều này xảy ra do bất kỳ ai cũng có thể đăng nhập và chỉnh sửa thông tin, dẫn đến nguy cơ mất an toàn cho dữ liệu.
Thiếu sự rõ ràng và cụ thể trong việc áp dụng giao diện đơn bảo mật có thể gây khó khăn cho nhiều cơ sở và thành phần Cần thiết phải đảm bảo tính an toàn và bảo mật thông tin trong các ứng dụng này để đáp ứng nhu cầu đa dạng của người dùng.
Excel là phần mềm bảng tính trong bộ công cụ Microsoft Office, được phát triển bởi Microsoft để phục vụ học sinh, sinh viên và người đi làm Giao diện của Excel bao gồm các hàng và cột, với phần giao nhau giữa chúng được gọi là ô.
Giao diện tạo bởi python
Hình 1.1 – Giao diện chính sau khi chạy code mẫu
Giao diện quản lý học sinh được phát triển bằng Python có thể được tùy chỉnh đa dạng dựa trên nhu cầu sử dụng và sở thích cá nhân Tuy nhiên, giao diện này thường bao gồm các thành phần chính như bảng điều khiển, danh sách học sinh, và các chức năng quản lý dữ liệu.
Hiển thị tên phần mềm quản lý học sinh, logo nhà trường, tên người dùng hiện tại.
Có thể thêm các nút chức năng như đăng xuất, thay đổi mật khẩu, trợ giúp.
Cung cấp các chức năng chính của phần mềm như quản lý học sinh, quản lý điểm số, quản lý lịch học, quản lý tài chính,
Mỗi chức năng chính có thể được chia thành các chức năng phụ.
Hiển thị thông tin chi tiết về chức năng được chọn.
Khi sử dụng chức năng "Quản lý học sinh", người dùng có thể dễ dàng xem danh sách học sinh, thực hiện các thao tác tìm kiếm, thêm mới, chỉnh sửa hoặc xóa thông tin học sinh.
Hiển thị thông tin trạng thái của phần mềm như phiên bản phần mềm, kết nối mạng,
Cung cấp các công cụ hỗ trợ cho việc sử dụng phần mềm như lưu, in, xuất báo cáo,
6.giao diện quản lý học sinh còn có thể bao gồm các thành phần khác như:
Thanh tìm kiếm Ưu điểm Nhược điểm
Dễ dàng học và sử dụng
Phù hợp và tiết kiệm thời gian đối với những dự án nhỏ
Chỉ có những chức năng cơ bản và có giới hạn
Bảng 1.2 – Ưu điểm và Nhược điểm
Trang web tham khảo cách tạo chức năng trên tkinter Đường dẫn: https://jscommands.com/building-a-tkinter-student- registration-and-management-system-part-1/
Một số chức năng cơ bản của tkinter như tạo tài khoản cho người dùng.
Hình 1.3 – Đoạn mã hướng dẫn tạo các chức năng
Công cụ sử dụng là python :
Python là một ngôn ngữ lập trình bậc cao, được sử dụng rộng rãi cho nhiều mục đích khác nhau như:
Python là ngôn ngữ lập trình phổ biến trong phát triển web, cho phép xây dựng từ các trang web đơn giản đến các ứng dụng web phức tạp Các framework nổi bật như Django và Flask, được viết bằng Python, hỗ trợ lập trình viên trong việc phát triển ứng dụng một cách hiệu quả.
Python sở hữu nhiều thư viện mạnh mẽ như Numpy, Pandas và Scikit-learn, giúp hỗ trợ phân tích dữ liệu, học máy và trí tuệ nhân tạo hiệu quả.
Lập trình khoa học với Python đang trở thành công cụ quan trọng trong nhiều lĩnh vực như vật lý, sinh học và kỹ thuật Nhờ vào sự phong phú của các thư viện, Python hỗ trợ tính toán khoa học, mô phỏng và trực quan hóa dữ liệu hiệu quả.
Tự động hóa: Python có thể được sử dụng để tự động hóa các tác vụ lặp đi lặp lại, giúp tiết kiệm thời gian và công sức.
Giáo dục: Python là ngôn ngữ lập trình phổ biến được sử dụng trong giáo dục vì nó dễ học, dễ đọc và dễ sử dụng.
Dưới đây là một số ưu điểm của Python:
Dễ học: Python có cú pháp đơn giản, dễ đọc và dễ hiểu, ngay cả đối với người mới bắt đầu.
Python là ngôn ngữ lập trình dễ sử dụng nhờ vào sự phong phú của các thư viện và framework có sẵn, giúp tiết kiệm thời gian và công sức cho lập trình viên trong quá trình viết code.
Miễn phí và mã nguồn mở: Python là ngôn ngữ miễn phí và mã nguồn mở, bạn có thể sử dụng và sửa đổi nó một cách tự do.
Python có một cộng đồng người dùng và nhà phát triển đông đảo, luôn sẵn sàng hỗ trợ khi bạn gặp khó khăn Ngoài ra, Python còn có khả năng chạy trên nhiều hệ điều hành khác nhau như Windows, macOS và Linux.
Python là một ngôn ngữ lập trình mạnh mẽ, linh hoạt và dễ sử dụng, lý tưởng cho nhiều mục đích khác nhau Nếu bạn đang tìm kiếm ngôn ngữ lập trình để bắt đầu, Python chính là lựa chọn tuyệt vời cho bạn.
Ngoài những thông tin trên, bạn có thể tham khảo thêm một số tài liệu sau: https://www.python.org/downloads/ https://realpython.com/ https://www.w3schools.com/python/
nội dung nghiên cứu
Mục tiêu nghiên cứu
Phát triển ra giao diện quản lý học sinh.
Tkinter trong Python là gì?
Tkinter là một thư viện GUI (Graphical User Interface) tiêu chuẩn cho
Python cho phép bạn phát triển giao diện người dùng đồ họa cho ứng dụng của mình thông qua Tkinter, một bộ công cụ GUI mạnh mẽ Tkinter cung cấp nhiều widget như nút bấm, hộp thoại và menu, giúp bạn dễ dàng sắp xếp và thiết kế giao diện theo ý tưởng của mình Những ưu điểm nổi bật của Tkinter bao gồm tính đơn giản, khả năng tùy biến cao và hỗ trợ đa nền tảng.
Dễ học, dễ sử dụng: Tkinter có cú pháp đơn giản, dễ hiểu, ngay cả đối với người mới bắt đầu học lập trình Python.
Miễn phí và mã nguồn mở: Tkinter là thư viện miễn phí và mã nguồn mở, bạn có thể sử dụng và sửa đổi nó một cách tự do.
Đa nền tảng: Tkinter có thể chạy trên nhiều hệ điều hành khác nhau như Windows, macOS, Linux.
Cộng đồng lớn: Tkinter có cộng đồng người dùng và nhà phát triển lớn, luôn sẵn sàng hỗ trợ bạn khi gặp khó khăn.
Giao diện không đẹp mắt: So với các thư viện GUI khác như PyQt,
Kivy, giao diện của Tkinter thường không được đẹp mắt và hiện đại.
Hiệu suất chậm: Tkinter có thể hoạt động chậm hơn so với các thư viện GUI khác, đặc biệt là khi bạn tạo các giao diện phức tạp.
Nội dung nghiên cứu
Xác định các đối tượng người dùng chính (giáo viên, học sinh, phụ huynh).
Phân tích nhu cầu và mong muốn của từng đối tượng người dùng.
Nghiên cứu các giao diện quản lý học sinh hiện có trên thị trường.
Xác định các tính năng cần thiết cho giao diện quản lý học sinh mới.
Thiết kế giao diện người dùng thân thiện, dễ sử dụng và trực quan.
Sử dụng các nguyên tắc thiết kế phù hợp với từng đối tượng người dùng.
Đảm bảo giao diện tương thích với nhiều thiết bị khác nhau (máy tính, máy tính bảng, điện thoại thông minh).
Lựa chọn công nghệ phù hợp để phát triển phần mềm.
Viết mã nguồn và kiểm thử phần mềm.
Triển khai phần mềm và vận hành thử nghiệm.
4 Đánh giá và hoàn thiện:
Thu thập phản hồi từ người dùng và đánh giá hiệu quả của giao diện quản lý học sinh.
Phân tích dữ liệu thu thập được và đề xuất các giải pháp cải tiến.
Cập nhật và hoàn thiện giao diện quản lý học sinh theo định kỳ.
Phương pháp nghiên cứu
1.Sự dụng phần mềm phython (tkinter)
Tkinter là thư viện GUI tiêu chuẩn cho Python, cho phép người dùng nhanh chóng và dễ dàng tạo ra các ứng dụng giao diện người dùng Với Tkinter, bạn có thể sử dụng giao diện hướng đối tượng để phát triển ứng dụng dựa trên bộ công cụ Tk.
Sau đây là các bước để tạo một ứng dụng Tkinter: import Tkinter module.
Tạo cửa sổ chính của ứng dụng GUI.
Thêm một hoặc nhiều widget nói trên vào ứng dụng GUI.
Gọi vòng lặp sự kiện chính để các hành động có thể diễn ra trên màn hình máy tính của người dùng.
1 Cơ sở quản trị dữ liệu SQL lite:
Cơ sở dữ liệu SQLite là gì?
SQLite là một hệ thống quản lý cơ sở dữ liệu quan hệ nhẹ và nhúng, cho phép tích hợp trực tiếp vào ứng dụng mà không cần máy chủ cơ sở dữ liệu riêng biệt Hệ thống này được phát triển bằng ngôn ngữ lập trình, mang lại sự tiện lợi và hiệu suất cao cho các ứng dụng.
C và được phát hành theo giấy phép mã nguồn mở https://www.gnu.org/licenses/gpl-3.0.en.html.
SQLite được sử dụng rộng rãi trong nhiều ứng dụng khác nhau, bao gồm:
SQLite là một giải pháp lưu trữ dữ liệu phổ biến cho ứng dụng di động nhờ vào kích thước nhỏ gọn, hiệu suất cao và không cần cài đặt máy chủ cơ sở dữ liệu.
SQLite là một giải pháp lý tưởng cho việc lưu trữ dữ liệu cục bộ trong các ứng dụng web, bao gồm dữ liệu bộ nhớ cache và thông tin người dùng.
SQLite là một công cụ dòng lệnh mạnh mẽ cho phép người dùng quản lý cơ sở dữ liệu hiệu quả, bao gồm các chức năng như tạo bảng, chèn dữ liệu và thực hiện các truy vấn dữ liệu.
SQLite là phần mềm nhúng phổ biến, thường được sử dụng trong các thiết bị như bộ định tuyến và máy in để lưu trữ dữ liệu cấu hình và dữ liệu nhật ký Ưu điểm của SQLite bao gồm tính nhẹ, dễ triển khai và khả năng hoạt động hiệu quả trên các hệ thống với tài nguyên hạn chế.
Nhỏ gọn: Tệp cơ sở dữ liệu SQLite thường chỉ có vài kilobyte, khiến nó trở nên lý tưởng cho các thiết bị có bộ nhớ hạn chế.
Hiệu quả: SQLite có hiệu suất truy vấn và thao tác dữ liệu cao.
Dễ sử dụng: SQLite có cú pháp SQL đơn giản và dễ học.
Miễn phí và mã nguồn mở: SQLite là miễn phí và mã nguồn mở, bạn có thể sử dụng và sửa đổi nó một cách tự do.
SQLite không cần cài đặt máy chủ cơ sở dữ liệu riêng biệt, giúp tiết kiệm thời gian và công sức cho người dùng.
Kích thước cơ sở dữ liệu: SQLite không phù hợp cho các cơ sở dữ liệu lớn vì nó có giới hạn kích thước 5GB.
SQLite không hỗ trợ tính năng đa người dùng thực sự, do đó, nó không thích hợp cho các ứng dụng yêu cầu nhiều người dùng truy cập đồng thời vào cơ sở dữ liệu.
SQLite là một hệ thống quản lý cơ sở dữ liệu quan hệ nhỏ gọn, hiệu quả và dễ sử dụng Nó hoàn toàn miễn phí và phù hợp cho nhiều loại ứng dụng khác nhau.
Ngoài những thông tin trên, bạn có thể tham khảo thêm một số tài liệu sau:
https://www.w3schools.com/sql/
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ Introduction-to-Oracle-SQL.html
Với giao diện đăng nhập với khả năng tạo ra liên kết với giao diện và có khả năng quản lý đăng nhập thông tin
Với hiển thị đăng nhập có khả năng nhập tài khoản và nhập mật khẩu
Nhập đúng mật khẩu và đăng nhập
Nhập sai mật khẩu với thông báo nhập sai mật khẩu và không thể đăng nhập
Tạo ra một giao diện đơn giản, dễ sử dụng để quản lý học sinh tiểu học.
Giao diện cần đáp ứng các chức năng cơ bản như nhập thông tin học sinh mới, cập nhật thông tin học sinh, xem thông tin học sinh và quản lý điểm số để đảm bảo hiệu quả trong việc quản lý dữ liệu học sinh.
Tạo giao diện đăng nhập với nội dung đăng nhập vào giao diện
Và có nút đăng nhập , nút chạy
Để đăng nhập thành công, người dùng cần nhập đúng tên đăng nhập và mật khẩu Nếu tên đăng nhập là "khanhcubu" và mật khẩu là "123", hệ thống sẽ hiển thị thông báo "Đăng nhập thành công!" Ngược lại, nếu thông tin không chính xác, thông báo "Tên đăng nhập hoặc mật khẩu không chính xác!" sẽ được hiển thị.
Hiển thị danh sách các chức năng chính của hệ thống như: o Quản lý học sinh o Quản lý điểm số o In báo cáo
Hiển thị thông tin nhanh về số lượng học sinh, lớp học, giáo viên.
Cho phép nhập thông tin học sinh mới: o Họ và tên o Ngày sinh o Giới tính o Lớp học o Địa chỉ o Thông tin phụ huynh
Cho phép cập nhật thông tin học sinh đã có.
Cho phép xem thông tin chi tiết của học sinh.
Cho phép tìm kiếm học sinh theo tên, lớp học,
Cho phép nhập điểm số cho từng môn học của học sinh.
Cho phép cập nhật điểm số.
Cho phép xem điểm số của học sinh theo từng môn học, học kỳ, năm học.
Cho phép tính điểm trung bình cho học sinh.
Cho phép in danh sách học sinh theo lớp học.
Cho phép in bảng điểm của học sinh theo từng môn học, học kỳ, năm học
Cho phép in báo cáo kết quả học tập của học sinh.
# Hàm để thêm học sinh mới
hs_info { 'ho_ten': ho_ten_var.get(),
'ngay_sinh': ngay_sinh_var.get(),
'gioi_tinh': gioi_tinh_var.get(),
'dia_chi': dia_chi_var.get(),
'lop_hoc': lop_hoc_var.get(),
'phu_huynh': phu_huynh_var.get(),
# Thêm thông tin học sinh vào danh sách
danh_sach_hs.append(hs_info)
# Hàm để cập nhật thông tin học sinh
def cap_nhat_thong_tin():
messagebox.showerror("Lỗi", "Vui lòng chọn một học sinh để cập nhật.")
selected_hs danh_sach_hs selected_index = [ [0]]
selected_hs['ho_ten'] =ho_ten_var.get()
selected_hs['ngay_sinh'] =ngay_sinh_var.get()
selected_hs['gioi_tinh'] =gioi_tinh_var.get()
selected_hs['dia_chi'] =dia_chi_var.get()
selected_hs['diem'] =diem_var.get()
selected_hs['lop_hoc'] =lop_hoc_var.get()
selected_hs['phu_huynh'] =phu_huynh_var.get()
# Hàm để lưu dữ liệu học sinh vào file
with open('du_lieu_hs.json', 'w') file:as
json.dump(danh_sach_hs, file)
# Hàm để tìm kiếm học sinh
tim_kiem_term tim_kiem_var = get()
ket_qua_tim_kiem [= hs for in hs danh_sach_hs if tim_kiem_term.lower() in ['ho_ten'].lower() or hs tim_kiem_term in hs['lop_hoc']]
cap_nhat_listbox(ket_qua_tim_kiem)
# Hàm để xóa học sinh đã chọn
messagebox.showerror("Lỗi", "Vui lòng chọn một học sinh để xóa.")
# Xác nhận trước khi xóa
xac_nhan =messagebox.askyesno("Xác Nhận" "Bạn có chắc chắn , muốn xóa học sinh này không?")
del danh_sach_hs selected_index[ [ ]]0
# Hàm để cập nhật listbox với dữ liệu học sinh
def cap_nhat_listbox(danh_sach None= ):
if danh_sach is None:
danh_sach danh_sach_hs listbox.delete(0, END)
for hs danh_sach:in
listbox.insert(END hs, ['ho_ten'] +" - " +hs['lop_hoc'])
with open('du_lieu_hs.json', 'r') file:as
# Tải dữ liệu học sinh
danh_sach_hs =json.load(file)
# Cập nhật listbox với dữ liệu mới
messagebox.showerror("Lỗi", "Không tìm thấy file dữ liệu.")
# Hàm để cập nhật listbox với dữ liệu học sinh
def cap_nhat_listbox(danh_sach None= ):
if danh_sach is None:
danh_sach danh_sach_hs listbox.delete(0, END)
for hs danh_sach:in
listbox.insert(END hs, ['ho_ten'] +" - " +hs['lop_hoc'])
# Khởi tạo cửa sổ chính
root.title('Quản Lý Học Sinh Tiểu Học')
Label(root, text='Ứng Dụng Quản Lý Học Sinh', fg='red', font=('cambria', 16), width%).grid row( =0, columnspan=2)
listbox =Listbox(root width, , height )
Label(root, text='Họ và Tên:').grid(row=2, column=0)
Entry(root, textvariable ho_ten_var= , width0).grid row=2, ( column=1)
Label(root, text='Ngày Sinh:').grid(row=3, column=0)
Entry(root, textvariable ngay_sinh_var= , width0).grid(row=3, column=1)
Label(root, text='Giới Tính:').grid row=4, column=0( )
Entry(root, textvariable gioi_tinh_var= , width0).grid(row=4, column=1)
Label(root, text='Địa Chỉ:').grid row=5, column=0( )
Entry(root, textvariable dia_chi_var= , width0).grid row=5, ( column=1)
Label(root, text='Lớp Học:').grid row=6, column=0( )
Entry(root, textvariable lop_hoc_var= , width0).grid row=6, ( column=1)
Label(root, text='Thông Tin Phụ Huynh:').grid(row=7, column=0)
Entry(root, textvariable phu_huynh_var= , width0).grid row=7, ( column=1)
Label(root, text='Tìm Kiếm:').grid row=8, column=0( )
Entry(root, textvariable tim_kiem_var= , width0).grid(row=8, column=1)
Button(root text, ='Tìm', command=tim_kiem_hs).grid row( =8, column=2)
Label(root, text='Điểm').grid(row=9, column=0)
Entry(root, textvariable diem_var= , width1).grid row=9, ( column=1)
Button(button_frame text, ='Thêm', command=them_hoc_sinh).pack side LEFT( = )
Button(button_frame text, ='Cập Nhật', command_nhat_thong_tin).pack side LEFT( = )
Button(button_frame text, ='Xóa', command=xoa_hoc_sinh).pack side LEFT( = )
Button(button_frame text, ='Thoát', command root= quit).pack side LEFT( = )
button_frame grid row ( , column=1)
button_tai_du_lieu =Button(root text, ='Tải Dữ Liệu', command=tai_du_lieu)
button_tai_du_lieu grid row ( , column=1)
def chon_lua_chon(event):
lua_chon combobox = get() # Lấy giá trị được chọn hiện tại
print(f"Bạn đã chọn: {lua_chon}")
combobox =ttk.Combobox(root values, =["Giỏi" "Khá" "Yếu", , ], width)
combobox.current(0) # Chọn giá trị mặc định (lựa chọn đầu tiên)
combobox.bind("", chon_lua_chon) # Gắn sự kiện khi chọn
combobox grid row ( , column=5, sticky="w")
def tinh_diem_trung_binh():
"""Tính điểm trung bình dựa trên điểm từng môn."""
diem_toan =float(diem_toan_entry.get())
diem_ly =float(diem_ly_entry.get())
diem_hoa_ =float(diem_hoa_entry.get())
diem_trung_binh (= diem_toan diem_ly diem_hoa_ + + ) /3
diem_trung_binh_label config text ( =f"Điểm trung bình: {diem_trung_binh:.2f}")
# Tạo nhãn và ô nhập điểm cho từng môn
diem_toan_label =tk Label (root text, ="Điểm giữa:")
diem_toan_label grid row ( =6, column=4)
diem_toan_entry =tk Entry (root)
diem_toan_entry grid row ( =6, column=5)
diem_ly_label =tk Label (root text, ="Điểm cuối:")
diem_ly_label grid row ( =7, column=4)
diem_ly_entry =tk Entry (root)
diem_ly_entry grid row ( =7, column=5)
diem_hoa_label =tk Label (root text, ="Điểm Thường Xuyên:")
diem_hoa_label grid row ( =8, column=4)
diem_hoa_entry =tk Entry (root)
diem_hoa_entry grid row ( =8, column=5)
# Tạo nút tính điểm trung bình
tinh_diem_trung_binh_button =tk Button (root text, ="Tính điểm trung bình", command=tinh_diem_trung_binh)
tinh_diem_trung_binh_button grid row ( =9, column=5, columnspan=1)
# Tạo nhãn hiển thị điểm trung bình
diem_trung_binh_label =tk Label (root text, ="Điểm trung bình:")
diem_trung_binh_label grid row ( , column=5, columnspan=1)
Cho phép nhập thông tin học sinh mới: o Họ và tên o Ngày sinh o Giới tính o Lớp học o Địa chỉ o Thông tin giáo viên môn
Cho phép cập nhật thông tin học giáo viên đã có.
Cho phép xem thông tin chi tiết của giáo viên.
Cho phép tìm kiếm giáo viên theo tên, lớp học,
# Hàm để thêm học sinh mới
hs_info { 'ho_ten': ho_ten_var.get(),
'ngay_sinh': ngay_sinh_var.get(),
'gioi_tinh': gioi_tinh_var.get(),
'dia_chi': dia_chi_var.get(),
'lop_hoc': lop_hoc_var.get(),
# Thêm thông tin học sinh vào danh sách
danh_sach_hs.append(hs_info)
# Hàm để cập nhật thông tin học sinh
def cap_nhat_thong_tin():
messagebox.showerror("Lỗi", "Vui lòng chọn một học sinh để cập nhật.")
selected_hs danh_sach_hs selected_index = [ [0]]
selected_hs['ho_ten'] =ho_ten_var.get()
selected_hs['ngay_sinh'] =ngay_sinh_var.get()
selected_hs['gioi_tinh'] =gioi_tinh_var.get()
selected_hs['dia_chi'] =dia_chi_var.get()
selected_hs['lop_hoc'] =lop_hoc_var.get()
selected_hs['thong tin'] =thongtingiaovien.get()
# Hàm để lưu dữ liệu học sinh vào file
with open('du_lieu_hs.json', 'w') file:as
json.dump(danh_sach_hs, file)
# Hàm để tìm kiếm học sinh
tim_kiem_term tim_kiem_var = get()
ket_qua_tim_kiem [= hs for in hs danh_sach_hs if tim_kiem_term.lower() in ['ho_ten'].lower() or hs tim_kiem_term in hs['lop_hoc']]
cap_nhat_listbox(ket_qua_tim_kiem)
# Hàm để xóa học sinh đã chọn
messagebox.showerror("Lỗi", "Vui lòng chọn một học sinh để xóa.")
# Xác nhận trước khi xóa
xac_nhan =messagebox.askyesno("Xác Nhận" "Bạn có chắc chắn , muốn xóa học sinh này không?")
del danh_sach_hs selected_index[ [ ]]0
# Hàm để cập nhật listbox với dữ liệu học sinh
def cap_nhat_listbox(danh_sach None= ):
if danh_sach is None:
danh_sach danh_sach_hs listbox.delete(0, END)
for hs danh_sach:in
listbox.insert(END hs, ['ho_ten'] +" - " +hs['lop_hoc'])
with open('du_lieu_hs.json', 'r') file:as
# Tải dữ liệu học sinh
danh_sach_hs =json.load(file)
# Cập nhật listbox với dữ liệu mới
messagebox.showerror("Lỗi", "Không tìm thấy file dữ liệu.")
# Hàm để cập nhật listbox với dữ liệu học sinh
def cap_nhat_listbox(danh_sach None= ):
if danh_sach is None:
danh_sach danh_sach_hs listbox.delete(0, END)
for hs danh_sach:in
listbox.insert(END hs, ['ho_ten'] +" - " +hs['lop_hoc'])
# Khởi tạo cửa sổ chính
root.title('Quản Lý Học Sinh Tiểu Học')
Label(root, text='giáo viên', fg='red', font=('cambria', 16), width%).grid row( =0, columnspan=2)
listbox =Listbox(root width, , height )
Label(root, text='Họ và Tên:').grid(row=2, column=0)
Entry(root, textvariable ho_ten_var= , width0).grid row=2, ( column=1)
Label(root, text='Ngày Sinh:').grid(row=3, column=0)
Entry(root, textvariable ngay_sinh_var= , width0).grid(row=3, column=1)
Label(root, text='Giới Tính:').grid row=4, column=0( )
Entry(root, textvariable gioi_tinh_var= , width0).grid(row=4, column=1)
Label(root, text='Địa Chỉ:').grid row=5, column=0( )
Entry(root, textvariable dia_chi_var= , width0).grid row=5, ( column=1)
Label(root, text='Lớp Học:').grid row=6, column=0( )
Entry(root, textvariable lop_hoc_var= , width0).grid row=6, ( column=1)
Label(root, text='Thông Tin Giáo Viên Môn:').grid row=7, ( column=0)
Entry(root, textvariable thongtingiaovien= , width0).grid row=7, ( column=1)
Label(root, text='Tìm Kiếm:').grid row=8, column=0( )
Entry(root, textvariable tim_kiem_var= , width0).grid(row=8, column=1)
Button(root text, ='Tìm', command=tim_kiem_hs).grid row( =8, column=2)
Button(button_frame text, ='Thêm', command=them_hoc_sinh).pack side LEFT( = )
Button(button_frame text, ='Cập Nhật', command_nhat_thong_tin).pack side LEFT( = )
Button(button_frame text, ='Xóa', command=xoa_hoc_sinh).pack side LEFT( = )
Button(button_frame text, ='Thoát', command root= quit).pack side LEFT( = )
button_frame grid row ( =9, column=1)
button_tai_du_lieu =Button(root text, ='Tải Dữ Liệu', command=tai_du_lieu)
button_tai_du_lieu grid row ( , column=1)