1. 设计背景
设计拥有简单的计算功能,方便计算简单的计算题。方便用户的使用。
2. 设计功能
具有一般计算功能,能进行基本的加减乘除运算,还具有求根号,倒数等功能。特点是能进行不同进制的运算和不同进制间的转换。
3. 模块分解
该计算器分为3个模块,分别是
Textbox:显示区:显示数字和计算结果的功能
button:计算区:提供运算符和数字,与用户交互进行运算
radioButton:转换区: 用于进制之间的转换
4. 设计界面
标准型 科学型
5. 按键定义
Button1~button29为1到F相应的数字键和运算符
RadioButton1~4 用于各种进制之间的转换
Textbox1 为显示区,显示输入和计算结果
6. 其他定义
int command = 0;
string stringbefore; //存储算数运算符按下之前的字符串。
string stringlast; //存储算数运算符按下之后的字符串。
long metadata; //进制转换时存储中间值。
double doublebefore = 0; //存储算数运算符按下之前的数字。
double doublelast = 0; //存储算数运算符按下之后的数字。
double result = 0; //存储运算之后的数字值。
bool flag = true ;//判断是否已经按过了算数运算符。
实验内容
? 设计思路与源程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 计算器实验
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void txt_Result_TextChanged(object sender, EventArgs e)
{
}
private void button0_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button2_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button3_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button4_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button5_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button6_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button7_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button8_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void button9_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text += btn.Text;
}
private void btn_Add_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text = txt_Result.Text + " " + btn.Text + " ";
}
private void btn_Minus_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text = txt_Result.Text + " " + btn.Text + " ";
}
private void btn_Multiply_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text = txt_Result.Text + " " + btn.Text + " ";
}
private void btn_Divide_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
txt_Result.Text = txt_Result.Text + " " + btn.Text + " ";
}
private void btn_Clear_Click(object sender, EventArgs e)
{
txt_Result.Text = "";
}
private void btn_Result_Click(object sender, EventArgs e)
{
double d_result;
string s_txt = txt_Result.Text;
int space = s_txt.IndexOf(' ');
string s1 = s_txt.Substring(0, space);
char operation = Convert.ToChar(s_txt.Substring((space + 1), 1));
string s2 = s_txt.Substring(space + 3);
double arg1 = Convert.ToDouble(s1);
double arg2 = Convert.ToDouble(s2);
switch (operation)
{
case '+':
d_result = arg1 + arg2;
break;
case '-':
d_result = arg1 - arg2;
break;
case '*':
d_result = arg1 * arg2;
break;
case '/':
if (arg2 == 0)
{
throw new ApplicationException();
}
else
{
d_result = arg1 / arg2;
}
break;
default:
throw new ApplicationException();
}
txt_Result.Text = d_result.ToString();
}
}
}