西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发C#.NET → visual studio 2010开发计算器心得

visual studio 2010开发计算器心得

相关软件相关文章发表评论 来源:西西整理时间:2013/3/22 22:51:19字体大小:A-A+

作者:西西点击:1次评论:0次标签: 计算器

  • 类型:行业软件大小:1.1M语言:中文 评分:5.0
  • 标签:
立即下载

首先打开Microsoft Visual Studio 2010,把语言配置成C#.net。创建出一个Windows 窗体应用程序。然后再自动生成的Form1面板上面拖拽出一个textbox空间,接着拖拽出相应的按钮控件,不再一一赘述。每一个控件都要添加事件。textbox控件的单击事件可以设置为  textBox1.Text = ""; 即一旦点击输入框,输入框的文本就自动置为“”(没有任何内容),      其中textbox1是 textbox控件的名字,可以在属性框里面设定。

接下来对按钮1,2,3,4,5,6,7,8,9,0,.,*,+,-,/,等符号添加事件。每个按钮都要添加事件,但是可以是同一个事件。比如为button1添加 private void button1_Click(object sender, EventArgs e)事件后,接着对其余的控件添加事件,点开事件的下拉框,选择button1_Click事件,由于好多按钮的单击事件都相似,所以只在一个事件函数里面处理即可。但是下面让我学会了第一点重要的东西,object sender中的sender虽然作为事件源的参数,但是sender是object类型的,所以先要Button buttonsender = (Button)sender;

if (sender != 等)            

{                

textBox1.Text += buttonsender.Text;

  }            

else            

{

}

在else的部分,就要对文本textBox1.Text进行分析。本计算器不带有括号,所以每个运算符两边必定是数字。接下来就要把用户输入的数字部分摘选出来,当然,选择使用Split函数了。但是只知道这个函数能以一种字符进行分割。经过反复百度才了解了这个函数有多种重载,多种用法。其中一种是string string1 = textBox1.Text; char[] A=new char[4]{'+','-','/','*'}; string2=string1 .Split(A);其中string2是一个字符数组,相当于C中指针的指针。字符数组A包含了四种运算符。string2=string1.Split(A)把string1用A中的字符分割出来,函数原型是 string【】 Split(char【】)返回的是一个指向字符串数组的引用。

接下来要做的是运算符,textBox1.Text中含有的是加减乘除和零到九小数点。所以把不是运算符的字符全删除即可。很明显的想到了替换函数 string  replace(char,char)用第二种字符替换前一种字符。               
                fuhao = string1.Replace("1","");
                string fuhao1 = fuhao.Replace("2", "");
                fuhao = fuhao1.Replace("3", "");
                fuhao1 = fuhao.Replace("4", "");
                fuhao = fuhao1.Replace("5", "");
                fuhao1 = fuhao.Replace("6", "");
                fuhao = fuhao1.Replace("7", "");
                fuhao1 = fuhao.Replace("8", "");
                fuhao = fuhao1.Replace("9", "");
                fuhao1 = fuhao.Replace("0", "");
                fuhao = fuhao1.Replace(".", "");
接下来就进行计算。计算的思想是:加减乘除运算分为两层,第一层是乘除运算,第二层是加减运算。通过mark来标记运算符字符串里面的乘除运算符,加减运算符是否还有。先做所有的乘除计算,在做剩余的加减运算。 int i,mark=1;
                while (mark == 1&&fuhao!="")
                {
                    mark = 0;
                    for (i=0;i < fuhao.Length;i++)
                    {
                        if (fuhao[i] == '*')
                        {
                            chengfa(i);
                            mark = 1;
                            break;
                        }
                        else if (fuhao[i] == '/')
                        {
                            chufa(i);
                            mark = 1;
                            break;
                        }                        
                    }
                   
                }
这个循环处理了所有的乘除运算符。

 mark = 1;
                while (mark == 1&&fuhao!="")
                {
                    mark = 0;
                    for (i = 0; i < fuhao.Length; i++)
                    {
                        if (fuhao[i] == '+')
                        {
                           jiafa(i);
                            mark = 1;
                            break;
                        }
                        else if (fuhao[i] == '-')
                        {
                            jianfa(i);
                            mark = 1;
                            break;
                        }
                    }
                }

这个处理了所有的加减运算符

public string[] DeleteString(string[] list, int posation)        

{             List<string> l = new List<string>();            

for (int i = 0; i < list.Length; i++)            

{               

  if (i != posation)                 {                     l.Add(list[i]);                 }           

  }                            

return l.ToArray();        

}        

public string[] AddString(string[] list, string key,int location)        

{            

List<string> l = new List<string>();            

for (int i = 0; i < list.Length; i++)            

{                 if (i == location )                 {                     l.Add(key);                                  }                

  l.Add(list[i]);            

}               

  return l.ToArray();        

}    

public     void chengfa(int i)        

{            

double a = Convert.ToDouble(string2[i]);       

      double b = Convert.ToDouble(string2[i + 1]);            

double c=a*b;           

  string2 = AddString(string2, Convert.ToString(c), i);        

     string2 = DeleteString(string2, i + 1);            

string2 = DeleteString(string2, i + 1);            

fuhao = fuhao.Remove(i, 1);        

}    

public void chufa(int i)        

{            

double a = Convert.ToDouble(string2[i]);            

double b = Convert.ToDouble(string2[i + 1]);            

double c = a / b;            

string2 = AddString(string2, Convert.ToString(c), i);            

string2 = DeleteString(string2, i + 1);            

string2 = DeleteString(string2, i + 1);            

fuhao = fuhao.Remove(i, 1);        

}    

public void jiafa(int i)        

{            

double a = Convert.ToDouble(string2[i]);            

double b = Convert.ToDouble(string2[i + 1]);            

double c = a + b;            

string2 = AddString(string2, Convert.ToString(c), i);            

string2 = DeleteString(string2, i + 1);            

string2 = DeleteString(string2, i + 1);            

fuhao = fuhao.Remove(i, 1);        

}    

public void jianfa(int i)        

{            

double a = Convert.ToDouble(string2[i]);            

double b = Convert.ToDouble(string2[i + 1]);            

double c = a - b;            

string2 = AddString(string2, Convert.ToString(c), i);            

string2 = DeleteString(string2, i + 1);            

string2 = DeleteString(string2, i + 1);            

fuhao = fuhao.Remove(i, 1);        

}

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)