C#实验1计算器的编写.docx
《C#实验1计算器的编写.docx》由会员分享,可在线阅读,更多相关《C#实验1计算器的编写.docx(21页珍藏版)》请在冰豆网上搜索。
C#实验1计算器的编写
计算机科学与技术学院
实验报告
(2016~2017学年度第二学期)
课程名称
C#程序设计
实验名称
简易计算器
姓名
章阳
学号
20154360105
专业
网络工程
班级
1班
地点
1教
教师
凌韵
一.实验题目
通过简易计算器的设计,熟悉VS2013编程环境,掌握常用窗体应用程序设计基本步骤,掌握基本控件的使用方法,掌握菜单栏设计
二.实验要求
(1)界面要求:
模仿windows操作系统附件中的计算器样式进行设计,要设计基本的菜单项(快捷键、热键、和分割线等)
(2)功能要求:
实现如下图所示的功能键
三.实验代码
代码要配合程序界面进行说明
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
namespace简易计算器_Murphy
{
publicpartialclassForm1:
Form
{
doubleshowResult=0;//定义一个浮点数,用于显示结果在文本框中
doublesum=0;//定义一个浮点数,用于记录当前文本框中的结果
boolnum=false;//定义一个布尔型数,用于判断鼠标点击的是运算符还是数字
stringtemp;//用于记录单击的运算符,匹配相应的运算
publicForm1()
{
InitializeComponent();
tbx_Show.Text="0";//给文本框初始化显示为0
}
privatevoid查看ToolStripMenuItem_Click(objectsender,EventArgse)
{
}
privatevoidbtn_GoBack_Click(objectsender,EventArgse)
{
tbx_Show.Text=tbx_Show.Text.Substring(0,tbx_Show.Text.Length-1);//通过调用Substring()方法,把文本框的Text的Length减一实现倒退
}
privatevoidbtn_DIV_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击除法运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="/";//把temp赋值为“/”,表示当前点击的是除法运算符
}
privatevoidbtn_One_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="1";//如果不是,则在文本框中显示1
}
privatevoidbtn_Two_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="2";//如果不是,则在文本框中显示2
}
privatevoidbtn_Three_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="3";//如果不是,则在文本框中显示3
}
privatevoidbtn_Four_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="4";//如果不是,则在文本框中显示4
}
privatevoidbtn_Five_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="5";//如果不是,则在文本框中显示5
}
privatevoidbtn_Six_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="6";//如果不是,则在文本框中显示6
}
privatevoidbtn_Seven_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="7";//如果不是,则在文本框中显示7
}
privatevoidbtn_Eight_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="8";//如果不是,则在文本框中显示8
}
privatevoidbtn_Nine_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="9";//如果不是,则在文本框中显示8
}
privatevoidbtn_Zero_Click(objectsender,EventArgse)
{
if(num==true)//判断上一步是否点击的是运算符
{
tbx_Show.Text="";//如果是,则把文本框中的结果清空
num=false;//把num赋值为false,表示当前点击的是数字
}
tbx_Show.Text+="0";//如果不是,则在文本框中显示0
if(temp=="/")//如果鼠标点击的是除法
{
tbx_Show.Clear();//把文本框中的结果清空
MessageBox.Show("除数不能为零","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);//并提示除数不能为零
}
}
privatevoidbtn_ADD_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击加法运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="+";//把temp赋值为“+”,表示当前点击的是加法运算符
}
privatevoidbtn_SUB_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击减法运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="-";//把temp赋值为“-”,表示当前点击的是减法运算符
}
privatevoidbtn_MUL_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击乘法运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="*";//把temp赋值为“*”,表示当前点击的是乘法运算符
}
privatevoidbtn_根号_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击开平方运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="√";//把temp赋值为“√”,表示当前点击的是开平方运算符
showResult=Math.Sqrt(sum);//调用Math函数中的Sqrt()方法求平方根
tbx_Show.Text=showResult+"";//把开平方根所获得的结果显示在富文本框中
}
privatevoidbtn_倒数_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击求倒运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="1/x";//把temp赋值为“1/x”,表示当前点击的是百分号运算符
showResult=1.0/sum;//把1.0除以sum
tbx_Show.Text=showResult+"";//把所获得的结果显示在文本框中
}
privatevoidbtn_百分号_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击百分号运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="%";//把temp赋值为“%”,表示当前点击的是百分号运算符
showResult=sum/100.0;//把sum除以100.0
tbx_Show.Text=showResult+"";//把所获得的结果显示在文本框中
}
privatevoidbtn_Equal_Click(objectsender,EventArgse)
{
switch(temp)
{
case"+":
showResult=sum+double.Parse(tbx_Show.Text);break;//当temp为“+”号时,进行加号运算
case"-":
showResult=sum-double.Parse(tbx_Show.Text);break;//当temp为“-”号时,进行加号运算
case"*":
showResult=sum*double.Parse(tbx_Show.Text);break;//当temp为“*”号时,进行加号运算
case"/":
showResult=sum/double.Parse(tbx_Show.Text);break;//当temp为“/”号时,进行加号运算
}
tbx_Show.Text=showResult+"";//把所获得的结果显示在文本框中
num=true;//当鼠标点击等号运算时,把num标记成true,表示鼠标点击的是运算符
}
privatevoidbtn_CE_Click(objectsender,EventArgse)
{
tbx_Show.Text="0";//让文本框显示0
}
privatevoidbtn_Clean_Click(objectsender,EventArgse)
{
tbx_Show.Text="0";//让文本框显示0
}
privatevoidbtn_AddSub_Click(objectsender,EventArgse)
{
num=true;//当鼠标点击正负运算时,把num标记成true,表示鼠标点击的是运算符
sum=double.Parse(tbx_Show.Text);//调用double的Parse()方法,把文本框中的结果转化成double类型
temp="±";//把temp赋值为“±”,表示当前点击的是正负运算符
showResult=-sum;//在sum前面添加一个负号
tbx_Show.Text=showResult+"";//把所获得的结果显示在文本框中
}
privatevoidtbx_Show_TextChanged(objectsender,EventArgse)//textBox1对应的是程序设计界面的显示框
{
if(tbx_Show.Text.Length>=2)//判断文本框richTextBox1的Text的Length是否大于等于2
{
if(tbx_Show.Text.Substring(0,1)=="0"&&tbx_Show.Text.Substring(1,1)!
=".")//在通过Substring()方法获取文本框的前两个字符串,判断第一个字符串是否为0,判断第二个字符串是否为小数点.
tbx_Show.Text=tbx_Show.Text.Substring
(1);//清除文本框中显示的0
}
}
}
}
四.运行结果
初始界面
求倒数(1/5)
加法(1+6)
减法(7-9)
乘法(5*26)
除法(5/0)
除法(18/7)
%运算(9%)
根号运算(根号9)
正负运算(-3)
快捷键
五.实验总结
目的:
开发简单运算器。
解决思路:
整个项目分为三个部分,核心计算类库+单元测试+UI(用户界面)。
优点:
这是我首次实现了自己的代码,通过多次观看老师的教学视频,加上自己的多次重复编码、修改,以及对各种细节的优化,初步实现了一个简单的四则计算器,尽管不是太完美,但是最重要的是我初步掌握思想并能购应用与实例子当中。
缺点:
本代码中比能为实现流程与实例化分离,使用了Switch,没有进行代码重构,可以抽取去出switch的部分,作为一个单独的部分,隐藏核心类库的内容,UI只需要调用相关的接口就可以了,这也是面向接口编程的好处。
总结:
代码还有待优化,今后会继续增加新的功能:
比如日志记录功能和其他的运算法则等等,但是前提应该是使用实例化与流程分离的思想才能更好地实现这些功能的增加。