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.
Không có nhận xét nào:
Đăng nhận xét