《C#计算器程序设计》课程设计报告

C#程序设计

课程设计报

(计算机学院)

题目: 计算器的开发与应用

班级:    网络XX班   

20##-20##学年度第二学期

目 录

1.   需求分析.... 1

1.1计算器应用软件的功能分析(二级标题,四号黑体)... 1

1.2计算器软件的功能图... 1

2.   界面设计.... 1

3.   功能实现.... 3

3.1计算数字现实的功能代码... 3

3.2小数点设置的功能代码... 3

3.3连续运算的功能代码... 3

3.4实现键盘控制的功能代码... 4

3.5删除的功能代码... 5

4.   设计总结.... 5

参考文献.... 6

计算器的开发与应用

摘要:计算器的产生和发展是建立在电子计算机基础之上的,现代社会很需要一个健全、高效率的计算器。为了提高自己的实践能力和将来开发一个更实用更全能更智能的计算器,以设计与实现计算器为课题。此次设计的计算器应用软件从visual studio 2012编程环境中开发,是一个简单的窗体应用程序,实现简单的计算器功能。以微软自带的计算器为模板,设计了简单易懂的计算器。这款计算器不仅实现了简单的四则运算的功能,还能连续运算,实现小键盘的操作,光标的转移。虽然这个简单的计算器只能实现这些功能,但是具有简洁的图文外观,即时准确的获得所需要要计算的结果,充分降低了数字计算器的难度和所需要的时间,对人们生活和学习具有有很大的帮助。

关键词:计算器;功能 ;界面;窗口;事件。

1. 需求分析 

通过对微软附件计算器软件进行调研、分析,研究,使用。我们了解到了作为一个计算器所应该有的一些简单功能和界面的排版,我们知道了怎样使编写的计算器程序向微软附件计算器靠拢。

1.1计算器应用软件的功能分析

计算器软件的主要功能是:

1)可以显示计算数字

2)可以进行加减乘除四则运算

3)可以实现键盘操控的功能

4)可以进行清零运算

5)可以进行退格键运算

6)可以进行连续计算

1.2计算器软件的功能图

根据以上需求分析,计算器软件功能如图1-1所示。

图1-1计算器功能图  

2. 界面设计

计算器软件界面设计采用一个窗口(form)、按钮控件和一个文本框控件组成,完成如下图2-1的计算器界面

界面中控件的属性设置如下表2-1

                     表2-1 属性设置

3. 功能实现

要实现需求分析中软件各功能,需要设计一些事件的功能代码。利用所需的代码,编写一些计算器的功能,使计算器更加灵活易懂。

3.1计算数字现实的功能代码

以数字“1”为例:(其余的数字同样如此)

当文本框显示为“0”,或flag(按过运算符号按钮后flag=1)后数字会替换当前数字,否则追加

 private void button1_Click(object sender, EventArgs e)

        {

 if (textBox1.Text == "0" || flag == 1) //替换

            {

                textBox1.Text = "1";

                flag = 0;

            }

            else                       //追加

            {textBox1.Text = textBox1.Text + "1"; }

  button17.Focus();    //焦距定于等号键,可使enter键用于等号运

 }  

3.2小数点设置的功能代码

文本框里最多显示一个小数点,利用IndexOf类来查找代码中小数点出现的次数,且当文本框显示为“0”,或flag(按过运算符号按钮后flag=1)后会用“0.”替换当前数字,否则追加

private void button12_Click(object sender, EventArgs e)

        {

            if (textBox1.Text.IndexOf(".") == -1) //得到的是这个字符串中字符“.”第一次出现的位置,如果没出现的话,得到的是-1,而且字符串的第一个位置是0。

            {  if (textBox1.Text == "0" || flag == 1)  //替换

                {

                    textBox1.Text = "0.";

                    flag = 0;

                }

                else

                {

                    textBox1.Text = textBox1.Text + ".";  //追加

                } }

            button17.Focus();  }

3.3连续运算的功能代码

以“+”号键为例:(同样如此,-,*,\,只需改变运算符ysf的取值)

  用yscs(运算次数)变量判断运算次数,次数为一次时,保存变量。次数为两次以上时,保存变量之后执行等号运算,并且连续运算,继续保存为第一个数,继续进行四则运算。

private void button13_Click(object sender, EventArgs e)    //加法运算

        {   flag = 1;

            dhcs = 0;            //(等号次数)

            yscs++;              // (运算次数)

            if (yscs == 1)

            {  num1 = Convert.ToDouble(textBox1.Text);//保存输入进去的第一个数  }

            if (yscs >= 2)

            {  num2 = Convert.ToDouble(textBox1.Text);//保存第二次运算符前的那个数

                switch (ysf)

                {

             case 1: textBox1.Text = (num1 + num2).ToString(); break;

             case 2: textBox1.Text = (num1 - num2).ToString(); break;

             case 3: textBox1.Text = (num1 * num2).ToString(); break;

             case 4: if (num2 == 0)

                        { MessageBox.Show("分母不能为“0”"); break; }

                        else

                        {textBox1.Text = (num1 / num2).ToString(); break;

}  } }

            ysf = 1;     //(运算符)

            num1 = Convert.ToDouble(textBox1.Text);//把第一个数与第二个数求和在保存到第一个数

            button17.Focus();   //(聚焦到等号按钮)}

3.4实现键盘控制的功能代码

Kepress事件按钮,功能是锁定键盘上,当你按下键盘上的按钮时就会被追踪记录。键盘控制事件keypress绑定在form上,keypreview必须为TRUE。将键盘敲击的char型转为string型,使用switch语句判断哪个键控制哪个按钮

private void Form1_Load(object sender, EventArgs e)

        {

            this.KeyPreview = true;//此语句可使keypress语句在窗口使用

            textBox1.Text = "0";   //初始化文本框

            button13.Focus();    //转移光标

        }

private void Form1_KeyPress(object sender, KeyPressEventArgs e)    //锁定到键盘上的数字和运算符

        {  switch (e.KeyChar.ToString())

            {  case "1": button1_Click(sender, e); break;

                case "2": button2_Click(sender, e); break;

                case "3": button3_Click(sender, e); break;

                case "4": button4_Click(sender, e); break;

                case "5": button5_Click(sender, e); break;

                case "6": button6_Click(sender, e); break;

                case "7": button7_Click(sender, e); break;

                case "8": button8_Click(sender, e); break;

                case "9": button9_Click(sender, e); break;

                case "0": button11_Click(sender, e); break;

                case ".": button12_Click(sender, e); break;

                case "+": button13_Click(sender, e); break;

                case "-": button14_Click(sender, e); break;

                case "*": button15_Click(sender, e); break;

                case "/": button16_Click(sender, e); break;

                case "=": button17_Click(sender, e); break;

                case "\b": button18_Click(sender, e); break; //退格键

                case "\r": button17_Click(sender, e); break; //回车键

            }  if (e.KeyChar == (char)Keys.Escape)

            { button10_Click(sender, e); } //键盘上的ESC清零键    }

3.5删除的功能代码

使用退格键功能每次字符长度就减少一个,当字符串长度减为0之后,文本框里显示为初始值0。

  private void button18_Click(object sender, EventArgs e)  //退格

        {

            string old = textBox1.Text;

            textBox1.Text = old.Substring(0, old.Length - 1);//字符串长度每次减一个

            if (Convert.ToDouble(textBox1.Text.Length - 1) < 0)//删完最后一个数字文本框初始化

            {

                textBox1.Text = "0";

            }

            button17.Focus();

        }

4. 设计总结 

在这次设计的过程中,我体会到要想开发一个软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。只有思想上清晰了,编程才有意义,否则就是白费力气。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。这次设计培养了我的细心和耐性,更树立了一种科学的态度。这对我以后的

工作和学习也有很大的帮助和指导作用。同时也深刻认识到了本身不存在很多不足之处,还需要不断地学习来充实完善自己,只有这样才能学有所成,求得更大的发展。 

设计的过程并没有想象的那样轻松,有时候一个小小的错误就要调试好久,但是调试成功后的喜悦感也是非常好的。设计的艰辛让我感觉到以前学习的太少,掌握的仅仅是皮毛,有时候非常的吃力。通过交流我也感觉到,无论什么方面的编程,学习过程是一样的,都要经过不断的实践积累,不是一蹴而就的。

参考文献

[1]  郭力子,visual c#程序设计应用教程[M].机械工程出版社

[2]  李兰友,杨晓光.Visual C# 程序设计 [M]. 北京: 清华大学出版社,北京交通大学出版社,2004.

相关推荐