日期:2014-05-18  浏览次数:20826 次

C#编写简单计算器的问题
小女子初学C#,学编计算器,只实现简单计算功能,但在纪录操作数或者是监听操作码的问题上有漏洞,麻烦高手指点指点,不胜感激!!!!
前面计算器面板可以不用看,主要是实现计算功能部分!如能我我修改,更是感激得五体投地!!!!
  public PForm()
  {
   
   
 //Backspace键
  void buttonBS_Click(object obj, EventArgs e)
  {
  SendKeys.Send("{BACKSPACE}");
  tb.Focus();
  }
  //CE键
  void buttonCE_Click(object obj, EventArgs e)
  {
  tb.Text = "";
  v1 = "";
  tb.Focus();
  }
  //C键
  void buttonC_Click(object obj, EventArgs e)
  {
  tb.Text = "";
  tb.Focus();
  }
  //开方
  void buttonSQ_Click(object obj,EventArgs e)
  {
  double i;
  res = Double.Parse(tb.Text);
  i = Math.Sqrt(res);
  tb.Text = i.ToString();
  }

  //1/x 按钮
  void buttonQUY_Click(object obj,EventArgs e)
  {
  res = Double.Parse(tb.Text);
  if ( res != 0 )
  {
  tb.Text = (1/res).ToString();
  }
  else
  {
  MessageBox.Show("error");
  }
  }

  //%的点击事件
  void buttonMOD_Click(object obj,EventArgs e)
  {
  double i = Double.Parse(tb.Text);
  res = (i * i) / 100;
  tb.Text = res.ToString();
  }
  void buttonEqu_Click(object obj,EventArgs e)
  {
  Cal();
  tb.Text = res.ToString();
  }

  //数字点击事件
  void buttonNum_Click(object obj, EventArgs e)
  {

  Button b = (Button)obj;
  SendKeys.Send(b.Text);
  v1=tb.Text;
  tb.Focus();
  }

  //操作符点击事件
  void buttonOPER_Click(object obj, EventArgs e)
  {
  flag ++;
  Button b = (Button)obj;
  opt = Char.Parse(b.Text);
  if(flag <= 1)
  {
  tb.Text = "";
  }

  else 
  {
  Cal();
  v1 = res.ToString();
  }
  tb.Text = res.ToString();

  }
  void Cal()
  {
  switch(opt)
  {
  case '+': res = Double.Parse(v1) + Double.Parse(tb.Text); break;
  case '-': res = Double.Parse(v1) - Double.Parse(tb.Text); break;
  case '*': res = Double.Parse(v1) * Double.Parse(tb.Text); break;
  case '/': res = Double.Parse(v1) / Double.Parse(tb.Text); break;
  default: break;
  }
  }
  static void Main()
  {
  Application.Run(new PForm());
  }
}


------解决方案--------------------
说的撒呢,那里出错了,错误代码红色标明。
------解决方案--------------------
计算器算是很简单的代码了,记得以前刚学BCB时,用C++做了一个。
细心一点,仔细调试OK
------解决方案--------------------
要是能结构更好点。。。就好了。。。
------解决方案--------------------
至少Cal方法里对除法没有作除0的处理~~