10. تمرين [حساب الضرائب] باستخدام MySQL
![]() |
10.1. نقل ملف نصي إلى جدول MySQL
سيقوم البرنامج النصي التالي بنقل البيانات من الملف النصي التالي:
12620:13190:15640:24740:31810:39970:48360:55790:92970:127860:151250:172040:195000:0
0:0.05:0.1:0.15:0.2:0.25:0.3:0.35:0.4:0.45:0.5:0.55:0.6:0.65
0:631:1290.5:272.5:3309.5:4900:6898.5:9316.5:12106:16754.5:23147.5:30710:39312:49062
في جدول [impots] لقاعدة بيانات MySQL التالية [dbimpots]:
![]() |
سيتم إجراء الاتصال بقاعدة البيانات [dbimpots] باستخدام بيانات الاعتماد (root، "").
سنستخدم البنية التالية:
![]() |
سيستخدم البرنامج النصي [console] الذي سنكتبه فئة [ImpotsFile] للوصول إلى البيانات الموجودة في الملف النصي. وسيتم تنفيذ الوصول للكتابة إلى قاعدة البيانات باستخدام الطرق التي تمت مناقشتها سابقًا.
فيما يلي كود البرنامج النصي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |
ملاحظات:
- الأسطر 106–110: نقوم بإنشاء مثيل لفئة [ImpotsFile] المعروضة في القسم 8.1؛
- السطر 113: يتم نقل المصفوفات limites و coeffR و coeffN إلى قاعدة بيانات MySQL؛
- السطر 8: تقوم الدالة copyToMysql بتنفيذ هذا النقل. تقوم الدالة copyToMysql بإنشاء مصفوفة من الاستعلامات المطلوب تنفيذها وتقوم بتنفيذها بواسطة الدالة executerCommandes، السطر 25؛
- الأسطر 28–89: دالة executerCommandes هي الدالة التي تم عرضها سابقًا في القسم 9.7، مع اختلاف واحد: بدلاً من أن تكون الاستعلامات في ملف نصي، فإنها موجودة في قائمة؛
الملف النصي impots.txt:
12620:13190:15640:24740:31810:39970:48360:55790:92970:127860:151250:172040:195000:0
0:0.05:0.1:0.15:0.2:0.25:0.3:0.35:0.4:0.45:0.5:0.55:0.6:0.65
0:631:1290.5:272.5:3309.5:4900:6898.5:9316.5:12106:16754.5:23147.5:30710:39312:49062
نتائج الشاشة:
التحقق باستخدام phpMyAdmin:
![]() |
10.2. برنامج حساب الضرائب
الآن بعد أن أصبحت البيانات اللازمة لحساب الضريبة موجودة في قاعدة البيانات، يمكننا كتابة البرنامج النصي لحساب الضريبة. ونحن نستخدم مرة أخرى بنية ثلاثية المستويات:
![]() |
ستتصل الطبقة [dao] الجديدة بنظام إدارة قواعد البيانات MySQL وسيتم تنفيذها بواسطة فئة [ImpotsMySQL]. وستزود الطبقة [business] بنفس الواجهة السابقة، والتي تتكون من طريقة getData الوحيدة التي تُرجع التوبلة (limits, coeffR, coeffN). وبالتالي، ستبقى الطبقة [business] دون تغيير عن الإصدار السابق.
10.3. فئة [ImpotsMySQL]
يتم الآن تنفيذ طبقة [dao] بواسطة فئة [ImpotsMySQL] التالية (ملف impots.py):
ملاحظات:
- السطر 18: استعلام SQL SELECT الذي يسترد البيانات من قاعدة بيانات MySQL. ثم تتم معالجة صفوف النتائج من SELECT واحدًا تلو الآخر باستخدام [cursor.fetchone] (السطران 22 و32) لإنشاء المصفوفات limits وcoeffR وcoeffN (السطور 28–30)؛
- طريقة getData لواجهة طبقة [dao].
10.4. نص برمجي وحدة التحكم
فيما يلي كود البرنامج النصي لوحدة التحكم (impots_04):
ملاحظات:
- السطر 23: إنشاء مثيلات لطبقتي [dao] و[business]؛
- باقي الكود مألوف.
مثلما هو الحال في الإصدارات السابقة من التمرين.



