zoukankan      html  css  js  c++  java
  • 结对编程项目——四则运算vs版

    结对编程项目——四则运算vs版

    1)小伙伴信息:###

           学号:130201238 赵莹

           博客地址:点我进入 小伙伴的博客

    2)实现的功能:###

    1. 实现带有用户界面的四则运算:将原只能在c free程序框内构建并运行,进一步完善为利用vs搭建Windows窗体完成运行,有关用户体验方面得到了提高。
    2. 加入登录窗口:此版本需固定登录名和密码才可登录,也可随及退出。原意是希望一人一账号,可以记录每个人的进度并更新。
    3. 密码隐藏:可加入设置选项,可隐藏or显示密码。
    4. 可清空现有题目。
    5. 支持负数:将负数加以括号,进行简单四则运算出题。只针对出题一方面,对于答题,暂未进行深入挖掘。
    6. 出题量和范围的自由设定。
    7. 混合出题:由两整数/两分数进行四则运算(加减乘除)。

        暂未实现的功能:###

    1. 题目存在重复。
    2. 每道题目只涉及一个运算符:可设置新题型选项,加入多运算符。
    3. 答题功能未能加入:在用c有完成题目纠错并给出正确答案,因不熟悉c#的编写and时间紧迫,未能加入。
    4. 答题模式多样:此版本仅有混合运算,可扩充为多样式答题模块。

    3)合作过程中的负责模块:###

    1. 完成windows窗口排版。
    2. 完成所设计题目数量和范围的正常显示。
    3. 完成程序模块化。将case各选项中的冗长语句移出,添加到新创建相应的子程序中,便于审阅和纠错。
    4. 程序纠错。在进行编写的时出现了各式各样的错误,这时就需要纠错啦。比如在题目数量未按照输入数值显示、分数的出题对于分母为0的更改、考虑问题的不全面等等。
    5. 在程序正常运行的前提下,优化程序界面,规范代码格式。

    (注:程序大多是在两人共同讨论推进的,同时其中因和结对小伙伴对c#的不熟悉,向其他小伙伴 频频再频频的求助,在此感谢感谢感谢!!)

    4)结对伙伴的优缺点总结:###

    优点 缺点
    本人
    1.尤为注重代码规范,编写的代码方便查看并纠错。(只说一句:I’m处女座)

    2.善于提出问题,并快速寻求帮助,保证进程不拖沓。

    3.宿舍地理位置优越,处于多学霸中心地带,请教问题时掌握快准狠的原则。

    1.做事追求的更多一点,有自己的想法。容易和小伙伴发生摩擦。(结果还是美好滴!)

    2.对c#的不熟悉,很容易拖慢整体进程。(解决办法:不断请求其他小伙伴)
    小伙伴
    1.对待问题显得沉稳,能够容(tuo)忍(zou)我并且找出问题。

    2.牺牲个人时间也要完成代码编写。

    3.编写代码比较细心。

    1.很少主动请教其他小伙伴,性格偏内。(我外呀!)

    2.同样地,对c#的不熟悉也造成了一定的困扰。

    5)结对编程的优缺点总结:###

    优点 缺点
    结对编程


    1.更快速的找到错误并解决。<br

    2.思维的碰撞,使功能更完善。


    3.为组成团队打下良好的基础。


    4.在讨论过程中,不断加深印象。


    5.减轻编程负担。


    1.在两人对c#编程还不清晰的情况下,任意一人所添加的语句都需要做出多遍解释,造成项目的拖沓。相对应的,也会对此语句加深印象。

    2.对一件问题各执己见,容易发生争执。相应的,无论在以后的团队项目中,亦或是工作中,都会养成善于听取他人意见或建议的习惯,不断完善自身。

    6)照片

    7)程序截图

    ① 登录界面

    ② 运算界面

    ③ 清除程序

    附录

    //主界面
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    
    namespace Enter
    {
    
    public partial class topic : Form
    {
        /*
       public String getmax;
        public int maxnum;
        public String getmin;
        public int minnum;
        public Random R;
    
        public int den1, den2, num1, num2;
       */
        public topic()
        {
            InitializeComponent();
            /*
            //新增(可减少在每个函数内 重复定义)
       
            getmax = textMax.Text;
            getmin = textMin.Text;
            minnum = int.Parse(getmin);  //最小范围设定
            maxnum = int.Parse(getmax);  //最大范围设定
            R = new Random();  //取随机数
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
            */
        }
    
        //整数除法 case3
        public void Integerdivide()
        {
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            Random R = new Random();  //取随机数
    
            int den1, den2, num1, num2;
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
            
    
            if (den2 != 0)
                list.Items.Add(den1 + "/" + "(" + den2 + ")" + "=");
            else
            {
                list.Items.Add(den2 + "/" + "(" + den1 + ")" + "=");
    
            }
        }
    
        //分数加法 case 4
        public void Fractionadd()
        {
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            Random R = new Random();  //取随机数
    
            int den1, den2, num1, num2;
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
           
    
            if (den1 != 0) //当第一个分数分母den1!=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "+" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "+" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
            else   //当第一个分数分母den1=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "+" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "+" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
        }
    
        //分数减法 case 5
        public void Fractiondelete()
        {
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            Random R = new Random();  //取随机数
    
            int den1, den2, num1, num2;
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
           
    
            if (den1 != 0) //当第一个分数分母den1!=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "-" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "-" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
            else  //当第一个分数分母den=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "-" + "(" + num2 + "-" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "-" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
        }
    
        //分数乘法 case 6
        public void Fractionmultiply()
        {
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            Random R = new Random();  //取随机数
    
            int den1, den2, num1, num2;
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
            
    
            if (den1 != 0) //当第一个分数分母den1!=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "*" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "*" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
            else  ////当第一个分数分母den1=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "*" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "*" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
        }
       
        //分数除法case 7
        public void Fractiondivide()
        {
            
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            Random R = new Random();  //取随机数
    
            int den1, den2, num1, num2;
            den1 = R.Next(minnum, maxnum);
            num1 = R.Next(minnum, den1);
            den2 = R.Next(minnum, maxnum);
            num2 = R.Next(minnum, den2);
            
    
            if (den1 != 0) //当第一个分数分母den1!=0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "/" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + num1 + "/" + den1 + ")" + "/" + "(" + den2 + "/" + num2 + ")" + "=");//换
                }
            }
            else  //当第一个分数分母den1 =0的情况,分析den2
            {
                if (den2 != 0)
                {
                    list.Items.Add("(" + den1 + "/" + num1 + ")" + "/" + "(" + num2 + "/" + den2 + ")" + "=");
                }
                else if (den2 == 0)
                {
                    list.Items.Add("(" + den1 + " / " + num1 + ")" + "/" + "(" + den2 + "/" + num2 + ")" + "=");
                }
            }
        }
       
        // 确认按钮(出题)
        private void btnOk_Click(object sender, EventArgs e)
        {
            String getnum = textIn.Text;
            int num = Convert.ToInt32(getnum);  //输入题目
    
            String getmax = textMin.Text;
            int minnum = Convert.ToInt32(getmax);  //最小范围设定
    
            String getmin = textMax.Text;
            int maxnum = Convert.ToInt32(getmin);  //最大范围设定
    
            int i;
    
            Random R = new Random();  //取随机数
            int import = 0;   //输入的数量 
    
            for (i = 0; i < num; i++)
            {
                int den1, den2, num1, num2;
                den1 = R.Next(minnum, maxnum);
                num1 = R.Next(minnum, den1);
                den2 = R.Next(minnum, maxnum);
                num2 = R.Next(minnum, den2);
    
               import = R.Next(0, 8);  //取随机数
    
                switch (import)
                {
    
                    case 0: list.Items.Add(den1 + "+" + "(" + den2 + ")" + "="); break;
                    case 1: list.Items.Add(den1 + "-" + "(" + den2 + ")" + "="); break;
                    case 2: list.Items.Add(den1 + "*" + "(" + den2 + ")" + "="); break;
    
                    case 3: Integerdivide(); break; //整数除法
    
                    case 4: Fractionadd(); break; //分数加法
    
                    case 5: Fractiondelete(); break; //分数减法
    
                    case 6: Fractionmultiply();break;//分数乘法
    
                    case 7: Fractiondivide(); break; //分数除法
    
                }   
            } 
        }
    
        //清空按钮(清空输入数值,恢复初始化状态)
        private void btnClear_Click(object sender, EventArgs e)
        {
            textIn.Text = " ";  //设置为空
            textMax.Text = " ";
            textMin.Text = " ";
            list.Items.Clear();
        }
    }
    }
    
    
    
    //登录界面
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Enter
    {
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        //登录按钮(跳转窗口至主界面——计算)
        private void btnEnter_Click(object sender, EventArgs e)
        {
            if (textName.Text == "JINGYAN" && textPassword.Text == "646646") //符合输入值,跳转
            {
                topic form = new topic();
                form.Show();
            }
        }
    
        //退出按钮(退出程序)
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
    }
  • 相关阅读:
    scikit-learn随机森林调参小结
    用Spark学习FP Tree算法和PrefixSpan算法
    典型关联分析(CCA)原理总结
    scikit-learn Adaboost类库使用小结
    Google maps API开发(二)(转)
    php中setcookie函数用法详解(转)
    关于中英数字混排的字符串分割问题(转)
    字符串截取函数
    jQuery Masonry构建pinterest网站布局注意要点(转)
    【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局(转)
  • 原文地址:https://www.cnblogs.com/JINGY/p/5357224.html
Copyright © 2011-2022 走看看