asp.net实现一个能够进行加减乘除)简单的网页计算器
-
效果图
-
实现代码:
aspx文件代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Calculator.aspx.cs" Inherits="WebApplication2.Computer2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>网页计算器</title>
<style type="text/css">
.tab {
margin: 0 0; /*使整个计算器的界面位于网页中央 */
Height: 290px;
width: 220px;
}
.h{
text-align: center;
}
.cellCss{
Height: 40px;
width: 50px;
}
.rowCss{
Height: 40px;
}
.but_ac {
width: 80px;
height: 60px;
font-size: 1.2em; /*设置字体大小*/
}
.but {
width: 50px;
height: 40px;
font-size: 1.2em;
background-color:#e0ebeb;
}
.butSign {
width: 50px;
height: 40px;
font-size: 1.2em;
background-color: #a3c2c2;
}
.butEqual {
width: 50px;
height: 80px;
font-size: 1.2em;
background-color: #a3c2c2;
}
.but0 {
width: 100px;
height: 40px;
font-size: 1.2em;
background-color:#e0ebeb;
}
.screen {
width: 210px;
height: 70px;
font-size: 1.5em;
text-align: right; /*使用户输入的表达数从屏幕的右边开始显示*/
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="Table1" runat="server" CssClass="tab" CellPadding="2" CellSpacing="0" HorizontalAlign="Center" BorderStyle="Double" Caption="网页计算器">
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server" ColumnSpan="4">
<asp:TextBox ID="TextBox1" runat="server" readOnly="true" CssClass="screen" OnTextChanged="TextBox1_TextChanged"></asp:TextBox><br />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button1" CssClass="butSign" runat="server" Text="AC" OnClick="Button5_Click"/>
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button2" runat="server" CssClass="butSign" Text="×" OnClick="Button3_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button3" runat="server" CssClass="butSign" Text="÷" OnClick="Button3_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button4" runat="server" CssClass="butSign" Text="<-" Onclick="Button6_Click"/>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button5" CssClass="but" runat="server" Text="7" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button6" CssClass="but" runat="server" Text="8" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button7" CssClass="but" runat="server" Text="9" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button8" CssClass="butSign" runat="server" Text="+" OnClick="Button3_Click" />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button9" CssClass="but" runat="server" Text="4" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button10" CssClass="but" runat="server" Text="5" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button11" CssClass="but" runat="server" Text="6" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button12" CssClass="butSign" runat="server" Text="-" OnClick="Button3_Click" />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button13" CssClass="but" runat="server" Text="1" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button14" CssClass="but" runat="server" Text="2" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button15" CssClass="but" runat="server" Text="3" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server" RowSpan="2">
<asp:Button ID="Button20" CssClass="butEqual" runat="server" Text="=" OnClick="Button4_Click" />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow CssClass="rowCss" runat="server" HorizontalAlign="Center">
<asp:TableCell CssClass="cellCss" runat="server" ColumnSpan="2">
<asp:Button ID="Button17" CssClass="but0" runat="server" Text="0" OnClick="Button1_Click" />
</asp:TableCell>
<asp:TableCell CssClass="cellCss" runat="server">
<asp:Button ID="Button18" CssClass="but" runat="server" Text="." OnClick="Button2_Click" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<br />
</div>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button16" runat="server" Text="Button" OnClick="Button16_Click" />
</form>
</body>
</html>
aspx.cs文件代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication2
{
public partial class Comput : System.Web.UI.Page
{
double result;
protected void Page_Load(object sender, EventArgs e)
{
}
/*实现数字运算符*/
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
if (TextBox1.Text == "")
{
TextBox1.Text = btn.Text;
}
else
{
TextBox1.Text += btn.Text;
}
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
/*实现结果运算符“=”功能*/
protected void Button4_Click(object sender, EventArgs e)
{
string s_txt = TextBox1.Text;
int space = s_txt.IndexOf(' ');
if (space < 0) //如果只输入一个数值后直接按等于键‘=’
{
TextBox1.Text = TextBox1.Text;
}
else
{
string c1 = s_txt.Substring(0, space);//获取字符串s_txt中的从0开始的n个字符,其中space为想要提取的字符个数
char operation = Convert.ToChar(s_txt.Substring((space + 1), 1));
string c2 = s_txt.Substring(space + 3);
double arg1 = Convert.ToDouble(c1);
double arg2 = Convert.ToDouble(c2);
TextBox1.Text = result.ToString();
switch (operation)
{
case '+':
result = arg1 + arg2;
break;
case '-':
result = arg1 - arg2;
break;
case '×':
result = arg1 * arg2;
break;
case '÷':
result = arg1 / arg2;
break;
default:
throw new ApplicationException();
}
TextBox1.Text = result.ToString();
}
}
/*实现小数点*/
protected void Button2_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
string sc_txt = TextBox1.Text;
int space = sc_txt.IndexOf(' ');
if(TextBox1.Text == "") //屏幕中还没有输入其他数字就直接按小数点
{
TextBox1.Text = "0.";
}
else
{
string str_last = sc_txt.Substring(sc_txt.Length - 1, 1);
if (str_last == " ") //判断小数点是否为该操作数的起始点
{
TextBox1.Text += "0.";
}
else
{
/*判断第二个数是否已有小数点,避免因为第一个数值有小数点而误判*/
if (space < 0) //若space>0,说明已输入操作符
{
if (sc_txt.Contains(".")) // sc_txt.Contains(".")用于判断是否有指定字符
{
TextBox1.Text = TextBox1.Text;
}
else
{
TextBox1.Text += btn.Text;
}
}
else
{
//string c1 = s_txt.Substring(0, space);//获取字符串s_txt中的从0开始的n个字符,其中space为个数
//char operation = Convert.ToChar(s_txt.Substring((space + 1), 1));
string s2 = sc_txt.Substring(space + 3);
if (s2.Contains(".")) // sc_txt.Contains(".")用于判断是否有指定字符
{
TextBox1.Text = TextBox1.Text;
}
else
{
TextBox1.Text += btn.Text;
}
}
}
}
}
/*实现加减乘除运算符*/
protected void Button3_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
//要求先输入数字后,才能输入运算符
if (TextBox1.Text == "")
{
TextBox1.Text = "";
}
else
{
TextBox1.Text = TextBox1.Text + " " + btn.Text + " ";
}
}
/*实现退格按钮,点击一次退格,清除最右边的一个字符*/
protected void Button6_Click(object sender, EventArgs e)
{
string s = TextBox1.Text;
string ss;
string s_last= s.Substring(s.Length - 1,1);
if(s_last==" ")
{
ss = s.Substring(0, s.Length - 3);
}
else
{
ss = s.Substring(0, s.Length - 1);
}
TextBox1.Text = ss;
}
//全部清空键
protected void Button5_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
}
protected void Button16_Click(object sender, EventArgs e)
{
string str1=TextBox2.Text;
}
}
}
该网页计算器的功能比较简单,目前只能两个操作数的加减乘除。