VB-计算器-课程设计_第1页
VB-计算器-课程设计_第2页
VB-计算器-课程设计_第3页
VB-计算器-课程设计_第4页
VB-计算器-课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华东交通大学VB课程设计报告VB课程设计(论文)任务书电子版:1503284681扣扣 机电学 12物流 专业 2 班 一、课程设计(论文)题目 : 计算器 二、课程设计(论文)工作自 2013 年 06 月 17 日起至 2013 年 06 月 23 日止 三、课程设计(论文) 地点: 计算中心 8#601 四、课程设计(论文)内容要求:1. 本课程设计的目的(1)进一步巩固和加深对“VB程序设计”课程基本知识的理解和掌握,了解VB语言在项目开发中的应用。(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。(3)通

2、过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力。 2. 课程设计的任务及要求(1) 基本要求:1) 对系统功能进行需求分析;2) 使用Visual basic开发环境进行程序开发;3) 提出系统的设计方案;4) 编写源程序代码并进行调试。(2) 创新要求在基本要求达到后,可进行创新设计。(3) 课程设计报告撰写及装订要求课程设计报告的撰写要求表述简明,图表准确。报告按如下内容和顺序用A4纸进行打印并装订成册。1) 封面采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。2) 设计任务书3) 评阅书4) 目录5) 正文6) 主要参考文献(4) 课程设计评分标准

3、: 1) 达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;2) 能正确回答设计的中老师所提问题,可增加10分;3) 课程设计报告书写规范整齐,可增加10分;4) 心得体会认真总结,可增加10分;5) 程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。(5) 课程设计进度安排:1) 准备阶段(6学时):选择设计题目、了解设计目的要求、查阅相关资料。2) 程序模块设计分析阶段(8学时):程序总体设计、详细设计。3) 代码编写调试阶段(10学时):程序模块代码编写、调试、测试。4) 撰写论文阶段(6学时):总结课程设计任务和设计内容,撰写

4、课程设计论文。(6)课程设计题目具体要求:设计要求:设计一个“计算器”本题目要求编制一个“计算器”程序,不但具有家、减、乘、除等简单功能,还要求包括常用数学函数的功能,并且可以进行存储、清零等操作。 “计算器”(如图1)要求包含的功能有:加、减、乘、除、存储、显示存储结果、存储器清零,以及计算正弦、余弦、正切、余切、反正弦、反余弦、反正切、反余切、求自然对数、求以10为底的对数、求阶乘等功能。 图1 要求计算器上数字09为一个控件数组,加、减、乘、除为一个控件数组,存储(XM)、存储显示(RM)、存储相加(M+)为一个控件数组,计算功能框中所有的功能按钮(如sin 、cos、Ln及n!等)为一

5、个控件数组 输入的原始数据、运算的中间结果及最终结果都显示在窗口顶部的同一个文本框中。 能用系统内部函数的计算功能尽量采用系统函数,没有相应系统函数的计算功能要定义独立的函数过程。 对于三角函数,其输入的角度单位为度;对于反三角函数,输出的结果单位也为度,要求当输入的单位或数值不符合题意时,程序能及时地在窗口底部的信息窗口中提示或用消息框提示(如反正弦函数原始数据的范围为-1,1,若用户输入的数据不在此范围,则程序能显示“数据超出反正闲的数值范围,请重新输入!”(如图2),自动将文本框中的数据清除,并使文本框获得焦点,等待用户重新输入)。 图2 “XM”按钮可将当前显示的数值保存到寄存器中,如

6、果存储器中已有数据,则被覆盖。“RM”按钮可以调出寄存器中的数据,并可参与到当前进行的计算中。“M+”按钮可以将当前显示的数据和寄存器当前保存的数据相加后保存到寄存器中。每按一次“-”按钮可以删除当前数据的最后一位。“C”按钮可以清除所有已输入的数据从头计算;“CE”按钮只清除当前输入的数据,重新输入数据可以继续当前计算。学生签名: 2013年 06月 日课程设计(论文)评阅意见序号项 目等级优秀良好中等及格不及格1课程设计态度评价 2出勤情况评价3任务难度评价4工作量饱满评价5设计中创新性评价6论文书写规范化评价综合评定等级评阅人 职称 2013年 月 日 目录一:任务概述.1二:系统总体设

7、计方案.2三:系统的调试.4四:源程序代码及必要注释6五:运行结果及分析.15六:心得体会17参考文献一、 任务概述1. 设计任务:编制一个计算机程序,使其不仅能够拥有简单的加减乘除运算,还具有常用数学函数功能,使其具备科学计算器的大部分功能。2. 程序启动 启动程序会看见黄色背景色,有36个命令按钮和一个文本框构成,文本框呈浅蓝色按下OFF按钮可关闭程序。该计算器具有记忆储存功能(X M)以及储存相加(M+)功能。当存储器中数不为零时会在Text框中显示M,否则M消失。 对于输入的数据不符合相对应的运算法则时,电脑会自动报错(数据超出*的数值范围,请重新输入!),此时应从新输入数据。 符号+

8、-是正负的切换,按一下就为负,再按一次又转为正。 对于更多的内容后面章节会提及。3. 任务目的检验自己学期内的学习效果和自习能力,更好地掌握VB编程技术。二、 系统总体设计方案1. 构思流程图:准备题目的要求代码的简洁性知识点开始结束调试程序并作修改控件数组设计函数运算和进制转换基本运算 图212. 各属性值的变换:文本框和窗体颜色在“BackColor”中改变,分别如图2-2和2-3 ,其中,文本框中的Locked改为true使其不能人工输入,此时Text为只读!文本框颜色改为浅蓝色,窗体的颜色改为黄色 图2-2 图2-3 三、 系统的调试1、关于函数运算和进制转换的属性及属性值 对象名称属

9、性属性值命令按钮Commond2(0)CaptionSin命令按钮Commond2(1)CaptionCos命令按钮Commond2(2)CaptionTan命令按钮Commond2(3)CaptionCot命令按钮Commond2(4)CaptionArcsin命令按钮Commond2(5)CaptionArctan命令按钮Commond2(6)CaptionArccos命令按钮Commond2(7)Captionn!命令按钮Commond2(8)CaptionSec命令按钮Commond2(9)CaptionArccot命令按钮Commond2(10)CaptionLog命令按钮Commo

10、nd2(11)CaptionLn命令按钮Commond5(0)CaptionXM命令按钮Commond5(1)Caption命令按钮Commond5(2)CaptionCE命令按钮Commond5(3)CaptionC命令按钮Commond5(4)CaptionM+命令按钮Commond5(5)CaptionRM2 、运算有关的属性及其属性值对象名称属性属性值窗体Form1Caption计算器文本框Text1text空Lockedtrue命令按钮Commond3(09)Caption09命令按钮Commond4(03)Caption+,-,命令按钮Commond4(8)Caption+/-命令

11、按钮Commond4(7)Caption.命令按钮Commond4(4)Caption=四、 程序源代码及必要注释Public ang As DoublePublic CalKey As StringDim b As IntegerDim a As IntegerDim c As DoubleDim reg As DoubleDim cnumber As DoubleDim redo As BooleanDim dflag As IntegerDim i As IntegerDim opnre As IntegerDim prev As DoubleDim oflag As IntegerDi

12、m ind As IntegerPrivate Sub Command2_Click(Index As Integer)Select Case Index Case 0 Text1.Text = Str(Sin(ang * Val(Text1.Text) Case 1 If Val(Text1.Text) 0 Then Text1.Text = Str(Cos(ang * Val(Text1.Text) Else MsgBox 数据超出余弦的数值范围,请重新输入! , 16, calc End If Case 2 If (Cos(Val(Text1.Text) 0 Then tan中的sin不

13、能为0 Text1.Text = Str(Sin(ang * Val(Text1.Text) / Cos(ang * Val(Text1.Text) Else MsgBox 数据超出正切的数值范围,请重新输入! , 16, calc End If Case 3 If (Sin(Val(Text1.Text) 0 Then Text1.Text = Str(Cos(ang * Val(Text1.Text) / Sin(ang * Val(Text1.Text) Else MsgBox 数据超出余切的数值范围,请重新输入! , 16, calc End If Case 4 a = Val(Tex

14、t1.Text) If Val(Text1.Text) -1 And Val(Text1.Text) -1 And Val(Text1.Text) -1 And Val(Text1.Text) 0 Then Text1.Text = Str(Log(Val(Text1.Text) / Log(10) Else MsgBox 数据超出Log的数值范围,请重新输入! , 16, calc End If Case 11 If Val(Text1.Text) 0 Then Text1.Text = Str(Log(Val(Text1.Text) Else MsgBox 数据超出Ln的数值范围,请重新输

15、入! , 16, calc End If End SelectEnd SubPrivate Sub Command5_Click(Index As Integer)Select Case IndexCase 0 c = 0 Case 0 Text1.Text = Str(c) Case 2 c = Val(Text1.Text) Text1.Text = M pr = tCase 1 StrNum1 = Text1.Text If Len(StrNum1) 0 Then StrNum1 = Left(StrNum1, Len(StrNum1) - 1) Text1.Text = StrNum1

16、 Else Text1.Text = 0.0 End IfCase 2 redo = True result = 0 Text1.Text = 0 cnumber = 0 reg = 0 cdecimal = FalseCase 3Text1.Text = Text1.SetFocusCase 4c = Val(Text1.Text) Text1.Text = M pr = t Case 5 c = 0 Case 0 Text1.Text = Str(mem) Case 2 c = Val(Text1.Text) Text1.Text = M pr = t End SelectEnd SubP

17、rivate Sub Form_Load() dflag = 0 prev = 0 oflag = 0 ind = 0 opnre = 0 Clipboard.Clear ang = 3.14 / 180End SubFunction power(m As Double, n As Long) As Double Dim i As Double i = 1 If (n 0) Then While n 0 n = n - 1 i = i * m Wend power = i ElseIf (n = 0) Then power = 1 Else MsgBox (ILLEGAL. POWER LES

18、THAN 0.) End IfEnd FunctionFunction fact(num As Long) As Long If (num 12) Then MsgBox (VALUE TOO LARGE) fact = num Else re = 1 While (num 0) re = re * num num = num - 1 Wend fact = re End If End If End FunctionPrivate Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = Asc(.) Then i = 10 Command3_C

19、lick (i) Beep ElseIf KeyAscii = Asc(0) Then i = 0 Command3_Click (i) Beep ElseIf KeyAscii = Asc(1) Then i = 1 Command3_Click (i) Beep ElseIf KeyAsci3 = Asc(2) Then i = 2 Command3_Click (i) Beep ElseIf KeyAscii = Asc(3) Then i = 3 Command3_Click (i) Beep ElseIf KeyAscii = Asc(4) Then i = 4 Command3_C

20、lick (i) Beep ElseIf KeyAscii = Asc(5) Then i = 5 Command3_Click (i) Beep ElseIf KeyAscii = Asc(6) Then i = 6 Command3_Click (i) Beep ElseIf KeyAscii = Asc(7) Then i = 7 Command3_Click (i) Beep ElseIf KeyAscii = Asc(8) Then i = 8 Command3_Click (i) Beep ElseIf KeyAscii = Asc(9) Then i = 9 Command3_C

21、lick (i) Beep ElseIf KeyAscii = Asc(0) Then i = 0 Command3_Click (i) Beep ElseIf KeyAscii = Asc(+) Then i = 0 Command4_Click (i) Beep ElseIf KeyAscii = Asc(+) Then i = 0 Command4_Click (i) Beep ElseIf KeyAscii = Asc(-) Then i = 1 Command4_Click (i) Beep ElseIf KeyAscii = Asc() Then i = 2 Command4_Cl

22、ick (i) Beep ElseIf KeyAscii = Asc() Then i = 3 Command4_Click (i) Beep ElseIf KeyAscii = Asc(=) Then i = 4 Command4_Click (i) Beep ElseIf KeyAscii = Asc(c) Or KeyAscii = Asc(C) Then dflag = 0 prev = 0 oflag = 0 ind = 0 opnre = 0 Text1.Text = 0 Beep Beep ElseIf KeyAscii = Asc(d) Or KeyAscii = Asc(D)

23、 Then Text1.Text = 0 Beep End IfEnd SubPrivate Sub Command1_Click()Unload MeEnd SubPrivate Sub Command4_Click(Index As Integer) Dim n As Long Dim r As Long If opnre = 0 Or Index = 4 Then If ind = 0 Then prev = prev + Val(Text1.Text) ElseIf ind = 1 Then prev = prev - Val(Text1.Text) ElseIf ind = 6 Th

24、en prev = prev Mod Val(Text1.Text) ElseIf ind = 7 Then r = Fix(Val(Text1.Text) n = Fix(Val(prev) If (n r Or n = r) And n 0 And (r 0 Or r = 0) Then prev = fact(n) / (fact(n - r) Else MsgBox (ILLEGAL ENTRIES of N ,R ) End If ElseIf ind = 5 Then r = Fix(Val(Text1.Text) n = Fix(Val(prev) If (n r Or n =

25、r) And n 0 And (r 0 Or r = 0) Then prev = fact(n) / (fact(n - r) * fact(r) Else MsgBox (ILLEGAL ENTRIES of N ,R ) End If ElseIf ind = 8 Then If (Text1.Text = Or prev = 0) Then MsgBox (ILLEGAL. INVALIED ENTRIES) Else prev = (power(prev, Fix(Val(Text1.Text) End If ElseIf ind = 2 Then If Val(Text1.Text

26、) 0 Then prev = prev / Val(Text1.Text) Else MsgBox ( ILLEGAL DIVIDE 0 ) End If ElseIf ind = 3 Then prev = prev * Val(Text1.Text) End If Text1.Text = Str(prev) oflag = 0 opnre = 1 ind = Index dflag = 0 End If If Index = 8 Then If Text1 = Text1.Text Then Text1.Text = Val(Text1.Text) * -1 ElseIf Text1.

27、Text = - & Text1.Text Then Text1.Text = Val(Text1.Text) * -1 End If End IfEnd SubPrivate Sub Command3_Click(Index As Integer)If ind = 4 Then prev = 0 Text1.Text = ind = 0 End If opnre = 0 If oflag = 0 Then Text1.Text = End If oflag = 1 If Command3(Index).Caption . Then If Text1.Text 0 Then Text1.Tex

28、t = Text1.Text & Command3(Index).Caption Else Text1.Text = & Command3(Index).Caption End If Else If dflag = 0 Then Text1.Text = Text1.Text & . dflag = 1 Else MsgBox (ILLEGAL SAIRAM) End If End IfEnd Sub设计界面示意图:五、 运行结果及分析1、 运行窗口结果:下图为运行8866的结果下图为打开除运行状态的界面:下面两幅图为运行Log99的结果,其中Log为以10为底的对数2、程序分析及使用说明(1

29、).当点击OFF控件时,系统自动关闭(2).当运行Arcsin、Arccos时输入的范围超过【-1,1】,则系统自动报错,会如下图所显示:(3).当按下“”键后,原先文本框里的数字会从最后一个数字起慢慢删减。(4). 输入的数据不正确系统会自动报错六、心得体会1.对学习VB程序语言设计首先要有强大的兴趣和苦干的毅力。2.平时经常学习VB是很有必要的。3.VB这门课程很难因此要更加重视,因此在学习生活中要做到如下几点: (1)课前预习,认真听课并适当做些笔记,课后要认真复习消化所学内容,完成作业. (2)学习程序设计要注重理解一些重要的概念. VB程序设计本身并不复杂,翻开一本程序设计学习的书籍

30、,看到的无非就是变量,函数,条件语句,循环语句等概念.但要真正能进行程序设计,需要深入理解这些概念.因此,在 程序入门阶段还是应该重视概念的学习 (3)程序设计入门阶段要经常自己动手抄写或编写一些小程序,亲自动手进行程序设计是创造性思维应用的体现,是培养逻辑思维的好方法.因此一定要多动手编写程序,而且要从小程序开发开始,逐渐提高写程序的能力. (4)多看别人设计好的程序代码,包括教材上的例题程序.在读懂别人程序后,要想他为什么这么设计能不能将程序修改完成更多的功能 则可以学到别人优秀的东西,帮助自己 提高自身水平.3. 学习VB这门课程的意义 VB编程可不是一项轻松的活,尤其是一个人开发制作软件时,那工作量就多了。没有一定的坐功、细心程度及耐性那是绝对做不到的。有时,把程序做完了需要调试运行,但是就是不能达到自已设计的效果和目的,那你得戴上放大镜找啊找啊,也许就是因为一个符号或一个字母,你就得花上个几个小时,半天,甚至更长。越是这样越不要灰心,应该放松心态,一点一滴的去查。只要有一颗永不退缩的心,我相信自己一定能找到问题所在,最后一定能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论