作业四: 结对编程项目---四则运算 程序代码 截图
1 using System;
2 using System.IO; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace 四则运算 11 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 //定义一个运算类型的枚举 20 private enum OpentPly 21 { 22 Oper_加, 23 Oper_减, 24 Oper_乘, 25 Oper_除, 26 } 27 28 //定义全局变量 29 private int m_nEnd = 0;//计算结果 30 private int m_nRN = 0;//所做题目中正确的个数 31 private int m_nWN = 0;//所做题目中错误的个数 32 private int m_nSN = 0;//已做题目 33 private int m_nNumSum = 0;//所有题目的总题数 34 private int m_nNumber1 = 0;//第一个参与计算的数 35 private int m_nNumber2 = 0;//第二个参与计算的数 36 private int m_nArea = 0;//取值范围 37 38 private string[] strOper ={ "+", "-", "×", "÷" }; 39 40 private OpentPly m_enumTol = OpentPly.Oper_加;//选定默认的类型为加法 41 private DateTime SumTime; 42 43 //界面的初次显示的界面 44 private void Form1_Load(object sender, EventArgs e) 45 { 46 listView属性.Items.Clear();//清除里面所有的东西 47 comboBox类型.SelectedIndex = 0; 48 comboBox范围.SelectedIndex = 0; 49 comboBox题Number.SelectedIndex=0; 50 this.buttonOK.Focus();//把焦点定在“开始”按钮上 51 } 52 //对按钮“开始”的处理 53 #region 对[开始]按钮的处理 54 private void buttonOK_Click(object sender, EventArgs e) 55 { 56 if (m_nSN > 0 && m_nNumSum > m_nSN) 57 { 58 if (MessageBox.Show("题目还没有做完,是否要重新开始?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, 59 MessageBoxDefaultButton.Button2) == DialogResult.No) 60 { 61 this.textBoxInput.Focus(); 62 return; 63 } 64 } 65 66 SumTime = DateTime.Now; 67 68 m_nRN = 0; 69 m_nSN = 0; 70 m_nWN = 0; 71 72 this.label正确.Text = m_nRN.ToString(); 73 this.label错误.Text = m_nWN.ToString(); 74 this.label剩余题数.Text = String.Format("{0}", m_nNumSum - m_nSN-1); 75 76 listView属性.Items.Clear(); 77 78 groupBox题目.Enabled = true; 79 80 FindTwoNum(); 81 textBoxInput.Focus(); 82 } 83 #endregion 84 85 //定义一个方法来计算相关的算法 86 #region 加减乘除的相关计算 87 private void FindTwoNum() 88 { 89 switch (m_enumTol) 90 { 91 case OpentPly.Oper_加: 92 m_nNumber1 = Rand.Prent1(m_nArea); 93 m_nNumber2 = Rand.Prent1(m_nArea-m_nNumber1); 94 m_nEnd = m_nNumber1 + m_nNumber2; 95 break; 96 case OpentPly.Oper_减: 97 m_nNumber1 = Rand.Prent1(m_nArea); 98 m_nNumber2 = Rand.Prent1(m_nNumber1); 99 m_nEnd = m_nNumber1-m_nNumber2; 100 break; 101 case OpentPly.Oper_乘: 102 m_nNumber1 = Rand.Prent1(m_nArea/2); 103 m_nNumber2 = Rand.Prent2(m_nNumber1, m_nArea); 104 m_nEnd = m_nNumber1 * m_nNumber2; 105 break; 106 case OpentPly.Oper_除: 107 m_nNumber1 = Rand.Prent1(m_nArea); 108 if (m_nNumber1 == 0) 109 { 110 m_nNumber2 = Rand.Prent2(1, m_nArea); 111 } 112 else if (m_nNumber1 < 4) 113 { 114 m_nNumber2 = m_nNumber1; 115 } 116 else 117 { 118 m_nNumber2 = Rand.Prent2(1,m_nNumber1); 119 while (m_nNumber1 % m_nNumber2 != 0) 120 { 121 m_nNumber2 = Rand.Prent2(1, m_nNumber1); 122 } 123 } 124 m_nEnd =(int)( m_nNumber1 / m_nNumber2); 125 #region 126 #endregion 127 break; 128 default: 129 break; 130 } 131
//在题目界面里面显示相关的东西
132 labelNumber1.Text = m_nNumber1.ToString(); 133 labelNumber2.Text = m_nNumber2.ToString(); 134 label符号.Text = strOper[(int)m_enumTol]; 135 136 137 } 138 #endregion 139 //对按钮“答”的相关设置 140 #region button答_Click 141 private void button答_Click(object sender, EventArgs e) 142 { 143 try 144 { 145 int m_nInSum = int.Parse(this.textBoxInput.Text.Trim()); 146 m_nSN++; 147 148 string[] strList ={ m_nNumber1.ToString() + strOper[(int)m_enumTol] + m_nNumber2, m_nEnd.ToString(),m_nInSum.ToString() }; 149 150 //当textBoxInput中没有输入任何东西时 151 if (textBoxInput.Text == "") 152 { 153 textBoxInput.Focus(); 154 return; 155 } 156 //当题目做完时 157 if (m_nSN ==m_nNumSum) 158 { 159 TimeSpan Time = DateTime.Now - SumTime; 160 MessageBox.Show("已做完!对" + m_nRN.ToString() + "题,错" + m_nWN.ToString() + "题!用时"+Time.ToString()+"分钟", "恭喜提示", MessageBoxButtons.OK, 161 MessageBoxIcon.Warning); 162 groupBox题目.Enabled = false; 163 164 //button答_Click(null, null); 165 return; 166 } 167 //当m_nInSum = m_nEnd时 168 if (m_nInSum == m_nEnd) 169 { 170 m_nRN++; 171 172 this.label正确.Text = m_nRN.ToString(); 173 this.label错误.Text = m_nWN.ToString(); 174 this.label剩余题数.Text =String.Format("{0}", m_nNumSum-m_nSN-1); 175 listView属性.Items.Add(new ListViewItem(strList, 1)); 176 } 177 //当m_nInSum != m_nEnd时 178 else 179 { 180 m_nWN++; 181 182 this.label正确.Text = m_nRN.ToString(); 183 this.label错误.Text = m_nWN.ToString(); 184 this.label剩余题数.Text = String.Format("{0}", m_nNumSum - m_nSN-1); 185 186 listView属性.Items.Add(new ListViewItem(strList, 0)); 187 } 188 this.textBoxInput.Text = ""; 189 190 FindTwoNum();//出下一题 191 textBoxInput.Focus(); 192 } 193 catch (Exception ee) 194 { 195 MessageBox.Show(ee.Message); 196 } 197 } 198 #endregion 199 200 #region 设置里面的项选定之后 201 private void comboBox范围_SelectedIndexChanged(object sender, EventArgs e) 202 { 203 string strNum = this.comboBox范围.Text.Trim(); 204 strNum = strNum.Substring(0, strNum.IndexOf("以内")); 205 m_nArea = int.Parse(strNum); 206 buttonOK_Click(null, null); 207 } 208 209 private void comboBox题Number_SelectedIndexChanged(object sender, EventArgs e) 210 { 211 string strScal = this.comboBox题Number.Text.Trim(); 212 m_nNumSum = int.Parse(strScal); 213 m_nNumSum += 1; 214 buttonOK_Click(null, null); 215 } 216 217 private void comboBox类型_SelectedIndexChanged(object sender, EventArgs e) 218 { 219 m_enumTol = (OpentPly)comboBox类型.SelectedIndex; 220 buttonOK_Click(null, null); 221 } 222 #endregion 223 224 #region 在textBoxInput中单击Enter键时执行button答_Click事件 225 private void textBoxInput_KeyDown(object sender, KeyEventArgs e) 226 { 227 if (e.KeyCode == Keys.Enter) 228 { 229 button答_Click(null, null); 230 } 231 } 232 #endregion 233 234 private void Form1_FormClosed_1(object sender, FormClosedEventArgs e) 235 { 236 if (MessageBox.Show("你真的要退出 <四则运算>吗?", "提示", MessageBoxButtons.YesNo, 237 MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) 238 { 239 this.Close(); 240 //Application.Exit(); 241 } 242 } 243 244 245 246 247 } 248 }
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 calculation { public partial class Form1 : Form { int n1, n2,count,max,min,op,opmax,opmin; //定义两个随机数,最小值最大值,符号的最多与最少 Random ran; public Form1() { InitializeComponent(); ran = new Random(); //生成新的随机数 } private void textBox1_TextChanged(object sender, EventArgs e) //题目数量根据写入得 { if (count == int.Parse(textBox1.Text)) { count = int.Parse(textBox1.Text); } } private void textBox3_TextChanged(object sender, EventArgs e) //取值范围最小值 { min = int.Parse(textBox3.Text); } private void textBox4_TextChanged(object sender, EventArgs e) //取值范围最大值 { max = int.Parse(textBox4.Text); } private void button2_Click(object sender, EventArgs e) //退出按钮 { this.Dispose(); } private void button1_Click(object sender, EventArgs e) //开始按钮 { max = 100; min = 0; opmax = 4; opmin = 0; for (int i = 0; i < count; i++) { n1 = ran.Next(min, max + 1); //定义这两个随机数是根据给的最大值最小值之间随机的 n2 = ran.Next(min, max + 1); op = ran.Next(opmin, opmax); //最少符号数量与最多符号数量 switch (op) //定义四个运算符 + - * / { case 0: listBox1.Items.Add(n1 + "+" + n2 + "="); break; case 1: listBox1.Items.Add(n1 + "-" + n2 + "="); break; case 2: listBox1.Items.Add(n1 + "*" + n2 + "="); break; case 3: listBox1.Items.Add(n1 + "/" + n2 + "="); break; default:break; } } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked == true && checkBox2.Checked == true)//+-*/ { opmax = 4; opmin = 0; } else if (checkBox1.Checked = true && checkBox2.Checked == false)//+- { opmax = 2; opmin = 0; } else if (checkBox1.Checked == false && checkBox2.Checked == true)//*/ { opmax = 4; opmin = 2; } else { MessageBox.Show("请至少选择一种模式!"); } } } }
总结:
这次的作业对我们来说很难,尤其对于我来说更难,本身就对C#接触太少,之前跟着老师学习的时候学习能力比较低,每次都是紧跟着老师做小项目,因为下课前必须交本节课的作业,有分数的,所以跟着老师打代码的时候没有太多时间去理解这些代码是什么意义,少问了一些为什么,只是用最快的速度跟上老师的步伐,要是有一点跟不上可能这节课的成绩就废了,这个科目不能及格是很麻烦的,所以刚开始接触一个题目时,看着好像有点眼熟,但是就是不知道怎么去做,所以我和樊志豪想法一样,先到网上去学习别人的成品,先试着做一个,就是第一个作业,等我们学习点东西了,就完全自己弄一个,就是第二个,虽然很不完善,做得很次,但是跟我们自己比已经是很好了,毕竟水平摆在那里,这次作业我稍微学到了C#的一点东西,往后会继续努力,虽然这几天都忙着弄这个破作业没有时间看英语,学C语言,脑袋大的要砸电脑,但是我不后悔,做一样东西就要认真做。继续努力。
(1)我的小伙伴是樊志豪,学号是130201205,博客地址为http://www.cnblogs.com/haohaoeex/
(2)我们这次合作项目是四则运算,实现的主要功能有:首先可以由使用者输入题目数量,计算数值的范围,以及计算题里面所包含的运算符,加减乘除,括号,分数等等,使用者可以输入答案,最右方可以出现题目答案。
(3)我主要是负责版面的设计,樊志豪同学主要是和我一起编写代码,我首先先是弄好了模板,然后我们一起根据模板编写代码。
(4)我们的优点很明显,就是大概什么都不会,学东西很快能记住,就像一杯只有半杯水的杯子。缺点也很明显,就是什么都不会,别人可能每个点都会,几分钟就搞定,我们可能几个小时都搞不定,效率低到爆表。
(5) 我们的想法特别容易产生一致,反正都不会,没有什么自己的想法,所以合作起来很顺,不至于打架,目标也很明确,虽然效率很低,但是都是用在编程上而不是争吵上。