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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c#课程设计报告王文旭.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c#课程设计报告王文旭.docx

1、c#课程设计报告王文旭 计 算 机 科 学 与 应 用 系C#课程设计题 目: 简易计算器 专 业: 计算机科学以技术 学 号: 111006228 姓 名: 王文旭 指导老师: 李向 完成日期: 2012-12-25 目录1 前言 32 需求分析 32.1要求 32.2任务 32.3运行环境 32.4开发工具 33 概要设计与详细设计 43.1系统流程图 44 窗体相关控件设置 55 源代码分析 66 具体功能分析 117 程序的优缺点分析 138 课程设计报告总结 139 个人贡献 141) 前言编写一个window窗口程序来进行简单的数据计算。通过一个窗口类来进行数据的输入和计算,并将需

2、要得到的数据显示出来以供操作者使用。本程序能进行相应的键盘操作和鼠标操作。并且还能在显示的标签内进行逐个删除和全部清空。2) 需求分析2.1要求(1)用C#语言实现window可视化窗口程序设计;(2) 操作简便并能用键盘输入数据和简单运算符;(3)能够形象画出模块图且与程序流程图吻合;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。2.2任务(1)分析设计计算机的相关功能与操作;(2)构造数学模型,画出所有模块的流程图;(3)定义一个window窗口类,进行添加各种相应的控件,并进行相应控件属性的修改和设置,及调整;(4)编写代码;(5)程序分析

3、与调试,输入需要操作的相关数据和运算符进行操作。2.3运行环境(1)Microsoft Visual studio 2005 编程环境;2.4开发工具( 1 ) C#语言 ( 2) Microsoft Visual studio 2005 编程环境3)概要设计与详细设计3.1系统流程图如图3.1所示。 4) window窗体相关控件设置1. 创建一个window应用程序,并把其项目名为Exp3; 2. 把窗体命名为MainForm,Text属性设置为“简易计算器”;KeyPreview属性设置为True,使该窗体能够使用KeyPresss命令,从键盘上完成数据和简单运算符的输入输出;Maxim

4、izeBox属性设置为False,是窗体不能够最大化从而保持良好的视觉效果;BackColor设置为ControlDarkDark,使按钮能够清晰反存出来;ShowIcon设置为False,使窗体左上角的小图标不能显示出来;FormBorderStyle (不能鼠标改变窗口大小)属性为 FixedDialog ;StartPosition属性设置为CenterScreen,使窗体出现在屏幕正中央。 3. 在窗体上放置一个Label,,命名为lblResult,将AutoSize属性设置为False,使标签Label的大小显示出来;将TextAlign属性设置为MiddleRight,使在标签中

5、显示的内容靠右显示出来;BorderStyle属性设置为FixedSingle,使标签的轮廓和边缘显示出来;BackColor属性设置为White,将标签的背景设置为白色与Text中显示的黑色字和窗体的黑色背景形成对比。 4. 在窗体上放置31Button,并按照图4-1所示简易计算器对各控件命名,修改相应Text属性;lblResultButton1111Button2Button3btnPIbtnPSTbtnBACKbtnUPTODOWNbtnSqrtbtnAsinbtnAcosbtnAtanbtnSINbtnCOSbtnTANbtnSqrtbtnDivbtn9btn8btn7btnMul

6、btn6btn5btn4btnSubbtn3btn2btn1btnDotbtnAddbtnEqualbtn05)源代码的分析1.建一个窗体类,public partial class MainForm : Form;2.窗体中的数据成员为, const double = 3.1415926535898; /定义的常量 double num=0; /定义的普通成员,完成数据间转换,充当媒介 int mb = 0; /定义的普通成员,用来临时存储字符串长度 char oper = 0; /用来判断是什么运算符 double num1 = 0; /用来保存第一个操作数 double num2 = 0

7、; /用来保存第一个操作数 bool isSecond = false; /判断是第几个操作数 bool isDone = false; /用来判断是否进行“=”操作 bool open = false ; /用来判断计算器是否打开3.窗体中的方法成员, void setBtnFun(char c) /对输入字符进行相应反映的操作 if (char.IsDigit(c) /判断输入字符“c“是否为数据类型 if (isSecond | isDone) /判断是否为第二个数据成员或者是否进行“=”操作 lblResult.Text = ; /将标签设置为空 isSecond = false; /

8、设置第二个操作数已经完成 isDone = false; /设置为没有完成“=”处理 if (lblResult.Text != 0)/判断标签中没有零显示 string s = lblResult.Text + c.ToString();/将输入的字符合并到字符串中 lblResult.Text = s; /显示合并后的字符串 else if (lblResult.Text = 0 & c = 0) /判断标签中是0且新添加的字符 也为0; lblResult.Text = 0; /该种情况下,标签中只显示0; else if (lblResult.Text = 0 & c != 0)/判断

9、标签显示0且新添加的字符 不是0; lblResult.Text = c.ToString(); /该种情况下,将新添加的字符覆盖掉原来标签中的0; else if (c = + | c = - | c = * | c = /|c=) /判断输入的字符是否为运算符 num1 =double.Parse(lblResult.Text);/将标签中的字符串转为数字赋值给数字1 oper = c; /将字符c赋值给oper,以便后面进行判断 isSecond = true; /设置第二个数正在进行输入 else if (c = =) /判断字符c是否为“=” num2 = double.Parse(

10、lblResult.Text);/将标签中的字符串转为数字赋值给数字2 double result = 0; /添加一个double成员来存储结果 switch (oper) /判断字符(即判断运算符) case +: /求加 result = num1 + num2; break; case -: result = num1 - num2; /求减 break; case *: /求乘 if (num2!=0) result = num1 * num2; break; case /: /求除 result = num1 / num2; break; case : /求幂 result = M

11、ath.Pow(num1, num2); break; lblResult.Text = Convert .ToSingle ( result).ToString(); /将运算结果转 num1 = result; 化为字符串 isSecond = false; isDone = true; else if (c = .) if (lblResult.Text.IndexOf(.) = -1) /IndexOf 从左查找字符 判断是否 加过“.” lblResult.Text += .; 4.窗体中的事件成员,a) 该事件为数字09、.、+、-、*、/ 共用事件,通过用鼠标托引或Alt选择这些

12、项,然后单击它们共有事件中的Click事件完成;private void btnAdd_Click(object sender, EventArgs e) /所有数字键和运算符键的公共事件 if (open) setBtnFun(char.Parse(Button)sender).Text); b) 该事件为窗口的KeyPress事件,通过该事件可以调用键盘上的字符 private void MainForm_KeyPress(object sender, KeyPressEventArgs e) /键盘输入字符 if (open) setBtnFun(e.KeyChar); c) 该事件分别

13、为窗体的实现计算器打开ON和关闭OFF功能的事件;只有当计算机处于开机状态时计算器才能工作,用“0”标识计算器是否处于开机状态; private void button3_Click(object sender, EventArgs e) /打开计算器的功能 lblResult.Text = 0; /用“0”标识计算器是否处于开机状态 open = true; private void button1_Click(object sender, EventArgs e)/关闭计算器的功能 lblResult.Text = ; open = false ; d) 该事件为,将窗体中的“=”的Cli

14、ck事件; private void btnEqual_Click(object sender, EventArgs e) if (open) setBtnFun (char.Parse ( Button )sender).Text ); e) 该事件为,窗体中的“清除”事件的Click事件,用来完成显示条上的清屏; private void button2_Click(object sender, EventArgs e) if(open ) lblResult.Text = 0; f) 该事件为,对窗体上按钮的实现,通过传送“3.1415”的各个字符来完成对的调用和计算 private v

15、oid btnPI_Click(object sender, EventArgs e) /PI键设置,和实现 if (open) setBtnFun(3); setBtnFun(.); setBtnFun(1); setBtnFun(4); setBtnFun(1); setBtnFun(5); g) 通过该事件,调用void setBtnFun(char c)事件,来调用,完成XY的计算 private void btnMI_Click(object sender, EventArgs e) if (open) setBtnFun(); h) 该事件分别实现对sin、cos、tan按钮的实现

16、和计算,通过输入一个任意角度,可以通过其需求完成其相应的计算,如:输入角度30,调用sin功能,可以计算出sin30所对应的值0.5并显示出来; sin功能函数的实现 : private void btnSin_Click(object sender, EventArgs e) if (open) num = / 180 * (double.Parse(lblResult.Text);/将角度转化为弧度 lblResult.Text = Convert.ToSingle (Math.Sin(num).ToString (); num=0; /调用Math的成员函数Sin()并转化为字符串 co

17、s功能函数的实现 : private void btnCOS_Click(object sender, EventArgs e) if (open) num = / 180 * (double.Parse(lblResult.Text); /将角度转化为弧度 lblResult.Text = Convert.ToSingle (Math.Cos (num).ToString (); num=0; /调用Math的成员函数Sin()并转化为字符串 tan功能函数的实现 : private void btnTAN_Click(object sender, EventArgs e) if (open

18、) num = / 180 * (double.Parse(lblResult.Text);/将角度转化为弧度 lblResult.Text = Convert.ToSingle (Math.Tan(num).ToString (); num=0; /调用Math的成员函数Sin()并转化为字符串 i) 该事件分别实现对arcsin、arccos、arctan按钮的实现和计算,通过输入一个-1,1的数字,可以通过其需求完成其相应的计算,如:输入角度0.5,调用Acos功能,可以计算出Acos0.5所对应的角度60并显示出来;Asin功能函数的实现 : private void btnAsin_

19、Click(object sender, EventArgs e) if (open) /将显示条上的字符串转化为数字,调用Math的函数成员Asin()得到相应的弧度并转化为角度 num = double.Parse(lblResult.Text); lblResult.Text = Convert.ToSingle(Math.Asin(num) * 180 / ).ToString(); num = 0; Acos功能函数的实现 : private void btnAcos_Click(object sender, EventArgs e) if (open) /将显示条上的字符串转化为数

20、字,调用Math的函数成员Acos()得到相应的弧度并转化为角度 num =double.Parse(lblResult.Text); lblResult.Text = Convert.ToSingle(Math.Acos(num) * 180 / ).ToString(); num = 0; Atan功能函数的实现 : private void btnAtan_Click(object sender, EventArgs e) if (open) /将显示条上的字符串转化为数字,调用Math的函数成员Atan()得到相应的弧度并转化为角度 num = double.Parse(lblResu

21、lt.Text); lblResult.Text = Convert.ToSingle(Math.Atan(num) * 180 / ).ToString(); num = 0; j) 该事件为实现对输入的数据进行开方,即求平方根,通过调用Math的Sqrt功能函数来完成计算,并将结果显示到显示条上; private void btnSqrt_Click(object sender, EventArgs e) if (open) /判断电脑是否处于开机状态 num = double.Parse(lblResult.Text); if (num = 0) lblResult.Text = Con

22、vert.ToString(Math.Sqrt(num);/调用Math的Sqrt功能函数来 num = 0; 完成计算; k) 该事件为按钮的Click事件,用来完成对显示条的后退删除,即用来删除因失误而显示的字符,即回退;实现该功能String的Length和Remove功能函数; private void btnBACK_Click(object sender, EventArgs e) if (open) mb = lblResult.Text.Length; /调用String的Length函数来求显示条上字符串的长度 if (mb != 1) /调用String的Remove函数来

23、删除显示条上最后一个字符 lblResult.Text = lblResult.Text.Remove(mb - 1); else lblResult.Text = 0; num = 0; 6)功能具体分析a) 可以完成简单数据的+,-,*, / 的运算如:输入一个值5,可以键盘输入一个数字5或者单击窗体上的5按钮即可在显示条显示数字5(但要明白这里的5是以字符串的形式表示出来的并不是我们真正意义上的数字5)但在程序中通过数据类型转变即可再将其转化为数字double类型,然后将其赋值给num1;其次,确认需要进行的运算,同理,输入运算符如*(这里的乘号并未在显示条中显示,而是在内部进行的运算)

24、;再次,同理,输入另一数字,并转化数据类型,复制予num2;最后,系统内部,执行switch语句判断运算符,选择相对应的运算语句进行运算result=num1*num2,将运算的结果result转化为字符串类型,使其在显示上显示出来;b) 可以完成三角函数与反三角函数的运算 简单运算:首先输入数字,输入方法同a)中所说(三角函数进行运算,输入的为角度;而对于反三角函数其输入的值为三角函数其对应的值在-1,1之内);其次单击确定需要运算的运算符,即可求的其相对应的数值三角函数求得的值和反三角函数所求得的角度; 混合运算: 三角函数运算,首先输入一个角度如a1,求出其对应的三角函数值如sin a1

25、 然后输入运算符,如+,其次输入另一个角度a2,求出其对应的三角函数值如cos a2,最后单击=求结果,即可得到结果:sin a1+cos a2。c) 可以求一个数的倒数,但是前提除数不能为零,否者为无穷大,没有意义;d) 可以求一个数的幂,如xy,先输入底数x,然后单击求幂的按钮,最后输入指数,单击=按钮即可求得xy的结果并在显示条上显示出需要求得的结果;e) 可以求一个数的百分数,这个很简单,输入%号前的数字,单击求百分比按钮即可其相对应的数值;f) 可以求一个数的平方根(但前提是被开根的数值必须大于等于零),输入数据,单击求根按钮即可求得其平方根,并在显示条上显示出来;g) 可以清屏,可

26、以逐个删除,可以控制计算器是否处于开机关机状态。7)程序的优缺点分析 优点: 1. 可以控制计算器是否处于开机关机状态。通过以数字0判断计算器是否处于开机状态,还能有助于一些数据的输入如0.234,直接从小数点输入即可,方便快捷,一举多得; 2. 可以键盘输入数据,和简单的加,减,乘,除运算符,以及“=”运算符,还可以通过窗口上的按钮输入; 3. 拥有逐个删除字符的功能,可以使操作者因一些失误而导致的数据快速更正过来,还可以直接使用“清除”按钮对显示条进行清屏,方便操作者使用 4. 有良好的人机交流画面,方便操作者使用 5. 源代码中利用,多个button共用一个Click事件,减少了源代码的

27、长度,是编程更加简便快捷,这种思想需要掌握和吸收、消化; 6. 计算器中运算符比较多,都是一些常用的,使使用者能够使用的范围不至于太狭小,增广了计算机使用的次数,受到更多人的欢迎。 缺点: 1.不能按混合运算从左到右的顺序进行运算,必须人工按四则运算的顺序进行逐个运算如1*2+3*4=14,必须先计算1*2,在计算3*4,最后再将2+12=14计算出来,这样计算起来比较麻烦,是使用不快捷,不简便。 2.不能使除数默认第一次所使用过的数据,如第一次计算6/3=2,如果再单击“=”运算符,不能继续让得到的结果除以3.相反的计算其中的变程使其除数默认为2,导致2/2=1而不是2/3=0.666666

28、6667 3.在使用的时候不能输入负数;8)课程设计报告总结通过对这次数据结构的设计,在指导老师的悉心教导下,我学到了很多。如:通过本次实践掌握了数据类型之间的转换;学会掌握了窗体控件的的使用和各种属性的意义;学会了运用简单快捷的表达式实现程序逻辑;学会了逻辑运算符和关系运算在程序中的应用;学会了在程序中如何表达混合式;本次实践,虽然实现简易计算器比较简易,但也学会了很多知识,如通过将一些简单的按键功能封装在SetBtnFun()方法之内,并传递一个字符参数以区别实用的是哪一个功能。如 +,-,*,/, 的封装。更好的是通过本次实践,展开了自己的联想,扩展了自己的思路,使自己的思维方式更加灵活

29、快捷!其次,通过本次实践我也找到了自己的一些不足和缺点,如,不能牢记各种属性的意思,易弄混,其次不能够使自己的作品完美也是有一点小小的遗憾!不过,通过本次实践,我也学会了尊重别人创作思路,学会积极吸收优良的部分进行完善!必竟,横看成岭侧成峰,远近高低各不同。要学会而牢记孔夫子的话“三人行,必有我师焉,则其善者而从之,其不善者而改之。”从另一个侧面,我也认识了编程的伟大,在这个领域,可以随便设计自己想要的东西,也可以说在这里,成就感不言而喻!c#是一种比c语言用起来更方便的语言环境,能够自动匹配想要表达的字符。降低了编程所需要的时间!9)个人贡献: 分析实践问题构造数学模型,编撰源代码中的SetBtnFun()函数,和公共事件的Click事件的构思,及其他大部分事件的构思和撰写,以及窗体的设置。本次实践完全是个人所完成,还协作帮助其他同学完成其他部分。评语: C#课程设计评分标准题 目: 简易计算器

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1