Thứ Năm, 30 tháng 5, 2024

57. Quản lý sinh viên Python phần 5

Phần trước chúng ta đã hoàn tất hàm tìm sinh viên theo ID. Chúng ta tiếp tục với hàm xóa tên một sinh viên ra khỏi danh sách

Hàm Xóa Sinh Viên khỏi danh sách

Như chúng ta đã thảo luận trước, muốn xóa một cái gì đó thì trước hết phải tìm cho ra cái đó rồi mới "có cái" để mà xóa.

Chúng ta coi lại hàm findByID()

 

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

 

Hàm này có giá trị trả về:

  • Nếu tìm thành công thì  findByID() sẽ trả về phần tử có ID tương ứng trong listSinhVien[]
  • Nếu tìm không thấy, hàm sẽ trả về giá trị None.
 

Như đã thảo luận trước đây, để xóa một phần tử trong listSinhVien[], chúng ta dùng hàm remove()

Thuật toán hàm xóa sinh viên sẽ như sau:
Tìm sinh viên theo ID, nếu kết quả trả về của hàm findByID khác None có nghĩa là đã tìm thấy sinh viên trùng với ID người sử dụng nhập vào từ bàn phím thì sử dụng hàm remove() để xóa sinh viên đó khỏi danh sách.


Đây là code của hàm xóa sinh viên theo ID, chúng ta đặt tên là deleteById()

def deleteById(self, ID):
        isDeleted = False
        # tìm kiếm sinh viên theo ID
        sv = self.findByID(ID)
        if (sv != None):
            self.listSinhVien.remove(sv)
            isDeleted = True
        return isDeleted


Chúng ta đặt deleteById() 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

    def deleteById(self, ID):
        isDeleted = False
        # tìm kiếm sinh viên theo ID
        sv = self.findByID(ID)
        if (sv != None):
            self.listSinhVien.remove(sv)
            isDeleted = True

        return isDeleted

 

 

 Để thực thi hàm, chúng ta sẽ gọi hàm trong file 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("\nNhap ID cua sinh vien can Xoa: ")
        ID = str(input())
        qlsv.deleteById(ID)


        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. Đầu tiên bạn bấm số 1 để thêm vài sinh viên vào danh sách. Sau đó bấm số 5 để kiểm tra danh sách. Tiếp theo bấm số 3 để xóa một sinh viên nào đó. Cuối cùng bấm số 5 lại để kiểm tra sinh viên đã được xóa chưa.






Phần tiếp theo


Phần trước


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

Đăng nhận xét