(17-08-20, 11:42 PM)مصمم هاوي كتب : برنامج رائع أتمنى أن تكمله للنهاية، فهذا هو مجال تخصصي لغة عربية
حاضر استاذ
ان شاء الله يكون مبدا البرنامج مفهوم
يعني ممكن تحضر عدة انماط حسب تعقيداتها
و تضع لكل منها ملف تكست تضع فيه جملا اعرابها هو نفسه
يعني يمكن ننتج 100 الجمل او المتسويات من اللعب
ارجو ان تصحح ما اخطأت فيه
فالبعكس فليس مجالي اللغة و ادابها
نتابع الشرح :
في form_load
سنحفظ في مصفوفات الكوومبكس و الليبالات و الصور
PHP كود :
Combox = {ComboBox1, ComboBox2, ComboBox3, ComboBox4, ComboBox5}
Labl = {Label1, Label2, Label3, Label4, Label5}
Labl2 = {Label6, Label7, Label8, Label9, Label10}
pict = {PictureBox1, PictureBox2, PictureBox3, PictureBox4, PictureBox5}
الانماط التي ذكرناها هي كالتالي
PHP كود :
p1 = {"فعل ماض", "فاعل مرفوع", "حرف جر", "اسم مجرور"}
p2 = {"فعل ماض ناقص", "اسم كان و اخواتها", "خبر كان و اخواتها"}
p3 = {"حرف ناسخ", "اسم إن و اخواتها", "خبر إن و اخوانها"}
p4 = {"فعل ماض", "فاعل مرفوع", "مفعول به منصوب", "صفة منصوبة"}
p5 = {"فعل مضارع", "فاعل مرفوع", "حال منصوبة", "حرف جر", "اسم مجرور"}
p6 = {"فعل ماض", "فاعل مرفوع", "مفعول به اول", "مفعول به ثان"}
p7 = {"فعل ماض", "فاعل مرفوع", "مفعول به منصوب و هو مضاف", "مضاف اليه"}
p8 = {"فعل ماض", "فاعل مرفوع", "مفعول مطلق", "صفة منصوبة"}
p9 = {"مبتدأ مرفوع ", "خبر مرفوع", "صفة مرفوعة"}
p10 = {"حرف نصب", "فعل مضارع منصوب", "فاعل مرفوع", "صفة مرفوعة"}
يعني من اجل ملف تكست 1 حلها هو المصفوفة p1
وهي التي نقارن بها بين اجابة الطالب و الاعراب
نجمعها في مصفوفة ايضا
PHP كود :
Rpp = {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10}
الان كل ما سبق سنجمعه في مصفوفة واحدة و نحذف المتشابهات
لنضمن ان لا نخطئ في الكتابة
لانه يمكن ان نملا الكومبوكس لكن اي خطا و لو في الهمزة او المسافات سيعتبر خطا
ثم نرتب ما تم جمعه ابجديا
PHP كود :
For Each gh As Array In Rpp
For i = 0 To gh.Length - 1
somme.Add(gh(i))
Next
Next
For i = 0 To somme.Count - 2
For p = somme.Count - 1 To i + 1 Step -1
If somme(i).ToString = somme(p).ToString Then
somme.RemoveAt(p)
End If
Next
Next
' ترتيب العناصر
somme.Sort()
الان تم التحضير للبرنامج
الان مع الدة توليد الاسئلة : question()
سنخفي كل الكومبوكسات و نفرغها من محتواها
اليبلات و كل الصور و ايضا نرجعها الى فراغ
PHP كود :
For p = 0 To 4
Combox(p).Visible = False
Combox(p).Items.Clear()
Labl(p).Visible = False
Labl2(p).Text = Nothing
Labl2(p).Visible = False
pict(p).Visible = False
Next
ثم سنعبئ الكومبوكسات من المصفوفة التي جمعنا فيها الاجابات كلها
PHP كود :
For f = 0 To somme.Count - 1
For p = 0 To 4
Combox(p).Items.Add(somme(f))
Next
Next
سنضع كل عناصر الاجابة فارغة
PHP كود :
reponses = {"", "", "", "", ""}
ثم سنختار عشوائيا رقم من 1 الى 10 وهو الذي ويافق ملف التكست
PHP كود :
Dim NmberQ = Nrandom.Next(1, 10)
Dim Hafs As String = Application.StartupPath & "\" & NmberQ & ".txt"
الان سننشئ مصفوفة تتكون من اسطر هذا التكست
PHP كود :
Dim readH As StreamReader
Dim Harr() As String = Nothing
''''''''''''
readH = New StreamReader(Hafs)
Dim I As Integer
Do Until readH.EndOfStream
ReDim Preserve Harr(I)
Harr(I) = readH.ReadLine()
I += 1
Loop
readH.Close()
ايضا سنختار عشوائيا من بين هذه الجمل من المصفوفة و نضعها في textrich
PHP كود :
Dim Nmberphrase = Nrandom.Next(0, Harr.Length)
RichTextBox1.Text = Harr(Nmberphrase)
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
بعدها سنقسم كلماتها في مصفوفة
PHP كود :
txtQ = Harr(Nmberphrase).Split(" ")
و من خلال ذلك سنعطي لكل ليبال كلمة و بالتالي يهر ان الجملة قد فسمت في جدول للاعراب
PHP كود :
For p = 0 To txtQ.Length - 1
Combox(p).Visible = True
Labl(p).Visible = True
Labl(p).Text = txtQ(p)
Next
نتابع :
كما تذكرون قد جمعنا الحلول في مصفوفة
لما اخترنا رقم ملف التكست فالحل هو رقم مصفوفة الاجابة في المجموعة - 1
PHP كود :
Dim sol = Rpp(NmberQ - 1)
ثم نملا بها ليبالات الحل الحمراء التي تهر في حالى الخطا
PHP كود :
For I = 0 To sol.Length - 1
Labl2(I).Text = sol(I)
Next
حينها نضيف 1 لرقم السؤال لعرض ابلسؤال الموالي
و بالتالي تكون دالة توليد الاسئلة الكلية هي
PHP كود :
Sub questions()
' اخفاء الكومبوكس و كالكلمات و الصور
For p = 0 To 4
Combox(p).Visible = False
Combox(p).Items.Clear()
Labl(p).Visible = False
Labl2(p).Text = Nothing
Labl2(p).Visible = False
pict(p).Visible = False
Next
' ملء الكومبوكس
For f = 0 To somme.Count - 1
For p = 0 To 4
Combox(p).Items.Add(somme(f))
Next
Next
'تفريغ الاجابات
reponses = {"", "", "", "", ""}
' اختيار عشوائي للملف ووضعه في مصفوفة
Dim NmberQ = Nrandom.Next(1, 10)
Dim Hafs As String = Application.StartupPath & "\" & NmberQ & ".txt"
Dim readH As StreamReader
Dim Harr() As String = Nothing
''''''''''''
readH = New StreamReader(Hafs)
Dim I As Integer
Do Until readH.EndOfStream
ReDim Preserve Harr(I)
Harr(I) = readH.ReadLine()
I += 1
Loop
readH.Close()
' اختيار عوائي للجملة من المصقوقة
Dim Nmberphrase = Nrandom.Next(0, Harr.Length)
RichTextBox1.Text = Harr(Nmberphrase)
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
txtQ = Harr(Nmberphrase).Split(" ")
' اظهار عدد الكلمات و الكومبوكس وفق عدد كلمات الجملة
For p = 0 To txtQ.Length - 1
Combox(p).Visible = True
Labl(p).Visible = True
Labl(p).Text = txtQ(p)
Next
' الحل
Dim sol = Rpp(NmberQ - 1)
For I = 0 To sol.Length - 1
Labl2(I).Text = sol(I)
Next
NmberQ += 1
End Sub
نتابع :
الان في الكومبوكسات سنجعل كل ما يختار كومبوكس يسجل clic +1
و يسجل اختياره في مصفوفة الاجابات
لطلك من اجل الحدث ComboBox1_SelectedIndexChanged سنضع الكود
PHP كود :
clic += 1
reponses(0) = ComboBox1.Text
و نكرره لكل كومبوكس مع تغيير رقمه في الكود
و بالتالي من اجل 5 كوبموكس سنجد التالي
PHP كود :
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
clic += 1
reponses(0) = ComboBox1.Text
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
clic += 1
reponses(1) = ComboBox2.Text
End Sub
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
clic += 1
reponses(2) = ComboBox3.Text
End Sub
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged
clic += 1
reponses(3) = ComboBox4.Text
End Sub
Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox5.SelectedIndexChanged
clic += 1
reponses(4) = ComboBox5.Text
End Sub
الان في زر التالي سنضع ببساطة
اما في زر التصحيح نضع دالة التصحيح
ماذا نضع في دالة التصحيح ؟؟؟؟
مباشرة سنقارن محتوى مصفوفة الاجابة reponses مع مصفوفة الحلول Labl2
اذا وجد النصين متساوين يضيف رقم 1 الى متغير reusi وهو عدد الكلمات الصحيحة
و يعطي الصورة شكل صح
و الا سيعطي الصورة شكل خطا
اذا كان متغير reusi هو نفسه عدد كلمات الجملة فهو قد اجاب على كل الكلمات فنعطيه 1 للنقاط scor +1 من 10
ثم نهر كل الصور
اذا وصل الى 10/10 فهو قد اجاب جيدا نظهر له رسالة تهنئة
اذن الكود لكه للتصحيح كالتالي
PHP كود :
Sub verfications()
Dim reusi As Integer = 0
For i = 0 To 4
If reponses(i) = Labl2(i).Text Then
reusi += 1
pict(i).Image = My.Resources.yes
Else
Labl2(i).Visible = True
pict(i).Image = My.Resources.no
End If
Next
If reusi = 5 Then
score += 1
Labscore.Text += 1
End If
For i = 0 To txtQ.Length - 1
pict(i).Visible = True
Next
If reusi >= 10 Then
MessageBox.Show(" ما شاء الله انت في طريقك لاحتراف الاعراب", "عبد الهادي بهاب", MessageBoxButtons.OK, MessageBoxIcon.Information)
restart()
End If
End Sub
بعد 10 /10
سنعيد من جديد و نفعل دالة الاعادة restart
PHP كود :
Sub restart()
score = 0
Labscore.Text = 0
NmberQ = 0
questions()
End Sub
اخيرا مع الملف
اولا حمل الملفات هذه وهي ملفات تكست من 1 الى 10
يمكن ان تيف لها جملا لكن بنفس سياق الاعراب
i3rab_ txt.rar (الحجم : 2.51 ك ب / التحميلات : 30)
ثم حمل ملف برنامج الاعراب المختصر
i3rab.rar (الحجم : 159.38 ك ب / التحميلات : 48)
mp =
vb4arb.com
ضعه في مجلد \bin\Debug
و استمتع بالبرنامج
بالتوفيق في مشاريعكم
لا تنسونا بدعوة خالصة