首页 计算器设计文档

计算器设计文档

举报
开通vip

计算器设计文档计算器设计文档 本科生课程设计 2009 5 独 创 性 声 明 本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。 除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的 研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确 的说明并表示了谢意。 签名: 年 月 日 授 权 声 明 本人完全了解许昌学院有关保留、使用本科生毕业论文(设计)的规定,即:有权保 留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许...

计算器设计文档
计算器 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 文档 本科生课程设计 2009 5 独 创 性 声 明 本人郑重声明:所呈交的毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 (设计)是本人在指导老师指导下取得的研究成果。 除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的 研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确 的 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 并表示了谢意。 签名: 年 月 日 授 权 声 明 本人完全了解许昌学院有关保留、使用本科生毕业论文(设计)的规定,即:有权保 留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计) 被查阅和借阅。本人授权许昌学院可以将毕业论文(设计)的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。 本人论文(设计)中有原创性数据需要保密的部分为: 。 签名: 年 月 日 指导教师签名: 年 月 日 摘 要 简单的计算器是一种能实现加、减、乘、除、开方、幂、对数、倒数、三角函数等基 本数学运算的工具。这些计算功能,用C#语言编写实现。该计算器大大的降低了数字计算的难度且提高了计算的准确度和精确度。该计算器使用简单和操作方便,对广大中小学生 的学习有巨大帮助作用,也对在职人员的工作有帮助作用。 在计算器模块的设计中,从操作角度出发,充分考虑使用者,使该计算器成为使用者 的助手,解决生活、学习中常见的计算问题。 关键词:知识点;计算器;C# ABSTRACT The simple calculator is one kind can realize adds, reduces, while, eliminates, the root, the power, the logarithm, the reciprocal, the trigonometrical function and so on the basic mathematics operation tool.These computation function, compiles the realization with the C# language.This calculator big reduced the digital computation difficulty also enhanced the computation accuracy and the precision.This calculator use simple and ease of operation, has the huge help function to the general elementary and middle school students' study, also a little helps the function to in-service staff's work. This calculator system function is complete.In the calculator module design, embarks from the operation angle, considers the user fully, causes this calculator to become on user's palm the assistant, in the solution life study the common estimation problem. Key words: computer; C# ............................................................ 1 1.1 研究背景及动机 ...................................................... 1 1.2 系统简介 ............................................................ 1 1.2系统开发方法 ......................................................... 1 .......................................................... 4 2.1功能设计 ............................................................. 4 2.2 设计目标 ............................................................ 4 2.2.1 系统功能简述 ................................................... 4 2.2.2 系统设计用例图 .......................................... 5 2.2.3 控件说明 .............................................. 5 2.3 系统设计思想 ........................................................ 7 ..................................................... 8 3.1 关键问题及解决 ...................................................... 8 3.2 主程序的设计 ........................................................ 8 3.2.1 按键的设计 ..................................................... 8 3.2.2 算法的设计 ..................................................... 9 3.2.3 界面设计 ...................................................... 10 3.2.4算法流程图 .....................................................11 ......................................................... 13 4.1 系统实现环境和编程语言 ............................................. 13 4.2 系统设计流程 ....................................................... 13 .................................................. 15 6.1测试目的 ............................................................ 15 6.2测试过程 ............................................................ 15 .................................................................... 17 ................................................................. 18 ..................................................................... 19 ..................................................................... 26 第1章 引 言 1.1 当前计算机操作系统windows 占据了大半江山,然而windows系统自带的计算器让人实在不敢恭维,界面上的好多按钮非专业人士很少知道是什么意思,它们的功能操纵都不 了解。甚至有时候可能按错某个按键导致计算结果与正确的结果相差甚远。本着简化操作, 方便大家的目的我们设计了这款简单的计算器。 此款简单的计算器能实现加、减、乘、除、开方、幂、对数、倒数、三角函数等基本 数学运算。这些功能的实现,用C#语言编写。该计算器大大的降低了数字计算的难度且提 高了计算的准确度和精确度。界面清晰,让人一目了然。该计算器使用简单和操作方便, 对广大中小学生的学习有巨大帮助作用,也方便了非专业人士在日常生活中的计算操作, 也对在职人员的工作有点帮助作用。 在计算器模块的设计中,从操作角度出发,充分考虑使用者,使该计算器成为使用者 的掌上助手,解决生活学习中常见的计算问题。 注:本文档中红色字体为提示作用,为某一部分代码或功能的作用。 1.2 本程序主要有加、减、乘、除、对数、幂指数、三角函数、常用数几个模块。 其中加、减、乘、除是根据用户需求分别实现两个数的加、减、乘、除并将计算结果 显示在显示文本框中。对数是根据需求可以实现不同数的ln和log (以十为底的对数)的对 数;幂指数实现包括常用的几种如:倒数、平方数、立方数、x的y次幂;三角函数是指对数取sin、cos、tan得到三角函数结果或者参与到其他的运算。这几种操作所得到的结果 都可以作为中间结果实现其他几种操作。 1.3 ? 软件开发方式:采用面向对象技术面向对象方法是利用抽象、封装等机制,借助 于类、对象、继承、传递等技术进行系统构造的软件开发方法。它的基本出发点和目标就 是使我们认识一个问题的过程和方法与我们分析、设计和实现一个系统的过程和方法尽可 能地一致,即使描述问题的“认知空间”和解决问题的“方法空间”在结构上尽可能一致,这 1 样面向对象方法较为自然地模拟了人类认识世界的方式,因而是一个很好的认知方法和思 维方法,也是一种很好的软件开发方法。 ? 开发语言:C# C# (C sharp)是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种 基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大 程度地开发利用计算与通讯领域。它采用了全新的可视化编程环境,为我们提供了一种方 便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言、当今世界上 最快的编辑器、最为领先的数据库技术。 C#具有以下优点: ? 全新的可视化编程环境 ? 完全的面向对象 ?高效率的编译器 ? 消除大量程序错误 ? 内置对组建对象模型(COM)和基于Windows的API的支持; 在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口.这些功能都是内置的.类似的,C#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能,使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C++特性,如手工的内存管理和指针运算。 这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C++代码的基础上编写程序,而不是彻底放弃那些代码。 无论是支持COM还是纯API的调用,都是为了使开发者在C#环境中直接拥有必要的强大功能。C#的众多优点使得它成为时下国际、国内流行的应用开发技术,对于用户来 说,选择学习C#开发技术是非常明智的一种选择。 ? 开发集成环境:Visual Studio 2005 Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。2005 年,微软发布了 Visual Studio 2005。这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。 总体来说是一个非常庞大的软件,甚至包含代码测试功能。Visual Studio.NET是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual 2 Studio.NET都可以提供近乎完美的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。Visual Studio.NET提供了包括设计、编码、编译调试、数据库联接操作等基本功能和基于开放架构的服务器组件开发平台、企业开发 工具和应用程序重新发布工具以及性能评测报告等高级功能。VisualStudio.NET 开发平台里面包含Visual Basic.NET、C#、Visual C++、ASP.NET 以及VisualFoxPro。 使用Visual Studio 2005, 专业开发人员能够: ?使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境 ?在统一的开发环境中,开发并调试多层次的服务器应用程序 ?使用集成的可视化数据库设计和报告工具,创建SQL Server 2005解决方案 3 2.1 ?计算器包含的功能有:加、减、乘、除、开方、幂、对数、倒数、PI、阶乘三角函数等。 ?计算器的屏显为TEXTBOX控件,左侧的数字、操作符按键为BUTTON控件,右侧的功能实现放在了四个GROUPBOX容器里面。“菜单”和“帮助”采用MenuStrip 控件,并使用ToolStripMenuItem 类设计了子菜单。具体设计在4.2中介绍。 ?输入的原始数据、运算中间数据和结果在顶部的TEXTBOX 控件显示 ?每种计算功能均为独立设计算法。 ?“C”按钮可以清除所有已输入的数据从头计算;“CE”按钮只清除当前输入的数据,重新 输入数据可以继续当前计算。 2.2 2.2.1 系统功能简述 本程序主要有加、减、乘、除、对数、幂指数、三角函数、常用数几个模块。 其中加、减、乘、除是根据用户需求分别实现两个数的加、减、乘、除并将计算结果 显示在显示文本框中。对数是根据需求可以实现不同数的ln和log (以十为底的对数)的对数;幂指数实现包括常用的几种如:倒数、平方数、立方数、x的y次幂;三角函数是指对数取sin、cos、tan得到三角函数结果或者参与到其他的运算。这几种操作所得到的结果 都可以作为中间结果实现其他几种操作。 下图2-1为程序运行时界面 图2-1 程序运行界面 4 2.2.2系统设计用例图 加 减 乘 ln log 除 1/x 对数 X^2 用户 幂指数 X^3 x^y 三角函数 常用数 x^y x^y PI x^y exp Sqrt n! 图2-2 用例图 2.2.3控件说明 程序用到的控件有TEXTBOX表(文本框)、GroupBox表(容器)、ToolStripMenuItem 表(菜单)、Button表(按钮)。 表2-3 TEXTBOX文本框表 控件名 TEXT属性显示 所属控件 备注 ShowBox 0 TextBox 结果显示框 表2-4 GroupBox 容器表 控件名 TEXT属性显示 所属控件 备注 gbox1 三角函数 GroupBox 容器 gbox2 常用数 GroupBox 容器 gbox3 幂指数 GroupBox 容器 gbox4 对数 GroupBox 容器 5 表2-5 ToolStripMenuItem 菜单表 控件名 TEXT属性 所属控件 备注 文件ToolStripMenuItem 文件 ToolStripMenuItem 菜单 退出ToolStripMenuItem 退出 ToolStripMenuItem 菜单 文件ToolStripMenuItem1 帮助 ToolStripMenuItem 菜单 帮助ToolStripMenuItem 帮助 ToolStripMenuItem菜单 关于程序关于程序 ToolStripMenuItem 菜单 ToolStripMenuItem 表2-6 Button 按钮表 控件名 TEXT属性显示 所属控件 备注 InBt0 0 Button 数字0按钮 InBt1 1 Button 1按钮 InBt2 2 Button 2按钮 InBt3 3 Button 3按钮 InBt4 4 Button 4按钮 InBt5 5 Button 5按钮 InBt6 6 Button 6按钮 InBt7 7 Button 7按钮 InBt8 8 Button 8按钮 InBt9 9 Button 9按钮 CEBt CE Button 重置按钮 CBt C Button 清零按钮 EquBt = Button 等号按钮 dotBt . Button 小数点按钮 AddBt + Button 加号按钮 SubBt - Button 减号按钮 MulBt * Button 乘号按钮 DivBt / Button 除号按钮 SinBt sin Button 正弦 CosBt Cos Button 余弦 TanBt tan Button 正切 ZFHBt +/- Button 正负号 SquareBt X^2 Button 平方数 6 PIBt PI Button PI XdsBt 1/x Button 倒数 SqrtBt Sqrt Button 算数平方根 CubeBt X^3 Button 立方数 ExpBt exp Button E的指定次幂 FNBt n! Button 阶乘 LnBt ln Button 常数e的对数 LogBt Log Button 以10为底的对数 XYcmbt x^y Button X的y次幂 2.3 一个系统设计的根本目的就是真正满足用户的实际需求,并采用先进、安全、成熟、 可靠的技术来实现。鉴于当今技术发展的趋势,结合本程序的实现难易程度和工作量,我 们采用了C#技术开发。本着既要保证系统的安全性、稳定性、高效性,又要为用户提供实 用、方便、高效的操作环境的设计思想,来进行分析设计的。 程序尽可能的方便使用者的使用,操纵简单。程序的安全性是指程序中所有数据的安 全性,它包括数据完整性、可用性、可控性等。数据完整性就是防止数据的丢失或者精度 的损失,对此本程序对数据尽可能的使用精度高的数据包括数据类型之间的转换。数据可 用性就是保证存在数据在不同的操作之间的连续使用。 7 第3章 关键问题解决 实现该系统的关键是对操作数的取得,相关数学运算的实现,等号的实现。因为程序 是简单的计算器,是对数字进行相关的操作的。而如何从按键上去的我们想要的操作数就 直接制约了程序的实现。当成功取得了我们想要的数之后,相关的操作的实现(如阶乘、 开平方、取对数等)也成为了一个问题。 另外对涉及到两个操作数等号的实现(这里主要是加、减、乘、除、取N次幂),单个操作数相关操作的实现在解决了取数的问题之后就可以迎刃而解,而涉及到两个操作数 等号的实现就有成为了一个问题。只有确定了编程语言、编程技术才能具体的实现以上功 能,所以采用的编程技术和编程语言对实现本系统非常关键。 对于操作数的取得声明了一个string _number,当点击一个按钮式就让_number等于按钮text的方法 并用showbox.text来接收,这样得到的字符串就要取得的数并且在显示 文本框中显示出来,只是类型是string,当点击数学操作符时将showbox.Text上字符串强制类型转换为double型并赋值给num1,这样就得到了我们要的double类型的数;相关数学运算的实现采用math类中的方法或者写一个函数并在相对应的运算操作调用这个函数, 这样就数学运算就成功实现了;至于等号的实现首先声明了一个int类型的_sign当点击相应的数学运算符时就给_sign赋一个对应的整型的值 ,当点击等号时根据_sign值的不同选择相对应的计算方法。 3.2 本系统主要采用Visual Studio 2005软件对计算器进行设计,利用数据库建表将所需要 的信息进行存储。系统选用C#程序设计语言来完成整个系统应用程序的编写。 3.2.1 按键的设计 (1)本计算器按键均使用BUTTON控件。1—9按键代码代码如下,以1为例,其余数字按键代码可参看附录 // InBt1 this.InBt1.Location = new System.Drawing.Point(10, 88); this.InBt1.Name = "InBt1"; this.InBt1.Size = new System.Drawing.Size(43, 33); this.InBt1.TabIndex = 0; 8 this.InBt1.Text = "1"; this.InBt1.UseVisualStyleBackColor = true; this.InBt1.Click += new System.EventHandler(this.InBt1_Click); (2)计算器操作按键以加法,开方为例,代码如下,其余可参看附录 // SqrtBt this.AddBt.Location = new System.Drawing.Point(157, 205); this.AddBt.Name = "AddBt"; this.AddBt.Size = new System.Drawing.Size(43, 33); this.AddBt.TabIndex = 15; this.AddBt.Text = "+"; this.AddBt.UseVisualStyleBackColor = true; this.AddBt.Click += new System.EventHandler(this.AddBt_Click); // // SqrtBt // this.SqrtBt.Location = new System.Drawing.Point(55, 16); this.SqrtBt.Name = "SqrtBt"; this.SqrtBt.Size = new System.Drawing.Size(43, 33); this.SqrtBt.TabIndex = 26; this.SqrtBt.Text = "Sqrt"; this.SqrtBt.UseVisualStyleBackColor = true; this.SqrtBt.Click += new System.EventHandler(this.SqrtBt_Click); 3.2.2 算法的设计 算法设计是计算器的核心,每种算法的实现都是一个基本函数的设计,其中还要考虑 异常处理,界面帮助等问题,本节主要介绍算法函数的实现,其他细节问题将在下一节中 说明。算法代码选择了几个实例,如下所示。其他算法代码可参看附录。 // X 的正弦值 private void SinBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text =Math.Sin((num1*Math.PI)/180).ToString(); } // PI 值 private void PIBt_Click(object sender, EventArgs e) { //num1 = double.Parse(ShowBox.Text); ShowBox.Text =Math.PI.ToString(); } //写的一个阶乘的函数 public double Factorial(double num) { if (num <= 1) return 1; 9 else return num * Factorial(num - 1); } //阶乘的实现 private void FNBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text =Factorial(num1).ToString(); //调用阶乘函数 } 虽然这是一个简单计算器,但也需要做到功能的全面性。因此添加了“文件”和“帮 助”按钮,加强软件功能,也丰富了界面元素。其中“文件”采用MenuStrip 控件,并加入下划列表运用ToolStripMenuItem类,用以“退出”。“帮助”按钮同样使用 ToolStripMenuItem类,加入两个下划选项,第一个选项为“帮助”,意为加入使用说明 书,因为本软件有专一的使用说明介绍,就不再添加链接。第二个选项为“关于程序”, 适时加入参与本次设计的人员信息,和联系方式,以方便使用者。代码抓图如下: private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } 计算器中的“帮助”选项和子菜单显示:如下图3-1所示 图3-1 帮助界面图 “帮助”功能的代码实现: private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show( 10 "此程序为一个课程作业! 详细的信息请参照随程序附加的程序说明书! ", "帮助",MessageBoxButtons.OK,MessageBoxIcon.Information); } 图3-2 帮助对话框图 “关于程序”功能代码如下: private void 关于程序ToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show( " 此程序是一个简单计算器,由刘风栓、马陆飞、吕曈共同完成! \n " + "若有疑问请联系我们,也可以给我们发Email \n Email: fsliugu@163.com "," 关于程序", MessageBoxButtons.OK, MessageBoxIcon.Information); } 图3-3 程序说明对话框图 3.2.4 算法流程图 如下图3-4所示。 涉及到等号的操作 11 Num1 等号 Num2 _sign 加法 减法 乘法 除法 N次 幂 对数、 阶乘 幂指数 Num1 Num1 False False Num1>0 错误提示 Num1!=0 错误提示 True True 计算 计算 图3-4 算法流程图 12 第4章 系统实现 4.1 ? 系统的开发语言 C# ? 开发工具 1. Visual Studio 2005 ? 操作系统 ? 硬件要求: CPU要求PIII以上,硬盘的可用空间要大于20G,内存在256M以上。 ? 软件要求: 安装了WindowsNT/2000及其以上版本的系统。 4.2 系统设计主要有五部分组成:需求分析、概要设计、详细设计、编写代码和系统测试。 如图4-1所示。 概要设计 详细设计 需求分析 编写代码 系统测试 图4-1 系统设计流程图 ? 需求分析 这次课程设计的题目是实现简单计算器的功能。实现功能:加,减,乘,除,开方, 倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。 ? 概要设计 计算器包含的功能有:加、减、乘、除、开方、幂、对数、倒数、PI、阶乘三角函数等。计算器的屏显为TEXTBOX控件,左侧的数字、操作符按键为BUTTON控件,右侧的功能实现放在了四个GROUPBOX容器里面。“菜单”和“帮助”采用MenuStrip 控件,并使用ToolStripMenuItem 类设计了子菜单。输入的原始数据、运算中间数据和结果在顶 部的TEXTBOX 控件显示。每种计算功能均为独立设计算法。“C”按钮可以清除所有已输入的数据从头计算;“CE”按钮只清除当前输入的数据,重新输入数据可以继续当前计算。 ? 详细设计 13 详细设计部分则是在概要设计的基础上对计算器的功能实现作出更为详细的介绍。主 要对各设计块中的各个类作出说明,包括对每个类如何在以后的程序设计中的定义作出介 绍,并作出相应的说明,并对各 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 作出介绍。 ? 编写代码 这一部分主要根据前面的详细设计内容用具体语言实现计算器系统,主要采用C#语言 实现,这一部分主要是代码实现,将前一阶段的设计思想实现,因为前面已经对该系统的 整体设计思路和整体框架作出了说明,并且在详细设计部分对每个设计块中的类如何实现 也已给出,所以在这一部分工作量也不是太大。 ? 系统测试 系统测试部分主要对前面已经实现的系统作出测试,看该系统是否符合系统设计要 求。并对一些特殊的数据进行测试,比如一些数的取值,看是否符合要求,在测试的基础 上,对发现的错误进行改正,使系统逐步得到完善。测试不是一朝一夕就能完成的,必须 在今后的使用过程中逐渐完善,并得到用户的反馈后对系统作出修改。 计算器系统主要采用了软件工程的设计思路,从需求分析、概要设计、详细设计、编 写代码直到系统测试都遵从软件工程的设计要求。 14 第5章 性能测试和分析 5.1 测试是软件设计中一个独立的、关键的阶段,也是保证软件质量的重要手段。为了发 现系统的错误,使系统更加完善,就必须进行测试。测试阶段的目标是为了验证各阶段所 完成的工作是否满足需求分析和详细设计要求,识别出期望的结果和真正结果之间的差 别,以便修正系统设计和代码实现中的潜在的错误,保证系统运行的正确性和功能完备性, 提高系统运行的性能。 5.2 ? 代码审查 人工测试源程序可以由编写程序本人非正式的进行,也可以由小组共同进行。后者称 为代码审查,它是一种非常有效的程序的验证技术,对于典型的程序来说,可以查出30% -70%逻辑错误和编码错误。 ?软件调试 在成功的测试之后,发现的是故障的表现,可以称为外部错误。对于发现的错误必须 进行诊断,找到其发生的原因和位置,然后即可改正,这就是调试的任务。如果知道错误 出现的原因和地点,改正工作通常比较简单。因此调试工作的重点是诊断,通常诊断约占 调试工作员的90%以上。准确的说,调试工作包括: ? 对错误进行定位并分析原因,即诊断; ? 对于错误部分重新编码以改正错误; ? 重新测试。 这里要求重新测试是因为对于一个错误的改正有可能引入新的错误,因此对于软件的 任何修改必须重新进行确认。作者强调软件测试应该由他人进行,而调试要求对程序结构 和算法逻辑十分熟悉,因此调试工作员好由程序设计者本人进行。 基本的算法实现将不再抓图,主要调试异常现象,以验证异常处理能否实现,代码抓 图如下: //除法的异常处理 if (_sign == 3) { 15 if (num2 != 0) { num1 = num1 / num2; ShowBox.Text = num1.ToString(); } else { MessageBox.Show("对不起,除数不能为 0 !", "EquBt", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 除数为0时的异常处理如下图4-2: 图4-2 异常处理图1 //倒数异常处理 private void XdsBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); double res; if (num1 != 0) { res = 1 / num1; ShowBox.Text = res.ToString(); } else { MessageBox.Show("对不起,倒数 X 不能为 0","EquBt",MessageBoxButtons.OK,MessageBoxIcon.Error); } 导数为0时的异常处理如下图4-3: 图4-3 异常处理图2 16 结 束 语 本次毕业设计是在老师的严格要求下,按照正规的软件开发流程进行设计开发的。从 最初的调查分析到具体的功能设计;从模块需求分析到算法的设计;从界面的选择到具体 的程序实现,都完全遵循软件开发的流程。使我们从中学到很多,对软件的开发流程有了 较清楚的认识,也是对大四做毕业设计的一次演练。 通过本次课程设计,加强了理论与实际应用的结合。对软件文档的编写规则,调试测 试的方法都有了基本的掌握,与此同时,在编程方面也学习了不少东西。本系统的功能还 不是太强大,这需要我们去不断地完善,及时发现系统的漏洞并尽快修复,修改我们设计 中不合理的部分从而使系统的实用性增强。 设计这个计算器主要是参考操作系统中自带的计算器,由于我们水平和时间的限制, 不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀 设计,但现在大多数的设计都是代码直接生成的计算器,不能体现出C#开发工具的特点, 所以只在控件事件中可以吸收其优点及方法。 17 参 考 文 献 [1]葛昊晗,汤涌涛,李强. C#大学教程[M].北京:清华大学出版社,2006.9 [2]张庆华. ASP.NET2.0完全自学手册[M].北京:机械工业出版社, 2007.6 18 附 录 ? 按钮设置代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace calculator { public partial class Form1 : Form { public int _sign; //取得操作符 public double num1; //取得第一个数 public double num2; //取得第二个数 private string _number; //从按键上得到要进行计算的数 public Form1() { InitializeComponent(); } //清零按钮的设置 private void CBt_Click(object sender, EventArgs e) { ShowBox.Text ="0."; _number = null; } //重置 private void CEBt_Click(object sender, EventArgs e) { ShowBox.Text ="0."; _number = null; } //按钮1 private void InBt1_Click(object sender, EventArgs e) { _number += this.InBt1.Text; ShowBox.Text =_number; 19 } //按钮2 private void InBt2_Click(object sender, EventArgs e) { _number += this.InBt2.Text; ShowBox.Text = _number; } //按钮3 private void InBt3_Click(object sender, EventArgs e) { _number += this.InBt3.Text; ShowBox.Text = _number; } //按钮4 private void InBt4_Click(object sender, EventArgs e) { _number += this.InBt4.Text; ShowBox.Text = _number; } //按钮5 private void InBt5_Click(object sender, EventArgs e) { _number += this.InBt5.Text; ShowBox.Text = _number; } //按钮6 private void InBt6_Click(object sender, EventArgs e) { _number += this.InBt6.Text; ShowBox.Text = _number; } //按钮7 private void InBt7_Click(object sender, EventArgs e) { _number += this.InBt7.Text; ShowBox.Text = _number; } //按钮8 private void InBt8_Click(object sender, EventArgs e) { _number += this.InBt8.Text; ShowBox.Text = _number; } //按钮9 private void InBt9_Click(object sender, EventArgs e) { 20 _number += this.InBt9.Text; ShowBox.Text = _number; } //按钮0 private void InBt0_Click(object sender, EventArgs e) { _number += this.InBt0.Text; ShowBox.Text = _number; } //按钮小数点的设置 private void dotBt_Click(object sender, EventArgs e) { _number += this.dotBt.Text; ShowBox.Text = _number; } //按钮正负号 private void ZFHBt_Click(object sender, EventArgs e) { num1=double.Parse("-"+ShowBox.Text); ShowBox.Text=num1.ToString(); _number = null; } 2. 算法设计代码: //操作add private void AddBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); _sign = 0; ShowBox.Text =null; _number = null; } //操作sub private void SubBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); _sign = 1; ShowBox.Text = null; _number = null; } //操作multiple private void MulBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); _sign = 2; ShowBox.Text = null; _number = null; 21 } //操作除 private void divBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); _sign = 3; ShowBox.Text = null; _number = null; } //等号的实现 private void EquBt_Click(object sender, EventArgs e) { num2 =double.Parse(_number); //加法的实现 if (_sign ==0) { num1 += num2; ShowBox.Text =num1.ToString(); } //减法的实现 if (_sign == 1) { num1 = num1 - num2; ShowBox.Text =num1.ToString(); } //乘法的实现 if (_sign == 2) { num1 =num1 * num2; ShowBox.Text = num1.ToString(); } //除法的实现 if (_sign == 3) { if (num2 != 0) { num1 = num1 / num2; ShowBox.Text = num1.ToString(); } else { MessageBox.Show("对不起,除数不能为 0 ! ","EquBt",MessageBoxButtons.OK,MessageBoxIcon.Error); } } //指定数字的指定次幂 22 if (_sign == 4) { num1 = Math.Pow(num1,num2); ShowBox.Text = num1.ToString(); } } //倒数 private void XdsBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); double res; if (num1 != 0) { res = 1 / num1; ShowBox.Text = res.ToString(); } else { MessageBox.Show("对不起,倒数 X 不能为 0 ! ","EquBt",MessageBoxButtons.OK,MessageBoxIcon.Error); } } //平方 private void SquareBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = (num1 * num1).ToString(); } // X 的立方 private void CubeBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = (num1 * num1 * num1).ToString(); } //算数平方根 private void SqrtBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Sqrt(num1).ToString() ; } // X 的正弦值 private void SinBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text =Math.Sin((num1*Math.PI)/180).ToString(); 23 } // X 的余弦值 private void CosBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Cos((num1 * Math.PI) / 180).ToString(); } // X 的正切值 private void TanBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Tan((num1 * Math.PI) / 180).ToString(); } // PI 值 private void PIBt_Click(object sender, EventArgs e) { ShowBox.Text =Math.PI.ToString(); } //写的一个阶乘的函数 public double Factorial(double num) { if (num <= 1) return 1; else return num * Factorial(num - 1); } //阶乘的实现 private void FNBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text =Factorial(num1).ToString(); //调用阶乘函数 } //Exp private void ExpBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Exp(num1).ToString(); } // ln 的实现 private void LnBt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Log(num1).ToString(); } // log10 的实现 private void LogBt_Click(object sender, EventArgs e) 24 { num1 = double.Parse(ShowBox.Text); ShowBox.Text = Math.Log10(num1).ToString(); } // X 的 Y 次幂 private void XYcmbt_Click(object sender, EventArgs e) { num1 = double.Parse(ShowBox.Text); _sign = 4; ShowBox.Text = null; _number = null; } 3.界面设置代码: //退出 private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } //帮助 private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show( "此程序为一个课程作业! 详细的信息请参照随程序附加的程序说明书! ", "帮助",MessageBoxButtons.OK,MessageBoxIcon.Information); } private void 关于程序ToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show( " 此程序是一个简单计算器,由刘风栓、马陆飞、吕曈共同完成! \n " + "若有疑问请联系我们,也可以给我们发Email \n Email: fsliugu@163.com ", "关于程序", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } 25 致 谢 经过将近一个学期的软件工程学习,我们终于有了收获,设计出了一款计算机系统, 虽然它稍嫌稚嫩,但却融入了徐老师的悉心帮助和我们的心血,只要有所付出,就会有收 获,我们对此深信不疑。 首先要感谢我们的任课老师徐尽老师,在徐老师的精心授课和指导之下,使我们的设 计有了明确的方向。徐老师身为软件教研组组长,认真授课,事必躬亲,整个设计过程中 都给予了我们宝贵的建议。他认真负责的工作态度,严谨的治学精神和渊博的专业知识, 都使我们受益良多。无论是在理论上还是在实践中,都给了我们建设性的帮助,使我们在 理论和动手能力上双项提高,这也是徐老师的独到授课方式,在学完这门课后,让我们实 现了理论与实践的双赢。这将是我们今后的工作和学习的一笔财富,在此向徐老师致以诚 挚的谢意和崇高的敬意。 其次要感谢我们的组员,由于他们积极的帮助和努力,我们这个小团队共同克服了许 多困难完成了此次课程设计。 26
本文档为【计算器设计文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321635
暂无简介~
格式:doc
大小:198KB
软件:Word
页数:41
分类:互联网
上传时间:2017-09-20
浏览量:65