简易计算器的实现(C#)
欢迎观看本期的博文,本期博文的目的是做一个简单的计算器,我将从布局分析、整体布局、代码实现等几个方面进行阐述并与大家交流。(文末有源代码)
布局分析
整体布局
1.打开vs,创建一个新的Windows form项目。
2.按照布局分析,从工具箱拖动相应控件。可以先将from的大小调整一下,所写代码中的size为624,568.可以根据自己的情况进行界面大小设置。
3.给每个控件更改text属性。按照布局分析的结果来看,需要2个textbottom和14个bottom控件。分别按照布局分析命名。
4.整体布局的效果如下:
总结:可以根据自己的习惯来进行布局和命名,在修改name属性时应做到见名知义。例如加法按钮的name属性可以改bottom/sum。
添加代码
在本次综合实例中,包括加减乘除的实现、输入输出、小数点、等于、清空、回退一个的代码。下面就以几个比较重要部分的代码讲具体的实现过程吧。
加减乘除的实现:
一共四种运算,在用户随意输入数据并进行随意运算时,能准确地计算结果。所以整体就会有两种选择,一种是if-else嵌套或者用switch-case语句。在这里,为了方便编写且形成容易看出的逻辑关系,我们采用switch-case来写。
(此处不代表真正的代码,仅做为示例)
switch(a){case'+':------------case'-':------------case‘*’:------------case‘/’:-----------}
然而考虑到在实际的应用中出现其他非正常的操作,例如并不输入符号的情况,我们就需要进行判定。也就是说单纯用switch-case语句是不能完全满足实际的应用。需要在外面嵌套一个if-else语句进行判定
真实的代码如下:
private void button4_Click(object sender, EventArgs e) //加减乘除{//事件源转换为按钮Button btn = sender as Button;//上次按了数字if (prev == 1){txttop.Text += btn.Text;//进行显示拼接switch (prevysf){case "+":zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;case "-":zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;case "*":zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;case "/":zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break; }txtbottom.Text = zjjg.ToString();}//上次按了运算符else{if (txttop.Text != ""){string s = txttop.Text;s = s.Substring(0, s.Length - 1);s = s + btn.Text;txttop.Text = s;}else{txttop.Text = txtbottom.Text + btn.Text;}}//点击了运算符prev = 2;//记录下运算符prevysf = btn.Text;}
清空的代码:
private void button9_Click(object sender, EventArgs e) //清空{txttop.Text = "";txtbottom.Text = "";prevysf = "+";prev = 0;zjjg = 0;}
等于的代码:由于结果需要符号和输入决,所以跟前面一样,真是的代码如下
private void button11_Click(object sender, EventArgs e) //等于{//上次按了数字if (prev == 1){txttop.Text += "=";//进行显示拼接 //事件源转换为按钮Button btn = sender as Button;switch (prevysf){case "+":try{zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果}catch (Exception){zjjg = 0;}break;case "-":zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;case "*":zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;case "/":zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果break;default:zjjg = 0;break;}txtbottom.Text = zjjg.ToString();prevysf = "";prev = 2;}if (txtbottom.Text=="0."){txtbottom.Text = "";prevysf = "";prev = 2;} }
具体其他的代码,文末有源代码相关链接,供下载学习使用。
运行示例
运行后,我们输入7+8,可以看到,在下一栏的结果栏可以看到结果15.当然,其他的运算也是同样的道理进行检验。
这样一个简易的计算器就完成了,有觉得可以改进的小伙伴也可以在源代码的基础上去改进,实现更多功能。
如果对你有帮助的话,请多多支持,有问题欢迎小伙伴在评论区留言或者私信。
本期源代码:
链接:/s/1xVreom1EWg7YxWgoJ5L1_A
提取码:4ygg
ps:最近准备考研,更新得比较慢,进度落下一大堆,后面也就这个情况了,尽量一周更新两篇有用的东西。希望谅解。祝各位学习的小伙伴更上一层楼。成功的人总是会伴随着各种挑战与困难的,加油.
敬请期待下一期,有兴趣的小伙伴可以关注一下。
下期预告:
1.C#核心语法(二)&&俄罗斯方块的设计与编写
2.纪念日管理系统&&python从安装到卸载(二)
其他系列不定时定量更新。