Câu hỏi:
13/07/2024 47Sử dụng cây tìm kiếm nhị phân để viết ứng dụng quản lí tài khoản ngân hàng. Mỗi một tài khoản gồm mã tài khoản (duy nhất) và số dư tài khoản. Ứng dụng cho phép thêm tài khoản, sửa số dư tài khoản, tìm kiếm tài khoản theo mã tài khoản.
Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).
Quảng cáo
Trả lời:
Hướng dẫn gợi ý về cách sử dụng cây tìm kiếm nhị phân để viết ứng dụng quản lí tài khoản ngân hàng thông qua một chương trình mẫu sau:
class Account:
def __init__(self, account_id, balance):
self.account_id = account_id
self.balance = balance
self.left = None
self.right = None
class BankAccountManager:
def __init__(self):
self.root = None
def insert(self, root, account_id, balance):
if root is None:
return Account(account_id, balance)
if account_id < root.account_id:
root.left = self.insert(root.left, account_id, balance)
elif account_id > root.account_id:
root.right = self.insert(root.right, account_id, balance)
return root
def add_account(self, account_id, balance):
self.root = self.insert(self.root, account_id, balance)
def search(self, root, account_id):
if root is None or root.account_id == account_id:
return root
if account_id < root.account_id:
return self.search(root.left, account_id)
return self.search(root.right, account_id)
def find_account(self, account_id):
return self.search(self.root, account_id)
def update_balance(self, account_id, new_balance):
account = self.find_account(account_id)
if account:
account.balance = new_balance
else:
print("Account not found.")
# Sử dụng ứng dụng
bank_manager = BankAccountManager()
# Thêm tài khoản
bank_manager.add_account(1001, 50000)
bank_manager.add_account(1002, 100000)
bank_manager.add_account(1003, 75000)
# Tìm kiếm tài khoản
account = bank_manager.find_account(1002)
if account:
print(f"Account found - Account ID: {account.account_id}, Balance: {account.balance}")
else:
print("Account not found.")
# Cập nhật số dư tài khoản
bank_manager.update_balance(1001, 60000)
# Kiểm tra lại số dư sau khi cập nhật
account = bank_manager.find_account(1001)
if account:
print(f"Updated balance - Account ID: {account.account_id}, Balance: {account.balance}")
else:
print("Account not found.")
Chú thích trong chương trình này:
- Lớp Account được sử dụng để đại diện cho mỗi tài khoản, với hai thuộc tính là account_id (mã tài khoản) và balance (số dư tài khoản).
- Lớp BankAccountManager chứa các phương thức để thêm tài khoản, tìm kiếm tài khoản và cập nhật số dư tài khoản. Mỗi tài khoản được lưu trữ trong một cây tìm kiếm nhị phân, với account_id làm khóa.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Sử dụng cây tìm kiếm nhị phân để viết chương trình quản lí danh sách học sinh của một trường trung học phổ thông. Mỗi một học sinh gồm các thông tin: mã học sinh (duy nhất), họ tên, ngày sinh. Chương trình cho phép thêm một học sinh vào danh sách với các trường thông tin kể trên, tìm kiếm học sinh theo mã và sửa đổi họ tên và ngày sinh ứng với một mã học sinh.
Câu 2:
Trong Bài 7, cây tìm tìm kiếm nhị phân được cài đặt bằng mảng một chiều và mỗi nút của cây có khoá là một thuộc tính. Trong thực tế, một đối tượng có thể có nhiều thuộc tính. Ví dụ, với bài toán quản lí các món trong thực đơn, mỗi món có hai thuộc tính là tên và giá tiền. Trong trường hợp này, cây tìm kiếm nhị phân biểu diễn danh sách các món được cài đặt bằng mảng như thế nào và làm thế nào để mỗi nút của cây chứa hai thuộc tính là tên và giá tiền?
Câu 3:
Vẽ cây tìm kiếm nhị phân ứng với tệp menu.inp trong nhiệm vụ thực hành, lưu ý mỗi nút gồm hai thuộc tính name và price.
Câu 4:
về câu hỏi!