热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初学C#的编程小白创建计算器全过程并恶意卖萌(1之制作计算器)

笔者初学C#第二天,之前接触过VBA及C,C++,均为很水的水平。感觉学习一门语言还是要在了解基本概念以后,直接搭建项目会比较有成就感,也比较有趣。按照前辈们的方法制作了一个计算器,并稍稍加了点

笔者初学C#第二天,之前接触过VBA及C,C++,均为很水的水平。感觉学习一门语言还是要在了解基本概念以后,直接搭建项目会比较有成就感,也比较有趣。按照前辈们的方法制作了一个计算器,并稍稍加了点女生特有的小心思,现将制作过程详细给出,希望能帮到和我一样的初学者。不过因为初学,水平有限(审美水平更有限),所以制作的很粗糙,不当之处请大家指正。

我使用的是VS2010,首先打开软件,在如图所示位置点击“新建项目”

在随后弹出的界面中,在窗口左侧选择语言为“C#”,中间的界面选择类型为“Windows窗体应用程序”,如下图所示


接下来可以看到出现的界面了。其中中间的灰色窗口Form1,就是我们制作计算器的主要战场啦。此时可以看到在窗口右侧有“工具箱”,这是我们进行窗口编辑的工具所在。


如果没有也不要方,单击编辑栏中的“视图”,在下拉菜单中就可以找到“工具箱”的字样,单击“工具箱”,可以看到窗口右侧出现了一个下拉列表,其中的“Button”及“TextBox”就是我们做计算器的外观所用的主要工具。


首先单击“Button”,再将鼠标移到灰色窗体上(以下用Form1)单击,可以看到窗体上出现了一个按钮,按钮就像Word中的图片一样可以任意调整尺寸和位置。


我们需要在窗体上添加20个按钮,注意添加一排以后可以用鼠标圈选上,用Ctrl+C复制,再用Ctrl+V粘贴,也可以圈选上整体调节位置。效果如下


接下来按照上图所示,点击窗口右边的TextBox,放置到窗体中一个,用来显示按键值及计算结果。同样可以调节它的大小及位置。


我们继续,下面更改按钮的显示的数字。首先右键单击左下的那个按钮,在弹出的下拉菜单中选择“属性”,可以看到在窗口右侧出现了一个名为“属性”的菜单栏。其中的”Text”的值就为按钮显示的值。


我们将其改为“0”。可以看到窗体中的按钮也变为了“0”。


我们再接再厉,将剩下的按钮都改为相应的数字或计算符号。最后成品如下


怎么样,是不是有计算器的样子了呢?


我们接下来为计算器添加代码。需要说明的是在C#中,对每一次操作都命名为“事件”,比如我们点击按钮等,都叫做“事件”,我们先双击“0”按钮,在弹出的代码界面中可以看到,红框内就是我们在单击“0”键时会发生的事件定义,我们相对于“0”键的代码也应该填写在里面。


接下来我们先为窗体添加需要使用的变量。要知道C#是面向对象的语言,我们的窗体是一个大的操作对象,我们在窗体里面添加的按钮等,是大窗体里面一个个小的操作对象。因此我们在窗体中定义的变量,按钮等事件也可以引用。红框中即为窗体的定义。


添加需要使用的变量


接下来我们为“0”按钮按下的事件添加代码,需要注意的是我们需要判定在按下0时,0是不是作为除数,0是不能作为除数的。


接下来为按钮“1”添加代码



请读者依照“1”的样式,对剩下的数字按钮添加代码,稍后会给出完整的代码


接下来我们对计算符号按钮进行代码添加,首先是“+”


上图同时给出了“-”的代码,请自己尝试添加“*”,“/”,“log”,“ln”,“开方”(sqrt),“平方”(x2)按钮的代码。


接下来是“C”键的代码,“C”只是清零。将TextBox的内容清空即可。



然后对“=”进行添加,须知在按下“=”按钮时,系统才开始进行运算。


至此,我们的计算器部分就完成啦~下面是详细代码。

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 thecaculator
{
public partial class Form1 : Form
{
double a = 0; //记录计算结果
double b = 0; //记录第一个操作数
bool c = false; //当按下"+","-","*","/"等计算符号时将C置为true,
//因为按下计算符号后,再按数字时,应当将原有数字清零。

string d; //记录计算符号
public Form1()
{
InitializeComponent();
}

private void button20_Click(object sender, EventArgs e)
{

if(c==true )       
       {
           textBox1.Text="";
           c=false ;
  }
        textBox1.Text += "0";
   if (d == "/") //之前按下/号
        {
       textBox1.Clear(); //清空文本框
//下面弹出警告,请自己尝试下
            MessageBox.Show("除数不能为零", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);              
}
}

private void button15_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "1";
}

private void button14_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "2";

}

private void button13_Click(object sender, EventArgs e)
{

if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "3";
}

private void button10_Click(object sender, EventArgs e)
{

if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "4";
}

private void button9_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "5";


}

private void button8_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "6";
}

private void button1_Click(object sender, EventArgs e)
{

if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "7";
}

private void button2_Click(object sender, EventArgs e)
{

if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "8";
}

private void button3_Click(object sender, EventArgs e)
{
if (c == true)
{
textBox1.Text = "";
c = false;
}
textBox1.Text += "9";
}

private void button4_Click(object sender, EventArgs e)
{
c = true;
       b = double.Parse(textBox1.Text);
       d = "+";
}

private void button7_Click(object sender, EventArgs e)
{

c = true;
       b = double.Parse(textBox1.Text);
       d = "-";
}

private void button12_Click(object sender, EventArgs e)
{


c = true;
       b = double.Parse(textBox1.Text);
       d = "*";
}

private void button17_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "/";
}

private void button5_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "x2";
}

private void button6_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "sqrt";
}

private void button11_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "log";
}

private void button16_Click(object sender, EventArgs e)
{
c = true;
b = double.Parse(textBox1.Text);
d = "ln";
}

private void button18_Click(object sender, EventArgs e)
{

       switch (d)
       {       
  case "+": a = b + double.Parse(textBox1.Text); break;
          case "-": a = b - double.Parse(textBox1.Text); break;
          case "*": a = b * double.Parse(textBox1.Text); break;    
          case "/": a = b / double.Parse(textBox1.Text); break;
          case "x2": a = b * double.Parse(textBox1.Text); break;  
          case "sqrt": a = Math.Sqrt(b ); break;
          case "log": a = Math.Log(double.Parse(textBox1.Text),b ); break;
          case "ln": a = Math.Log(b, Math.E); break;
 }                       
        textBox1.Text = a + "";
        c = true;                

}

private void button19_Click(object sender, EventArgs e)
{
textBox1.Text ="";

}


}
}

计算器部分基本上全部借鉴于一个前辈的经验分享,以下为原文章链接,如有侵权,请联系我删除

http://www.th7.cn/Program/net/201311/158591.shtml

接下来要在计算器上做一点小手脚啦,也是恶意卖萌的部分,这部分会在接下来(2)部分给出。


推荐阅读
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
手机用户2702938842_284
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有