Hướng Dẫn Xây Dựng Hệ Thống Kế Toán Khách Sạn Đơn Giản Sử Dụng Python và JSON
Bạn đang tìm kiếm một phương pháp hiệu quả để quản lý dữ liệu cho các dự án nhỏ mà không cần đến những cơ sở dữ liệu phức tạp? Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một hệ thống kế toán khách sạn đơn giản, tận dụng sức mạnh của Python cùng với định dạng JSON để lưu trữ và quản lý thông tin.
JSON Là Gì?
JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu dễ đọc, dễ viết và phân tích. Nó là một lựa chọn lý tưởng cho các ứng dụng nhỏ khi bạn cần truyền tải dữ liệu giữa máy chủ và ứng dụng web mà không cần đến một cơ sở dữ liệu lớn.
1. Định Dạng JSON
Tệp JSON có cấu trúc chứa các cặp khóa-giá trị tương tự như từ điển trong Python. Ví dụ:
{
"key": "value",
"key2": {
"nested_key": "nested_value"
},
"list_key": [1, 2, 3]
}
Trong hệ thống kế toán khách sạn, chúng ta sẽ sử dụng JSON để lưu trữ thông tin như chi tiết đặt phòng, thông tin khách hàng và các khoản phí phòng.
2. Sử Dụng Module JSON Trong Python
Python cung cấp một module tích hợp sẵn có tên là json
, cho phép chúng ta dễ dàng đọc và ghi dữ liệu JSON. Dưới đây là một số phương thức hữu ích:
- json.load(): Đọc dữ liệu JSON từ một tệp và chuyển đổi thành đối tượng Python.
- json.loads(): Đọc dữ liệu JSON từ một chuỗi và chuyển đổi thành đối tượng Python.
- json.dump(): Ghi một đối tượng Python ra một tệp JSON.
- json.dumps(): Chuyển đổi một đối tượng Python thành chuỗi JSON.
Xây Dựng Hệ Thống Kế Toán Khách Sạn
Bây giờ chúng ta sẽ thực hiện bước xây dựng hệ thống kế toán khách sạn theo các bước cụ thể.
Bước 1: Thiết Lập Dự Án
- Tạo một tệp JSON để lưu trữ dữ liệu khách sạn (đặt phòng, thông tin khách hàng, v.v.).
- Viết các hàm Python để quản lý dữ liệu này.
Khởi tạo một tệp có tên hotel_data.json
với nội dung:
{}
Bước 2: Xây Dựng Các Hàm Quản Lý Dữ Liệu
1. Thêm Đặt Phòng
Chúng ta sẽ tạo một hàm add_booking()
để thêm thông tin đặt phòng của khách hàng:
import json
def add_booking(customer_name, room_number, nights, rate_per_night):
try:
with open('hotel_data.json', 'r') as file:
data = json.load(file)
except FileNotFoundError:
data = {}
total_charge = nights * rate_per_night
booking = {
"customer_name": customer_name,
"room_number": room_number,
"nights": nights,
"rate_per_night": rate_per_night,
"total_charge": total_charge
}
data[customer_name] = booking
with open('hotel_data.json', 'w') as file:
json.dump(data, file, indent=4)
print(f"Booking added for {customer_name} in room {room_number}.")
# Ví dụ sử dụng
add_booking(customer_name="John Doe", room_number=101, nights=3, rate_per_night=100)
2. Hiển Thị Đặt Phòng
Tiếp theo, tạo hàm view_bookings()
để xem tất cả đặt phòng:
def view_bookings():
try:
with open('hotel_data.json', 'r') as file:
data = json.load(file)
except FileNotFoundError:
data = {}
if not data:
print("No bookings found.")
return
for customer, details in data.items():
print(f"Customer: {customer}")
for key, value in details.items():
print(f" {key}: {value}")
print() # Dấu cách cho rõ ràng
# Ví dụ sử dụng
view_bookings()
3. Thanh Toán Cho Khách Hàng
Chúng ta cũng cần hàm checkout()
để xóa đặt phòng:
def checkout(customer_name):
try:
with open('hotel_data.json', 'r') as file:
data = json.load(file)
except FileNotFoundError:
print("No bookings found.")
return
if customer_name in data:
del data[customer_name]
with open('hotel_data.json', 'w') as file:
json.dump(data, file, indent=4)
print(f"Checked out {customer_name}.")
else:
print(f"No booking found for {customer_name}.")
# Ví dụ sử dụng
checkout("John Doe")
4. Tính Toán Tổng Doanh Thu
Hàm calculate_revenue()
sẽ giúp tính tổng doanh thu:
def calculate_revenue():
try:
with open('hotel_data.json', 'r') as file:
data = json.load(file)
except FileNotFoundError:
data = {}
total_revenue = sum(booking["total_charge"] for booking in data.values())
print(f"Total Revenue: ${total_revenue}")
# Ví dụ sử dụng
calculate_revenue()
Bước 3: Thêm Vòng Lặp Menu Chính
Cuối cùng, chúng ta sẽ quản lý hệ thống thông qua một vòng lặp menu:
def main_menu():
while True:
print("\n--- Hệ Thống Kế Toán Khách Sạn ---")
print("1. Thêm Đặt Phòng")
print("2. Xem Đặt Phòng")
print("3. Thanh Toán Khách Hàng")
print("4. Tính Toán Doanh Thu")
print("5. Thoát")
choice = input("Chọn một tùy chọn (1-5): ")
if choice == '1':
customer_name = input("Nhập tên khách hàng: ")
room_number = int(input("Nhập số phòng: "))
nights = int(input("Nhập số đêm: "))
rate_per_night = float(input("Nhập giá mỗi đêm: "))
add_booking(customer_name, room_number, nights, rate_per_night)
elif choice == '2':
view_bookings()
elif choice == '3':
customer_name = input("Nhập tên khách hàng để thanh toán: ")
checkout(customer_name)
elif choice == '4':
calculate_revenue()
elif choice == '5':
print("Đang thoát khỏi hệ thống. Chúc bạn một ngày tốt lành!")
break
else:
print("Lựa chọn không hợp lệ. Vui lòng nhập từ 1 đến 5.")
Chạy Chương Trình
Bạn chỉ cần gọi hàm main_menu()
để bắt đầu hệ thống:
main_menu()
Khi chạy chương trình, bạn sẽ thấy menu tương tác với các lựa chọn khác nhau. Hãy nhập số tương ứng để thực hiện các thao tác quản lý đặt phòng đơn giản trong khách sạn. Hệ thống này không chỉ giúp bạn quản lý đặt phòng một cách hiệu quả mà còn dễ dàng mở rộng thêm các tính năng mới trong tương lai. Chúc bạn lập trình vui vẻ và thành công với dự án của mình!
source: viblo