افتح مشروع Visual Basic جديد. أضف تسميتين وثلاثة أزرار اختيار وعناصر تحكم زرين إلى النموذج. اسحب التسميتين إلى الأعلى مع Label1 أعلى Label2. اسحب RadioButton1 و RadioButton2 و RadioButton3 للاصطفاف عموديًا أسفل التسميات. اسحب الزرين أسفل أزرار الاختيار مع Button1 على اليسار و Button2 على اليمين.
السطر الأول ينشئ مصفوفة ثنائية الأبعاد. البعد الأول لكل سؤال والبعد الثاني للسؤال نفسه ، ثلاثة خيارات للإجابة والإجابة الصحيحة. ينشئ السطر الثاني مصفوفة لتخزين إجابات المستخدم. يقوم السطر الثالث بإنشاء متغير عداد يتتبع السؤال الذي يطرحه المستخدم.
أسئلة GetQuestions () الفرعية الخاصة = سلسلة جديدة (،) {{"كم عدد الألوان في قوس قزح؟" ، "5" ، "6" ، "7" ، "7"} ، {"من لعب دور البطولة في Pirates of the Caribbean؟" ، "Johnny Depp" ، "John Malkovich" ، "John Cusack" ، "Johnny Depp"} ، {"ما هي عاصمة فلوريدا؟" ، "ميامي" ، "تالاهاسي" ، "جاكسونفيل" ، "تالاهاسي"}} End Sub
يعمل هذا الروتين الفرعي ببساطة على تهيئة الأسئلة الثلاثة والإجابات في مصفوفة الأسئلة. يمكنك إضافة أسئلة إضافية أو الحصول عليها بطرق أخرى ، مثل من خلال ملف نصي ، ولكن إذا كنت do ، تذكر تغيير حجم مصفوفات الأسئلة والإجابات لتلائم عدد أسئلة.
Private Sub MarkTest () Dim grade As Integer = 0 For i = 0 To 2 إذا كانت الإجابات (i) = الأسئلة (i ، 4) ثم الصف + = 1 النهاية إذا كان التالي Label1.Text = "انتهى الاختبار!" Label2.Text = "لقد سجلت" & تقدير & "الخروج من" & الإجابات. طول & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub
يعلن السطر الأول عن روتين فرعي يميز الاختبار. يقوم بإنشاء متغير محلي لحساب الدرجة ، ثم يتنقل بين الإجابات في مصفوفة الأسئلة والإجابات المقدمة من قبل المستخدم. لكل إجابة متطابقة ، ترتفع الدرجة بمقدار واحد. ثم يعرض النتيجة في التسميات ويعطل باقي عناصر التحكم.
أنا. نص = "اختبار الاختيار من متعدد!" GetQuestions () quesNum = 1 Label1.Text = "سؤال" & quesNum & "من" & إجابات. طول Label2.Text = الأسئلة (0 ، 0) Button1.Text = "السابق" Button2.Text = "التالي" RadioButton1.Text = الأسئلة (0 ، 1) RadioButton2.Text = الأسئلة (0 ، 2) RadioButton3.Text = الأسئلة (0 ، 3)
يحدد السطر الأول العنوان في شريط العنوان. يستدعي السطر التالي روتين GetQuestions (). السطر الثالث يهيئ متغير عداد السؤال. يعرض السطر الرابع رقم السؤال الذي يستخدمه المستخدم. يعرض السطر الخامس السؤال الأول في الملصق. يغير السطران السادس والسابع نص الزرين. تُدرج الأسطر الثلاثة الأخيرة الإجابات الثلاثة ذات الاختيار من متعدد كنص لأزرار الاختيار الثلاثة.
إذا كان quesNum> 1 ثم quesNum - = 1 Label1.Text = "Question" & quesNum & "من 3" Label2.Text = الأسئلة (quesNum - 1، 0) RadioButton1.Text = الأسئلة (quesNum - 1، 1) RadioButton2.Text = الأسئلة (quesNum - 1، 2) RadioButton3.Text = الأسئلة (quesNum - 1، 3) If Button2.Text = "Submit" ثم Button2.Text = "Next" End If End If
هذا هو رمز الزر "السابق". يتحقق أولاً لمعرفة ما إذا كان المستخدم قد ضغط على الزر أثناء السؤال الأول بالفعل. إذا لم يكن الأمر كذلك ، فإنه يقلل من عداد الأسئلة بواحد ويحدّث النص الخاص بالتسميات وأزرار الاختيار لإظهار السؤال السابق. إذا كان المستخدم على السؤال الأخير ، يتغير النص الموجود على Button2 من "إرسال" إلى "التالي".
إذا كان RadioButton1.Checked = صحيح ثم يجيب (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = صحيح ثم يجيب (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = صحيح ثم الإجابات (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus () If quesNum <3 ثم quesNum + = 1 Label1.Text = "Question" & quesNum & "of & الإجابات. طول Label2.Text = الأسئلة (quesNum - 1، 0) RadioButton1.Text = الأسئلة (quesNum - 1، 1) RadioButton2.Text = الأسئلة (quesNum - 1، 2) RadioButton3.Text = الأسئلة (quesNum - 1، 3) If quesNum = 3 ثم Button2.Text = "Submit" End If Else MarkTest () إنهاء إذا
هذا هو رمز لزر "التالي". تتحقق الأسطر السبعة الأولى من زر الاختيار الذي حدده المستخدم ، ثم يحفظ الإجابة في مصفوفة الإجابات. يركز السطر التالي على تحديد زر الاختيار على RadioButton1. يتحقق السطر التالي لمعرفة أن المستخدم ليس على السؤال الأخير. إذا كان هذا صحيحًا ، فسيؤدي ذلك إلى زيادة عداد الأسئلة بمقدار واحد وتحديث التسميات وأزرار الاختيار لإظهار السؤال التالي. ثم يتحقق لمعرفة ما إذا كان المستخدم الآن على السؤال الأخير. إذا كان الأمر كذلك ، فإنه يغير نص زر التالي من "التالي" إلى "إرسال". إذا كان المستخدم موجودًا بالفعل على ملف السؤال الأخير والنقر فوق "إرسال" ، يقوم البرنامج باستدعاء وظيفة "MarkTest" للحصول على درجة المستخدم.