Megosztás a következőn keresztül:


Oktatóanyag: Matematikai problémák hozzáadása matematikai teszt WinForms-alkalmazáshoz

Ebben a négy oktatóanyagból álló sorozatban matematikai tesztet fog készíteni. A teszt négy véletlenszerű matematikai problémát tartalmaz, amelyeket a tesztválasztó egy megadott időn belül próbál megválaszolni.

A vezérlők C# vagy Visual Basic kódot használnak. Ebben a második oktatóanyagban kihívást teszteképp véletlenszerű számokon alapuló matematikai problémákhoz adsz hozzá kódot. Egy StartTheQuiz() nevű metódust is létrehozhat a problémák kitöltéséhez.

Ebben a második oktatóanyagban megtanulhatja, hogyan:

  • Kód írása véletlenszerű objektumok létrehozásához matematikai problémák esetén.
  • Adjon hozzá egy eseménykezelőt a start gombhoz.
  • Írjon kódot a teszt elindításához.

Előfeltételek

Ez az oktatóanyag egy korábbi oktatóanyagra épül, Matematikai teszt létrehozása WinForms-alkalmazás. Ha még nem fejezte be ezt az oktatóanyagot, először haladjon végig rajta.

Véletlenszerű hozzáadási probléma létrehozása

  1. A Visual Studio-projektben válassza Windows Forms Designerlehetőséget.

  2. Válassza ki az űrlapot, Űrlap1.

  3. A menüsávon válassza a >Kód megtekintéselehetőséget. Form1.cs vagy Form1.vb jelenik meg a használt programozási nyelvtől függően, így megtekintheti az űrlap mögötti kódot.

  4. Hozzon létre egy Random objektumot egy new utasítás hozzáadásával a kód tetején Form1.cs vagy Form1.vb.

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

Az ehhez hasonló new utasításokkal gombokat, címkéket, paneleket, OpenFileDialogs- és ColorDialog-elemeket, SoundPlayers-eket, véletlenszerű elemeket és akár űrlapokat is létrehozhat. Ezeket az elemeket objektumoknaknevezzük.

A program futtatásakor az űrlap elindul. A háttérkód létrehoz egy Random objektumot, és randomizáló-nak nevezi el.

A tesztnek változókra van szüksége az egyes problémákhoz létrehozott véletlenszerű számok tárolásához. A változók használata előtt deklarálja őket, ami azt jelenti, hogy felsorolja a nevüket és az adattípusukat.

  1. Adjon hozzá két egész típusú változót az űrlaphoz, és nevezze el őket addend1 és addend2 a következők egyikében: Form1.cs vagy Form1.vb.

    Jegyzet

    Az egész típusú változót C# nyelven int-nek, vagy Visual Basicben Integer-nek nevezik. Ez a változótípus pozitív vagy negatív számot tárol -2147483648 és 2147483647 között, és csak egész számokat tárolhat, tizedesvesszőket nem.

    Hasonló szintaxist használva egész szám változót adhat hozzá a Véletlenszerű objektum hozzáadásához, ahogy az alábbi kód is mutatja.

    // 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. Adjon hozzá egy StartTheQuiz()Form1.cs vagy Form1.vbnevű metódust. Ez a módszer a Véletlenszerű objektum Next() metódusával véletlenszerű számokat hoz létre a címkékhez. StartTheQuiz() végül kitölti az összes problémát, majd elindítja az időzítőt, ezért adja hozzá ezeket az információkat az összefoglaló megjegyzéshez. A függvénynek a következő kódhoz hasonlóan kell kinéznie.

    /// <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;
    }
    

Ha a Next() metódust véletlenszerű objektummal használja, például amikor meghívja randomizer.Next(51), akkor egy 51-nél kisebb vagy 0 és 50 közötti véletlenszerű számot kap. Ez a kód meghívja randomizer.Next(51), hogy a két véletlenszerű szám 0 és 100 közötti választ adjon.

Tekintse meg közelebbről ezeket az állításokat.

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

Ezek az utasítások beállítják a szöveg tulajdonságait a plusLeftLabel és a plusRightLabel esetében, hogy megjelenítsék a két véletlenszerű számot. A címkevezérlők szöveges formátumban jelenítik meg az értékeket, a programozásban pedig a sztring típusú változók a szöveget tárolják. Az egyes egész számok ToString() metódusa az egész számot szöveggé alakítja, amelyet egy címke megjeleníthet.

Véletlenszerű kivonási, szorzási és osztási problémák létrehozása

A következő lépés a változók deklarálása és a többi matematikai probléma véletlenszerű értékeinek megadása.

  1. Adjon hozzá egész szám változókat a fennmaradó matematikai problémákhoz az összeadás változói után az űrlapon. A Form1.cs vagy Form1.vb kódjának az alábbi mintához hasonlóan kell kinéznie.

    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. Módosítsa a StartTheQuiz() metódust a(z) Form1.cs vagy a(z) Form1.vb fájlban a következő kód hozzáadásával, kezdve a "Kivonási feladat kitöltése" megjegyzéssel.

    /// <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;
    

Ez a kód a Random osztály Next() metódusát használja egy kicsit másként, mint a hozzáadási probléma. Ha két értéket ad a Next() metódusnak, akkor egy véletlenszerű számot választ ki, amely nagyobb vagy egyenlő az első értéknél, és kisebb, mint a második.

Ha a Next() metódust két argumentummal használja, meggyőződhet arról, hogy a kivonási probléma pozitív választ ad, a szorzási válasz legfeljebb 100, az osztási válasz pedig nem tört.

Eseménykezelő hozzáadása a start gombra

Ebben a szakaszban kódot ad hozzá a teszt indításához a start gomb kiválasztásakor. A gombkijelöléshez hasonló eseményre reagáló kódot eseménykezelőnek nevezzük.

  1. A Windows Forms Designer-ben kattintson duplán a A teszt indítása gombra, vagy jelölje ki, majd válassza az Enteropciót. Megjelenik az űrlap kódja, és megjelenik egy új metódus.

    Ezek a műveletek hozzáadnak egy Kattintás eseménykezelőt a start gombra. Amikor egy tesztválasztó kiválasztja ezt a gombot, az alkalmazás futtatja az új metódushoz hozzáadni kívánt kódot.

  2. Adja hozzá a következő két utasítást, hogy az eseménykezelő elindítsa a tesztet.

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

Az első utasítás meghívja az új StartTheQuiz() metódust. A második utasítás a startButton vezérlőelem Engedélyezett tulajdonságát false állítja be, hogy a tesztválasztó ne tudja kiválasztani a gombot a teszt során.

Az alkalmazás futtatása

  1. Mentse a kódot.

  2. Először válassza a Kvíz indításalehetőséget, majd futtassa az alkalmazást. Véletlenszerű matematikai problémák jelennek meg az alábbi képernyőképen látható módon.

    Képernyőkép, amely mind a négy matematikai probléma véletlenszerű értékeit jeleníti meg. A teszt indítása gomb halványan jelenik meg.

Következő lépések

Lépjen tovább a következő oktatóanyagra, hogy időzítőt adjon hozzá a matematikai teszthez, és ellenőrizze a felhasználói válaszokat.