Öğ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
Visual Studio projenizde Windows Forms Tasarım Aracı'ı seçin.
Formu, Form1'i seçin.
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.
Kodun Random üst kısmına bir
new
deyim ekleyerek bir nesne oluşturun.
Ö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.
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.
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.
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.
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.
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;
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.
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.
Olay işleyicisinin testi başlatması için aşağıdaki iki deyimi ekleyin.
İ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
Kodunuzu kaydedin.
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.
Sonraki adımlar
Matematik testinize zamanlayıcı eklemek ve kullanıcı yanıtlarını kontrol etmek için sonraki öğreticiye ilerleyin.