作业四: 结对编程项目---四则运算

1) 注明结对小伙伴的学号,姓名以及博客地址:

130201236 刘彦麟 博客地址:http://www.cnblogs.com/lylljj/

 

2) 实现的主要功能有哪些?

1、可以选择运算的形式,比如 +、-、 *、 /、 +-、 */、还有四种混合形式。

2、也可以选择难度,一个有三个选项,10以内、20以内以及100以内。

3、自动生成新的题目。

4、提交后可以判断对错。

 

3) 合作过程中主要负责完成了哪些工作?

刘彦麟同学主要负责了主要代码的编写,我参与一些简单代码的查阅以及复审。在写代码的过程中,遇到好多不会的问题。我们一起查询了百度和经过同学的帮助,我们最终写出了这样一个程序。

 

4) 结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)。

刘彦麟同学的优点:认真仔细负责任,对于老师留的作业有很高的积极性,遇到不会的会努力想办法弄明白。

缺点是:基础薄弱

蔡强同学的优点:听话,对于分给我的任务能很好完成,积极配合组内工作,好学。

缺点:基础太薄弱

 

5) 总结在合作过程中结对编程的优点和缺点。

对于我这样基础不太好的同学来说,结对编程可以让我学到很多我根本就不知道的东西,让我这样不会的很多的同学也可以加入到编程里来,从零到有,而且,两个人1+1的力量是大于2的,所以合作很有用,希望以后多一些这样的作业。

缺点就是,没有一个共同编程的地方,因为我们不能出现在一个宿舍,所以沟通起来比较困难。

 

6) 至少附一张照片, 展现两人在一起合作编程的情况。

这些就是我们的代码:

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;
using caculate.math.Biz;

namespace caculate.math
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            tcmbType.SelectedIndex = 0;
            tcmbLevel.SelectedIndex = 0;
            tcmbNum.SelectedIndex = 0;
        }
        private int pageNum = 1;
        private int maxPageNum;
        private Exam exam;
        TextBox txt1;
        TextBox txt2;
        TextBox txt3;
        Label lblErr;
        Label lblOp;
        Label lblIndex;
        ExamType examType;
        ExamLevel level;
        int numOfProblems;
        public static int CheckExamId;

        private string GetOperationString(Operation operation)
        {
            switch (operation)
            {
                case Operation.Add:
                    return "+";
                case Operation.Minus:
                    return "-";
                case Operation.Multiply:
                    return "×";
                case Operation.Divide:
                    return "÷";
            }
            return "+";
        }
        private TextBox GetTextBox(int index, int num)
        {


            foreach (Control col in this.Controls)
            {
                if (col.Name == "txtNUM" + index + num)
                {
                    return (TextBox)col;
                }

            }
            return null;

        }
        private Label GetLableOp(int index)
        {
            foreach (Control col in this.Controls)
            {
                if (col.Name == "lblOp" + index)
                {
                    return (Label)col;
                }

            }
            return null;

        }
        private Label GetLableIndex(int index)
        {
            foreach (Control col in this.Controls)
            {
                if (col.Name == "lblIndex" + index)
                {
                    return (Label)col;
                }

            }
            return null;

        }

        private Label GetLableErr(int index)
        {
            foreach (Control col in this.Controls)
            {
                if (col.Name == "lblErr" + index)
                {
                    return (Label)col;
                }

            }
            return null;

        }
        private void GetExamAnswer(int pageNum)
        {
            int startNum = (pageNum - 1) * 10;
            for (int i = 0; i < 10; i++)
            {
                if (i < exam.Problems.Count)
                {
                    Problem problem = exam.Problems[i + startNum];
                    txt1 = GetTextBox(i + 1, 1);
                    txt2 = GetTextBox(i + 1, 2);
                    txt3 = GetTextBox(i + 1, 3);
                    lblErr = GetLableErr(i + 1);
                    int answer = int.MinValue;
                    if (problem.AnswerPosition == 1)
                    {
                        if (int.TryParse(txt1.Text.ToString(),out answer))
                        {
                            problem.Answer = answer;

                        }
                        else
                        {
                            problem.Answer = int.MinValue;
                        }
                        lblErr.Text = problem.Answer == problem.Num1 ? "正确" : "错误";

                    }
                    else if (problem.AnswerPosition == 2)
                    {
                        if (int.TryParse(txt2.Text.ToString(), out answer))
                        {
                            problem.Answer = answer;
                        }
                        else
                        {
                            problem.Answer = int.MinValue;
                        }
                        lblErr.Text = problem.Answer == problem.Num2 ? "正确" : "错误";

                    }
                    else if (problem.AnswerPosition == 3)
                    {
                        if (int.TryParse(txt3.Text.ToString(), out answer))
                        {
                            problem.Answer = answer;
                        }
                        else
                        {
                            problem.Answer = int.MinValue;
                        }
                        lblErr.Text = problem.Answer == problem.Num3 ? "正确" : "错误";

                    }
                    problem.IsAnswered = true;
                }
            }
        }
        private void SetErrVisbility(bool visible) 
        {
            lblErr1.Visible = visible;
            lblErr2.Visible = visible;
            lblErr3.Visible = visible;
            lblErr4.Visible = visible;
            lblErr5.Visible = visible;
            lblErr6.Visible = visible;
            lblErr7.Visible = visible;
            lblErr8.Visible = visible;
            lblErr9.Visible = visible;
            lblErr10.Visible = visible;
        
        
        } 




        private void LoadExam(int pageNum)
        {
            int startNum = (pageNum - 1) * 10;
            for (int i = 0; i < 10; i++)
            {
                if (i < exam.Problems.Count)
                {
                    Problem problem = exam.Problems[i + startNum];
                    txt1 = GetTextBox(i + 1, 1);
                    txt2 = GetTextBox(i + 1, 2);
                    txt3 = GetTextBox(i + 1, 3);
                    lblErr = GetLableErr(i + 1);
                    lblIndex = GetLableIndex(i + 1);
                    lblOp = GetLableOp(i + 1);
                    lblIndex = GetLableIndex(i + 1);
                    lblIndex.Text = (startNum + i + 1).ToString() + ".";
                    lblOp.Text = GetOperationString(problem.Operation);
                    if (problem.AnswerPosition == 1)
                    {
                        txt1.ReadOnly = false;
                        if (problem.IsAnswered)
                        {
                            if (problem.Answer !=int.MinValue)
                            {
                                txt1.Text = problem.Answer.ToString();
                            }
                           else
                         {
                            txt1.Text = "";
                         }
                        lblErr.Text = problem.Answer == problem.Num1 ? "正确" : "错误";
                        }
                        else
                        {
                          txt1.Text = "";
                        }
                        txt2.Text = problem.Num2.ToString();
                        txt2.ReadOnly = true;
                        txt3.Text = problem.Num3.ToString();
                        txt3.ReadOnly = true;

                    }
                    else  if (problem.AnswerPosition == 2)
                    {
                        txt1.ReadOnly = true;
                        txt1.Text = problem.Num1.ToString();
                        txt2.ReadOnly = false;
                        if (problem.IsAnswered)
                        {
                            if (problem.Answer !=int.MinValue)
                            {
                                txt2.Text = problem.Answer.ToString();
                            }
                           else
                         {
                            txt2.Text = "";
                         }
                        lblErr.Text = problem.Answer == problem.Num2 ? "正确" : "错误";
                        }
                        else
                        {
                          txt2.Text = "";
                        }
                        txt3.Text = problem.Num3.ToString();
                        txt3.ReadOnly = true;

                    }
                    else  if (problem.AnswerPosition == 3)
                    {
                        txt1.ReadOnly = true;
                        txt1.Text = problem.Num1.ToString();
                        txt2.Text = problem.Num2.ToString();
                        txt2.ReadOnly = true;
                        txt3.ReadOnly = false;
                        if (problem.IsAnswered)
                        {
                            if (problem.Answer !=int.MinValue)
                            {
                                txt3.Text = problem.Answer.ToString();
                            }
                           else
                         {
                            txt3.Text = "";
                         }
                        lblErr.Text = problem.Answer == problem.Num3 ? "正确" : "错误";
                        }
                        else
                        {
                          txt3.Text = "";
                        }

                    }
                }
            }
        }

        private void SetErrColor()
        {
           lblErr1.ForeColor = lblErr1.Text == "错误"? Color.Red : Color.Black;
           lblErr2.ForeColor = lblErr2.Text == "错误"? Color.Red : Color.Black;
           lblErr3.ForeColor = lblErr3.Text == "错误"? Color.Red : Color.Black;
           lblErr4.ForeColor = lblErr4.Text == "错误"? Color.Red : Color.Black;
           lblErr5.ForeColor = lblErr5.Text == "错误"? Color.Red : Color.Black;
           lblErr6.ForeColor = lblErr6.Text == "错误"? Color.Red : Color.Black;
           lblErr7.ForeColor = lblErr7.Text == "错误"? Color.Red : Color.Black;
           lblErr8.ForeColor = lblErr8.Text == "错误"? Color.Red : Color.Black;
           lblErr9.ForeColor = lblErr9.Text == "错误"? Color.Red : Color.Black;
           lblErr10.ForeColor = lblErr10.Text == "错误"? Color.Red : Color.Black;
        
        }

        private ExamType GetExamType()
        {
            return (ExamType)tcmbType.SelectedIndex;
        }
        private ExamLevel GetExamLevel()
        {

            switch (tcmbLevel.SelectedIndex)
            {
                case 0:
                    return ExamLevel.L10;
                case 1:
                    return ExamLevel.L20;
                case 2:
                    return ExamLevel.L100;
            }
            return ExamLevel.L10;
        }
        private int GetNumOfProbles()
        {
            switch (tcmbNum.SelectedIndex)
            {
                case 0:
                    return 10;
                case 1:
                    return 20;
                case 2:
                    return 50;
                case 3:
                    return 100;
            }
            return 10;
        }
        private void tbtnCreate_Click(object sender, EventArgs e)
        {
            if (CheckToolBarInfo())
            {
                examType = GetExamType();
                level = GetExamLevel();
                numOfProblems = GetNumOfProbles();
                maxPageNum = numOfProblems / 10;
                exam = new Exam(examType, level, numOfProblems);
                LoadExam(pageNum);
                SetFocus();
            }
        }
 
        private void btnNext_Click(object sender, EventArgs e)
        {
                GetExamAnswer(pageNum);
                if (pageNum < maxPageNum)
                {
                   pageNum++;
                   txtPage.Text = pageNum.ToString();
                  LoadExam(pageNum);
                    SetFocus();
                    SetErrVisbility(false);
                
                }
        }
        
        private void SetFocus()
        {
            switch (exam.Problems[0].AnswerPosition)
            {
                case 1:
                    txtNUM11.Focus();
                    break;
                case 2:
                    txtNUM12.Focus();
                    break;
                case 3:
                    txtNUM13.Focus();
                    break;

            }
        }
        private bool CheckToolBarInfo()
        {
            if (tcmbType.SelectedIndex < 0)
            {
                MessageBox.Show("请选择运算。");
                return false;

            }
            if (tcmbLevel.SelectedIndex < 0)
            {
                MessageBox.Show("请选择难度。");
                return false;
            }
            if (tcmbNum.SelectedIndex < 0)
            {
                MessageBox.Show("请选择题数。");
                return false;
            }
            return true;
        }

        private void lblIndex1_Click(object sender, EventArgs e)
        {

        }

        private void From1_Load(object sender, EventArgs e)
        {

        }

        private void btnPrevious_Click(object sender, EventArgs e)
        {
            GetExamAnswer(pageNum);
            if (pageNum < maxPageNum)
            {
                pageNum--;
                txtPage.Text = pageNum.ToString();
                LoadExam(pageNum);
                SetFocus();
                SetErrVisbility(false);
            }
        }


        private void btnOk_Click(object sender, EventArgs e)
        {
            GetExamAnswer(pageNum);
            SetErrVisbility(true);
            SetErrColor();
        }


        public int FormCheckExamId { get; set; }

        private void tcmbNum_Click(object sender, EventArgs e)
        {

        }

    }
    }

 下面的调试的截图

这是开始页面。

这是可以选择运算形式。

这是选择数的范围。

这是生成出题目的样子。

这是判断正误的结果。

 

posted @ 2016-04-06 22:38  蔡强130201201  阅读(169)  评论(2编辑  收藏  举报