Öğretici: Matematik testi WinForms uygulamasına matematik sorunları ekleme

Dört öğreticiden oluşan bu seride bir matematik testi oluşturacaksınız. Test, bir sınava girişenin belirli bir süre içinde yanıtlamaya çalıştığı dört rastgele matematik sorunu içerir.

Denetimler C# veya Visual Basic kodu kullanır. Bu ikinci öğreticide, rastgele sayıları temel alan matematik sorunları için kod ekleyerek testi zor hale getireceksiniz. Ayrıca, sorunları doldurmak için adlı StartTheQuiz() bir yöntem de oluşturursunuz.

Bu ikinci öğreticide şunların nasıl yapılacağını öğreneceksiniz:

  • Matematik sorunlarında kullanılacak Rastgele nesneler oluşturmak için kod yazın.
  • Başlangıç düğmesi için bir olay işleyicisi ekleyin.
  • Testi başlatmak için kod yazın.

Önkoşullar

Bu öğretici, önceki bir öğretici olan WinForms matematik testi oluşturma uygulamasını temel alır. Bu öğreticiyi tamamlamadıysanız önce bu öğreticiyi gözden geçirin.

Rastgele bir toplama problemi oluşturma

  1. Visual Studio projenizde Windows Forms Tasarım Aracı'ı seçin.

  2. Formu, Form1'i seçin.

  3. Menü çubuğunda Kodu Görüntüle'yi>seçin. Form arkasındaki kodu görüntüleyebilmeniz için kullandığınız programlama diline bağlı olarak Form1.cs veya Form1.vb görüntülenir.

  4. Kodun Random üst kısmına bir new deyim ekleyerek bir nesne oluşturun.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    

Önemli

C# kod parçacığını veya Visual Basic kod parçacığını görüntülemek için bu sayfanın sağ üst kısmındaki programlama dili denetimini kullanın.

Programming language control for Microsoft Learn

Düğmeler, etiketler, paneller, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms ve hatta formlar oluşturmak için bunun gibi deyimleri kullanabilirsiniz new . Bu öğelere nesne adı verilir.

Programınızı çalıştırdığınızda form başlatılır. Arkasındaki kod bir Random nesnesi oluşturur ve randomizer olarak adlandırır.

Testinizin her sorun için oluşturduğu rastgele sayıları depolamak için değişkenlere ihtiyacı var. Değişkenleri kullanmadan önce, bunları bildirirsiniz; bu da adlarını ve veri türlerini listelemek anlamına gelir.

  1. Forma iki tamsayı değişkeni ekleyin ve bunları addend1 ve addend2 olarak adlandırın.

    Not

    Tamsayı değişkeni, C# dilinde int veya Visual Basic'te Tamsayı olarak bilinir. Bu tür bir değişken, -2147483648 ile 2147483647 arasında pozitif veya negatif bir sayıyı depolar ve ondalıkları değil yalnızca tam sayıları depolayabilir.

    Aşağıdaki kodda gösterildiği gibi, Random nesnesini eklemek için yaptığınız gibi bir tamsayı değişkeni eklemek için benzer söz dizimi kullanırsınız.

    // Create a Random object called randomizer 
    // to generate random numbers.
    Random randomizer = new Random();
    
    // These integer variables store the numbers 
    // for the addition problem. 
    int addend1;
    int addend2;
    

  1. adlı StartTheQuiz()bir yöntem ekleyin. Bu yöntem, etiketler için rastgele sayılar oluşturmak için Random nesnesinin Next() yöntemini kullanır. StartTheQuiz() sonunda tüm sorunları doldurur ve zamanlayıcıyı başlatır, bu nedenle bu bilgileri özet açıklamaya ekleyin. işlevi aşağıdaki kod gibi görünmelidir.

    /// <summary>
    /// Start the quiz by filling in all of the problems
    /// and starting the timer.
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    }
    

yöntemini Random nesnesiyle kullandığınızda Next() (örneğin, çağrısı randomizer.Next(51)yaptığınızda) 51'den küçük veya 0 ile 50 arasında rastgele bir sayı alırsınız. Bu kod, rastgele iki sayının 0 ile 100 arasında bir yanıta eklenmesini sağlamak için çağırır randomizer.Next(51) .

Bu ifadelere daha yakından bakın.

plusLeftLabel.Text = addend1.ToString();
plusRightLabel.Text = addend2.ToString();

Bu deyimler plusLeftLabel ve plusRightLabel'inText özelliklerini ayarlayarak rastgele iki sayıyı görüntülemelerini sağlar. Etiket denetimleri değerleri metin biçiminde görüntüler ve programlamada dizeler metni tutar. Her tamsayı ToString() yöntemi, tamsayıyı bir etiketin görüntüleyebileceği metne dönüştürür.

Rastgele çıkarma, çarpma ve bölme sorunları oluşturma

Sonraki adım değişkenleri bildirmek ve diğer matematik sorunları için rastgele değerler sağlamaktır.

  1. Toplama sorunu değişkenlerinden sonra formunuza kalan matematik sorunları için tamsayı değişkenleri ekleyin. Kod aşağıdaki örnekteki gibi görünmelidir.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    
        // These integer variables store the numbers 
        // for the addition problem. 
        int addend1;
        int addend2;
    
        // These integer variables store the numbers 
        // for the subtraction problem. 
        int minuend;
        int subtrahend;
    
        // These integer variables store the numbers 
        // for the multiplication problem. 
        int multiplicand;
        int multiplier;
    
        // These integer variables store the numbers 
        // for the division problem. 
        int dividend;
        int divisor;
    

  1. StartTheQuiz()"Çıkarma sorununu doldur" açıklamasından başlayarak aşağıdaki kodu ekleyerek yöntemini değiştirin.

    /// <summary>
    /// Start the quiz by filling in all of the problem 
    /// values and starting the timer. 
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    
        // Fill in the subtraction problem.
        minuend = randomizer.Next(1, 101);
        subtrahend = randomizer.Next(1, minuend);
        minusLeftLabel.Text = minuend.ToString();
        minusRightLabel.Text = subtrahend.ToString();
        difference.Value = 0;
    
        // Fill in the multiplication problem.
        multiplicand = randomizer.Next(2, 11);
        multiplier = randomizer.Next(2, 11);
        timesLeftLabel.Text = multiplicand.ToString();
        timesRightLabel.Text = multiplier.ToString();
        product.Value = 0;
    
        // Fill in the division problem.
        divisor = randomizer.Next(2, 11);
        int temporaryQuotient = randomizer.Next(2, 11);
        dividend = divisor * temporaryQuotient;
        dividedLeftLabel.Text = dividend.ToString();
        dividedRightLabel.Text = divisor.ToString();
        quotient.Value = 0;
    

Bu kod, sınıfın Next()Random yöntemini toplama sorununun yönteminden biraz farklı şekilde kullanır. Yönteme iki değer verdiğinizde Next() , ilk değerden büyük veya ona eşit ve ikinci değerden küçük rastgele bir sayı seçer.

yöntemini iki bağımsız değişkenle kullanarak Next() çıkarma sorununun olumlu bir yanıta sahip olduğundan, çarpma yanıtının en fazla 100 olduğundan ve bölme yanıtının kesir olmadığından emin olabilirsiniz.

Başlangıç düğmesine olay işleyicisi ekleme

Bu bölümde, başlangıç düğmesi seçildiğinde testi başlatmak için kod ekleyebilirsiniz. Düğme seçimi gibi bir olaya tepki olarak çalışan koda olay işleyicisi adı verilir.

  1. Windows Forms Tasarım Aracı'da Testi başlat düğmesine çift tıklayın veya seçin ve ardından Enter tuşuna basın. Formun kodu görüntülenir ve yeni bir yöntem görünür.

    Bu eylemler başlangıç düğmesine bir Click olay işleyicisi ekler. Test alan kişi bu düğmeyi seçtiğinde, uygulama bu yeni yönteme ekleyeceğiniz kodu çalıştırır.

  2. Olay işleyicisinin testi başlatması için aşağıdaki iki deyimi ekleyin.

    private void startButton_Click(object sender, EventArgs e)
    {
        StartTheQuiz();
        startButton.Enabled = false;           
    }
    

İlk deyim yeni StartTheQuiz() yöntemi çağırır. İkinci deyim startButton denetiminin false Enabled özelliğini olarak ayarlar, böylece test alan bir test sırasında düğmeyi seçemez.

Uygulamanızı çalıştırma

  1. Kodunuzu kaydedin.

  2. Uygulamanızı çalıştırın ve testi başlat'ı seçin. Aşağıdaki ekran görüntüsünde gösterildiği gibi rastgele matematik sorunları görüntülenir.

    Screenshot that shows random values in all four math problems. The Start the quiz button appears dimmed.

Sonraki adımlar

Matematik testinize zamanlayıcı eklemek ve kullanıcı yanıtlarını kontrol etmek için sonraki öğreticiye ilerleyin.