Thứ Tư, 29 tháng 5, 2024

56. Quản lý sinh viên Python phần 4

Chúng ta sẽ cùng nhau tạo các hàm để tìm xóa một sinh viên trong danh sách theo ID

Bắt đầu với hàm tìm kiếm. Tìm một cái gì đó, trước hết phải xác định là có hay không. Ví dụ tìm một cây kẹo màu xanh trong gói kẹo, trước hết cần phải xác định gói kẹo đó có ít nhất là 1 cây kẹo. Không thể tìm cây kẹo màu xanh nếu đó là gói kẹo không có gì. Vì vậy, trước hết chúng ta cần một hàm vô cùng đơn giản cho chúng ta biết số lượng sinh viên trong danh sách. Ta đặt tên hàm là soLuongSinhVien()

def soLuongSinhVien(self):
        return self.listSinhVien.__len__()

Chúng ta sẽ đặt vào class QuanLySinhVien() như sau

from SinhVien import SinhVien


class QuanLySinhVien:
    listSinhVien = []
    def nhapSinhVien(self):
      tiep_tuc = "Y"
      while tiep_tuc == "Y":
        idSV = input("Nhap ID cua sinh vien: ")
        tenSV = input("Nhap Ho Ten sinh vien: ")

        sv = SinhVien(idSV, tenSV)
        self.listSinhVien.append(sv)

        tiep_tuc = input("Tiep tuc ? Y/N ")


    def showSinhVien(self, listSV):
        if (listSV.__len__() > 0):
            for sv in listSV:
                print(sv.id, sv.ten)

    def getListSinhVien(self):
        return self.listSinhVien

    def soLuongSinhVien(self):
        return self.listSinhVien.__len__()


Chúng ta có thể chạy thử hàm này bằng cách gọi nó sau khi hoàn tất việc thêm tên sinh viên vào danh sách. Đây là code của Main.py

 

from QuanLySinhVien import QuanLySinhVien

# khởi tạo một đối tượng QuanLySinhVien để quản lý sinh viên
qlsv = QuanLySinhVien()

while (1 == 1):
    print("*************************MENU********")
    print("**  1. Them sinh vien.                                **")
    print("**  2. Cap nhat thong tin sinh vien bang ID  **")
    print("**  3. Xoa sinh vien theo ID.                      **")
    print("**  4. Tim kiem sinh vien theo ten.             **")
    print("**  5. Hien thi danh sach sinh vien.            **")
    print("**  0. Thoat                                             **")
    print("******************************* *****")

    key = int(input("Nhap tuy chon de bat dau chương trinh: "))
    if (key == 1):
        qlsv.nhapSinhVien()
        tong_so = str(qlsv.soLuongSinhVien())
        print("\nThem sinh vien thanh cong!")
        print("Tong so sinh vien: "+ tong_so)

    elif (key == 2):
        print("\nCap nhat sinh vien thanh cong!")

    elif (key == 3):
        print("\nXoa sinh vien thanh cong!")


    elif (key == 4):
        print("\nKet qua tim kiem!")


    elif (key == 5):
        qlsv.showSinhVien(qlsv.getListSinhVien())
        print("\nDanh sach sinh vien!")


    elif (key == 0):
        print("\nDa thoat khoi chương trinh thanh cong!")
        break


    else:
        print("\nKhong co chuc nang nay!")

 

Bấm Run để chạy chương trình


 

Hàm tìm sinh viên theo ID.

Tiếp theo, muốn xóa cái gì thì chúng ta sẽ cần một hàm tìm sinh viên theo ID, để "có cái" để mà xóa! Kiểu như muốn lấy cây kẹo màu xanh ra khỏi gói kẹo thì trước hết cần có "cách nào đó" để tìm ra cây kẹo màu xanh.

Thuật toán để tìm kiếm như sau:
Nếu số lượng sinh viên lớn hơn 0 thì dùng vòng lặp FOR để duyệt listSinhVien[]. Nếu tìm thấy một ID trong listSinhVien[] trùng với ID người sử dụng nhập vào thì cho kết quả tìm kiếm là phần tử Sinh Viên trong listSinhVien.


Đây là hàm

def findByID(self, ID):
        searchResult = None
        if (self.soLuongSinhVien() > 0):
            for sv in self.listSinhVien:
                if (sv.id == ID):
                    searchResult = sv
        return searchResult


Thêm vào class QuanLySinhVien()



from SinhVien import SinhVien


class QuanLySinhVien:
    listSinhVien = []
    def nhapSinhVien(self):
      tiep_tuc = "Y"
      while tiep_tuc == "Y":
        idSV = input("Nhap ID cua sinh vien: ")
        tenSV = input("Nhap Ho Ten sinh vien: ")

        sv = SinhVien(idSV, tenSV)
        self.listSinhVien.append(sv)

        tiep_tuc = input("Tiep tuc ? Y/N ")


    def showSinhVien(self, listSV):
        if (listSV.__len__() > 0):
            for sv in listSV:
                print(sv.id, sv.ten)

    def getListSinhVien(self):
        return self.listSinhVien

    def soLuongSinhVien(self):
        return self.listSinhVien.__len__()

    def findByID(self, ID):
        searchResult = None
        if (self.soLuongSinhVien() > 0):
            for sv in self.listSinhVien:
                if (sv.id == ID):
                    searchResult = sv
        return searchResult



Chúng ta sẽ thêm một lựa chọn trong Menu và gọi hàm findByID() thực thi. Đây là code của Main.py

from QuanLySinhVien import QuanLySinhVien

# khởi tạo một đối tượng QuanLySinhVien để quản lý sinh viên
qlsv = QuanLySinhVien()

while (1 == 1):
    print("*************************MENU********")
    print("**  1. Them sinh vien.                                **")
    print("**  2. Cap nhat thong tin sinh vien bang ID  **")
    print("**  3. Xoa sinh vien theo ID.                      **")
    print("**  4. Tim kiem sinh vien theo ten.             **")
    print("**  5. Hien thi danh sach sinh vien.            **")
    print("**  6. Tim kiem sinh vien theo ID.             **")
    print("**  0. Thoat                                              **")
    print("*************************************")

    key = int(input("Nhap tuy chon de bat dau chương trinh: "))
    if (key == 1):
        qlsv.nhapSinhVien()
        tong_so = str(qlsv.soLuongSinhVien())
        print("\nThem sinh vien thanh cong!")
        print("Tong so sinh vien: "+ tong_so)

    elif (key == 2):
        print("\nCap nhat sinh vien thanh cong!")

    elif (key == 3):
        print("\nXoa sinh vien thanh cong!")


    elif (key == 4):
        print("\nKet qua tim kiem!")


    elif (key == 5):
        qlsv.showSinhVien(qlsv.getListSinhVien())
        print("\nDanh sach sinh vien!")


    elif (key == 6):
        idSV = input("Nhap ID sinh vien: ")
        tenSV = (qlsv.findByID(idSV)).ten
        print("\nTim kiem sinh vien theo ID!"+tenSV)

    elif (key == 0):
        print("\nDa thoat khoi chương trinh thanh cong!")
        break


    else:
        print("\nKhong co chuc nang nay!")

 

Bấm Run để chạy Main.py, ta thấy hàm findByID() hoạt động hoàn hảo.







Chúng ta sẽ tiếp tục trong phần sau.


Phần tiếp theo


Phần trước

Không có nhận xét nào:

Đăng nhận xét