2024年3月25日发(作者:)

C#计算器实验报告

班级: 2010134

学号: *********

姓名: ***

一 实验目的和要求

设计一个简单计算器,具有一般计算功能,能进行基本的加减乘除运算,还具有求根号,倒数等功能。

特点是能进行不同进制的运算和不同进制间的转换。主要的工作主要是操作数与被操作数进行简单的加、

减、乘、除运算来完成基本的,而且还可以进行简单的科学运算例如计算一个数的平方、开方、正弦、余

弦、log、ln等操作还可以计算面积、周长、体积和表面积等。通过新的技术和新方法来实现计算功能

显示界面为Windows From窗体。

二 功能模块设计

标准计算器

通过Windows Form窗体中的对应按钮接受用户输入数据提交对应的方法中来完成相应的功能计算

再将结果显示在显示框内。显示界面为Windows From窗体。

下面是一个简单的计算器的基本功能:

1加法

两个数据进行加操作可以为小数。

2减法

两个数据进行减操作可以为负数相减。

3乘法

两个数相乘

4除法

两个数相除

5 倒数

可以求得一个数的倒数

6开方

开方后的结果可以精确到16位。

科学计算器

1 平方

接收的数相乘结果保留一位小数。

2 立方

接收的数相乘两次

3 正弦

正弦结果精确度同开方。

4 余弦

余弦结果精确度同上。

5 Log

Log运算精确到16位。

6 Ln

以e为底的对数。

7 二进制

二进制数的运算

8 八进制

八进制数的运算

9 十进制

十进制数的运算

11 十六进制

十六进制的运算

12 倒数

可以求得一个数的倒数

13 开方

开方后的结果可以精确到16位。

14 颜色

可以选择输入字体的颜色

三 设计界面

标准型

科学型

四 详细设计过程

(一) 打开VS2010创建项目

(二)界面设计

1.进入界面

2.菜单设计

(1)选择VS201的菜单栏中的“视图|工具箱”单击,调出工具箱(出现在VS用

户区左侧。

(2)在工具箱中选择“菜单和工具栏|MenuStrip”,拖到程序界面用户区,并根

据自己的喜好在“属性窗口”(可以使用“视图|属性窗口”调出,一般在用户

区右下角)设置菜单栏宽度、颜色等。

(3)在菜单栏中“请在此处键入”编辑第一个菜单 选项及其下拉子菜单选项“编

辑”“复制”“粘贴”。

(4)按上述操作,依次完成第二、三个菜单选项及其下拉子 菜单选

项。

3.显示条设计

(1)在VS用户区左侧工具箱中找到TextBox控件拖到计算器用区合适

的位置,按住鼠标左键在相应调整点设置其长度,设置其 高度时需

要首先在属性窗口把该控件的Mutiline属性设置为True, 才可以使

用鼠标调整其高度。

(2)在属性窗口设置显示条属性:(Name)属性为txt_Result;Text

属性为0.(即:控件上显示的内容);TextAlign属性为Right;

4.其它控件设计

向窗体上添加控件,计算器分为3个模块,分别是

Textbox:显示区:显示数字和计算结果的功能

button:计算区:提供运算符和数字,与用户交互进行运算

radioButton:转换区: 用于进制之间的转换

五 详细代码

标准型

using System;

using c;

using entModel;

using ;

using g;

using ;

using ;

using ;

namespace WindowsFormsApplication6

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

public string number;

public int x;

public double number1;

private string a;

private string abc;

private void button0_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button1_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button2_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button3_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button4_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button9_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button8_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button7_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button6_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += ;}

private void button5_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ += };

private void C_Click(object sender, EventArgs e)

{txt_ = "";

_();}

private void sqrt_Click(object sender, EventArgs e)

{

if (le(txt_) < 0)

{

_ = "error";

}

else

{

number1 = le(txt_);

number = "";

txt_ = ng((number1));}

_();}

private void dao_Click(object sender, EventArgs e)

{

if (le(txt_) == 0)

{

_ = "error";

}

else

{

number1 = le(txt_);

number = "";

txt_ = ng(1 / number1);}

_();}

private void dian_Click(object sender, EventArgs e)

{try

{number = ng(number + ".");

txt_ = ng(number + "");}

catch{ }_();}

private void Backspace_Click(object sender, EventArgs e)

{if (txt_ == "" || txt_ == "0")

{txt_ = "";}

else

{number1 = le(txt_);

number = ng((number1 - number1 % 10) / 10);

txt_ = number;}

_();}

private void bai_Click(object sender, EventArgs e)

{

number = ng(le(txt_) / 100);

txt_ = number;

number = "";

_();}

private void zhengfu_Click(object sender, EventArgs e)

{

number1 = le(txt_);

txt_ = ng(0 - number1);

_();}

private void X2_Click(object sender, EventArgs e)

{

if (txt_ngth > 0)

{

number1 = le(number);

number = ng(number1 * number1);

txt_ = number;

number = "";

}

_();}

private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)

{(“这是一个仿照windows的计算器应用程序,功能虽然不齐但基

本能运行”);}

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

{Close();}

private void btn_Add_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ = txt_ + " " + + " "; }

private void btn_Minus_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ = txt_ + " " + + " "; }

private void btn_Multiply_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ = txt_ + " " + + " "; }

private void tn_Divide_Click(object sender, EventArgs e)

{Button btn = (Button)sender;

txt_ = txt_ + " " + + " "; }

private void btn_Result_Click(object sender, EventArgs e)

{

double d_result;

string s_txt = txt_;

int space = s_f(' ');

string s1 = s_ing(0, space);

char operation = (s_ing((space + 1), 1));

string s2 = s_ing(space + 3);

double arg1 = le(s1);

double arg2 = le(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_ = d_ng(); }

private void 标准型TToolStripMenuItem_Click(object sender, EventArgs e)

{Form1 frm = new Form1();

();

();}

private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)

{

if (a == null)

{

_ = ;

this.a += ;

}

else if (a != null && txt_ != null)

{

_ = null;

a = null;

_ = ;

this.a += ;

}

}

private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)

{

if (abc == null)

{

+= _;

}

else

{

abc = null;

+= _;

}

}

private void 科学型SToolStripMenuItem_Click(object sender, EventArgs e)

{

Form fm2 = new Form2();

();

();

}

科学型

using System;

using c;

using entModel;

using ;

using g;

using ;

using ;

using ;

namespace WindowsFormsApplication6

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

private void rBtn16_CheckedChanged(object sender, EventArgs e)

{

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

if (txt_ != "")

{int d1;

string d2;

string s_txt = txt_;

string s1 = s_ing(0);

if (d)

{int a = 32(s1, 16);

d1 = a;d2 = ng(d1, 8);txt_ = ng();}

else if (d)

{int a = 32(s1, 16);

d1 = a; txt_ = ng();}

else if (d)

{int a = 32(s1, 16);

d1 = a;d2 = ng(d1, 2);

txt_ = ng();} }}

private void rBtn10_CheckedChanged(object sender, EventArgs e)

{_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

if (txt_ != "")

{ int d1; string d2;

string s_txt = txt_;

string s1 = s_ing(0);

if (d)

{ double a = le(s1); d1 = (int)a;

d2 = ng(d1, 8);

txt_ = ng();}

else if (d)

{ double a = le(s1);

d1 = (int)a; d2 = ng(d1, 16);

txt_ = ng();}

else if (d)

{ d1 = (int)a; double a = le(s1);

d2 = ng(d1, 2);

txt_ = ng();}}}

private void rBtn8_CheckedChanged(object sender, EventArgs e)

{ _d = false;

_d = false;

t _d = false;

_d = false;

_d = false;

_d = false;

_d = false;

d = false;

d = false;

d = true;

d = true;

d = true;

d = true;

d = true;

d = true; d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

if (txt_ != "")

{int d1;string d2;string s_txt = txt_;

string s1 = s_ing(0);

if (d)

{int a = 32(s1, 8);

d1 = a;d2 = ng(d1, 16);

txt_ = ng();}

else if (d)

{int a = 32(s1, 8);

d1 = a;txt_ = ng();}

else if (d)

{ int a = 32(s1, 8);

d1 = a;d2 = ng(d1, 2); txt_ = ng();}}}

private void rBtn2_CheckedChanged(object sender, EventArgs e)

{_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

_d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

d = false;

if (txt_ != "")

{ int d1; string d2; string s_txt = txt_;

string s1 = s_ing(0);

if (d)

{ int a = 32(s1, 2);

d1 = a; d2 = ng(d1, 8);

txt_ = ng(); }

else if (d)

{ int a = 32(s1, 2);

d1 = a; txt_ = ng(); }

else if (d)

{ int a = 32(s1, 2); d1 = a; d2 =

ng(d1, 16);

txt_ = ng(); }}}

private void radioButton8_CheckedChanged(object sender, EventArgs e)

{_lor = ; }

private void rBtnBlue_CheckedChanged(object sender, EventArgs e)

{ _lor = ; }

private void rBtnRed_CheckedChanged(object sender, EventArgs e)

{ _lor = ; }

private void rBtnYellow_CheckedChanged(object sender, EventArgs e)

{ _lor = ;}

private void button0_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button1_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button2_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button3_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button4_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button5_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button6_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button7_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button8_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void button9_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonA_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonB_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonC_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonD_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonE_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void buttonF_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ += ; }

private void btn_neg_Click(object sender, EventArgs e)

{string s_txt = txt_;

double a = le(s_txt);

double b = -a;txt_ = ng(); }

private void btn_per_Click(object sender, EventArgs e)

{string s_txt = txt_;

double a = le(s_txt);

double b = a / 100.0;

txt_ = ng();}

private void btn_Dot_Click(object sender, EventArgs e)

{ Button btn = (Button)sender;txt_ += ; }

private void btn_Add_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ = txt_ + " " + + " "; }

private void btn_Sub_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ = txt_ + " " + + " "; }

private void btn_mul_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ = txt_ + " " + + " "; }

private void btn_div_Click(object sender, EventArgs e)

{Button btn = (Button)sender;txt_ = txt_ + " " + + " "; }

private void btn_sqr_Click(object sender, EventArgs e)

{double d1;string d2;

string s_txt = txt_;string s1 = s_ing(0);

if (d)

{ int a = 32(s1, 2);

d1 = ((double)a);

d2 = ng((int)d1, 2);

txt_ = ng();}

else if (d)

{int a = 32(s1, 8);

d1 = ((double)a);

d2 = ng((int)d1, 8);txt_ = ng();}

else if (d)

{int a = 32(s1, 16);

d1 = ((double)a);

d2 = ng((int)d1, 16);

txt_ = ng();}

else{double a = le(s1);

d1 = (a);txt_ = ng();} }

private void btn_ln_Click(object sender, EventArgs e)

{string s_txt = txt_;

double a = le(s_txt);

double en = 2.718281828;

double b = (en, a);txt_ = ng(); }

private void btn_log_Click(object sender, EventArgs e)

{string s_txt = txt_;

double a = le(s_txt);

double b = 10(a);txt_ = ng(); }

private void btn_down_Click(object sender, EventArgs e)

{string s_txt = txt_;double a = le(s_txt);

if (a == 0) throw new ApplicationException();double b = 1 / a;

txt_ = ng();

private void btn_Pi_Click(object sender, EventArgs e)

{double pi = 3.1415926535;txt_ = ng(); }

private void btn_x2_Click(object sender, EventArgs e)

{ int d1;string d2;

string s_txt = txt_;

string s1 = s_ing(0);

if (d)

{int a = 32(s1, 2);

d1 = a * a;d2 = ng(d1, 2);

txt_ = ng();}

else if (d)

{int a = 32(s1, 8);d1 = a * a;

d2 = ng(d1, 8); txt_ = ng(); }

else if (d)

{int a = 32(s1, 16);

d1 = a * a;d2 = ng(d1, 16);

txt_ = ng();}

else{double a = le(s1);

d1 = (int)a * (int)a;txt_ = ng();} }

private void btn_x3_Click(object sender, EventArgs e)

{int d1;string d2;string s_txt = txt_;

string s1 = s_ing(0); if (d)

{int a = 32(s1, 2);d1 = a * a * a;

d2 = ng(d1, 2);txt_ = ng();}

else if (d)

{int a = 32(s1, 8);

d1 = a * a * a;d2 = ng(d1, 8);

txt_ = ng();}

else if (d)

{int a = 32(s1, 16);

d1 = a * a *a;d2 = ng(d1, 16);

txt_ = ng();}

else{double a = le(s1);

d1 = (int)a * (int)a * (int)a;

txt_ = ng();}}

private void btn_Clear_Click(object sender, EventArgs e)

{txt_ = ""; }

private void btn_sin_Click(object sender, EventArgs e)

{string s_txt = txt_;double a = le(s_txt);

double b = (a);txt_ = ng();}

private void btn_cos_Click(object sender, EventArgs e)

{string s_txt = txt_;

double a = le(s_txt);

double b = (a);txt_ = ng(); }

private void btn_tan_Click(object sender, EventArgs e)

{string s_txt = txt_;double a = le(s_txt);

double b = (a);txt_ = ng();}

private void btn_Back_Click(object sender, EventArgs e)

{_ =

_ing(0, _ - 1);

if (_ == " ")

{_ = “} }

private void btn_Result_Click(object sender, EventArgs e)

{int d1;string d2;

string s_txt = txt_;

int space = s_f(' ');

string s1 = s_ing(0, space).Trim();

char opration = (s_ing((space + 1), 1));

string s2 = s_ing(space + 3);

{ int i = 32(s1);

int j = 32(s2);

switch (opration)

{case '+':d1 = i + j;break;

case '-':d1 = i - j;break;

case '*':d1 = i * j;break;

case '/':if (j == 0)

{ throw new ApplicationException();}

else{d1 = i/ j;}break;

default:throw new ApplicationException();}

txt_ = ng();}

if (d)

{int i = 32(s1, 8); int j = 32(s2, 8);

switch (opration){case '+':

d1 = i + j;d2 = ng(d1, 8);break;

case '-':

d1 = i - j;d2 = ng(d1, 8);break;

case '*':

d1 = i * j;d2 = ng(d1, 8);break;

case '/':if (j == 0){throw new ApplicationException(); }

else{d1 = i / j;d2 = ng(d1, 8);}break;

default:throw new ApplicationException();}

txt_ = d2;}

if (d)

{int i = 32(s1, 16);int j = 32(s2, 16);

switch (opration)

{case '+':d1 = i + j;d2 = ng(d1, 16);break;

case '-':d1 = i – j;d2 = ng(d1, 16); break;

case '*':d1 = i * j;d2 = ng(d1, 16);break;

case '/':if (j == 0){throw new ApplicationException();}

else{d1 = i / j;d2 = ng(d1, 16);}break;

default:throw new ApplicationException();}

txt_ = d2;}

if (d)

{int i = 32(s1, 2);

int j = 32(s2, 2);

switch (opration)

{case '+':d1 = i + j;d2 = ng(d1, 2);break;

case '-':d1 = i - j;d2 = ng(d1, 2);break;

case '*':d1 = i * j;d2 = ng(d1, 2);break;

case '/':if (j == 0){throw new ApplicationException();}

else{d1 = i / j;d2 = ng(d1, 2);}

break;default;throw new ApplicationException(); }

txt_ = d2;}

if (d)

{double d;

double a1 = le(s1);

double a2 = le(s2);

switch (opration)

{case '+':d = a1 + a2;break;

case '-':d = a1 - a2;break;

case '*':d = a1 * a2;break;

case '/':if (a2 == 0)

{throw new ApplicationException();}

else{d = a1 / a2;}break;

default:throw new ApplicationException();}

txt_ = ng();}}

private void 标准型ToolStripMenuItem_Click(object sender, EventArgs e)

{Form fm1 = new Form1();();

();}

private void 帮ã?助¨²ToolStripMenuItem_Click(object sender, EventArgs e)

{

("

这是一个仿照windows的计算器应用程序,功能虽然不齐但基本能运

行”);

}}}

六 实验总结

通过简易计算器这一程序的开发。我更进一步的了解了面向对象程序开发的过程也亲身

体验了开发一个简单系统的细节点滴。通过这个例子,我对类的使用和认识有了更深入的体

会。首先这是一个计算器程序,主要的是对十进制数据的简单的四则运算操作。包含了最基

本的对一些按钮和文本框的操作。了解到了这类程序的开发过程和基本入手点。可以说这是

我第一次用完全的面向对象语言开发一个简单的小程序。这也让我深刻体会到了类在面向对

象开发过程中的重要性和便捷之处。只有亲身体验才有真正的收获。对于这个项目我有一

些满意的地方也有感到不足的地方。其中满意的地方是这个程序实现了预计的功能即对数

据的四则运算操作、一些三角函数阶乘N次方进制转化角弧度转换且计算结果无

误。而且我也在这个项目中用到了以前学到的C语言程序时的一些思想。从这点我体会到

了不同程序的共通性和不同语言间的共通性。通过这个程序我解决了窗体的应用问题。把

原来只能在DOS提示符下运行的程序是现在了WINDOWS窗体中。 当然这个项目中还是存在

很多不足之处的比如这个计算器程序的计算中没有能够实现把二、八、十六进制转换为十

进制。有些地方写的代码效率不高。而且由于对程序设计不是很精通我觉得这个项目中代

码的编写也不足够规范文档说明也不足有些东西知道用什么思想但就是用不来。培养

一个良好的编程风格是十分重要的。整齐的代码格式会大大提高程序可读性。完整的技术文

档对日后维护和升级十分重要。所以在编程的细节方面我还应该多加注意。 一个月的实习

让我对计算机理论知识有了一定的了解但实践出真知唯有把理论与实践相结合才

能更好地为社会服务。我上网查阅了一些计算应用知识并对毕业论文所需的资料进行了粗浅

的了解提高了我的动手能力同时也让我了解到了自己的不足也很好的了解了团队合作

的重要性。也学会了怎么样去处理事情。只有自己动手做过的东西才会铭记在心。也只有自

己真正去努力过的事情才会记得很牢。只有自己真正面对过的困难下一次才不会犯同样的错

误。这个程序仅仅是一个开始一个简单的例子。如果日后要继续开发我觉得应该在这个

程序的高效性易用性功能的多样性这几个方面下功夫。也就是说把程序向着更加面向用

户的方向进行发展。比如我们可以对用户输入进来的数据进行高级的函数运算并且能够在

运算不可行的时候出现提示等等。也就是说要努力将其变成一个实际工作中可以使用的程序

而不仅仅是一个示例。当然我会继续努力完善自我为社会主义现代化建设做贡献。总

的来说:我学会了掌握时间。把不可控制的东西变成可控制的。做的东西要做成可扩充的。

做东西一定要活从这些话再加上自己的工作慢慢体会到这正是我所不足的地方啊。在以后

的对计算机科学与技术专业的学习中我会通过对C#这项技术的不断应用来更深入的学

习它的精髓。