منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مطلوب المساعدة في عمل خاصية ((تقسيم الإمتحان)) إلى فترات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
أقوم بعمل برنامج إختبارات الطلاب في جامعة ..
نافذة الإختبار فيها عداد الزمن .. ومجموعة الأسئلة تقوم بالمرور عليهم واحدا تلو الآخر عبر زر ((التالي)) والأسئلة مخزنة في قاعدة بيانات ..
-
بعد الإنتهاء طلبوا مني إضافة خاصية ((تقسيم الإمتحان)) إلى فترات .. مثلا عند إدخال معلومات الإمتحان يقوم المدخل بإدخال الزمن وعدد الأسئلة والفترات .. 
وعندما يقوم بالطالب بالدخول إلى فورم الإمتحان يجد الزمن مقسوم على عدد الفترات .. وكذلك تعرض له الأسئلة مقسمة على فترات .. مثلا لو الأسئلة كلها 20 وعدد الفترات 3 تعرض الفترة الأولى 7 أسئلة والثانية 7 والثالثة 6 ..
-
حاليا مشكلتي في الأرقام التي لا تقبل القسمة .. الزمن مثلا عدد الدقائق لا أريد تقسيمه لكسور وثواني .. وعدد الأسئلة لا يمكن تقسيمه تلقائيا بالطريقة أعلاه ..
-
هل يوجد لدى المبرمجين فكرة ممتازة أطبقها فورا .. لأني بصراحة تعبت وما عرفت كيف أحلها وأي حل جبته حسيته ما يصلح أو غير عملي ..
لنفرض عدد الأسئلة في تكست اسمه c1

وعدد الفترات في تكست اسمه c2


مثال لو عدد الأسئلة 9 وعدد الفترات 3 ليس هنا اي مشكلة كل فترة تاخذ 3 أسئلة

طيب لو عدد الأسئلة 10 وعدد الفترات 3 هنا تكون العملية كالتالي :
الفترة الأولى = 4
الفترة الثانية = 3
الفترة الثالثة = 3

طيب لو عدد الأسئلة 11 وعدد الفترات 3 هنا تكون العملية كالتالي :
الفترة الأولى = 4
الفترة الثانية = 4
الفترة الثالثة = 3

طيب لو عدد الأسئلة 2 وعدد الفترات 3 هنا تكون العملية كالتالي :
الفترة الأولى = 1
الفترة الثانية = 1
الفترة الثالثة = 0

وهذا هو الكود

كود :
 'عدد الأسئلة في كل فترة
       Dim q As Integer = c1.Text \ c2.Text

       'ضرب عدد الأسئلة الناتج بعد عملية القسمة في عدد الفترات لمعرفة هل عدد الأسئلة الموجود بعد عملية القسمة مطابق لعدد الأسئلة الفعلي
       Dim f As Integer = q * c2.Text

       'معرفة عدد الأسئلة الساقطة بعد عملية القسمة في حالة القسمة لا تقبل
       Dim q2 As Integer = c1.Text - f

       For I As Integer = 1 To c2.Text
           Dim qq As Integer = q

           If (q2 > 0) Then
               MsgBox("الفترة " & I & " = " & qq + 1 & " أسئلة")
           Else
               MsgBox("الفترة " & I & " = " & qq & " أسئلة")
           End If

           q2 = q2 - 1
       Next


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