ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:121.50KB ,
资源ID:4132332      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4132332.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(用C#做的一个计算器资料.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

用C#做的一个计算器资料.doc

1、 用C#做的一个计算器 用C#做的一个计算器 1. using System;    2. using System.Collections.Generic;    3. using System.Linq;    4. using System.Text;    5. using System.Windows;    6. using System.Windows.Controls;    7. using System.Windows.Data;    8. using System.Windows.Documents;    9. u

2、sing System.Windows.Input;    10. using System.Windows.Media;    11. using System.Windows.Media.Imaging;    12. using System.Windows.Navigation;    13. using System.Windows.Shapes;    14.    15. /************************************************/   16. /*******         本程序供学习交流         

3、/   17. /*******         作者:  张骏南            *******/   18. /*******         最后修改时间             *******/   19. /*******       2011年3月10日21:03:17      *******/   20. /************************************************/   21.    22. namespace 计算器    23. {    24.     /// 

4、   25.     /// Window1.xaml 的交互逻辑    26.     /// 

   27.     public partial class Window1 : Window    28.     {    29.         private decimal m_dInput = 0;    30.         private int m_iPlaces = 0;          //数的小数位    31.         private bool m_bIsFloat = false;    //标记是否为小数

5、    32.         private bool m_bNewInt = false;     //标记是否需要新的整数数    33.         private bool m_bNewFloat = false;   //标记是否需要新的浮点数    34.         private Counter m_ctrCounter = new Counter();    35.         private AboutBox1 m_abtAboutBox;    36.    37.         public Window1()    38.

6、        {    39.             InitializeComponent();    40.             updateInput();    41.         }    42.    43.         //输入更新结果显示框    44.         private void updateInput()    45.         {    46.             //去除末尾多于的0    47.             if (m_bIsFloat)    48.             

7、    while (m_dInput.ToString().LastIndexOf('0') == m_dInput.ToString().Length - 1 && m_dInput != 0)    49.                     m_dInput = Convert.ToDecimal(m_dInput.ToString().Substring(0, m_dInput.ToString().Length - 1));    50.    51.             //在结果加上适当的小数点    52.             if (m_dInp

8、ut.ToString().Contains("."))    53.                 result.Text = m_dInput.ToString();    54.             else   55.                 result.Text = m_dInput.ToString() + ".";    56.         }   57.   58.         #region 数字单击事件    59.    60.         private void number_Click(object sen

9、der, RoutedEventArgs e)    61.         {    62.             newNumber();    63.             //确定是哪个数字被点击    64.             int inputNumber = Convert.ToInt32(sender.ToString().Substring(32, 1));    65.             try   66.             {    67.                 if (m_dInput >= 0)    6

10、8.                 {    69.                     if (m_bIsFloat)    70.                         m_dInput += (decimal)Math.Pow(10, -++m_iPlaces) * inputNumber;    //求 inputNumber 乘 10 的 -N 次方    71.                     else   72.                         m_dInput = m_dInput * 10 + inputNumber;

11、   73.                 }    74.                 else   75.                 {    76.                     if (m_bIsFloat)    77.                         m_dInput -= (decimal)Math.Pow(10, -++m_iPlaces) * inputNumber;    //求 inputNumber 乘 10 的 -N 次方    78.                     else   79.   

12、                      m_dInput = m_dInput * 10 - inputNumber;    80.                 }    81.             }    82.             catch (OverflowException)    83.             {    84.                 MessageBox.Show("输入的数超过范围,请重新输入", "错误");    85.                 buttonCE_Click(sender, e);

13、   86.             }    87.             updateInput();    88.         }    89.    90.         //数字0的处理与其他不同    91.         private void number0_Click(object sender, RoutedEventArgs e)    92.         {    93.             if (m_bNewInt)    94.             {    95.                 m

14、dInput = 0;    96.                 m_iPlaces = 0;    97.                 if (m_bNewFloat)    98.                 {    99.                     m_bIsFloat = true;    100.                     m_bNewFloat = false;    101.                     result.Text = "0.";    102.                 }  

15、  103.                 else   104.                     m_bIsFloat = false;    105.                 m_bNewInt = false;    106.             }    107.             try   108.             {    109.                 if (m_bIsFloat)    110.                 {    111.                     ++m

16、iPlaces;    112.                     result.Text += "0";    113.                 }    114.                 else   115.                 {    116.                     m_dInput *= 10;    117.                     updateInput();    118.                 }    119.             }    120.  

17、           catch (OverflowException)    121.             {    122.                 MessageBox.Show("输入的数超过范围,请重新输入", "错误");    123.                 buttonCE_Click(sender, e);    124.             }    125.         }   126.   127.         #endregion    128.    129.         //即将输入新的数

18、   130.         private void newNumber()    131.         {    132.             if (m_bNewInt)    133.             {    134.                 m_dInput = 0;    135.                 m_iPlaces = 0;    136.                 if (m_bNewFloat)    137.                     m_bNewFloat = false;  

19、  138.                 else   139.                     m_bIsFloat = false;    140.                 m_bNewInt = false;    141.             }    142.         }   143.   144.         #region 操作按钮的单击事件    145.    146.         //清空按钮被单击,清空当前输入数据    147.         private void buttonCE_C

20、lick(object sender, RoutedEventArgs e)    148.         {    149.             m_bIsFloat = false;    150.             m_bNewFloat = false;    151.             m_bNewInt = false;    152.             m_dInput = 0;    153.             m_iPlaces = 0;    154.             updateInput();   

21、155.         }    156.    157.         //退位操作    158.         private void buttonBackspace_Click(object sender, RoutedEventArgs e)    159.         {    160.             //不需要新的数    161.             m_bNewInt = false;    162.    163.             //判断是否为小数并退一位    164.             if 

22、m_bIsFloat)    165.                 --m_iPlaces;    166.    167.             if (m_dInput.ToString().Length == 1)    168.             {    169.                 if (m_bIsFloat)    170.                 {    171.                     if (m_iPlaces == -1)    172.                     {   

23、 173.                         m_bIsFloat = false;    174.                         m_iPlaces = 0;    175.                     }    176.                     else   177.                     {    178.                         result.Text = result.Text.Substring(0, result.Text.Length - 1);   

24、 179.                         m_dInput = Convert.ToDecimal(result.Text);    180.                         return;     //结束方法    181.                     }    182.                 }    183.                 else   184.                     m_dInput = 0;    185.             }    186.      

25、       else   187.             {    188.                 if (m_bIsFloat)    189.                 {    190.                     if (m_iPlaces == -1)    191.                     {    192.                         m_bIsFloat = false;    193.                         m_iPlaces = 0;    194.

26、                     }    195.                     else   196.                     {    197.                         result.Text = result.Text.Substring(0, result.Text.Length - 1);    198.                         m_dInput = Convert.ToDecimal(result.Text);    199.                         re

27、turn;    200.                     }    201.                 }    202.                 else   203.                     m_dInput = Convert.ToDecimal(m_dInput.ToString().Substring(0, m_dInput.ToString().Length - 1));    204.             }    205.             updateInput();    206.        

28、 }    207.    208.         //负号按钮被单击事件    209.         private void minus_Click(object sender, RoutedEventArgs e)    210.         {    211.             m_dInput = -m_dInput;    212.             updateInput();    213.         }    214.    215.         //小数点按钮被单击事件    216.         

29、private void dot_Click(object sender, RoutedEventArgs e)    217.         {    218.             if (m_bNewInt)    219.                 m_bNewFloat = true;    220.             m_bIsFloat = true;    221.         }    222.    223.         //重启按钮被单击事件,计算器重启    224.         private void bu

30、ttonC_Click(object sender, RoutedEventArgs e)    225.         {    226.             m_ctrCounter.Clear();    227.             buttonCE_Click(sender, e);    228.         }    229.    230.         //开方按钮被单击事件    231.         private void operatorSqrt_Click(object sender, RoutedEventArgs 

31、e)    232.         {    233.             m_dInput = (decimal)Math.Sqrt((double)m_dInput);    234.             updateInput();    235.             m_bNewInt = true;    236.         }    237.    238.         //除法按钮被单击事件    239.         private void operatorDivide_Click(object sender, Ro

32、utedEventArgs e)    240.         {    241.             m_dInput = m_ctrCounter.Calculate(m_dInput, Counter.Operators.Divide);    242.             updateInput();    243.             m_bNewInt = true;        244.         }    245.    246.         //乘法按钮被单击事件    247.         private voi

33、d operatorMultiply_Click(object sender, RoutedEventArgs e)    248.         {    249.             m_dInput = m_ctrCounter.Calculate(m_dInput, Counter.Operators.Multiply);    250.             updateInput();    251.             m_bNewInt = true;        252.         }    253.    254.      

34、   //减法按钮被单击事件    255.         private void operatorSubtract_Click(object sender, RoutedEventArgs e)    256.         {    257.             m_dInput = m_ctrCounter.Calculate(m_dInput, Counter.Operators.Subtract);    258.             updateInput();    259.             m_bNewInt = true;      

35、  260.         }    261.    262.         //加法按钮被单击事件    263.         private void operatorAdd_Click(object sender, RoutedEventArgs e)    264.         {    265.             m_dInput = m_ctrCounter.Calculate(m_dInput, Counter.Operators.Add);    266.             updateInput();    267.  

36、           m_bNewInt = true;        268.         }    269.    270.         //倒数按钮被单击事件    271.         private void operatorReciprocal_Click(object sender, RoutedEventArgs e)    272.         {    273.             if (m_dInput == 0)    274.             {    275.                 Messag

37、eBox.Show("操作有误","错误");    276.                 buttonC_Click(sender, e);    277.                 return;    278.             }    279.             //是否为小数    280.             if (m_dInput.ToString().Contains('.'))    281.             {    282.                 m_dInput = 1 / m_dInput;

38、   283.                 Counter.ChangeToInteger(ref m_dInput);    284.             }    285.             else   286.                 m_dInput = 1 / m_dInput;    287.             updateInput();    288.             m_bNewInt = true;        289.         }    290.    291.         //等号按

39、钮被单击事件    292.         private void operatorAssign_Click(object sender, RoutedEventArgs e)    293.         {    294.             m_dInput = m_ctrCounter.Calculate(m_dInput, Counter.Operators.Assign);    295.             updateInput();    296.             m_bNewInt = true;    //需要新的数    2

40、97.         }   298.   299.         #endregion    300.    301.         //打开关于对话框    302.         private void openAboutBox(object sender, RoutedEventArgs e)    303.         {    304.             m_abtAboutBox = new AboutBox1();    305.             m_abtAboutBox.ShowDialog();    306

41、         }    307.     }    308. }      计算器类 Code: 1. using System;    2. using System.Collections.Generic;    3. using System.Linq;    4. using System.Text;    5. using System.Windows;    6.    7. /************************************************/   8. /*******         本程序供学

42、习交流         *******/   9. /*******         作者:  张骏南            *******/   10. /*******         最后修改时间             *******/   11. /*******       2011年3月10日21:03:17      *******/   12. /************************************************/   13.    14. namespace 计算器    15. {    16.     pub

43、lic class Counter    17.     {    18.         private decimal m_dCacheOfAdd = 0;          //缓存,存储被加数    19.         private decimal m_dCacheOfMultiply = 0;     //缓存,存储被乘数    20.         private decimal m_dResult = 0;              //显示结果    21.         private int m_iAddNumber = 0;         

44、      //加法次数    22.         private int m_iSubtractNumber = 0;          //减法次数    23.         private int m_iMultiplyNumber = 0;          //乘法次数    24.         private int m_iDivideNumber = 0;            //除法次数    25.    26.         //操作符,分别是:加、减、乘、除、赋值    27.         public enum Operato

45、rs : byte { Add, Subtract, Multiply, Divide, Assign };    28.    29.         //将精度很高的小数修改为其对应相等的整数    30.         public static void ChangeToInteger(ref decimal value)    31.         {    32.             decimal floor = decimal.Floor(value);    33.             decimal ceiling = decimal.C

46、eiling(value);    34.             //差值小于10e-6则视为相等    35.             if (value - floor <= (decimal)10e-6)    36.                 value = floor;    37.             if (ceiling - value <= (decimal)10e-6)    38.                 value = ceiling;    39.         }   40.   41.         #reg

47、ion 基本算法    42.    43.         //加法运算    44.         private decimal operatorAdd(decimal input)    45.         {    46.             m_dCacheOfAdd += input;    47.             return m_dCacheOfAdd;    48.         }    49.    50.         //乘法运算    51.         private decimal operat

48、orMultiply(decimal input)    52.         {    53.             m_dCacheOfMultiply *= input;    54.             ChangeToInteger(ref m_dCacheOfMultiply);    55.             return m_dCacheOfMultiply;    56.         }   57.   58.         #endregion   59.   60.         #region 传入五种新运算符调

49、用的方法    61.    62.         //新运算符为加法,在此方法中判断并调用之前操作符的对应运算,并在此方法中更新结果    63.         private void add(decimal input)    64.         {    65.             //存储中间计算值    66.             decimal result = 0;     67.             //判断之前是否有乘号    68.             if (m_iMultiplyNumber > 0)   

50、69.             {    70.                 result += operatorMultiply(input);    71.                 input = 0;      // input 被使用后,不能再被使用,这里很重要!    72.                 --m_iMultiplyNumber;    73.             }    74.             //判断之前是否有除号    75.             if (m_iDivideNumber > 0)   

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服