← العودة للمشاريع

تطبيق حاسبة تفاعلية

HTML5 CSS3 JavaScript Responsive
تطبيق حاسبة تفاعلية

وصف المشروع

تطبيق حاسبة تفاعلية حديثة مصممة بواجهة مستخدم أنيقة وسهلة الاستخدام. يتيح التطبيق إجراء العمليات الحسابية الأساسية والمتقدمة بسرعة ودقة عالية. تم بناء المشروع باستخدام HTML5 و CSS3 و JavaScript الخالص دون الاعتماد على أي مكتبات خارجية.

الميزات الرئيسية

  • واجهة مستخدم عصرية وجذابة مع تأثيرات بصرية سلسة
  • دعم العمليات الحسابية الأساسية (الجمع، الطرح، الضرب، القسمة)
  • دعم العمليات المتقدمة (النسبة المئوية، الجذر التربيعي، الأس)
  • لوحة مفاتيح تفاعلية مع تأثيرات عند الضغط
  • دعم إدخال البيانات عبر لوحة المفاتيح الفعلية
  • ذاكرة مؤقتة لحفظ العمليات السابقة
  • تصميم متجاوب يعمل على جميع الأجهزة (Desktop, Tablet, Mobile)
  • دعم الوضع الداكن والفاتح

التقنيات المستخدمة

  • HTML5: للبنية الأساسية وعناصر الإدخال
  • CSS3: للتصميم المتقدم مع استخدام Grid و Flexbox
  • JavaScript ES6+: للمنطق البرمجي والتفاعلية
  • Local Storage API: لحفظ إعدادات المستخدم

التحديات والحلول

واجهت تحديات في معالجة العمليات الحسابية المعقدة وضمان دقة النتائج، خاصة مع الأرقام العشرية الطويلة. تم حل ذلك من خلال استخدام دوال رياضية متقدمة ومعالجة الأخطاء بشكل شامل. كما تم تحسين تجربة المستخدم من خلال إضافة تأثيرات بصرية وصوتية عند الضغط على الأزرار.

الدروس المستفادة

تعلمت من خلال هذا المشروع أهمية التخطيط الجيد للبنية البرمجية، وكيفية التعامل مع الأحداث (Events) في JavaScript بشكل فعال، بالإضافة إلى تحسين أداء التطبيق من خلال تقليل عمليات DOM manipulation.

نماذج من الأكواد البرمجية

فيما يلي بعض الأمثلة على الأكواد المستخدمة في المشروع:

JavaScript - معالجة العمليات الحسابية

// دالة لتنفيذ العمليات الحسابية
function calculate(num1, operator, num2) {
    switch(operator) {
        case '+':
            return num1 + num2;
        case '-':
            return num1 - num2;
        case '*':
            return num1 * num2;
        case '/':
            return num2 !== 0 ? num1 / num2 : 'Error';
        case '%':
            return (num1 / 100) * num2;
        default:
            return 0;
    }
}

// معالجة الأحداث
document.querySelectorAll('.btn').forEach(button => {
    button.addEventListener('click', (e) => {
        const value = e.target.dataset.value;
        updateDisplay(value);
    });
});

CSS - تصميم الأزرار

.calculator-btn {
    padding: 1.5rem;
    font-size: 1.2rem;
    border: none;
    border-radius: 0.5rem;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

.calculator-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
}

.calculator-btn:active {
    transform: scale(0.98);
}

الروابط

style="display:block"