在传统的编程书籍中,第一个上手的程序永远都是神奇的“Hello World!”,在我们的第二课中,将打破这一惯例,破天荒的来教大家亲手开发一个简易的计算器程序。这样做的目的不是为了让大家去学习怎么编写程序,而是为了让大家一方面巩固第一课中的内容,更进一步熟悉VS2012,同时自己动手跟着我做,来开发一个小程序,亲身体验一下程序是如何编写出来的。
下图即编写完成的计算器程序截图:
详细讲解请观看教学视频:百度网盘下载
程序源码下载:CSDN下载
==================华丽丽的分割线===========================
部分源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
/*
*艾格网络工作室 2015.4.13
*专业编程培训,零基础入门,进阶提高
*承接微信公众平台开发、运维
*承接各类软件开发项目
*详情咨询QQ863536379
*email:aigenet@qq.com
*/
namespace APImsg
{
public partial class Form1 : Form
{
/// <summary>
/// 第一个操作数
/// </summary>
float firstNumf = 0;
/// <summary>
/// 第二个操作数
/// </summary>
float secondNumf = 0;
/// <summary>
/// 操作数缓存1
/// </summary>
string cache1 = string.Empty;
/// <summary>
/// 操作数缓存2
/// </summary>
string cache2 = string.Empty;
/// <summary>
/// 运算符标志位,true为第一个操作数,false为第二个操作数
/// </summary>
bool flag = true;
/// <summary>
/// 运算符种类
/// </summary>
string op = string.Empty;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 鼠标移入背景变色事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label1_MouseEnter(object sender, EventArgs e)
{
((Label)sender).BackColor = Color.Yellow;
}
/// <summary>
/// 鼠标移出背景复原事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label1_MouseLeave(object sender, EventArgs e)
{
((Label)sender).BackColor = System.Drawing.SystemColors.ActiveCaption;
}
/// <summary>
/// 屏幕输出点击数字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label1_Click(object sender, EventArgs e)
{
if (flag)
{
cache1 += ((Label)sender).Text;
textBox1.Text = cache1;
}
else
{
cache2 += ((Label)sender).Text;
textBox1.Text = cache1 + cache2;
}
}
/// <summary>
/// 记录第一个操作数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label12_Click(object sender, EventArgs e)
{
//记录运算种类
op = ((Label)sender).Text;
firstNumf = float.Parse(cache1);
cache1 += ((Label)sender).Text;
textBox1.Text =cache1 ;
//记录标志位
flag = false;
}
/// <summary>
/// 计算运算结果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label15_Click(object sender, EventArgs e)
{
secondNumf = float.Parse(cache2);
switch (op)
{
case "+":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf + secondNumf).ToString();
break;
case "-":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf - secondNumf).ToString();
break;
case "*":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf *secondNumf).ToString();
break;
case "/":
textBox1.Text = cache1 + cache2 + ((Label)sender).Text + (firstNumf / secondNumf).ToString();
break;
}
}
/// <summary>
/// 复位
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label17_Click(object sender, EventArgs e)
{
//清空显示区域
textBox1.Text = string.Empty;
//运算符标志位复位
flag = true;
//复位操作数缓存
cache1 = string.Empty;
cache2 = string.Empty;
//复位操作数值
firstNumf = 0;
secondNumf = 0;
}
/// <summary>
/// 开根号运算
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void label18_Click(object sender, EventArgs e)
{
textBox1.Text = System.Math.Sqrt(double.Parse(cache1)).ToString();
}
}
}