- vừa được xem lúc

Xây dựng hệ thống kế toán khách sạn đơn giản với Python và JSON

0 0 6

Người đăng: Vinh Phạm

Theo Viblo Asia

Bạn đã chán ngấy với việc thiết lập và quản lý những cơ sở dữ liệu cồng kềnh cho các dự án nhỏ của mình? Nếu bạn đang phát triển một ứng dụng quy mô nhỏ và cần một giải pháp nhẹ nhàng, JSON (JavaScript Object Notation) có thể là người bạn đồng hành tốt nhất! Trong hướng dẫn 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 sử dụng Python và JSON để lưu trữ và quản lý dữ liệu.

JSON là gì?

JSON, hay JavaScript Object Notation, là một định dạng trao đổi dữ liệu nhẹ, dễ đọc và viết cho con người, đồng thời dễ phân tích và tạo ra cho máy móc. Nó thường được sử dụng để truyền dữ liệu giữa máy chủ và ứng dụng web, và rất phù hợp cho các cơ sở dữ liệu nhỏ!

1. Định dạng JSON chuẩn

Tệp JSON lưu trữ dữ liệu theo các cặp khóa-giá trị, giống như một từ điển Python. Dưới đây là một cấu trúc cơ bản:

{ "key": "value", "key2": { "nested_key": "nested_value" }, "list_key": [1, 2, 3]
}

Trong hệ thống kế toán khách sạn của chúng ta, chúng ta sẽ sử dụng JSON để lưu trữ thông tin như thông tin đặt phòng, chi tiết khách hàng và phí phòng.

2. Module json của Python

Module json tích hợp sẵn của Python giúp việc đọc và ghi dữ liệu JSON trở nên dễ dàng. Hãy cùng xem một số phương thức quan trọng trong module này:

import json with open('data.json', 'r') as file: data = json.load(file)

json.load()

Phương thức json.load() đọc dữ liệu JSON từ một tệp và chuyển đổi nó thành một đối tượng Python (thường là một từ điển).

import json with open('data.json', 'r') as file: data = json.load(file)

json.loads()

Phương thức json.loads() đọc dữ liệu JSON từ một chuỗi và chuyển đổi nó thành một đối tượng Python.

json_string = '{"name": "John", "age": 30}'
data = json.loads(json_string)

json.dump()

Phương thức json.dump() ghi một đối tượng Python vào một tệp JSON.

data = {"name": "John", "age": 30}
with open('data.json', 'w') as file: json.dump(data, file)

json.dumps()

Phương thức json.dumps() chuyển đổi một đối tượng Python thành một chuỗi JSON.

data = {"name": "John", "age": 30}
json_string = json.dumps(data)

Xây dựng hệ thống

Giờ chúng ta hãy cùng xây dựng một hệ thống kế toán khách sạn dựa trên những gì đã biết nhé.

Bước 1: Thiết lập dự án

Đầu tiên, hãy tạo một cấu trúc cơ bản cho Hệ thống Kế toán Khách sạn của chúng ta. Chúng ta cần:

  • 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.).
  • Các hàm Python để quản lý dữ liệu này.

Tạo một tệp có tên hotel_data.json và khởi tạo nó với một từ điển rỗng:

{}

Bước 2: Xây dựng các hàm quản lý dữ liệu khách sạn

Chúng ta sẽ định nghĩa một số hàm cơ bản để xử lý việc đặt phòng, thanh toán và hiển thị thông tin khách hàng.

1. Thêm đặt phòng

Hãy tạo một hàm có tên add_booking() nhận thông tin chi tiết của khách hàng và thông tin đặt phòng, sau đó lưu nó vào tệp JSON.

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 = {} # Calculate total charges total_charge = nights * rate_per_night # Create a booking dictionary booking = { "customer_name": customer_name, "room_number": room_number, "nights": nights, "rate_per_night": rate_per_night, "total_charge": total_charge } # Store booking data data[customer_name] = booking # Save data back to JSON file 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}.") # Example usage
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, hãy tạo một hàm có tên view_bookings() để hiển thị tất cả cá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() # Newline for readability # Example usage
view_bookings()

3. Thanh toán cho khách hàng

Bây giờ, hãy tạo một hàm checkout() để xóa đặt phòng của khách hàng khỏi tệp JSON.

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}.") # Example usage
checkout("John Doe")

4. Tính toán tổng doanh thu

Cuối cùng, hãy tạo một hàm calculate_revenue() để tính tổng chi phí từ tất cả các đặt phòng.

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}") # Example usage
calculate_revenue()

Bọc tất cả các hàm trong một vòng lặp while sẽ làm cho Hệ thống Kế toán Khách sạn của chúng ta trở nên tương tác, cho phép người dùng chọn các tùy chọn trong một định dạng giống menu và thực hiện nhiều thao tác lặp đi lặp lại cho đến khi họ chọn thoát. Hãy tiếp tục và triển khai điều này.

Bước 3: Thêm vòng lặp menu chính

Ở đây, chúng ta sẽ tạo một hàm có tên main_menu() sẽ:

  • Hiển thị menu với các tùy chọn khả dụng.
  • Nhận đầu vào của người dùng để xác định hành động nào cần thực hiện.
  • Tiếp tục lặp cho đến khi người dùng chọn thoát.
def main_menu(): while True: print("\n--- Hotel Accounting System ---") print("1. Add Booking") print("2. View Bookings") print("3. Checkout Customer") print("4. Calculate Revenue") print("5. Exit") # Get user choice choice = input("Choose an option (1-5): ") if choice == '1': customer_name = input("Enter customer name: ") room_number = int(input("Enter room number: ")) nights = int(input("Enter number of nights: ")) rate_per_night = float(input("Enter rate per night: ")) add_booking(customer_name, room_number, nights, rate_per_night) elif choice == '2': view_bookings() elif choice == '3': customer_name = input("Enter customer name for checkout: ") checkout(customer_name) elif choice == '4': calculate_revenue() elif choice == '5': print("Exiting the system. Have a great day!") break else: print("Invalid choice. Please enter a number from 1 to 5.")

Giải thích về hàm main_menu()

  1. Hiển thị các tùy chọn menu: Hàm bắt đầu bằng cách in một menu với các tùy chọn cho người dùng. Mỗi tùy chọn tương ứng với một chức năng cụ thể trong hệ thống: thêm đặt phòng, xem đặt phòng, thanh toán cho khách hàng, tính toán doanh thu và thoát khỏi chương trình.

  2. Nhận đầu vào của người dùng: Hàm input() được sử dụng để thu thập lựa chọn của người dùng. Sau đó, chúng ta sử dụng một khối if-elif để xác định hành động nào cần thực hiện dựa trên đầu vào của người dùng.

  3. Thực thi các hàm dựa trên lựa chọn của người dùng:

  • Nếu 1 được chọn, nó sẽ nhắc nhập chi tiết đặt phòng và gọi hàm add_booking().
  • Nếu 2 được chọn, nó sẽ gọi view_bookings() để hiển thị tất cả các đặt phòng hiện tại.
  • Nếu 3 được chọn, nó sẽ yêu cầu tên của khách hàng và gọi checkout() để xóa đặt phòng của họ.
  • Nếu 4 được chọn, nó sẽ gọi calculate_revenue() để hiển thị tổng doanh thu từ tất cả các đặt phòng.
  • Nếu 5 được chọn, vòng lặp bị phá vỡ bằng câu lệnh break và thông báo tạm biệt được hiển thị.
  1. Xử lý đầu vào không hợp lệ: Nếu người dùng nhập bất kỳ thứ gì khác ngoài 1-5, nó sẽ hiển thị thông báo lỗi và vòng lặp tiếp tục, cho phép người dùng chọn một tùy chọn hợp lệ.

Chạy chương trình

Bây giờ, bạn có thể đơn giản gọi hàm main_menu() để bắt đầu Hệ thống Kế toán Khách sạn tương tác:

main_menu()

Khi bạn chạy chương trình, bạn sẽ thấy một menu. Sau đó, bạn có thể nhập số tương ứng với hành động mà bạn muốn thực hiện và hệ thống sẽ phản hồi tương ứng. Bạn có thể tiếp tục thực hiện các hành động cho đến khi bạn chọn tùy chọn 5 để thoát.

Giờ đây, bạn đã có một hệ thống kế toán khách sạn hoàn toàn tương tác bằng cách sử dụng JSON làm cơ sở dữ liệu nhỏ. Vòng lặp này cung cấp một cách đơn giản nhưng hiệu quả để mô phỏng một hệ thống thực, giúp bạn dễ dàng mở rộng thêm các tính năng trong tương lai. Chúc các bạn lập trình vui vẻ!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thao tác với File trong Python

Python cung cấp các chức năng cơ bản và phương thức cần thiết để thao tác các file. Bài viết này tôi xin giới thiệu những thao tác cơ bản nhất với file trong Python.

0 0 63

- vừa được xem lúc

Tập tành crawl dữ liệu với Scrapy Framework

Lời mở đầu. Chào mọi người, mấy hôm nay mình có tìm hiểu được 1 chút về Scrapy nên muốn viết vài dòng để xem mình đã học được những gì và làm 1 demo nho nhỏ.

0 0 166

- vừa được xem lúc

Sử dụng Misoca API (oauth2) với Python

Với bài viết này giúp chúng ta có thể nắm được. ・Tìm hiểu cách xử lý API misoca bằng Python.

0 0 49

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

0 0 63

- vừa được xem lúc

Lập trình socket bằng Python

Socket là gì. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thể hiện là một con số cụ thể), từ đó tiến hành kết nối giữa client và server.

0 0 79

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 95