python
import mysql.connector
# Database connection function
def connect_db():
return mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="company_management"
# Employee Management Functions
def add_employee(name, department, designation, salary):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO employees (name, department, designation, salary) VALUES (%s, %s, %s, %s)", (name,
department, designation, salary))
connection.commit()
cursor.close()
connection.close()
def view_employees():
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM employees")
results = cursor.fetchall()
cursor.close()
connection.close()
for row in results:
print(row)
def update_employee(employee_id, name=None, department=None, designation=None, salary=None):
connection = connect_db()
cursor = connection.cursor()
query = "UPDATE employees SET"
params = []
if name:
query += " name=%s,"
params.append(name)
if department:
query += " department=%s,"
params.append(department)
if designation:
query += " designation=%s,"
params.append(designation)
if salary:
query += " salary=%s,"
params.append(salary)
query = query.rstrip(',')
query += " WHERE id=%s"
params.append(employee_id)
cursor.execute(query, tuple(params))
connection.commit()
cursor.close()
connection.close()
def delete_employee(employee_id):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("DELETE FROM employees WHERE id=%s", (employee_id,))
connection.commit()
cursor.close()
connection.close()
def search_employee(name):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM employees WHERE name LIKE %s", ('%' + name + '%',))
results = cursor.fetchall()
cursor.close()
connection.close()
return results
# Inventory Management Functions
def add_inventory(item_name, quantity, price):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO inventory (item_name, quantity, price) VALUES (%s, %s, %s)", (item_name, quantity,
price))
connection.commit()
cursor.close()
connection.close()
def view_inventory():
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM inventory")
results = cursor.fetchall()
cursor.close()
connection.close()
for row in results:
print(row)
def update_inventory(item_id, item_name=None, quantity=None, price=None):
connection = connect_db()
cursor = connection.cursor()
query = "UPDATE inventory SET"
params = []
if item_name:
query += " item_name=%s,"
params.append(item_name)
if quantity:
query += " quantity=%s,"
params.append(quantity)
if price:
query += " price=%s,"
params.append(price)
query = query.rstrip(',')
query += " WHERE id=%s"
params.append(item_id)
cursor.execute(query, tuple(params))
connection.commit()
cursor.close()
connection.close()
def delete_inventory(item_id):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("DELETE FROM inventory WHERE id=%s", (item_id,))
connection.commit()
cursor.close()
connection.close()
def search_inventory(item_name):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM inventory WHERE item_name LIKE %s", ('%' + item_name + '%',))
results = cursor.fetchall()
cursor.close()
connection.close()
return results
# Salary Management Functions
def add_salary(employee_id, month, year, amount):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO salary (employee_id, month, year, amount) VALUES (%s, %s, %s, %s)", (employee_id,
month, year, amount))
connection.commit()
cursor.close()
connection.close()
def view_salaries():
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM salary")
results = cursor.fetchall()
cursor.close()
connection.close()
for row in results:
print(row)
def search_salary(employee_id=None, month=None, year=None, amount=None):
connection = connect_db()
cursor = connection.cursor()
query = "SELECT * FROM salary WHERE"
params = []
if employee_id:
query += " employee_id=%s AND"
params.append(employee_id)
if month:
query += " month=%s AND"
params.append(month)
if year:
query += " year=%s AND"
params.append(year)
if amount:
query += " amount=%s AND"
params.append(amount)
query = query.rstrip('AND')
cursor.execute(query, tuple(params))
results = cursor.fetchall()
cursor.close()
connection.close()
return results
# Leave and Attendance Management Functions
def add_leave(employee_id, start_date, end_date, reason):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO leaves (employee_id, start_date, end_date, reason) VALUES (%s, %s, %s, %s)",
(employee_id, start_date, end_date, reason))
connection.commit()
cursor.close()
connection.close()
def view_leaves():
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM leaves")
results = cursor.fetchall()
cursor.close()
connection.close()
for row in results:
print(row)
def search_leaves(employee_id):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM leaves WHERE employee_id = %s", (employee_id,))
results = cursor.fetchall()
cursor.close()
connection.close()
return results
def record_attendance(date, employee_id, status):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO attendance (date, employee_id, status) VALUES (%s, %s, %s)", (date, employee_id,
status))
connection.commit()
cursor.close()
connection.close()
def view_attendance():
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM attendance")
results = cursor.fetchall()
cursor.close()
connection.close()
for row in results:
print(row)
def mark_attendance(date):
connection = connect_db()
cursor = connection.cursor()
cursor.execute("SELECT id, name FROM employees")
employees = cursor.fetchall()
cursor.execute("SELECT employee_id FROM leaves WHERE %s BETWEEN start_date AND end_date", (date,))
on_leave = cursor.fetchall()
leave_ids = [leave[0] for leave in on_leave]
for employee in employees:
employee_id = employee[0]
employee_name = employee[1]
if employee_id in leave_ids:
status = "On Leave"
else:
status = input(f"Enter status for {employee_name} (Present/Absent): ")
record_attendance(date, employee_id, status)
cursor.close()
connection.close()
print("Attendance recorded successfully.")
# Main Menu Function
def main_menu():
while True:
print("\n--- Main Menu ---")
print("1. Employee Management")
print("2. Inventory Management")
print("3. Salary Management")
print("4. Leave and Attendance Management")
print("5. Exit")
choice = input("Enter your choice: ")
if choice == '1':
employee_menu()
elif choice == '2':
inventory_menu()
elif choice == '3':
salary_menu()
elif choice == '4':
leave_menu()
elif choice == '5':
break
else:
print("Invalid choice. Please try again.")
# Employee Menu Function
def employee_menu():
while True:
print("\n--- Employee Management Menu ---")
print("1. Add Employee")
print("2. View Employees")
print("3. Update Employee")
print("4. Delete Employee")
print("5. Search Employee")
print("6. Back to Main Menu")
choice = input("Enter your choice: ")
if choice == '1':
name = input("Enter employee name: ")
department = input("Enter employee department: ")
designation = input("Enter employee designation: ")
salary = float(input("Enter employee salary: "))
add_employee(name, department, designation, salary)
print("Employee added successfully.")
elif choice == '2':
print("\nEmployee List:")
view_employees()
elif choice == '3':
employee_id = int(input("Enter employee ID to update: "))
name = input("Enter new name (or leave blank to skip): ")
department = input("Enter new department (or leave blank to skip): ")
designation = input("Enter new designation (or leave blank to skip): ")
salary = input("Enter new salary (or leave blank to skip): ")
if salary:
salary = float(salary)
update_employee(employee_id, name if name else None, department if department else None, designation if
designation else None, salary if salary else None)
print("Employee updated successfully.")
elif choice == '4':
employee_id = int(input("Enter employee ID to delete: "))
delete_employee(employee_id)
print("Employee deleted successfully.")
elif choice == '5':
name = input("Enter employee name to search: ")
results = search_employee(name)
if results:
print("\nSearch Results:")
for row in results:
print(row)
else:
print("No employees found.")
elif choice == '6':
break
else:
print("Invalid choice. Please try again.")
# Inventory Menu Function
def inventory_menu():
while True:
print("\n--- Inventory Management Menu ---")
print("1. Add Inventory Item")
print("2. View Inventory")
print("3. Update Inventory Item")
print("4. Delete Inventory Item")
print("5. Search Inventory Item")
print("6. Back to Main Menu")
choice = input("Enter your choice: ")
if choice == '1':
item_name = input("Enter item name: ")
quantity = int(input("Enter item quantity: "))
price = float(input("Enter item price: "))
add_inventory(item_name, quantity, price)
print("Item added successfully.")
elif choice == '2':
print("\nInventory List:")
view_inventory()
elif choice == '3':
item_id = int(input("Enter item ID to update: "))
item_name = input("Enter new item name (or leave blank to skip): ")
quantity = input("Enter new quantity (or leave blank to skip): ")
if quantity:
quantity = int(quantity)
price = input("Enter new price (or leave blank to skip): ")
if price:
price = float(price)
update_inventory(item_id, item_name if item_name else None, quantity if quantity else None, price if price else
None)
print("Item updated successfully.")
elif choice == '4':
item_id = int(input("Enter item ID to delete: "))
delete_inventory(item_id)
print("Item deleted successfully.")
elif choice == '5':
item_name = input("Enter item name to search: ")
results = search_inventory(item_name)
if results:
print("\nSearch Results:")
for row in results:
print(row)
else:
print("No items found.")
elif choice == '6':
break
else:
print("Invalid choice. Please try again.")
# Salary Menu Function
def salary_menu():
while True:
print("\n--- Salary Management Menu ---")
print("1. Add Salary")
print("2. View Salaries")
print("3. Search Salary")
print("4. Back to Main Menu")
choice = input("Enter your choice: ")
if choice == '1':
employee_id = int(input("Enter employee ID: "))
month = input("Enter salary month: ")
year = input("Enter salary year: ")
amount = float(input("Enter salary amount: "))
add_salary(employee_id, month, year, amount)
print("Salary added successfully.")
elif choice == '2':
print("\nSalary List:")
view_salaries()
elif choice == '3':
employee_id = input("Enter employee ID to search (or leave blank): ")
month = input("Enter month to search (or leave blank): ")
year = input("Enter year to search (or leave blank): ")
amount = input("Enter salary amount to search (or leave blank): ")
results = search_salary(employee_id if employee_id else None, month if month else None, year if year else None,
float(amount) if amount else None)
if results:
print("\nSearch Results:")
for row in results:
print(row)
else:
print("No salary records found.")
elif choice == '4':
break
else:
print("Invalid choice. Please try again.")
# Leave and Attendance Menu Function
def leave_menu():
while True:
print("\n--- Leave and Attendance Management Menu ---")
print("1. Add Leave")
print("2. View Leaves")
print("3. Search Leaves")
print("4. Record Attendance")
print("5. View Attendance")
print("6. Back to Main Menu")
choice = input("Enter your choice: ")
if choice == '1':
employee_id = int(input("Enter employee ID: "))
start_date = input("Enter start date (YYYY-MM-DD): ")
end_date = input("Enter end date (YYYY-MM-DD): ")
reason = input("Enter reason for leave: ")
add_leave(employee_id, start_date, end_date, reason)
print("Leave added successfully.")
elif choice == '2':
print("\nLeave List:")
view_leaves()
elif choice == '3':
employee_id = int(input("Enter employee ID to search: "))
results = search_leaves(employee_id)
if results:
print("\nSearch Results:")
for row in results:
print(row)
else:
print("No leaves found.")
elif choice == '4':
date = input("Enter date for attendance (YYYY-MM-DD): ")
mark_attendance(date)
elif choice == '5':
print("\nAttendance Records:")
view_attendance()
elif choice == '6':
break
else:
print("Invalid choice. Please try again.")
# Run the main menu
if __name__ == "__main__":
main_menu()
Sql table
-- Employees Table
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(100),
designation VARCHAR(100),
salary DECIMAL(10, 2)
);
-- Inventory Table
CREATE TABLE inventory (
id INT AUTO_INCREMENT PRIMARY KEY,
item_name VARCHAR(100),
quantity INT,
price DECIMAL(10, 2)
);
-- Salary Table
CREATE TABLE salary (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
month VARCHAR(20),
year VARCHAR(4),
amount DECIMAL(10, 2),
FOREIGN KEY (employee_id) REFERENCES employees(id)
);
-- Leaves Table
CREATE TABLE leaves (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
start_date DATE,
end_date DATE,
reason VARCHAR(255),
FOREIGN KEY (employee_id) REFERENCES employees(id)
);
-- Attendance Table
CREATE TABLE attendance (
id INT AUTO_INCREMENT PRIMARY KEY,
date DATE,
employee_id INT,
status VARCHAR(50),
FOREIGN KEY (employee_id) REFERENCES employees(id)
);