import streamlit as st import pandas as pd from datetime import datetime # Lấy ngày hiện tại today = datetime.today().strftime('%d/%m/%Y') # Giả sử đây là dữ liệu ban đầu từ bảng data = { 'Người đăng ký': [], 'Thời gian bắt đầu': [], 'Thời gian kết thúc': [], 'Phòng': [] # Chỉ lưu một phòng } # Chuyển dữ liệu thành DataFrame df = pd.DataFrame(data) # Hàm kiểm tra trùng lặp thời gian def is_time_overlap(start1, end1, start2, end2): return max(start1, start2) < min(end1, end2) # Tiêu đề của ứng dụng kèm ngày hiện tại st.title(f"Đăng ký phòng họp ngày {today}") # Nhập thông tin người đăng ký name = st.text_input("Người đăng ký") # Chọn thời gian bắt đầu và kết thúc start_time = st.time_input("Thời gian bắt đầu") end_time = st.time_input("Thời gian kết thúc") # Chọn phòng (chỉ một phòng) room = st.radio('Chọn phòng', ('Phòng 1', 'Phòng 2', 'Phòng 3')) # Khi người dùng nhấn nút 'Submit' if st.button("Submit"): if start_time >= end_time: st.error("Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc.") else: # Kiểm tra chồng chéo thời gian chỉ trong cùng một phòng overlap = False for i, row in df.iterrows(): # Chỉ kiểm tra trùng lặp nếu là cùng một phòng if row['Phòng'] == room and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time): overlap = True if overlap: st.error(f"Thời gian bạn chọn cho {room} đã bị trùng lặp với một người đăng ký khác.") else: # Thêm thông tin vào DataFrame new_row = pd.DataFrame({ 'Người đăng ký': [name], 'Thời gian bắt đầu': [start_time], 'Thời gian kết thúc': [end_time], 'Phòng': [room] }) df = pd.concat([df, new_row], ignore_index=True) st.success("Đăng ký thành công!") # Hiển thị bảng dữ liệu đã đăng ký st.write("Danh sách đăng ký:") st.dataframe(df)