老师留的作业 做的C#计算器 请各位前辈指点一下 多谢

awpszq 2009-09-28 09:29:09

//开发平台 VisualStidio2008TeamSuite
//开发语言C#
//数字0-9的ID分别为btn_0~btn_9
//textbox的ID为txt_Show
//+-*/的ID分别为btn_Plus,btn_Minus,btn_Multiply,btn_Divede
//=的ID为btn_Equal,退格按钮是btn_Backspace,清空textbox的按钮是btn_C,初始化按钮是btn_CE,正负号按钮是btn_PlusAndMinus,小数点按钮是btn_Point
//------------------------------------------------------------------------------------------------------------
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
string strI;//标记+-*/
string check;//判断是否按下了运算符,以便于按数字来清屏
protected void Page_Load(object sender, EventArgs e)
{

}

protected void btn_1_Click(object sender, EventArgs e)//将数字1输入到textbox中 下同
{
check = Convert.ToString(ViewState["check"]);//将ViewState["check"]的值赋给check,用以判断按下该按钮之前是否按下运算符号
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 1;//使textbox的值加上当前按钮的值(string类型) 下同
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
//使ViewState["check"],以防止按下运算符之后每次点击数字都清屏 下同
ViewState["in"] = Convert.ToString(ViewState["in"]) + 1;
//ViewState["in"]用来保存textbox上的数值 便于计算 下同
break;
default:
txt_Show.Text += 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 1;
break;
}
}
protected void btn_2_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 2;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 2;
break;
default:
txt_Show.Text += 2;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 2;
break;
}
}
protected void btn_3_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 3;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 3;
break;
default:
txt_Show.Text += 3;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 3;
break;
}

}
protected void btn_4_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 4;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 4;
break;
default:
txt_Show.Text += 4;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 4;
break;
}

}
protected void btn_5_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 5;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 5;
break;
default:
txt_Show.Text += 5;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 5;
break;
}

}
protected void btn_6_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 6;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 6;
break;
default:
txt_Show.Text += 6;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 6;
break;
}
}
protected void btn_7_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 7;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 7;
break;
default:
txt_Show.Text += 7;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 7;
break;
}
}
protected void btn_8_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 8;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 8;
break;
default:
txt_Show.Text += 8;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 8;
break;
}
}
protected void btn_9_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 9;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 9;
break;
default:
txt_Show.Text += 9;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 9;
break;
}
}
protected void btn_0_Click(object sender, EventArgs e)
{
check = Convert.ToString(ViewState["check"]);
switch (check)
{
case "1":
txt_Show.Text = "";
txt_Show.Text += 0;
ViewState["check"] = Convert.ToString(ViewState["check"]) + 1;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 0;
break;
default:
txt_Show.Text += 0;
ViewState["in"] = Convert.ToString(ViewState["in"]) + 0;
break;
}
}
protected void btn_Plus_Click(object sender, EventArgs e)//加
{
ViewState["out"] = Convert.ToString(ViewState["in"]);
//ViewState["out"]用来在按下运算符后保存之前textbox的值 下同
ViewState["in"] = 0;
ViewState["strI"] = "+";//将运算符的标记保存在ViewState["strI"]中 下同
btn_Point.Enabled = true;//使小数点可以继续使用 下同
ViewState["check"] = "1";//给ViewState["check"]赋初值便于在按下数字键时判断是否清屏 下同
}
protected void btn_Minus_Click(object sender, EventArgs e)//减
{
ViewState["out"] = Convert.ToString(ViewState["in"]);
ViewState["in"] = 0;
ViewState["strI"] = "-";
btn_Point.Enabled = true;
ViewState["check"] = "1";
}
protected void btn_Multiply_Click(object sender, EventArgs e)//乘
{
ViewState["out"] = Convert.ToString(ViewState["in"]);
ViewState["in"] = 0;
ViewState["strI"] = "*";
btn_Point.Enabled = true;
ViewState["check"] = "1";
}
protected void btn_Divide_Click(object sender, EventArgs e)//除
{
ViewState["out"] = Convert.ToString(ViewState["in"]);
ViewState["in"] = 0;
ViewState["strI"] = "/";
btn_Point.Enabled = true;
ViewState["check"] = "1";
}
//余下代码在回复中
...全文
296 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
授客 2012-01-01
  • 打赏
  • 举报
回复
代码确实很长。。。。
wuphoery 2010-01-04
  • 打赏
  • 举报
回复
你的这个ViewState在哪儿?没........
awpszq 2009-09-29
  • 打赏
  • 举报
回复
谢谢 LS

看看去
V68V6 2009-09-28
  • 打赏
  • 举报
回复
看大话设计模式
启蒙例子就是你说的这玩意
awpszq 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]
调用实体类及方法就可
[/Quote]

研究研究 谢谢提醒
wuyq11 2009-09-28
  • 打赏
  • 举报
回复
调用实体类及方法就可
awpszq 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hyuknam 的回复:]
你们老师结婚了吗?
[/Quote]

= =

结了吧 问这个干啥.......
hyuknam 2009-09-28
  • 打赏
  • 举报
回复
你们老师结婚了吗?
awpszq 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
通过工厂模式实现,实现调用
http://topic.csdn.net/u/20090922/14/b244a32a-f2bd-4a22-9563-e107dbdb2abf.html
[/Quote]

这个要求是网页上的 也可以么??
wuyq11 2009-09-28
  • 打赏
  • 举报
回复
awpszq 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jxyxhz 的回复:]
你想干嘛,我记得这个玩意,在网上有源码的
[/Quote]

恩.......这个是老师留的作业 要求做一个.NET计算器 用VB.NET和C#都可以
不能用JS来做(上次作业时用JS) 所以就这么弄了
看了点网上的源码 基本都是桌面版的 不是网页上的 网页上的也都是用JS做的
这个我写完后感觉代码有点太长了 不知道如何下手去优化一下
awpszq 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leehomwong 的回复:]
代码好长,LZ有什么问题。。
[/Quote]

问题就是感觉代码写的太长.......
小_虎 2009-09-28
  • 打赏
  • 举报
回复
你想干嘛,我记得这个玩意,在网上有源码的
24K純帥 2009-09-28
  • 打赏
  • 举报
回复
代码好长,LZ有什么问题。。
awpszq 2009-09-28
  • 打赏
  • 举报
回复

protected void btn_Equal_Click(object sender, EventArgs e)//等号的运算
{
strI = Convert.ToString(ViewState["strI"]);
//将ViewState["strI"]的值存入strI中 便于下面的switch语句使用
switch (strI)
{
case "+":
txt_Show.Text = Convert.ToString(Convert.ToDouble(ViewState["out"]) + Convert.ToDouble(ViewState["in"]));//输出ViewState["out"]和ViewState["in"]所保存的结果并运算 下同
break;
case "-":
txt_Show.Text = Convert.ToString(Convert.ToDouble(ViewState["out"]) - Convert.ToDouble(ViewState["in"]));
break;
case "*":
txt_Show.Text = Convert.ToString(Convert.ToDouble(ViewState["out"]) * Convert.ToDouble(ViewState["in"]));
break;
case "/":
txt_Show.Text = Convert.ToString(Convert.ToDouble(ViewState["out"]) / Convert.ToDouble(ViewState["in"]));
break;
}
}
protected void btn_Point_Click(object sender, EventArgs e)//小数点的使用
{
txt_Show.Text = txt_Show.Text + ".";
btn_Point.Enabled = false;//在按完一次小数点之后 使小数点不能继续使用
}
protected void btn_PlusAndMinus_Click(object sender, EventArgs e)//改变当前textbox中的数的正负号
{
txt_Show.Text = Convert.ToString(-Convert.ToInt32(txt_Show.Text));
}
protected void btn_C_Click(object sender, EventArgs e)//将textbox清空
{
txt_Show.Text = "";
}
protected void btn_CE_Click(object sender, EventArgs e)//将计算器初始化
{
txt_Show.Text = "";
ViewState["out"] = 0;
ViewState["in"] = 0;
btn_Point.Enabled = true;
}
protected void btn_Backspace_Click(object sender, EventArgs e)//删除textbox上的最后一个数
{
txt_Show.Text = txt_Show.Text.Substring(0, (txt_Show.Text.Length - 1));
//将textbox上的值从0位到最后一位的前一位输出到textbox上
}
protected void btn_1DivideX_Click(object sender, EventArgs e)//计算1/X
{
txt_Show.Text = Convert.ToString(1 / Convert.ToDouble(txt_Show.Text));
}
protected void btn_Root_Click(object sender, EventArgs e)//开平方
{
double root = Convert.ToDouble(txt_Show.Text);//定义root来保存textbox中的值
root = Math.Sqrt(root);//将root开平方
txt_Show.Text = Convert.ToString(root);
ViewState["in"] = txt_Show.Text;//将textbox的值赋给ViewState["in"],便于继续计算
}
protected void btn_Ms_Click(object sender, EventArgs e)//将当前textbox的值保存在ViewState["MS"]中
{
ViewState["MS"] = Convert.ToDouble(txt_Show.Text);
}
protected void btn_Mr_Click(object sender, EventArgs e)//将ViewState["MS"]中的值显示在textbox上
{
txt_Show.Text = Convert.ToString(ViewState["MS"]);
ViewState["in"] = ViewState["MS"];//将ViewState["MS"]的值赋给ViewState["in"],便于继续计算
}
protected void btn_Mc_Click(object sender, EventArgs e)//将ViewState["MS"]清空
{
ViewState["MS"] = "";
}

}

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧