تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مساعدة في برنامج مسابقة بأسئلة عشوائية
#1
مساء الخير
اخواني اذا سمحتو اي حد خبير يساعدني بتعديل هالمشروع
المشروع عبارة عن برنامج مسابقة مع قاعدة بيانات
تم اضافة 15 سؤال في قاعدة البيانات مع رقم تسلسلي 1 2 3 4 5 .....
ومهمة البرنامج عرض هذه الاسئلة للمتسابق ولكن بطريقة عشوائية
في اللود للمسابقة يتم جلب جميع الارقام المتسلسلة للاسئلة وحفظها في جدول الارراي
ويتم توليد رقم عشوائي من 1 إلى اكبر رقم تسلسلي
ويتم جلب معلومات السؤال من جددول الاسئلة بناءا على الرقم العشوائي الذي تم توليده ويتم عرضه للمستخدم وبعدها يحذف الرقم المتسلسل الخاص بالسؤال من جدول الارراي لكي لا يتكرر السؤال
وايضا الاجابات يتم ترتيبها على الازرار بطريقة عشوائية
وهكذا يتم عرض الاسئلة بطريقة عشوائية وليست مرتبة
ولكن هناك مشكلة .. وهي انه في آخر 5 اسئلة من ال 15 سؤال قد يتكرر بعضهم ولكن لا اعرف السبب
اذا ممكن حد يساعدني مشان نلغي التكرار نهائيا ..
رابط المشروع : http://www.mediafire.com/download/ed9n65...ation1.rar
الرد
تم الشكر بواسطة:
#2
حسب وصف البرنامج ... حتما الاسئلة مكررة من مصدر البيانات.
المشروع كبير ويحتاج تدقيق .. ان شالله احد الاخوة يقدم المساعدة.
الرد
تم الشكر بواسطة:
#3
أنت تحتاج الي مصفوفتان الأولي سيتم تخزين جميع الاسئلة بها و في المصفوفة الثانية سيتم تخزين الاسئلة العشوائية
عليك فقط ان تختار السؤال من المصفوفة العشوائية ثم تحذفه منها بعد أن تختاره
و من الاسهل لك أن تحذف اخر سؤال في القائمة العشواية او تحذف اول سؤال

لنحاول تنفيذ الفكرة في مشروع منفصل ختي يتضح الامر لك
افتح شروع عادي به فورم واحد و اضف للفورم عدد إثنان LiistBox الي الفورم ثم اكتب الكود بالشكل التالي

PHP كود :
Public Class Form1

    Private originalList 
As List(Of Integer) = New List(Of Integer)
 
   Dim randomizedList As List(Of Integer) = CType(Nothing, List(Of Integer))

 
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        
' Fill original list with Values
        For i As Integer = 1 To 15
            ' 
be sure the values is not repeated in list
 
           If Not originalList.Contains(iThen
                
' add originalList to list
                originalList.Add(i)
            End If
        Next

        ' 
for testing purpose only
        For Each item In originalList
            Me
.ListBox1.Items.Add(item)
 
       Next

        randomizedList 
RandomizeIntegers(originalList)

 
       ' get the question which shall equals to thop value in randoized list
        Dim selectedQuestion As Integer = GetTopQuestionValue()

        ' 
remove the top value from randomized list
 
       randomizedList.Remove(randomizedList.Count 1)

 
       ' for testing purpose only
        For Each item In randomizedList
            Me.ListBox2.Items.Add(item)
        Next

        ' 
for testing purpose only
        Me
.Text = (ListBox1.Items.Count 1) - (ListBox2.Items.Count 1)

 
   End Sub

    Private 
Function GetTopQuestionValue() As Integer
        Return randomizedList
(randomizedList.Count 1)
 
   End Function

 
   Private Function RandomizeIntegers(items As List(Of Integer)) As List(Of Integer)
 
       Dim result items
        Dim r 
= New Random()
 
       For i As Integer items.ToArray.Length To 2 Step -1
            Dim j 
As Integer r.Next(i)
 
           Dim t result(j)
 
           result(j) = result(1)
 
           result(1) = t
        Next
        Return result
    End 
Function


End Class 

 عليك ان تقوم بتطبيق نفس الفكرة في مشروعك

ملحوظة:

الدالة الخاصة بتوليد ارقام عشوائية يمكن استخدامها مع اي شئ غير الارقام فقط عليك بتغيير نوع المدخلات الخاصة بها
الرد
تم الشكر بواسطة:
#4
(13-12-15, 07:07 AM)silverlight كتب : أنت تحتاج الي مصفوفتان الأولي سيتم تخزين جميع الاسئلة بها و في المصفوفة الثانية سيتم تخزين الاسئلة العشوائية
عليك فقط ان تختار السؤال من المصفوفة العشوائية ثم تحذفه منها بعد أن تختاره
و من الاسهل لك أن تحذف اخر سؤال في القائمة العشواية او تحذف اول سؤال

لنحاول تنفيذ الفكرة في مشروع منفصل ختي يتضح الامر لك
افتح شروع عادي به فورم واحد و اضف للفورم عدد إثنان LiistBox الي الفورم ثم اكتب الكود بالشكل التالي

PHP كود :
Public Class Form1

    Private originalList 
As List(Of Integer) = New List(Of Integer)
 
   Dim randomizedList As List(Of Integer) = CType(Nothing, List(Of Integer))

 
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        
' Fill original list with Values
        For i As Integer = 1 To 15
            ' 
be sure the values is not repeated in list
 
           If Not originalList.Contains(iThen
                
' add originalList to list
                originalList.Add(i)
            End If
        Next

        ' 
for testing purpose only
        For Each item In originalList
            Me
.ListBox1.Items.Add(item)
 
       Next

        randomizedList 
RandomizeIntegers(originalList)

 
       ' get the question which shall equals to thop value in randoized list
        Dim selectedQuestion As Integer = GetTopQuestionValue()

        ' 
remove the top value from randomized list
 
       randomizedList.Remove(randomizedList.Count 1)

 
       ' for testing purpose only
        For Each item In randomizedList
            Me.ListBox2.Items.Add(item)
        Next

        ' 
for testing purpose only
        Me
.Text = (ListBox1.Items.Count 1) - (ListBox2.Items.Count 1)

 
   End Sub

    Private 
Function GetTopQuestionValue() As Integer
        Return randomizedList
(randomizedList.Count 1)
 
   End Function

 
   Private Function RandomizeIntegers(items As List(Of Integer)) As List(Of Integer)
 
       Dim result items
        Dim r 
= New Random()
 
       For i As Integer items.ToArray.Length To 2 Step -1
            Dim j 
As Integer r.Next(i)
 
           Dim t result(j)
 
           result(j) = result(1)
 
           result(1) = t
        Next
        Return result
    End 
Function


End Class 

 عليك ان تقوم بتطبيق نفس الفكرة  في مشروعك

ملحوظة:

الدالة الخاصة بتوليد ارقام عشوائية يمكن استخدامها مع اي شئ غير الارقام فقط عليك بتغيير نوع المدخلات الخاصة بها


شكرا إلك اخي الغالي .. بس اذا ممكن اخي بتقدر تطبقلي اياها على المشروع يلي انا رافعو ؟؟

لانه يمكن انت خبرتك اكثر مني ومشان افهم الفكرة منيح لما تكون مطبقة عالمشروع

وشكراا إلك اخي الغالي
الرد
تم الشكر بواسطة:
#5
قم بكتابة هذا الكود  وقم بأضافة ListBox

   Dim randomnum As New Random


        For i As Int16 = 0 To (c - 1)
start:
            x = randomnum.Next(0, c)
            If (ListBox1.Items.Contains(x)) Then
                GoTo start
            End If
        Next

        ListBox1.Items.Add(x)

        If ListBox1.Items.Count = c Then MessageBox.Show("انتهت أسئلة " & CLevel.Text) : ListBox1.Items.Clear() : Exit Sub




 [url=http://www.mediafire.com/download/ed9n653ah2blhom/WindowsApplication1.rar][/url]
الرد
تم الشكر بواسطة:
#6
جميل جدا بارك الله فيك
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مساعدة في كود التعديل يتم التعديل لكن لا يقف على نفس الصف المعدل في الداتا جريد فيو essawq 0 13 منذ 2 ساعة مضت
آخر رد: essawq
  محتاج اعرف اذاى اشفر برنامج فيجول بيسك naderalkeng54 1 21 منذ 5 ساعة مضت
آخر رد: elgokr
  مساعدة جزاكم الله كل خير fouadhdfouad 2 64 21-09-18, 01:55 PM
آخر رد: fouadhdfouad
  مشكلة في برنامج قواعد بيانات وجداول وحقول من نوع اكسس ابراهيم ايبو 2 110 20-09-18, 07:17 AM
آخر رد: ابراهيم ايبو
  [VB.NET] اريد مساعدة فى برنامج اصنعة فى الفجول بسك naderalkeng54 4 145 18-09-18, 03:04 PM
آخر رد: naderalkeng54
  للمرة الثانية بخصوص برنامج تصنيع فى ورشة salah mansour 9 207 15-09-18, 09:50 PM
آخر رد: 911
  كيف اصمم برنامج يتحكم بالفيس بوك؟ samira20 1 63 15-09-18, 10:15 AM
آخر رد: elgokr
  اكواد صنع برنامج للضغط علي زر معين بكثره مثال علي زر c AhmedShawqe 3 111 13-09-18, 03:19 PM
آخر رد: DK-x
  [سؤال] عرض برنامج داخل اخر DK-x 3 77 12-09-18, 09:43 PM
آخر رد: elgokr
Exclamation [سؤال] كيف اصمم برنامج مثل من سيربح المليون DK-x 3 82 12-09-18, 05:08 PM
آخر رد: عبدالله الدوسري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم