简体   繁体   中英

Reading to a file line by line multiple choice quiz vb.net

I'm trying to create a multi choice quiz that will read questions and answers from a text file and if the RadioButton selected by the user contains text the same as the answer then the mark will increment by 2. I have tried every single loops and techniques but it either reads the last line only (for loop) or doesn't read the text file at all (do until / do while / while). I need help. This is what I have done so far

Imports System.IO

Public Class Form5
    Dim easy As Boolean
    Dim medium As Boolean
    Dim difficult As Boolean
    Dim easytest As New System.IO.StreamReader("he.txt")
    Dim lineseasy() As String = IO.File.ReadAllLines("he.txt")
    Dim mediumtest As New System.IO.StreamReader("hm.txt")
    Dim linesmedium() As String = IO.File.ReadAllLines("hm.txt")
    Dim difficulttest As New System.IO.StreamReader("hd.txt")
    Dim fulldata As String
    Dim mark As Integer = 0

    Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Label2.Text = Form3.ComboBox1.Text
        Label3.Text = Form3.ComboBox2.Text
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        easytest.Read()
        Dim counter As Integer = 0
        Dim answer As String
        While (easytest.Peek() <> -1)
            Dim items() As String = lineseasy(1).Split(",")
            Label4.Text = items(0)
            RadioButton1.Text = items(1)
            RadioButton2.Text = items(2)
            answer = Str(3)
        End While
    End Sub
End Class

Why do you want a textfile where if u use Access database or sql database, it will be very simple . For example, you create a db in either sql or access, create a table in it, create 3 columns, 1st column for question id,2nd column for question and the last one for the answer.Now add your question id(any random alpha-numeric/any string value),questions and answers in specific cells one by one. Now in you vb.net app,add a label(make it invisible) that will contain the question id, add reference to System.Data.SqlClient(for sql database) or System.Data.OleDb(for access) . Now use the following code to check if the answer is correct or not ..

   'add this code to all 4 radio buttons

   Private Sub RadioBtn1_CheckedChanged

  'create your connection string
   connectionstring.open
   Dim cmd as new SqlCommand("Select * from [table name from database-remove brackets if required] where [question id]=@quid and [answer]=@ans",connectionstring)    'use OleDbCommand of access db

   cmd.parametres.add("@quid",sqldbtype.varchar).value=label1.text   'use oledbtype for access db

   cmd.parametres.add("@ans",sqldbtype.varcha).value=radiobutton1.text  'when adding this code to radio button2, chage radiobutton1.text with radiobutton2.text , when using it in radio button 3 do the same

        Dim adapter As New SqlDataAdapter(cmd) ' use oledbdataadapter for access
        Dim table As New DataTable
        adapter.Fill(table)
        If table.Rows.Count() <= 0 Then
            msgbox("WRONG ANSWER")

        Else
            marktext.text = mark.text+2 ' to increase point by 2
           'what ever you want to do when the answer is correct
        end if

Now, i hope u know how to load the question/question id(i mean the data) from the database...if you don't that please leave a reply and i'll add them

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM