To upload files, please first save the app
import streamlit as st
import pandas as pd
from datetime import datetime
def main():
st.title("Company Management System")
# --- Summary Section ---
# Create columns for different metrics
col1, col2, col3, col4 = st.columns(4)
with col1:
total_employees = len(st.session_state.employees)
st.metric("Total Employees", total_employees)
with col2:
active_count = sum(emp["Status"] == "Active" for emp in st.session_state.employees)
st.metric("Active Employees", active_count)
with col3:
on_leave_count = sum(emp["Status"] == "On Leave" for emp in st.session_state.employees)
st.metric("On Leave", on_leave_count)
with col4:
# Example: Count new hires this month (dummy logic here)
# You could implement real logic if you store actual hire dates.
new_this_month = sum(
emp["Hire Date"].startswith(datetime.now().strftime("%Y-%m"))
for emp in st.session_state.employees
)
st.metric("New This Month", new_this_month)
# --- Employee List Section ---
st.subheader("Employee List")
df = pd.DataFrame(st.session_state.employees)
st.dataframe(df)
# --- Add a New Employee ---
st.subheader("Add a New Employee")
with st.form("employee_form", clear_on_submit=True):
emp_id = st.text_input("ID")
name = st.text_input("Name")
position = st.text_input("Position")
phone = st.text_input("Phone")
hire_date = st.date_input("Hire Date", datetime.now())
status = st.selectbox("Status", ["Active", "On Leave", "Resigned"])
submitted = st.form_submit_button("Add Employee")
if submitted:
st.session_state.employees.append(
{
"ID": emp_id,
"Name": name,
"Position": position,
"Phone": phone,
"Hire Date": hire_date.strftime("%Y-%m-%d"),
"Status": status,
}
)
st.success(f"Employee {name} added successfully!")
if __name__ == "__main__":
# Initialize dummy data in session_state if not present
if "employees" not in st.session_state:
st.session_state.employees = [
{
"ID": "EMP001",
"Name": "Alice",
"Position": "CEO",
"Phone": "123-456-7890",
"Hire Date": "2021-01-15",
"Status": "Active",
},
{
"ID": "EMP002",
"Name": "Bob",
"Position": "Manager",
"Phone": "234-567-8901",
"Hire Date": "2022-03-05",
"Status": "Active",
},
{
"ID": "EMP003",
"Name": "Charlie",
"Position": "Engineer",
"Phone": "345-678-9012",
"Hire Date": "2022-04-10",
"Status": "On Leave",
},
{
"ID": "EMP004",
"Name": "Diana",
"Position": "Designer",
"Phone": "456-789-0123",
"Hire Date": "2022-06-25",
"Status": "Resigned",
},
]
main()
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?