作业四:结对编程项目--四则运算
一、基本要求
1) 实现一个带有用户界面的四则运算。
2) 生成的题目不能重复。
3) 支持负数,例如-1,-1/2,-3‘4/5等。
4) 题目的数量(个人项目的要求)
5) 数值的范围
6) 题目中最多几个运算符
7) 题目中是否有乘除法
8) 题目中或运算过程中有无负数
根据老师的要求我们做的程序中解决了以上的问题。因为在第一次制作的四则运算中我的代码就已经制作了一个用户操作的界面,只是比较粗糙不够完善,所以这次我和我的组员完善了四则运算的界面和一些具体的功能。在这些要求中的运算符有几个的问题里,第一次制作的四则运算的运算符是做了三个,所以这次依旧使用三个运算符,没有进行大的修改。
二、源代码
源代码:
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 WindowsFormsApplication2 { public partial class Form1 : Form { //加减运算字符数组 private String[] strs1 = new String[] { "+", "-", }; private Random r10 = new Random(); //乘除运算字符数组 private String[] strs2 = new String[] { "*","/"}; private Random r11 = new Random(); //混合运算字符数组 private String[] strs3 = new String[] { "+","-","*", "/" }; private Random r12 = new Random(); public Form1() { InitializeComponent(); } //出题按钮 private void btnTest_Click(object sender, EventArgs e) { if (jiajian.CheckState == CheckState.Checked) { Build_NoMul_NoDiv_NoMinus(); } else { } if (chengchu.CheckState == CheckState.Checked) { Build_Mul_Div_NoMinus(); } else { } if (hunhe.CheckState == CheckState.Checked) { Build_Mul_Div_Add_Minus(); } else { } } //重新出题按钮 private void btnClear_Click(object sender, EventArgs e) { listView1.Items.Clear(); } //加减运算代码 public void Build_NoMul_NoDiv_NoMinus() { int[] num1; int[] num2; int[] num3; int[] num4; int i, r1, r2, r3,r4; int n = int.Parse(textSum.Text); Random r = new Random(); num1 = new int[100]; num2 = new int[100]; num3 = new int[100]; num4 = new int[100]; for (i = 0; i < n; i++) { r1 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r2 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r3 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r4 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); int s1 = r1 + r2; int s2 = r3 + r4; if ((r1>r2&&s1 > 0&&r3>r4&&s2>0) && (r1 != 0&& r2 != 0 &&r3!=0 &&r4!=0)) { num1[i] = r1; num2[i] = r2; num3[i] = r3; num4[i] = r4; } else { i--; continue; } } for (i = 0; i < n; i++) { if (num1[i] != 0 && num2[i] != 0 && num3[i] != 0&&num4[i]!=0) listView1.Items.Add("(" + num1[i] + ")" + Getstr1(1) + "(" + num2[i] + ")" + Getstr1(1) + "(" + num3[i] + ")" + Getstr1(1) + "(" + num4[i] + ")"+"="); } } //乘除运算代码 public void Build_Mul_Div_NoMinus() { int[] num1; int[] num2; int[] num3; int[] num4; int i, r1, r2, r3, r4; int n = int.Parse(textSum.Text); Random r = new Random(); num1 = new int[100]; num2 = new int[100]; num3 = new int[100]; num4 = new int[100]; for (i = 0; i < n; i++) { r1 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r2 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r3 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r4 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); int s1 = r1 - r2; int s2 = r3 - r4; if ((r1 != 0 && r2 != 0 && r3 != 0 && r4 != 0)&&(r1>r2)&&(r3>r4)&&(s1>s2)) { num1[i] = r1; num2[i] = r2; num3[i] = r3; num4[i] = r4; } else { i--; continue; } } for (i = 0; i < n; i++) { if (num1[i] != 0 && num2[i] != 0 && num3[i] != 0 && num4[i] != 0) listView1.Items.Add("(" + num1[i] + ")" + Getstr2(1) + "(" + num2[i] + ")" + Getstr2(1) + "(" + num3[i] + ")" + Getstr2(1) + "(" + num4[i] + ")" + "="); } } //混合运算代码 public void Build_Mul_Div_Add_Minus() { int[] num1; int[] num2; int[] num3; int[] num4; int i, r1, r2, r3, r4; int n = int.Parse(textSum.Text); Random r = new Random(); num1 = new int[100]; num2 = new int[100]; num3 = new int[100]; num4 = new int[100]; for (i = 0; i < n; i++) { r1 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r2 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r3 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); r4 = r.Next(int.Parse(textF.Text), int.Parse(textT.Text)); int s1 = r1 - r2; int s2 = r3 - r4; if ((r1 != 0 && r2 != 0 && r3 != 0 && r4 != 0) && (r1 > r2) && (r3 > r4) && (s1 > s2)) { num1[i] = r1; num2[i] = r2; num3[i] = r3; num4[i] = r4; } else { i--; continue; } } for (i = 0; i < n; i++) { if (num1[i] != 0 && num2[i] != 0 && num3[i] != 0 && num4[i] != 0) listView1.Items.Add("(" + num1[i] + ")" + Getstr3(1) + "(" + num2[i] + ")" + Getstr3(1) + "(" + num3[i] + ")" + Getstr3(1) + "(" + num4[i] + ")" + "="); } } //加减运算符号随机出现 private string Getstr1(int num) { string result = ""; for (int i = 0; i < num; i++) { int r = r10.Next(strs1.Length); result += strs1[r]; } return result; } //乘除运算符号随机出现 private string Getstr2(int num) { string result = ""; for (int i = 0; i < num; i++) { int r = r11.Next(strs2.Length); result += strs2[r]; } return result; } //混合运算运算符号随机出现 private string Getstr3(int num) { string result = ""; for (int i = 0; i < num; i++) { int r = r12.Next(strs3.Length); result += strs3[r]; } return result; } } }
三:运行截图和小组合作照片
四:小组成员和总结心得
1.小组成员:王珏130201128、杜尧130201204
合作小组:王乃宽130201113、宋玉辉130201112
杜尧-优点:学的比较快,实际操作还不错。
缺点:基础比较差。
王乃宽-优点:耐心好,主动查阅资料了解需要使用的东西,上手快。
缺点:比较懒,总是拖到最后才完成需要的东西。
宋玉辉-优点:愿意去学习,耐心好。
缺点:基础比较差,上手慢一些。
2.主要实现的功能:
实现了数字和符号随机出现、题目数量自己拟定、可以给定数值范围、题目中的符号进行选择、题目不重复。
3.负责的工作:
在这次编程作业中。每个人的分工不同。我的分工是负责主要程序的代码编写、王乃宽的责任是负责查阅一些有关资料和书籍,帮助我完成代码的编写,让这个过程更加平滑、杜尧的分工是负责最后的代码调试过程,调试代码是否存在问题,以及那些功能没有被实现,以及界面的制作,让界面制作的更加美观、宋玉辉负责这次程序的设计任务,负责帮忙设计这次我们要做的程序中要涉及那些功能以及有什么界面设计的想法,让我可以更好更方便的按照他的想法去完成这次程序的代码编写。
5.总结心得:
对于这次程序的制作,我的组员杜尧,合作组员王乃宽和宋玉辉,他们的基础相对薄弱,在制作的过程中,他们一直跟我一起编写程序,但是有很多不懂的地方,他们都会提出来,我会为他们解答。相信他们在这次程序的编写过程中学到了很多知识,对他们以后的编程和制作有很大的帮助。同时也让自己对程序和代码的理解更加深刻,在帮助别人的同时提高了自己。希望他们可以真的理解,在以后制作程序的过程中完善自己的作品。
这次程序的制作过程中也遇到了一些困难,但是通过上网查阅资料和同学的帮助让我顺利的解决了自己的问题,也让我慢慢看到了自己的不足之处还有很多,需要学习和努力的地方还有很多,并不能因为自己会一些基础的编程就骄傲,当真正制作东西的时候这些小问题就会暴露出来,让我手足无措。我会继续完善自己的四则运算,也会让自己的基本功和一些进阶的编程操作更加扎实。相信自己下一次制作出来的东西会更加完美。