شما یک توسعهدهنده نرمافزار با تجربه هستید. من میخواهم برای شرکت کشت و صنعت نیشکر دهخدا یک سیستم جامع آفلاین برای مدیریت واحد HSEE بسازم. این سیستم باید بهصورت کامل پیادهسازی شده، تستشده و قابل ارائه به شرکت باشد.
لطفاً پروژه زیر را از صفر تا صد طراحی و کدنویسی کن:
🎯 مشخصات عمومی:
پروژه: سیستم جامع مدیریت HSEE
زبان برنامهنویسی: Python
رابط کاربری: PyQt5 یا Tkinter (رابط گرافیکی کامل، قابل استفاده توسط کاربران غیرمتخصص)
پایگاه داده: SQLite (کاملاً آفلاین و قابل حمل)
خروجیها: گزارشهای PDF و Excel
خروجی نهایی: فایل اجرایی .exe برای ویندوز با استفاده از PyInstaller
📦 ماژولها و فرمهای مورد نیاز:
ماژول کارکنان (Staff)
ماژول بهداری (مراجعات پزشکی):
ثبت تاریخ مراجعه، پرسنل، علائم، تشخیص، درمان، داروهای تحویلی (از انبار)، نتیجه درمان، پزشک یا پرستار ثبتکننده
کاهش خودکار موجودی دارو
ماژول دارو و انبار پزشکی
فیلدها: نام دارو، تعداد موجودی، تاریخ انقضا
نمایش هشدار هنگام کاهش موجودی یا نزدیک بودن انقضا
ماژول آتشنشانی – بازرسی روزانه تجهیزات ایمنی
بررسی کپسولها، هیدرانت، هشداردهندهها، مسیر خروج، درهای اضطراری، روشنایی اضطراری، برچسبها
ثبت نتیجه: قبول / مردود + اقدامات اصلاحی
ماژول مانور ایمنی و آتشنشانی
ماژول آموزش HSEE
ماژول مستندسازی و گواهیها
ماژول گزارشگیری
تولید گزارش آماری روزانه، هفتگی، ماهانه از هر ماژول
خروجی به PDF و Excel
فیلتر با تاریخ، بخش، وضعیت
🔧 درخواست تولید کد:
۱. اول ساخت کامل دیتابیس با SQLite
۲. سپس طراحی رابط گرافیکی برای همه فرمها
۳. اتصال کامل بین فرمها و پایگاه داده
۴. فرم گزارشگیری با فیلتر و خروجی PDF/Excel
۵. نمایش هشدارها (مثلاً کم بودن موجودی یا انقضای دارو/گواهی)
۶. در پایان، اسکریپت PyInstaller برای تولید فایل اجرایی
🧪 تست:
در برنامه تستهای زیر را پیادهسازی کن:
ثبت مراجعه پزشکی و کاهش موجودی دارو
بازرسی آتشنشانی با گزینه رد/قبول و اقدامات اصلاحی
هشدارهای خودکار هنگام ثبت فرم
گزارشگیری دقیق با فیلترهای مختلف
🎁 خروجی نهایی باید:
دارای فایل اجرایی .exe باشد
دارای فایل دیتابیس SQLite قابل کپی
دارای پوشه گزارشها (PDF و Excel)
دارای README راهنمای کاربر
در پاسخ، لطفاً:
ابتدا ساختار دیتابیس (schema.sql)
سپس کدهای اصلی Python (ماژول به ماژول)
سپس طراحی رابط کاربری گرافیکی
سپس فرم گزارشگیری
سپس آموزش ساخت فایل اجرایی
و در نهایت راهنمای استفاده و پوشهبندی پروژه را ارائه کن
سلام! من یک سیستم جامع مدیریت HSEE برای شرکت کشت و صنعت نیشکر دهخدا طراحی و پیادهسازی میکنم. این پروژه شامل تمام ماژولهای درخواستی شما خواهد بود.
database/schema.sql
database/database_manager.py
gui/main_window.py
main.py
requirements.txt
build_exe.py
README.md
HSEE_Management_System/
├── main.py # فایل اصلی اجرا
├── database/
│ ├── database_manager.py # مدیریت پایگاه داده
│ └── schema.sql # ساختار جداول
├── gui/
│ └── main_window.py # رابط کاربری اصلی
├── reports/ # فولدر گزارشها
├── backups/ # فولدر پشتیبانها
├── certificates/ # فولدر گواهیها
├── assets/ # تصاویر و آیکونها
├── requirements.txt # وابستگیهای پایتون
├── build_exe.py # اسکریپت ساخت exe
└── README.md # این فایلreports ذخیره میشوندبرنامه باز نمیشود:
خطا در پایگاه داده:
hsee_system.db را حذف کنید تا مجدداً ایجاد شودمشکل در تولید گزارش:
reports وجود داشته باشدبرای دریافت پشتیبانی فنی یا گزارش مشکلات:
این نرمافزار متعلق به شرکت کشت و صنعت نیشکر دهخدا بوده و استفاده از آن منوط به کسب مجوز از شرکت میباشد.
توسعهدهنده: تیم فنی شرکت کشت و صنعت نیشکر دهخدا
تاریخ آخرین بروزرسانی: 2024/01/01
## 8. اسکریپت تست سیستم
```python project="HSEE Management System" file="test_system.py" type="code"
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
اسکریپت تست سیستم HSEE
"""
import sys
import os
import unittest
from datetime import datetime, timedelta
# اضافه کردن مسیر پروژه
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from database.database_manager import DatabaseManager
class TestHSEESystem(unittest.TestCase):
"""کلاس تست سیستم HSEE"""
def setUp(self):
"""راهاندازی تست"""
# استفاده از پایگاه داده تست
self.db = DatabaseManager("test_hsee.db")
def tearDown(self):
"""پاکسازی بعد از تست"""
# حذف فایل تست
if os.path.exists("test_hsee.db"):
os.remove("test_hsee.db")
def test_staff_management(self):
"""تست مدیریت کارکنان"""
print("🧪 تست مدیریت کارکنان...")
# افزودن کارمند
result = self.db.add_staff("احمد تستی", "T001", "تست", "کارمند تست")
self.assertTrue(result, "خطا در افزودن کارمند")
# دریافت کارکنان
staff_list = self.db.get_all_staff()
self.assertGreater(len(staff_list), 0, "هیچ کارمندی یافت نشد")
# بروزرسانی کارمند
staff_id = staff_list[-1]['id'] # آخرین کارمند اضافه شده
result = self.db.update_staff(staff_id, "احمد تستی بروز", "T001", "تست", "کارمند ارشد")
self.assertTrue(result, "خطا در بروزرسانی کارمند")
print("✅ تست مدیریت کارکنان موفق")
def test_medicine_management(self):
"""تست مدیریت داروها"""
print("🧪 تست مدیریت داروها...")
# افزودن دارو
expiry_date = (datetime.now() + timedelta(days=365)).strftime('%Y-%m-%d')
result = self.db.add_medicine("دارو تستی", 100, expiry_date, "قرص", 20)
self.assertTrue(result, "خطا در افزودن دارو")
# دریافت داروها
medicines = self.db.get_all_medicines()
self.assertGreater(len(medicines), 0, "هیچ دارویی یافت نشد")
# تست کاهش موجودی
medicine_id = medicines[-1]['id']
result = self.db.update_medicine_quantity(medicine_id, 50)
self.assertTrue(result, "خطا در بروزرسانی موجودی")
# تست داروهای کم موجود
low_stock = self.db.get_low_stock_medicines()
self.assertIsInstance(low_stock, list, "خطا در دریافت داروهای کم موجود")
print("✅ تست مدیریت داروها موفق")
def test_medical_visits(self):
"""تست مراجعات پزشکی"""
print("🧪 تست مراجعات پزشکی...")
# ابتدا یک کارمند اضافه کنیم
self.db.add_staff("بیمار تستی", "P001", "تست", "کارمند")
staff_list = self.db.get_all_staff()
staff_id = staff_list[-1]['id']
# افزودن دارو برای تست
self.db.add_medicine("دارو درمان", 50, "2025-12-31", "قرص", 10)
medicines = self.db.get_all_medicines()
medicine_id = medicines[-1]['id']
# ثبت مراجعه پزشکی
medicines_given = [{'id': medicine_id, 'name': 'دارو درمان', 'quantity': 2}]
result = self.db.add_medical_visit(
datetime.now().strftime('%Y-%m-%d'),
staff_id,
"سردرد",
"سردرد ساده",
"استراحت و دارو",
medicines_given,
"بهبود کامل",
"دکتر تست",
"یادداشت تست"
)
self.assertTrue(result, "خطا در ثبت مراجعه پزشکی")
# بررسی کاهش موجودی دارو
updated_medicine = self.db.execute_query("SELECT quantity FROM medicines WHERE id=?", (medicine_id,))
self.assertEqual(updated_medicine[0]['quantity'], 48, "موجودی دارو کاهش نیافته")
print("✅ تست مراجعات پزشکی موفق")
def test_safety_equipment(self):
"""تست تجهیزات ایمنی"""
print("🧪 تست تجهیزات ایمنی...")
# افزودن تجهیز
result = self.db.add_safety_equipment("کپسول تست", "محل تست", "کپسول")
self.assertTrue(result, "خطا در افزودن تجهیز ایمنی")
# دریافت تجهیزات
equipment_list = self.db.get_all_safety_equipment()
self.assertGreater(len(equipment_list), 0, "هیچ تجهیزی یافت نشد")
# ثبت بازرسی
equipment_id = equipment_list[-1]['id']
result = self.db.add_fire_inspection(
datetime.now().strftime('%Y-%m-%d'),
equipment_id,
"بازرس تست",
"قبول",
"بدون مشکل",
"تست موفق"
)
self.assertTrue(result, "خطا در ثبت بازرسی")
print("✅ تست تجهیزات ایمنی موفق")
def test_safety_drills(self):
"""تست مانورهای ایمنی"""
print("🧪 تست مانورهای ایمنی...")
participants = ["کارمند 1", "کارمند 2", "کارمند 3"]
result = self.db.add_safety_drill(
datetime.now().strftime('%Y-%m-%d'),
"مانور آتشنشانی",
"ساختمان اصلی",
participants,
30,
"ناظر تست",
"عالی",
"بدون مشکل",
"مانور موفق"
)
self.assertTrue(result, "خطا در ثبت مانور ایمنی")
# دریافت مانورها
drills = self.db.get_safety_drills()
self.assertGreater(len(drills), 0, "هیچ مانوری یافت نشد")
print("✅ تست مانورهای ایمنی موفق")
def test_hsee_training(self):
"""تست آموزشهای HSEE"""
print("🧪 تست آموزشهای HSEE...")
participants = ["شرکتکننده 1", "شرکتکننده 2"]
result = self.db.add_hsee_training(
datetime.now().strftime('%Y-%m-%d'),
"آموزش ایمنی",
"مدرس تست",
participants,
"بسیار خوب",
2,
4,
"آموزش مفید"
)
self.assertTrue(result, "خطا در ثبت آموزش")
# دریافت آموزشها
trainings = self.db.get_hsee_trainings()
self.assertGreater(len(trainings), 0, "هیچ آموزشی یافت نشد")
print("✅ تست آموزشهای HSEE موفق")
def test_certificates(self):
"""تست گواهیها"""
print("🧪 تست گواهیها...")
# گواهی شرکت
result = self.db.add_certificate(
"گواهی ISO",
"مدیریت کیفیت",
"سازمان استاندارد",
datetime.now().strftime('%Y-%m-%d'),
(datetime.now() + timedelta(days=365)).strftime('%Y-%m-%d'),
None, # گواهی شرکت
None
)
self.assertTrue(result, "خطا در ثبت گواهی")
# دریافت گواهیها
certificates = self.db.get_certificates()
self.assertGreater(len(certificates), 0, "هیچ گواهیای یافت نشد")
# تست گواهیهای نزدیک به انقضا
expiring_certs = self.db.get_expiring_certificates(400) # 400 روز
self.assertIsInstance(expiring_certs, list, "خطا در دریافت گواهیهای منقضی")
print("✅ تست گواهیها موفق")
def test_dashboard_stats(self):
"""تست آمار داشبورد"""
print("🧪 تست آمار داشبورد...")
stats = self.db.get_dashboard_stats()
# بررسی وجود کلیدهای مورد انتظار
expected_keys = [
'total_staff',
'monthly_medical_visits',
'low_stock_medicines',
'expiring_certificates',
'monthly_inspections'
]
for key in expected_keys:
self.assertIn(key, stats, f"کلید {key} در آمار یافت نشد")
self.assertIsInstance(stats[key], int, f"مقدار {key} باید عدد باشد")
print("✅ تست آمار داشبورد موفق")
def test_activity_logging(self):
"""تست ثبت فعالیتها"""
print("🧪 تست ثبت فعالیتها...")
# ثبت یک فعالیت
self.db.log_activity("کاربر تست", "تست", "test_table", 1, "تست لاگ")
# بررسی ثبت لاگ
logs = self.db.execute_query("SELECT * FROM activity_logs WHERE user_name='کاربر تست'")
self.assertGreater(len(logs), 0, "لاگ فعالیت ثبت نشده")
print("✅ تست ثبت فعالیتها موفق")
def run_comprehensive_test():
"""اجرای تست جامع سیستم"""
print("🚀 شروع تست جامع سیستم HSEE")
print("=" * 50)
# اجرای تستها
unittest.main(argv=[''], exit=False, verbosity=2)
print("\n" + "=" * 50)
print("🎉 تست جامع سیستم تکمیل شد!")
if __name__ == '__main__':
run_comprehensive_test()سیستم جامع مدیریت HSEE شما آماده است! این سیستم شامل:
pip install -r requirements.txtpython main.pypython build_exe.pypython test_system.pyHSEE_Management_System.exe - فایل اجراییinstaller.bat - نصب خودکارreports/, backups/, certificates/README.md - راهنمای کاملسیستم شما آماده تحویل به شرکت کشت و صنعت نیشکر دهخدا است! 🎉
عالی! من رابط کاربری سیستم HSEE را با تمهای مختلف و طراحی بهبود یافته ارتقا میدهم.
gui/theme_manager.py
gui/custom_widgets.py
gui/enhanced_main_window.py
main_enhanced.py
سیستم شما حالا با طراحی مدرن و حرفهای آماده استفاده است! 🎉