第三次软件工程作业

(一)需求分析:

本次设计的计算机程序比较上次做的功能增加,能够自己设置倒计时时间,总之这次的设计耗费我不少时间,需求我感觉能够让小学生做一些简单的算术题,但局限性太大,这个软件还有好多的bug,我能力有限,没办法改,

(二)具体思路:

我和上次的计算器用的不一样,这次比上次我感觉更好些,加入的计时器我参考的书上的计时器,让用户自定义设置时间的功能是运用了一个文本框,运行的时候先输入自己想要设置的时间,而且对于时间我也做了设定,让用户设定的时间不能为负数,然后再摁开始,具体代码老师可以btnStart的代码,计算器我是用的是的while做出来的,基本思路是这样的。还有那个输入答案的文本框,我请教了老师。当输入你写的答案后,按下回车后会自动进入下一道题。

(三)代码实现:

namespace Calculator
{
    public partial class Form1 : Form
    {
        public  int Count = 0;
        public  int right = 0;
        private int t = 60;

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
        }
        private void RandomNum()
        {
            Random ran = new Random();
            int n1, n2;
            n1 = ran.Next(1, 11);
            n2 = ran.Next(1, 11);
            txtNum1.Text = n1.ToString();
            txtNum2.Text = n2.ToString();
            //if (comboBox1.Text == "-")
            switch (comboBox1.Text)
            {
                case "-":
                    while (true)
                    {
                        if (int.Parse(txtNum1.Text) >= int.Parse(txtNum2.Text))
                        {
                            break;
                        }
                        n1 = ran.Next(1, 11);
                        n2 = ran.Next(1, 11);
                        txtNum1.Text = n1.ToString();
                        txtNum2.Text = n2.ToString();
                    }
                    break;
                case "/":
                    break;
            } 
            txtResult.Text = "";
            Count++;
        }

       

        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            txtResult.Enabled = false;
            MessageBox.Show("正确的题目数为:"+right+"错误的题目为:"+(Count-right-1));

        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            
            try
            {
                t = int.Parse(txtTime.Text);
                if (t<=0)
                {
                    MessageBox.Show("时间不能为负数");
                    return;
                }
                label1.Text = t.ToString();
                txtTime.Enabled = false;
            }
            catch (Exception)
            {
                MessageBox.Show("请输入正确的时间");
                return;
            }
            txtResult.Enabled = true;
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            RandomNum();
        }

        private void txtResult_KeyDown(object sender, KeyEventArgs e)
        {
            int result;
            if (e.KeyCode == Keys.Enter)
            {
                switch (comboBox1.Text)
                {
                    case "+":
                        result = int.Parse(txtNum1.Text) + int.Parse(txtNum2.Text);
                        break;
                    case "-":
                        result = int.Parse(txtNum1.Text) - int.Parse(txtNum2.Text);
                        break;
                    case "*":
                        result = int.Parse(txtNum1.Text) * int.Parse(txtNum2.Text);
                        break;
                    default  :
                        result = int.Parse(txtNum1.Text) / int.Parse(txtNum2.Text);
                        break;
                }
                if (txtResult.Text == Convert.ToString(result))
                {
                    right++;
 
                }
                RandomNum();

            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (t <= 0)
            {
                timer1.Enabled = false;
                txtResult.Enabled = false;
                MessageBox.Show("时间到!");
                //txtResult.Enabled = false;
                txtResult.Enabled = false;
                txtTime.Enabled = true;
                MessageBox.Show("正确的题目数为:" + right + "错误的题目为:" + (Count - right-1));
            }
            t = t - 1;
            label1.Text = t.ToString();
        }

       
    }
}

 

(四)屏幕截图:

(五)测试

说实话这次的测试还是比较满意的,因为基本实现了我想要的基本功能,而且附加题中我加入了可以让结果不为负数的功能,还加入可以让用户自定义设置倒计时的功能,

(六)psp耗时分析

(七)总结:

做你这个程序之后,我感觉很有成就感,但我自知我还是菜鸟一个,我会努力,由于我的c#基础没学好,导致我好多的东西动不动,因此近段时间我从网上下载你一些传智播客的一些c#的基础课程视频,希望对我能有所帮助,而且,以前我根本看不懂程序代码写得是什么,但现在我能看个差不多,我相信这就是进步。我这次结对编程是和我们宿舍杨坤一起完成的,下面是我们两个进行讨论时的一些图片。

基本情况就是这样了,用了我好长时间,不说了,继续抄书了。想想都发愁。真的抄书真没意思,有抄书的那段时间我感觉还不如看会我下载的视频。

 

 

posted @ 2015-10-18 14:14  丿绝情丶少主  阅读(185)  评论(2编辑  收藏  举报