1. 程式人生 > >第一階段結對作業驗收小學生四則運算

第一階段結對作業驗收小學生四則運算

  這次與王悅生合作編寫了小學生四則運算過程,包括整數四則運算部分與真分數四則運算部分,原本是用vc來程式設計實現的,但通過討論最後決定了用C++來實現,而最基本的一點就是美觀大方,編寫也變得輕鬆了一點,最後將這個軟體成功實現了,不過有一點沒有做的是關於題目數量的規定,做成了無限出題.

        使用時需要注意的是整數答案直接輸入就好,而分數答案要輸入成a/b的形式,比如:1/2=1/2, 6/3=2,6/10=3/5

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace 小學算數
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int ti_shu, result, f1, f2;

        private void chu_ti()
        {
            Random suiji = new Random();
            int a = suiji.Next(0, 10);
            int b = suiji.Next(1, 10);
            int c = suiji.Next(0, 10);
            int d = suiji.Next(1, 10);
            int p = 4;
            //int p = suiji.Next(0, 7);
            if (p == 0)//出加法題
            {
                label1.Text = a.ToString() + "+" + b.ToString() + "=";
                result = a + b;
                f1 = result;
                f2 = 1;
            }
            if (p == 1) //出減法題
            {
                label1.Text = a.ToString() + "-" + b.ToString() + "+" + c.ToString() + "-" + d.ToString();
                result = a - b;
                f1 = result;
                f2 = 1;
            }
            ti_shu = ti_shu + 1;
            textBox1.Text = "";
            if (p == 2) //出乘法題
            {
                label1.Text = a.ToString() + "*" + b.ToString() + "=";
                result = a * b;
                f1 = result;
                f2 = 1;
            }
            if (p == 3) //出除法題
            {
                label1.Text = a.ToString() + "/" + b.ToString() + "=";
                f1 = a;
                f2 = b;
                int g;
                g = Gcd(f1, f2);
                if (g>1)
                {
                    f1 = f1 / g;
                    f2 = f2 / g;
                }
                if (f2==1)
                {
                    result = f1;
                }


            }
            if (p == 4) //出分數加法題
            {
                if (a > b)
                {
                    int t = a; a = b; b = t;
                }
                if (c > d)
                {
                    int t = c; c = d; d = t;
                }
                label1.Text = a.ToString() + "/" + b.ToString() + "+" + c.ToString() + "/" + d.ToString() + "=";
                f1 = a * d + b * c;
                f2 = b * d;
                int g;
                g = Gcd(f1, f2);
                f1 = f1 / g;
                f2 = f2 / g;
                result = f1 / f2;
                if (f1 == 0)
                {
                    result = 0;
                }
                if (f2 == 1)
                {
                    result = f1;
                }
            }
            if (p == 5) //出分數減法題
            {
                if (a > b)
                {
                    int t = a; a = b; b = t;
                }
                if (c > d)
                {
                    int t = c; c = d; d = t;
                }
                label1.Text = a.ToString() + "/" + b.ToString() + "-" + c.ToString() + "/" + d.ToString() + "=";
                f1 = a * d - b * c;
                f2 = b * d;
                int g;
                g=Gcd(f1, f2);
                f1 = f1 / g;
                f2 = f2 / g;
                result = f1 / f2;
                if (f1 == 0)
                {
                    result = 0;
                }
                if (f2 == 1)
                {
                    result = f1;
                }

            }
            if (p == 6) //出分數乘法題
            {
                if (a > b)
                {
                    int t = a; a = b; b = t;
                }
                if (c > d)
                {
                    int t = c; c = d; d = t;
                }
                label1.Text = a.ToString() + "/" + b.ToString() + "*" + c.ToString() + "/" + d.ToString() + "=";
                f1 = a * c;
                f2 = b * d;
                int g;
                g = Gcd(f1, f2);
                f1 = f1 / g;
                f2 = f2 / g;
                result = f1 / f2;
                if (f1 == 0)
                {
                    result = 0;
                }
                if (f2 == 1)
                {
                    result = f1;
                }
            }
            if (p == 7) //出分數除法題
            {
                if (c == 0)
                {
                    c++;
                }
                if (a > b)
                {
                    int t = a; a = b; b = t;
                }
                if (c > d)
                {
                    int t = c; c = d; d = t;
                }
                label1.Text = a.ToString() + "/" + b.ToString() + " " + "/" + " " + c.ToString() + "/" + d.ToString() + "=";
                f1 = a * d;
                f2 = b * c;
                int g;
                g = Gcd(f1, f2);
                f1 = f1 / g;
                f2 = f2 / g;
                if (f1 == 0)
                {
                    result = 0;
                }
                if (f2 == 1)
                {
                    result = f1;
                }
                //result = f1 / f2;
            }
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }


        int Gcd(int a, int b)//求最大公約數,以便對結果進行約分
        {
            while (a != 0 && b != 0)
            {
                if (a > b) a = a % b;
                else if (a < b) b = b % a;
            }
            return (a > b ? a : b);
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            ti_shu = 0;
            chu_ti();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            string Item;
            /*if (pp <= 3 || f1 == 0 || f2 == 1)
            {
                if (e.KeyChar == 13)//表示按下的回車鍵
                {
                    if (Convert.ToInt16(textBox1.Text) == result)
                    {
                        Item = label1.Text + textBox1.Text + "√";

                    }
                    else
                        Item = label1.Text + textBox1.Text + "×";             
                    this.listBox1.Items.Add(Item);
                    this.textBox1.Text = "";
                    chu_ti();
                    }
                    }
                     else
                     {*/
                         if (e.KeyChar == 13)//表示按下的回車鍵
                {
                    if (f2==1||f1==0)
                    {
                        if (Convert.ToInt16(textBox1.Text) == result)
                        {
                            Item = label1.Text + textBox1.Text + "√";
                            this.listBox1.Items.Add(Item);
                        }
                        else
                        {
                            Item = label1.Text + textBox1.Text + "×";
                            this.listBox1.Items.Add(Item);
                            this.listBox2.Items.Add(Item);
                        }
                           
                    }
                    else
                    {
                        if (Convert.ToString(textBox1.Text) == Convert.ToString(f1) + "/" + Convert.ToString(f2))
                        {
                            Item = label1.Text + textBox1.Text + "√";
                            this.listBox1.Items.Add(Item);
                        }
                        else
                        {
                            Item = label1.Text + textBox1.Text + "×";
                            this.listBox1.Items.Add(Item);
                            this.listBox2.Items.Add(Item);
                        }
                           
                    }
                    
                             
                             this.textBox1.Text = "";
                             chu_ti();
                         }
                         
                }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
            }

        }

  

 

軟體使用說明書

  

小學四則運算程式使用說明書

1.1編寫目的

  實現小學生四則運算線上答題,能夠使使用者鍛鍊自己的數學能力
1.2專案背景

   石家莊鐵道大學16級測繪系 羅玉銘,王悅生編

  1. 軟體概述
    2.1目標:實現小學生線上答題
    2.2功能:小學生線上答題且提出錯題
    2.3 效能
        .a時間特性:反應速度快
        .b靈活性:較為靈活

        .c外觀:簡單清晰

3. 執行環境
3.1硬體

要求低

VS

4. 使用說明
4.1安裝和初始化

  需安裝VS


4.2輸入

  請輸入正確答案(分數答案格式為a/b)
4.2.1資料背景

4.2.2資料格式

  無

4.2.3輸入舉例

答案為整數輸入x,答案為分數輸入a/b,1/2=1/2, 6/3=2,6/10=3/5
4.3輸出

√或×
4.4出錯和恢復

如出錯請重新執行程式


5. 執行說明
5.1執行步驟

  無執行步驟,請直接輸入答案

5.1.1執行控制


5.1.2操作資訊
    a. 執行目的;小學生線上答題

    b. 操作要求;輸入資料即可

    c. 啟動方法;無需操做,開啟程式後自動執行

    d. 預計執行時間;極短

    e. 其他事項。
5.2.3輸入/輸出檔案

無輸入輸出檔案
5.2.4啟動或恢復過程


6. 非常規過程
  

7. 操作命令一覽表
  

8. 程式檔案(或命令檔案)和資料檔案一覽表
 計算,輸入,退出,儲存

 

        這次作業和王悅生的合作讓我換了一個想法去程式設計,確實與人合作和自己程式設計的一些東西是不一樣的,要好好學習,不斷提升自己的水平才行