c#实验报告简易计算器.docx
《c#实验报告简易计算器.docx》由会员分享,可在线阅读,更多相关《c#实验报告简易计算器.docx(14页珍藏版)》请在冰豆网上搜索。
c#实验报告简易计算器
重庆邮电大学移通学院
C#课程设计
1、实验目的:
构造一个类似Windows自带的计算器一样的简易计算器,能够连续进行加、减、乘、除四则整数运算,并能随时清除计算结果进行下一次计算。
二、具体实验步骤:
1、添加编辑框对应的变量m_Display
2、添加运算符类型变量
charCompuType;//用于存储运算符类型
CStringFirstInput;//用于保存运算符前面的输入值
3、实验内容
设计的基本要求:
能正确输入数据,能实现加,减,乘,除等算术运算,能实现简单的三角运算,运行结果能正确显示,可以清除数据等。
1、要点分析:
这是一个简单的对话窗体设计,涉及button,editbox,statictext,radiobutton,groupbox等控件,主要影响事件为BN_CLICKED
2、程序源代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceStudy
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privateintopMain=0;//运算类型,其中1(加法)2(减法)3(乘法)4(除法)
privatedoublemainNum1=0;//存储第一个数
privatedoublemainNum2=0;//存储第二个数
privateboolisSecond=false;//用来判断输入的是第一个还是第二个数
privateboolisDone=false;//用来判断是否按了等于按钮
privateboolisDecimal=false;//用来判断是否有小数
privateboolisNokeydown=false;//用来判断是否没输入第二个数而按了"="号键
privateboolisKeyupclear=true;//用来判断是否按了clear键,程序开始前默认按了;
publicvoidsetText(stringtextest)//设置文本框的值
{
if(textest.Equals("clear"))
{
textBox1.Text="0.";
isSecond=false;
isDone=false;
isDecimal=false;
isKeyupclear=true;
}
else
{
if(isSecond)
{
textBox1.Text=textest;
isSecond=false;
isDecimal=false;
}
else
{
if(isDone)
{
textBox1.Text=textest;
isDone=false;
}
else
{
if(isKeyupclear)//对是否按下clear键的判断
{
textBox1.Text=textest;
isKeyupclear=false;
}
else
textBox1.Text+=textest;
}
}
}
btnEqual.Select();//设置"="号的焦点
}
publicvoidCalc(doublenum1,doublenum2,intop)
{
doubleanswer=0;
switch(op)//判断所进行的运算
{
case1:
answer=num1+num2;
break;
case2:
answer=num1-num2;
break;
case3:
answer=num1*num2;
break;
case4:
answer=num1/num2;
break;
case5:
answer=num1%num2;
break;
}
setText(answer.ToString());//显示结果
}
//执行运算
privatevoiddoEquals()
{
if(isNokeydown)//判断已经输入第二个数后按了"="号键
{
mainNum2=double.Parse(textBox1.Text);
setText("clear");
Calc(mainNum1,mainNum2,opMain);
isDone=true;
isNokeydown=false;
}
}
//切换正负
privatevoidchangeSign()
{
doublestorNum;
if(textBox1.Text.Length>0)
{
storNum=double.Parse(textBox1.Text);
storNum*=-1;
textBox1.Text=storNum.ToString();
}
btnEqual.Select();//设置"="号的焦点
}
//设置运算类型
privatevoidsetOperator(intoperation)
{
if(textBox1.Text.Length>0)
{
opMain=operation;
mainNum1=double.Parse(textBox1.Text);
isSecond=true;
isDone=false;
isNokeydown=true;
btnEqual.Select();//设置"="号的焦点
}
}
//设置小数点
privatevoidsetDecimal()
{
if(!
isDecimal)
{
setText(".");
isDecimal=true;
}
btnEqual.Select();//设置"="号的焦点
}
//开平方
privatevoiddoSquart()
{
doublestorNum;
storNum=double.Parse(textBox1.Text);
if(storNum>0)
{
storNum=Math.Sqrt(storNum);
textBox1.Text=storNum.ToString();
}
else
textBox1.Text="负数不能开平方。
";
btnEqual.Select();//设置"="号的焦点
}
//求倒数
privatevoiddoreciprocal()
{
doublestorNum;
storNum=double.Parse(textBox1.Text);
if(storNum!
=0)
{
storNum=1/storNum;
textBox1.Text=storNum.ToString();
}
else
textBox1.Text="除数不能为零。
";
btnEqual.Select();
}
privatevoidbtn7_Click(objectsender,EventArgse)
{
setText("7");
}
privatevoidbtn8_Click(objectsender,EventArgse)
{
setText("8");
}
privatevoidbtn9_Click(objectsender,EventArgse)
{
setText("9");
}
privatevoidbtn4_Click(objectsender,EventArgse)
{
setText("4");
}
privatevoidbtn5_Click(objectsender,EventArgse)
{
setText("5");
}
privatevoidbtn6_Click(objectsender,EventArgse)
{
setText("6");
}
privatevoidbtn1_Click(objectsender,EventArgse)
{
setText("1");
}
privatevoidbtn2_Click(objectsender,EventArgse)
{
setText("2");
}
privatevoidbtn3_Click(objectsender,EventArgse)
{
setText("3");
}
privatevoidbtn0_Click(objectsender,EventArgse)
{
setText("0");
}
privatevoidbtnPoint_Click(objectsender,EventArgse)
{
setDecimal();
}
privatevoidbtnSubtract_Click(objectsender,EventArgse)//正负号交换
{
changeSign();
}
privatevoidbtnEqual_Click(objectsender,EventArgse)
{
doEquals();
}
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
setOperator
(1);
}
privatevoidbtnSub_Click(objectsender,EventArgse)
{
setOperator
(2);
}
privatevoidbtnMulti_Click(objectsender,EventArgse)
{
setOperator(3);
}
privatevoidbtnDivide_Click(objectsender,EventArgse)
{
setOperator(4);
}
privatevoidbtnC_Click(objectsender,EventArgse)//清除键
{
isSecond=false;
setText("clear");
}
privatevoidbtnSqrt_Click(objectsender,EventArgse)//开平方
{
doSquart();
}
privatevoidbtnPercentage_Click(objectsender,EventArgse)//求模
{
setOperator(5);
}
privatevoidbtnReciprocal_Click(objectsender,EventArgse)//求倒
{
doreciprocal();
}
privatevoidbtnCE_Click(objectsender,EventArgse)//CE
{
isSecond=false;
setText("clear");
}
privatevoidbtnBackspace_Click(objectsender,EventArgse)//退格键
{
stringold=textBox1.Text;
if(old.Length>1&&old!
="0.")
textBox1.Text=old.Substring(0,old.Length-1);
else
textBox1.Text="0.";
}
}
}
3、运行结果
四、实验小结
此次的设计是1个新的体验、新的挑战,我在此过程中不但应用了所学的知识,而且还不断的学习新的知识、工具,以完成设计的需要,在设计的过程中我深深体会到作为1个学习计算机专业的人士,为了实现1个模块的代码、为了1个设计的实现思想、经常绞尽脑汁来达到设计所要达到的目的,虽然我的基础知识不够扎实,但是我在此期间积累了许多宝贵的经验,这都是我以后走上工作岗位的巨大的财富。