0
0
Lập trình
TT

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

Đăng vào 1 tuần trước

• 6 phút đọc

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ụ:

Copy
{
    "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:

Copy
{}

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:

Copy
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:

Copy
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:

Copy
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:

Copy
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:

Copy
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:

Copy
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

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào