تقييم الموضوع :
  • 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
جميل جدا بارك الله فيك
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مساعدة لفهم كود التسجيل abureem93 9 104 منذ 1 ساعه مضت
آخر رد: abureem93
  برنامج تجريبي emamtron2014 3 0 أمس, 03:01 AM
آخر رد: emamtron2014
  مساعدة في انشاء ثيم عبدالرحمن المكاوي 12 999 23-02-18, 01:01 AM
آخر رد: كناري008
  طلب مساعدة ( كود ) جزاكم الله خير abokaled22 2 0 18-02-18, 01:11 AM
آخر رد: abokaled22
  محتاجة مساعدة بمشروع تخرج webapplication vb رهف العريفي 0 0 16-02-18, 05:13 PM
آخر رد: رهف العريفي
  مشروع تخرج كنترول شيت Vb.Net محتاج مساعدة sirnon 5 0 15-02-18, 02:26 AM
آخر رد: sirnon
  مساعدة فى اكواد قواعد البيانات MOSTAFA.KAMEL 8 0 13-02-18, 02:27 AM
آخر رد: MOSTAFA.KAMEL
  [VB.NET] عاوز اعمل برنامج يفعل البرنامج بتاعى MOSTAFA.KAMEL 7 0 11-02-18, 09:10 PM
آخر رد: MOSTAFA.KAMEL
  [سؤال] مساعدة في إضافة العلامة العشرية والفاصلة داخل تكست بوكس والجريد فيو بيسك لكل العرب 4 2 11-02-18, 12:35 AM
آخر رد: nooralcown
  [VB.NET] مساعدة فى حل المشاكل فى عرض البيانات MOSTAFA.KAMEL 16 0 08-02-18, 06:47 PM
آخر رد: MOSTAFA.KAMEL

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


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