【.NET全栈】ASP.NET开发Web应用——计算器

文章目录

  • 一、简单计算器
  • 二、复杂计算器


一、简单计算器

新建Web应用项目,窗体页面
在这里插入图片描述

窗体设计代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AdoDemo.Default" %><!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>
</head>
<body><form id="form1" runat="server"><div><asp:TextBox ID="txtNum1" runat="server" Width="100px"></asp:TextBox><asp:TextBox ID="txtNum2" runat="server" Width="100px"></asp:TextBox><br /><asp:DropDownList ID="ddlOperation" runat="server"><asp:ListItem Text="+" Value="Addition"></asp:ListItem><asp:ListItem Text="-" Value="Subtraction"></asp:ListItem><asp:ListItem Text="*" Value="Multiplication"></asp:ListItem><asp:ListItem Text="/" Value="Division"></asp:ListItem></asp:DropDownList><asp:Button ID="btnCalculate" runat="server" Text="计算" OnClick="btnCalculate_Click"/><br /><asp:Label ID="lbResult" runat="server" Text=""></asp:Label></div></form>
</body>
</html>

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace AdoDemo
{public partial class Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void btnCalculate_Click(object sender, EventArgs e){double num1, num2;if (double.TryParse(txtNum1.Text, out num1) && double.TryParse(txtNum2.Text, out num2)){switch (ddlOperation.SelectedValue){case "Addition":lbResult.Text = (num1 + num2).ToString();break;case "Subtraction":lbResult.Text = (num1 - num2).ToString();break;case "Multiplication":lbResult.Text = (num1 * num2).ToString();break;case "Division":lbResult.Text = (num1 / num2).ToString();break;}}else{lbResult.Text = "请输入有效数字!";}}}
}

运行结果:
在这里插入图片描述

二、复杂计算器

创建项目:

在这里插入图片描述

窗体设计代码(查看设计器/查看标记进行设计模式和设计代码模式切换):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AdoDemo.Default" %><!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>body {font-family: Arial, sans-serif;background-color: #f0f0f0;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.calculator {background-color: #fff;border-radius: 10px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);padding: 20px;width: 300px;}.display {background-color: #222;color: #fff;font-size: 2em;padding: 10px;text-align: right;border-radius: 5px;margin-bottom: 10px;}.buttons {display: grid;grid-template-columns: repeat(4, 1fr);gap: 10px;}.button {background-color: #f0f0f0;border: none;border-radius: 5px;font-size: 1.5em;padding: 20px;cursor: pointer;transition: background-color 0.3s;}.button:hover {background-color: #ddd;}.button.operator {background-color: #ff9500;color: #fff;}.button.operator:hover {background-color: #e08900;}</style>
</head>
<body><form id="form1" runat="server"><div class="calculator"><asp:TextBox ID="txtDisplay" runat="server" CssClass="display" ReadOnly="true" Width="292px"></asp:TextBox><div class="buttons"><asp:Button ID="btnClear" runat="server" Text="C" CssClass="button" OnClick="btnClear_Click" /><asp:Button ID="btnBackspace" runat="server" Text="←" CssClass="button" OnClick="btnBackspace_Click" /><asp:Button ID="btnPercent" runat="server" Text="%" CssClass="button" OnClick="btnPercent_Click" /><asp:Button ID="btnDivide" runat="server" Text="÷" CssClass="button operator" OnClick="btnOperator_Click" /><asp:Button ID="btn7" runat="server" Text="7" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn8" runat="server" Text="8" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn9" runat="server" Text="9" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btnMultiply" runat="server" Text="×" CssClass="button operator" OnClick="btnOperator_Click" /><asp:Button ID="btn4" runat="server" Text="4" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn5" runat="server" Text="5" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn6" runat="server" Text="6" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btnSubtract" runat="server" Text="-" CssClass="button operator" OnClick="btnOperator_Click" /><asp:Button ID="btn1" runat="server" Text="1" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn2" runat="server" Text="2" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btn3" runat="server" Text="3" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btnAdd" runat="server" Text="+" CssClass="button operator" OnClick="btnOperator_Click" /><asp:Button ID="btn0" runat="server" Text="0" CssClass="button" OnClick="btnNumber_Click" /><asp:Button ID="btnDecimal" runat="server" Text="." CssClass="button" OnClick="btnDecimal_Click" /><asp:Button ID="btnEquals" runat="server" Text="=" CssClass="button operator" OnClick="btnEquals_Click" /></div></div></form>
</body>
</html>

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace AdoDemo
{public partial class Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){ViewState["CurrentValue"] = "0";ViewState["Operator"] = string.Empty;ViewState["FirstOperand"] = string.Empty;}}protected void btnNumber_Click(object sender, EventArgs e){string number = ((Button)sender).Text;if (ViewState["CurrentValue"].ToString() == "0"){ViewState["CurrentValue"] = number;}else{ViewState["CurrentValue"] += number;}txtDisplay.Text = ViewState["CurrentValue"].ToString();}protected void btnOperator_Click(object sender, EventArgs e){ViewState["FirstOperand"] = ViewState["CurrentValue"];ViewState["Operator"] = ((Button)sender).Text;ViewState["CurrentValue"] = "0";}protected void btnEquals_Click(object sender, EventArgs e){double firstOperand = Convert.ToDouble(ViewState["FirstOperand"]);double secondOperand = Convert.ToDouble(ViewState["CurrentValue"]);string operatorSymbol = ViewState["Operator"].ToString();double result = 0;switch (operatorSymbol){case "+":result = firstOperand + secondOperand;break;case "-":result = firstOperand - secondOperand;break;case "×":result = firstOperand * secondOperand;break;case "÷":result = firstOperand / secondOperand;break;}ViewState["CurrentValue"] = result.ToString();txtDisplay.Text = result.ToString();}protected void btnClear_Click(object sender, EventArgs e){ViewState["CurrentValue"] = "0";ViewState["Operator"] = string.Empty;ViewState["FirstOperand"] = string.Empty;txtDisplay.Text = "0";}protected void btnBackspace_Click(object sender, EventArgs e){string currentValue = ViewState["CurrentValue"].ToString();if (currentValue.Length > 1){ViewState["CurrentValue"] = currentValue.Substring(0, currentValue.Length - 1);}else{ViewState["CurrentValue"] = "0";}txtDisplay.Text = ViewState["CurrentValue"].ToString();}protected void btnPercent_Click(object sender, EventArgs e){double currentValue = Convert.ToDouble(ViewState["CurrentValue"]);ViewState["CurrentValue"] = (currentValue / 100).ToString();txtDisplay.Text = ViewState["CurrentValue"].ToString();}protected void btnDecimal_Click(object sender, EventArgs e){if (!ViewState["CurrentValue"].ToString().Contains(".")){ViewState["CurrentValue"] += ".";}txtDisplay.Text = ViewState["CurrentValue"].ToString();}}
}

运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以Zookeeper为例 浅谈脑裂与奇数节点问题

一、脑裂现象的定义与影响 脑裂&#xff08;split-brain&#xff09;是指在分布式系统中&#xff0c;因网络分区或其他故障导致系统被切割成两个或多个相互独立的子系统&#xff0c;每个子系统可能独立选举出自己的领导节点。这一现象在依赖中心领导节点&#xff08;如Elastic…

亚信安全终端一体化解决方案入选应用创新典型案例

近日&#xff0c;由工业和信息化部信息中心主办的2024信息技术应用创新发展大会暨解决方案应用推广大会成功落幕&#xff0c;会上集中发布了一系列技术水平先进、应用效果突出、产业带动性强的信息技术创新工作成果。其中&#xff0c;亚信安全“终端一体化安全运营解决方案”在…

【漏洞复现】Next.js框架存在SSRF漏洞(CVE-2024-34351)

0x01 产品简介 ZEIT Next.js是ZEIT公司的一款基于Vue.js、Node.js、Webpack和Babel.js的开源Web应用框架。 0x02 漏洞概述 ZEIT Next.js 13.4版本至14.1.1之前版本存在代码问题漏洞&#xff0c;该漏洞源于存在服务器端请求伪造 (SSRF) 漏洞 0x03 搜索引擎 body"/_nex…

Keil开发IDE

Keil开发IDE 简述Keil C51Keil ARMMDK DFP安装 简述 Keil公司是一家业界领先的微控制器&#xff08;MCU&#xff09;软件开发工具的独立供应商。Keil公司由两家私人公司联合运营&#xff0c;分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公…

【06】LLaMA-Factory微调大模型——微调模型评估

上文【05】LLaMA-Factory微调大模型——初尝微调模型&#xff0c;对LLama-3与Qwen-2进行了指令微调&#xff0c;本文则介绍如何对微调后的模型进行评估分析。 一、部署微调后的LLama-3模型 激活虚拟环境&#xff0c;打开LLaMA-Factory的webui页面 conda activate GLM cd LLa…

elasticsearch, kibana, 6.8.18 版本下的创建索引,指定timestamp,java CRUD,maven版本等

ELK 这一套的版本更迭很快&#xff0c; 而且es常有不兼容的东西出现&#xff0c; 经常是搜一篇文章&#xff0c;看似能用&#xff0c;拿到我这边就不能用了。 很是烦恼。 我这边的ELK版本目前是 6.8.18&#xff0c;这次的操作记录一下。 &#xff08;涉密内容略有删改&#xf…

关闭 Linux 服务器上的 IPv6

虽然 IPv6 已经逐渐普及&#xff0c;但在某些 Linux 服务器上的业务系统仍然可能遇到一些奇怪的问题。特别是在集群场景中&#xff0c;因为集群各个节点之间需要互相通信&#xff0c;如果 IPv6 没有正确配置网络&#xff0c;可能导致一些未知问题&#xff0c;解决起来相当麻烦。…

YOLOV5学习记录

前言&#xff1a; 计算机视觉 什么是目标检测&#xff1f; 物体分类和目标检测的区别 目标检测&#xff0c;物体的类别和位置 学习选题&#xff0c;口罩检查&#xff0c;人脸识别 算法原理&#xff1a;知乎&#xff0c;csdn&#xff0c;目前还没到这种程度 大大滴崩溃&am…

Java文件管理

文件管理 Java中的对文件的管理&#xff0c;通过java.io包中的File类实现。Java中文件的管理&#xff0c;主要是针对文件或是目录路径名的管理&#xff0c;包括文件的属性信息&#xff0c;文件的检查&#xff0c;文件的删除等&#xff0c;但不包括文件的访问 file类 Java中的…

人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解。模型剪枝是深度学习领域中一项关键的技术&#xff0c;旨在减少神经网络中的冗余权重&#xff0c;从而降低计算成本和内存占用&#xff0c;同…

Linux--实现线程池(万字详解)

目录 1.概念 2.封装原生线程方便使用 3.线程池工作日志 4.线程池需要处理的任务 5.进程池的实现 6.线程池运行测试 7.优化线程池&#xff08;单例模式 &#xff09; 单例模式概念 优化后的代码 8.测试单例模式 1.概念 线程池:* 一种线程使用模式。线程过多会带来调度…

FastAPI(六十五)实战开发《在线课程学习系统》基础架构的搭建

在之前三篇&#xff0c;我们分享的就是需求的分析&#xff0c;基本接口的整理&#xff0c;数据库链接的配置。这次我们分享项目的基本框架&#xff0c;目录结构大致如下&#xff1a; common目录&#xff1a; 通用目录&#xff0c;放一些通用的处理 models目录&#xf…

【基础】模拟题 角色授权类

3413. DHCP服务器 题目 提交记录 讨论 题解 视频讲解 动态主机配置协议&#xff08;Dynamic Host Configuration Protocol, DHCP&#xff09;是一种自动为网络客户端分配 IP 地址的网络协议。 当支持该协议的计算机刚刚接入网络时&#xff0c;它可以启动一个 DHCP 客户…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议&#xff0c;最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议&#xff1a;使用的公钥加密和公钥登录的机制&#xff08;体现的是实用性和安全性&am…

Nginx的HA高可用的搭建

1. 什么是高可用 高可用&#xff08;High Availability, HA&#xff09;是一种系统设计策略&#xff0c;旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时&#xff0c;仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防…

Java并发04之线程同步机制

文章目录 1 线程安全1.1 线程安全的变量1.2 Spring Bean1.3 如果保证线程安全 2 synchronized关键字2.1 Java对象头2.1.1 对象组成部分2.1.2 锁类型2.1.3 锁对象 2.2 synchronized底层实现2.2.1 无锁状态2.2.2 偏向锁状态2.2.3 轻量级锁状态2.2.4 重量级锁2.2.5 锁类型总结2.2.…

C++11 容器emplace方法刨析

如果是直接插入对象 push_back()和emplace_back()没有区别但如果直接传入构造函数所需参数&#xff0c;emplace_back()会直接在容器底层构造对象&#xff0c;省去了调用拷贝构造或者移动构造的过程 class Test { public:Test(int a){cout<<"Test(int)"<<…

链表(4) ----跳表

跳表&#xff08;Skip List&#xff09;是一种随机化的数据结构&#xff0c;用于替代平衡树&#xff08;如 AVL 树或红黑树&#xff09;。它是基于多层链表的&#xff0c;每一层都是上一层的子集。跳表可以提供与平衡树相似的搜索性能&#xff0c;即在最坏情况下&#xff0c;搜…

zlgcan,周立功Can设备,Qt中间件,QtCanBus插件,即插即用

新增zlgcan插件&#xff0c;需要请看下方视频回复联系&#xff01; 视频链接地址&#xff1a; Qt,canbus manager,周立功,zlgcan插件演示,需要请留言_哔哩哔哩_bilibili

反爬虫策略中的IP地址轮换如何实现?挑战与对策

当今互联网时代&#xff0c;各类网站、网络平台背后隐藏着大量数据&#xff0c;广告数据收集、市场数据收集都需要依托爬虫技术&#xff0c;但很多网站通过反爬虫技术限制或屏蔽爬虫的访问&#xff0c;这给数据收集带来不小的挑战。 为了规避这些反爬虫策略&#xff0c;开发人…