科学计算器课程设计报告
vb科学计算器课程设计

vb科学计算器课程设计一、课程目标知识目标:1. 学生能理解并掌握VB编程环境中科学计算器的基本功能与操作。
2. 学生能运用VB编程语言实现加、减、乘、除等基本运算,并掌握科学计算器的扩展功能,如平方根、指数、对数等。
3. 学生能运用所学知识解决实际生活中的科学计算问题。
技能目标:1. 学生能够独立进行VB科学计算器的界面设计,编写程序代码实现计算功能。
2. 学生通过实际操作,提高编程解决问题的能力,培养逻辑思维和动手实践能力。
3. 学生学会使用调试工具,能够发现并修正程序中的错误,提高程序的稳定性。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,激发创新意识,提高自主学习的积极性。
2. 学生通过合作交流,培养团队协作能力和沟通能力,学会分享与互助。
3. 学生在解决问题的过程中,认识到编程在科学计算领域的重要作用,树立正确的价值观,增强社会责任感。
分析课程性质、学生特点和教学要求:本课程为VB科学计算器编程,结合学生年级特点,注重知识性与趣味性相结合,以培养学生编程兴趣和动手实践能力为主。
在教学过程中,需关注学生的个体差异,因材施教,鼓励学生积极参与,注重培养团队协作和沟通能力。
教学要求明确,以学生为主体,教师为主导,实现课程目标的具体学习成果。
二、教学内容1. VB科学计算器的基本概念与功能- 熟悉VB编程环境- 了解科学计算器的基本功能与操作2. VB编程基础- 变量、常量的定义与使用- 数据类型与运算符- 程序流程控制(顺序、选择、循环结构)3. 科学计算器功能实现- 基本运算(加、减、乘、除)- 扩展功能(平方根、指数、对数)- 界面设计与事件处理4. 程序调试与优化- 使用调试工具- 识别并修正程序错误- 提高程序稳定性与执行效率5. 实践项目与案例分析- 完成一个科学计算器项目- 分析并改进现有科学计算器程序教学安排与进度:第一周:熟悉VB编程环境,学习基本概念与功能第二周:学习VB编程基础,了解程序流程控制第三周:实现科学计算器基本运算功能第四周:完成扩展功能,进行界面设计与事件处理第五周:学习程序调试与优化,分析案例第六周:完成实践项目,进行成果展示与评价教学内容与教材关联:本章节教学内容与教材中相关章节紧密关联,涵盖了《VB程序设计》教材中第二章至第五章的主要内容,确保了教学内容的科学性和系统性。
计算器课程设计报告

计算器课程设计报告一、课程目标本节计算器课程设计以提升学生的数学计算能力、逻辑思维能力和实际应用能力为核心,结合三年级学生的认知特点和实际需求,制定以下课程目标:1. 知识目标:(1)学生能够掌握计算器的基本功能及操作方法;(2)学生能够运用计算器进行简单的四则运算,并理解相关数学概念;(3)学生能够运用计算器解决生活中的实际问题,提高数学应用能力。
2. 技能目标:(1)培养学生运用计算器进行快速、准确计算的能力;(2)培养学生运用计算器辅助解决数学问题的能力;(3)提高学生逻辑思维能力,培养学生独立思考和解决问题的能力。
3. 情感态度价值观目标:(1)激发学生对计算器的兴趣,培养学生主动探究新知的习惯;(2)培养学生合作交流、分享成果的团队精神;(3)培养学生将所学知识应用于实际生活的意识,增强学生的自信心和成就感。
本课程旨在通过计算器教学,使学生在掌握基本计算技能的同时,提高数学素养,培养实际应用能力,激发学生对数学学习的兴趣,为学生的终身学习打下坚实基础。
二、教学内容本节计算器课程依据课程目标,结合课本内容,选择以下教学材料和安排:1. 教学大纲:(1)计算器的基本功能介绍与操作方法;(2)使用计算器进行加、减、乘、除四则运算;(3)运用计算器解决实际问题。
2. 教学内容安排与进度:第一课时:认识计算器,了解计算器的基本功能和操作方法,包括开关机、清屏、数字键、运算符号键等。
第二课时:学习使用计算器进行加、减、乘、除四则运算,并通过练习巩固运算方法。
第三课时:运用计算器解决生活中的实际问题,如购物找零、计算面积等。
3. 教材章节及内容列举:(1)第三章《计算器与计算》:介绍计算器的基本功能、操作方法及四则运算;(2)第四章《计算器在实际应用中的作用》:举例说明计算器在生活中的应用,提高学生实际操作能力。
教学内容科学系统地组织,注重理论与实践相结合,使学生能够熟练掌握计算器的使用方法,并能在实际生活中运用计算器解决简单问题,提高学生的数学素养。
c课程设计计算器报告

c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
计算器课程设计报告....2

电子系统设计报告目录1.设计概况 (3)2..基本原理 (3)3.计算器基本功能与设计思路 (8)4.硬件电路设计 (9)5.硬件调试 (14)6.课程设计心得体会 (15)7.课程设计程序 (16)8.实验流程图 (26)9.参考文献 (26)一.设计概况本次设计是用单片机来设计的计算器。
该设计系统是以STC89C52为单片机,p0口和p2口共同辅助液晶1602的显示。
用74hc573和6264静态存储器做LED 显示接口芯片,P1口作为键盘输入端,并用双输入与门74ls00和六高压输出缓冲器/驱动器74ls07来辅助键盘输入电路,并通过键盘扫描来对输入数的控制。
计算器将完成“+、-、*、/ ”复位,清零等功能,并由LCD1602液晶显示输出。
二.基本原理1、软件:程序调试软:kell;电路仿真:protues;电路板制作软件:dxp;2、下面此次实验所用到为关于单片机89c51的的基本原理:STC89c51单片机引脚图如下:STC89c52单片机概述STC89c52是一个低功耗,高性能CMOS 8位单片机,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:40个引脚,8k的flash存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。
这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。
《软件设计基础(VB)》简单科学计算器课程设计报告书

河北联合大学 《软件设计基础(VB)》课程设计报告设计名称: 姓 名: 专业班级: 学 院: 设计时间: 设计地点:简易科学计算器学 号:指导教师评语:成绩:指导教师签字: 年月日目录1.课程设计目的 ··············································································32.课程设计任务与要求 ·····································································33.课程设计说明书 ···········································································44.课程设计成果 ············································································205.程序调试过程 ············································································236.设计问题的不足和改进方案 ··························································237.课程设计心得 ············································································248.附录 ························································································249.参考文献24《软件设计基础(VB)》课程设计报告第 3 页,共 26 页1.课程设计目的 《软件设计基础(VB)》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖 VB 的知识点,又接近工程实际需 要。
c简单计算器课程设计报告

c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
科学计算器设计报告(51单片机)

单片机课程设计报告(多功能计算器)班级:姓名:学号:指导老师:一、内容摘要利用89c51作为主控器设计一个四则运算的计算器。
首先通过在图书馆和网上查找有关设计计算器的资料,大概了解设计计算器需要哪几个模块,熟悉Keil 和Proteus 两个软件的用法,以及它们的联调,完成计算器的程序设计和仿真,然后就是进实验室进行计算器电路板的焊接,最后就是将程序下载到单片机芯片中,系统联调,直到得出结果。
二、设计内容及要求用单片机设计计算器,要求可以进行加、减、乘、除运算。
三、系统方案设计,画出系统框图四、画出完整的电路图,并说明电路的工作原理51系列单片机4*4键盘8位LED 显示6264 RAM 扩展复位电路晶振电路等系统原理框图电路图说明:(1)键盘的列扫描接单片机P2口的低4位,行扫描接单片机P1口的低4位;(2)数码管的段选通过单片机的P0口接74LS244来驱动,数码管的位选接单片机的P2口;(3)发光二极管电路用来说明电路是否上电;(4)晶振电路为单片机提供时钟频率;(5)复位电路为单片机提供复位信号。
计算器的功能实现:(1)此计算器适应于不大于八位整数的四则混合运算,若单个数大于八位或者结果大于八位(溢出)则显示“Chu cuo”。
(2)如果在还没有按数字之前按了一个符号键或者等号则显示“Chu cuo”。
(3)若接连按了几个运算符键,实际上进行的运算是最后一次按的运算键。
(4)可以显示负数、小数。
(5)此计算器不可实现连乘、连加、连减、连除。
四、软件仿真,根据系统硬件图编写系统程序并调试#include <reg52.h>#include <intrins.h>//循环左右移要用该头文件(-cror-(),-crol-())#define uchar unsigned char#define ulong unsigned longuchar array[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};uchar array1[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};uchar a;ulong num1=0,num2=0;sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit F1=PSW^1;//定义一个标志位,F0在头文件里已定义void displayljy(void);//声明"显示"子函数void inkeylove(void);//声明"判断按下的是什么键"子函数void iskeyyou(void);//声明"判断是否有键按下"子函数void bian1(void);//声明"将uchar型变量转化为ulong型变量"子函数void bian2(void);//声明"将ulong型变量转化为uchar型变量"子函数void jia(void);//声明"加运算"子函数void jian(void);//声明"减运算"子函数void cheng(void);//声明"乘运算"子函数void chu(void);//声明"除运算"子函数void error(void);//声明"出错显示"子函数void main(){uchar r7=0x00,i;while(1){displayljy();inkeylove();if(a!=0xff)//如果有键输入,继续往下执行,否则从新开始{if(a==0x0f) //如果输入的是"清除"键,将显示器清屏,同时清存放运算符号的单元 {r7=0x00;for(i=0;i<8;i++){array[i]=0x10;array1[i]=0x10;}}else if(a==0x0e)//如果输入的是"=",继续往下执行,否则从新开始{if(r7==0x0d)//如果r7中存放的是"+",则执行加运算{bian1();jia();bian2();}else if(r7==0x0c)//如果r7中存放的是"-",则执行减运算{bian1();jian();}else if(r7==0x0b)//如果r7中存放的是"*",则执行乘运算{bian1();cheng();bian2();}else if(r7==0x0a)//如果r7中存放的是"÷",则执行除运算{bian1();chu();}elseerror();//如果r7没有存进运算符,则转出错处理}else{if(r7!=0x00)//如果已按过运算键,往下执行,否则转else{if(a>0x09&&a<0x0e)//如果还按下运算键,则后按的取代前面按的r7=a;else if(array1[0]==0x10)//判断是不是输入加数(减数...)的第一个数 {for(i=0;i<8;i++)//是的话,将被加数(被减数...)存入array1中 array1[i]=array[i];for(i=0;i<8;i++)array[i]=0x10;for(i=7;i>0;i--)//array中存入加数(减数...)array[i]=array[i-1];array[0]=a;}else //不是输入加数(减数...)的第一个数{if(array[7]!=0x10)//如果加数(减数...)已是八位整数,则转出错处理 error();else{for(i=7;i>0;i--)//否则将加数左移array[i]=array[i-1];array[0]=a;}}}else//之前还没有运算键按下{if(a>0x09)//有运算键按下{if(array[0]==0x10)//但是在运算键按下之前没有输入被加数,则转出错error();elser7=a;//否则将运算键输入r7中保存}else if(array[7]!=0x10)//如果被加数已是八位整数,则转出错error();else //否则将被加数左移{for(i=7;i>0;i--)array[i]=array[i-1];array[0]=a;}}}}}}void bian1(void)//"将uchar型变量转化为ulong型变量"子函数{uchar i;for(i=7;i>0;i--){if(array[i]==0x10)array[i]=0x00;if(array1[i]==0x10)array1[i]=0x00;}num1=(ulong)array1[7]*10000000;num1+=(ulong)array1[6]*1000000;num1+=(ulong)array1[5]*100000;num1+=(ulong)array1[4]*10000;num1+=(ulong)array1[3]*1000;num1+=(ulong)array1[2]*100;num1+=(ulong)array1[1]*10;num1+=(ulong)array1[0];num2=(ulong)array[7]*10000000;num2+=(ulong)array[6]*1000000;num2+=(ulong)array[5]*100000;num2+=(ulong)array[4]*10000;num2+=(ulong)array[3]*1000;num2+=(ulong)array[2]*100;num2+=(ulong)array[1]*10;num2+=(ulong)array[0];}void bian2(void)//声明"将ulong型变量转化为uchar型变量"子函数{uchar i=7,F0=1;if(num1>99999999)error();else{array[7]=(uchar)(num1/10000000);array[6]=(uchar)(num1%10000000/1000000);array[5]=(uchar)(num1%1000000/100000);array[4]=(uchar)(num1%100000/10000);array[3]=(uchar)(num1%10000/1000);array[2]=(uchar)(num1%1000/100);array[1]=(uchar)(num1%100/10);array[0]=(uchar)(num1%10); while(i>0&&F0){if(array[i]==0x00){array[i]=0x10;i--;}elseF0=0;}}}void jia(void)//"加运算"子函数{num1+=num2;}void jian(void)//"减运算"子函数{uchar i;if(num1>num2){num1-=num2;bian2();}else if(num1==num2){for(i=1;i<8;i++)array[i]=0x10;array[0]=0x00;}else{num1=num2-num1;bian2();if(array[7]!=0x10)error();elsearray[7]=0x11;}}void cheng(void)////声明"乘运算"子函数{num1*=num2;}void chu(void)//"除运算"子函数{uchar i,j=0x00,k;double num3;num3=(double)(num1)/(double)(num2); num1=(ulong)(num3);num3-=num1;if(num3==0||num1>9999999)bian2();else{bian2();while(array[7]==0x10){j++;for(i=7;i>0;i--)array[i]=array[i-1];array[0]=0x10;}array[j]+=0x12;k=j-1;while(k>0){num3*=10;num2=(ulong)(num3);num3-=num2;array[k]=(uchar)(num2);k--;}array[0]=(uchar)(num3*10);while(array[0]==0x00){for(i=0;i<7;i++)array[i]=array[i+1];array[7]=0x10;}}}void error(void)//"出错显示"子函数(出错显示"Chu cuo.") {array[7]=0x0c;array[6]=0x1d;array[5]=0x1f;array[4]=0x10;array[3]=0x10;array[2]=0x1c;array[1]=0x1f;array[0]=0x1e;}void displayljy(void)//"显示"子函数{uchar array3[32]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71,0x00,0x40,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x58,0x74,0xdc,0x1c};uchar *p=array,count=0x80,i,time;F0=1;while(F0){i=*(p+7);P2=count;P0=array3[i];for(time=0xff;time>0x00;time--);p--;count=_cror_(count,1);if(count==0x80)F0=0;}}void iskeyyou(void)//"判断是否有键按下"子函数{P2=0x00;P1|=0x0f;a=P1;a|=0xf0;}void inkeylove(void)//"判断按下的是什么键"子函数{uchar b=0xfe,c=0x00,d;uchar array4[16]={0x07,0x08,0x04,0x05,0x01,0x02,0x0f,0x00, 0x09,0x0a,0x06,0x0b,0x03,0x0c,0x0e,0x0d}; F1=0;iskeyyou();if(a!=0xff){displayljy();displayljy();iskeyyou();if(a!=0xff){F0=1;while(F0){P2=b;P1|=0x0f;if(P10==0){a=0x00;F1=1;}else if(P11==0){a=0x02;F1=1;}else if(P12==0){a=0x04;F1=1;}else if(P13==0){a=0x06;F1=1;}else{a=c;a%=4;if(a==0x01){a=0x07;c+=a;}elsec++;b=_crol_(b,1);if(b&0x10==0){F0=0;a=0xff;}}while(F1){a+=c;a=array4[a];d=a;while(a!=0xff){displayljy();iskeyyou();}a=d;F1=0;F0=0;}}}}}五、系统联调在我将计算器的电路板焊接好以后,我将程序下载到单片机芯片上面,再接上电源测试发现键盘上面只有几个按键有显示,开始我就怀疑是自己的焊接键盘的线时,出现了虚焊或者是焊错了的错误,我就写了一个程序让数码管上面显示“4321”这四个数字,下载进去后,发现没有错误,这就证明我的数码管那一块没有出现错误,由此推论,最有可能出现错误的就是键盘,由于自己当时并不清楚键盘的行列线,所以没有自己测量了,我去问老师,老师就说“实验室的键盘可能也有点问题”,于是他就给我们拿了几个他自己借来的键盘,然后手把手的教我们怎么测试行列线,我也很快就测出了其对应的行列线,但是一接上电源测试,还是有一行不能显示,最后在老师的提点下,是发现P1.0口始终接了高电平,从而导致无法显示,在老师的帮助下,最终我做出了结果。
科学计算器课程设计

徐州师范大学物电学院课程设计报告课程名称:计算机程序设计实训题目:科学计算器专业班级:电子科学与技术说明:1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指导并确认签字。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并填写成绩评定表。
3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
答辩后学生根据答辩情况填写答辩记录表。
4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设计的情况另行规定。
5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不及格处理。
6、课程设计完成后,由指导教师根据完成情况写出总结。
7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教师可根据本门课程设计的特点及内容做适当的调整。
指导教师签字:年月日目录摘要 (II)Abstract (II)1绪论 (1)1.1 背景、目的 (1)1.2 简易计算器的功能 (1)2 设计方案简述 (2)2.1 输入流程分析 (2)2.2 计算流程分析 (2)3 详细设计 (4)3.1 起始设计步骤 (4)3.1界面设计 (5)4 设计结果及分析 (10)4.1 测试设计结果 (10)4.2 设计分析 (10)5 总结 (12)参考文献 (13)附录程序代码 (14)摘要随着计算机网络通信技术、微电子技术的快速发展,作为21世纪的接班人,跟上时代的前进步伐,这就需要适应能够适应现实生活的节奏,现实生活中,很多时候要经行计算来处理一些事务,设计计算器可以帮助人们避免繁琐的计算,也可以加快人们办事效率,设计中运用MFC设计的是简单计算器,包括双目运算和单目运算功能。
双目运算符包含基本的四则运算及乘幂功能,单目运算符包含三角函数,反三角函数,阶乘,对数,开方,倒数等方面的运算。
可对输入任意的操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
vb简易科学计算器的设计与开发课程设计报告可视化编程武汉理工大学华夏学院

学号《可视化编程》课程设计报告简易科学计算器的设计与开发专业班级:计算机科学与技术1112学生姓名:指导教师:钱小红/李小艳教学系:信息工程系2012年6月15日课程设计报告书学生姓名:专业班级:计算机1111-1112班指导教师:钱小红/李小艳工作单位:华夏学院计算机教研室设计题目:简易科学计算器的设计与开发初始条件:1、完成可视化编程的学习2、带Visual Basic 的机器要求完成的主要任务:主要任务:(在规定的时间内完成下列任务)1、能够完成数值常数的四则运算,不要求支持运算符的优先级。
2、能够进行如下函数的求值运算,包括sin, cos, tan, exp, log, ln, sqr, 1/x,以及常数e和圆周率π。
3、设置5个存贮键,以便将中间运算结果存入,在需要的时候取出参与运算。
4、能够进行初始化,清除内存中的数,退出运算,清除显示。
5、因为控件数目较多,要求采用控件数组,以减少事件处理的复杂程度,使程序简洁高效。
6、出错处理:操作数如果不符合数学上的定义,应该给出错误信息。
例:0做除数,负数或0做真数等情况。
设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:①设计任务与要求②总体方案与说明③程序主要模块的流程图④源程序清单与注释⑤问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决方法及改进设想);⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料时间安排:6月15日---21日第一天布置题目,确定任务、查找相关资料第二天~第四天功能分析,编写程序,调试程序、运行系统;第五天程序验收、答辩;撰写设计报告。
指导教师签字:2012年6月15日系主任签字:年月日1.设计任务与要求1.设计任务利用VB语言设计一个简易的科学计算器,学会利用VB控件数组实现数值的计算以及基本函数的计算。
2.基本要求:(1)要能够完成数值常数的四则运算。
大班科学优秀教案《电子计算器》(二篇)

大班科学优秀教案《电子计算器》幼儿园大班科学教案:认识电子计算器设计意图:一天,班上小朋友带来一块手表,上面有计算器,引得好多孩子都围上去议论,都想要玩玩。
看到孩子们有那么大的兴趣,我决定设计这个活动,让孩子了解计算器的功用及操作方法。
我利用孩子们对计算器有强烈探索意识的现象设计了大班科学活动“认识电子计算器”。
在设计这个活动中,我根据大班幼儿的年龄特点及其有的知识经验,将操作、游戏、讲述溶为一体,并扩充了人类计算的发展历程,给幼儿一个有关计算的完整印象。
首先,了解计算器的外形特征,然后孩子们与同伴一起发现操作计算器的方法,在操作中体会到计算器的优越性,最后回顾从古到今计算工具的进化过程。
整个活动,我始终将幼儿放在第一位,尽可能将活动时间给予孩子,让他们互相学习。
让孩子去发现、去操作、去归纳。
教师以与孩子同乐的朋友身份给予隐性的指导,让孩子在无拘无束的气氛中达到自己对计算器知识渴望的了解。
活动目标:1、了解电子计算器的基本部件(显示屏及按键),并初步学习操作电子计算器。
2、知道电子计算器的基本功用及优越性。
3、扩大幼儿眼界,增加学科学、用科学的兴趣。
活动准备:多媒体教室,幼儿自带电子计算器。
活动过程一、出示电子计算器,说出名称,讨论功用。
1、思考:“你们带来的这样东西叫什么名字?”“电子计算器是做什么用的?”2、小结:电子计算器是一种计算工具,人们用它算账,用它计算数的多少。
二、幼儿分小组讨论电子计算器外形及基本构造。
1、思考:“电子计算器是什么形状?上面有什么?下面又有什么?”鼓励幼儿在小组内相互看一看、比一比,熟悉电子计算器的外形基本构造。
2、在实物展示仪上组织幼儿进一步观察外形。
小结:电子计算器外形及基本构造。
三、幼儿分小组活动,学习操作电子计算器。
1、小朋友相互学习,找出自己计算器上的开关,学着用计算器做加减运算题。
2、请两位小朋友在计算器上用电子计算器做加减数学题。
小结:操作计算器运算加减的方法。
基于MFC的科学计算器课程设计实验报告

课程设计实验报告题目学院专业班级课程名称学号学生姓名指导教师成绩二○一三年一月目录1 概述1.1 课程设计目的1.2 课程设计内容1.3 课程设计思想2 系统需求分析2.1 系统目标2.2 主体功能2.3 开发环境3 系统概要分析3.1 设计步骤3.2 界面设计3.3 主要代码4 结论与心得体会4.1 遇到的问题与解决方法4.2 心得5 附录5.1 测试5.2 程序源代码1 概述1.1课程设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用C++语言进行面向对象设计的基本方法,提高运用面向对象方法分析实际问题、解决实际问题的能力。
1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VS 2010集成开发环境;4、提高运用C++语言解决实际问题的能力;5、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。
1.2课程设计内容课题名称:功能齐全的计算器说明:利用MFC实现一个功能齐全的计算器要求:1、实现的基本功能有:加、减、乘、除、计算带括号的运算式;2、扩展功能有开平方、求三角函数、阶乘、自然底数e的幂、10的幂和普通数的幂、进制的转化等;3、输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个编辑框中;4、计算功能基本上是用系统内部函数;5、“归零”按钮可以清除所有已输入的数据从头计算;6、“←”按钮可以退位。
1.3课程设计思想如流程图1所示,先在编辑框中输入运算式,通过IsChar()函数判断表达式中是否有复杂的运算符。
若无,则进行简单的双目运算;若有,则通过String_Replace()函数将IsChar()函数无法识别的运算符或字符用一定方式或浮点数替换,再进行简单的双目运算。
mfc设计科学计算器课程设计

mfc设计科学计算器课程设计一、课程目标知识目标:1. 让学生掌握MFC(Microsoft Foundation Classes)的基本概念和原理,理解其在设计科学计算器中的应用。
2. 使学生了解科学计算器的基本功能,如标准运算、三角函数、对数等,并运用MFC实现这些功能。
3. 帮助学生掌握Visual C++编程环境中MFC的使用方法,培养其运用MFC 进行软件开发的能力。
技能目标:1. 培养学生运用MFC设计界面、处理用户输入和输出结果的能力。
2. 让学生学会使用MFC中的事件处理机制,实现科学计算器的功能按键响应。
3. 提高学生的问题分析能力,使其能够根据实际需求设计合理的MFC程序结构。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生的团队协作意识,使其在编程实践中学会与他人分享和交流。
3. 引导学生认识到科技发展对社会进步的重要性,激发其创新精神和责任感。
课程性质:本课程为实践性较强的课程,结合理论讲解和实际操作,帮助学生掌握MFC设计科学计算器的技能。
学生特点:学生具备一定的C++编程基础,对MFC有一定了解,但实际应用能力较弱。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际编程能力。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. MFC基础回顾:重温MFC的基本概念、框架结构和主要类的功能,重点掌握CWnd、CDialog、CString等类的使用方法。
相关教材章节:第一章 MFC概述,第二章 MFC类和对象。
2. 科学计算器功能设计:介绍科学计算器的基本功能,如标准运算、三角函数、对数等,并分析如何利用MFC实现这些功能。
相关教材章节:第三章 MFC控件编程,第四章 MFC绘图与界面设计。
3. 界面设计与实现:讲解如何使用MFC设计科学计算器的界面,包括窗口、菜单、按钮等控件的使用方法。
计算器课程设计报告

一、目录1、目录 (1)2、概论 (2)2.1 计算器意义 (2)2.2 软硬件环境要求 (3)2.3 AT89S51单片机概述 (3)3、计算器的基本功能与设计 (5)3.1 计算器基本实现功能 (5)3.2 电路原理图 (6)3.3 设计方案与实现方法 (7)4、计算器模块设计 (7)4.1 输入模块 (8)4.2 运算模块 (9)4.3 显示模块 (9)5、硬件电路设计 (10)5.1 主要器件 (10)5.2 功能和操作 (10)5.3 硬件调试 (11)6、软件设计 (12)6.1 程序流程图 (13)6.2 软件主要程序设计 (13)7、课程设计心得体会 (22)二、概述2.1 计算器意义随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。
单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。
计算器在人们的日常中是比较的常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的计算器。
该设计系统是以AT89C51为单片机,P0口作为输入端,用8279或8155做键盘和LED显示接口芯片,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路。
用来保证LED的工作正常。
计算器将完成“+、-、*、/ ”功能。
2.2 软硬件环境要求1、软件:集成开发软件IDE;2、硬件:试验仪一台,编程器一台,msc51单片机一块,示波器一台。
AT89S51单片机引脚图如下:2.3 AT89S51单片机概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
课程设计设计计算器

课程设计设计计算器一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握计算器的基本原理和使用方法,理解计算器在数学和科学领域的应用。
技能目标要求学生能够熟练操作计算器,进行基本的算术运算、科学计算和数据处理。
情感态度价值观目标要求学生培养对科学技术的兴趣和好奇心,提高解决实际问题的能力,培养创新精神和团队合作意识。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
课程目标明确,有利于学生和教师清晰地了解课程的预期成果,为后续的教学设计和评估提供依据。
二、教学内容根据课程目标,我们选择和了以下教学内容:1.计算器的基本原理:介绍计算器的电路结构、工作原理和编程方法。
2.计算器的使用方法:讲解计算器的各种功能键、操作界面和操作步骤。
3.计算器在数学领域的应用:举例说明计算器在代数、几何、概率等数学领域的应用。
4.计算器在科学领域的应用:介绍计算器在物理、化学、生物等科学领域的应用实例。
5.计算器编程:教授计算器的基本编程语言和编程技巧,让学生能够编写简单的计算器程序。
教学大纲将按照以上内容的安排和进度进行教学,确保内容的科学性和系统性。
三、教学方法为了激发学生的学习兴趣和主动性,我们选择以下教学方法:1.讲授法:教师讲解计算器的基本原理、使用方法和应用领域。
2.讨论法:学生分组讨论计算器编程技巧和解决实际问题的方法。
3.案例分析法:分析计算器在数学和科学领域中的应用案例,让学生加深理解。
4.实验法:学生动手操作计算器,进行编程和实践,提高操作技能。
通过多样化的教学方法,我们能够激发学生的学习兴趣,培养他们的创新精神和团队合作意识。
四、教学资源为了支持教学内容和教学方法的实施,我们选择和准备了以下教学资源:1.教材:选用权威、实用的计算器教材,为学生提供系统的学习材料。
2.参考书:提供相关的计算器参考书籍,丰富学生的知识储备。
3.多媒体资料:制作课件、视频等多媒体资料,生动展示计算器的使用和应用。
科学计算器—单片机课程设计报告

湘潭大学单片机课程设计报告——计算器设计班级:2008级通信工程二班学号:**********姓名:陶庆权日期:2011.3.25目录一、设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)二.设计方案 (2)三.系统硬件设计 (2)3.1单片机最小系统 (2)3.2键盘接口电路 (3)3.3数码管显示电路 (3)3.4按键提示电路 (3)四、系统软件设计 (4)4.1键盘扫描子程序设计 (4)4.2运算程序设计 (5)4.3显示子程序设计 (5)4.4主程序设计 (5)五、调试及性能分析 (6)5.1调试步骤 (6)5.2性能分析 (7)六、心得体会 (7)参考文献 (7)附录1 系统硬件电路图 (8)附录2程序清单................................................8-18一、设计任务和性能指标设计任务基本功能:利用89c51作为主控器组成一个四则运算的计算器。
发挥部分:增加一种以上的科学计算功能。
可选器件:51系列单片机、6264、7段LED数码管、74LS244或74LS240、与非门等二.设计方案按照系统设计的功能的要求,确定设计系统由主控模块、显示模块、按键提示模块、键扫描接口电路、扩张功能模块共五个模块组成,电路系统构成框图如图1.1所示。
主控芯片使用51系列STC89C54单片机。
键盘电路采用4*4矩阵键盘电路。
显示模块采用4位共阴极数码管。
按键提示电路采用5V扬声器。
三.系统硬件设计3.1单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。
主控芯片选取STC89C54RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便,可直接用USB线下载代码。
晶振选取11.0592MHz,晶振旁电容选取20pF。
采用按键复位电路,电阻分别选取100Ω和10K,电容选取0.1μF。
以下为单片机最小系统硬件电路图。
科学计算器实验报告

实验三科学计算器附加代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;namespace计算器{publicpartialclass FrmMain : Form{bool error = false;public FrmMain(){InitializeComponent();}privatevoid FrmMain_KeyPress(object sender, KeyPressEventArgs e) {switch (e.KeyChar){case'0':button0.PerformClick();break;case'1':button1.PerformClick();break;case'2':button2.PerformClick();break;case'3':button3.PerformClick();break;case'4':button4.PerformClick();break;case'5':button5.PerformClick();break;case'6':button6.PerformClick();break;case'7':button7.PerformClick();break;case'8':button8.PerformClick();break;case'9':button9.PerformClick();break;case'+':buttonPlus.PerformClick(); break;case'-':buttonMinus.PerformClick(); break;case'*':buttonMultiply.PerformClick(); break;case'/':buttonDivide.PerformClick(); break;case'.':buttonDot.PerformClick(); break;case'(':buttonLeft.PerformClick(); break;case')':buttonRight.PerformClick(); break;case'\b':buttonDelete.PerformClick(); break;case'\n':buttonEqual.PerformClick(); break;}}privatevoid button_Click(object sender, EventArgs e) {switch (((Button)sender).Text){case"←":if(textBoxExpression.Text.Length > 0)textBoxExpression.Text = textBoxExpression.Text.Substring(0, textBoxExpression.Text.Length - 1);break;case"CE":error = false;textBoxExpression.Text = "";break;case"C":textBoxExpression.Text = "";break;case"=":DoFormula();break;default:textBoxExpression.Text += ((Button)sender).Text;break;}}protectedvoid DoFormula(){if (error == true){MessageBox.Show("请先点击CE按钮清除上一次运算的错误!", "运算错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}Formula fm = new Formula(textBoxExpression.Text);try{fm.Calculate();}catch (Exception ex){textBoxExpression.Text = "ERROR";error = true;MessageBox.Show(ex.Message, "运算错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return;}textBoxExpression.Text = fm.result.ToString();}}class Formula{protectedstring expression = "";protecteddouble _result = 0;protectedbool calculated = false;Stack<double> numbers = new Stack<double>();Stack<char> operators = new Stack<char>();///<summary>///通过字符串初始化一个算式///</summary>///<param name="initialString"></param>public Formula(string initialString){expression = initialString;}///<summary>///运算表达式并生成结果///</summary>publicvoid Calculate(){//清空堆栈numbers.Clear();operators.Clear();//扫描表达式,并解决乘除法int index = 0;double tmpNum = 0;bool isNum = false;for (index = 0; index < expression.Length; index++){if (isNum == false){//检测是否内嵌表达式if (expression[index] == '('){//扫描内嵌表达式的结尾int i = index;for (; i < expression.Length; i++){if (expression[i] == ')')break;}//新建子表达式并计算Formula innerFormula = new Formula(expression.Substring(index+1, i - index - 1));//除去两个括号innerFormula.Calculate();double innerResult = innerFormula.result;//替换原表达式中的字符串string ToReplace = expression.Substring(index, i - index + 1);expression = expression.Replace(ToReplace,innerResult.ToString());index--;continue;}//扫描数字tmpNum = ReadTheFirstNum(expression.Substring(index));index += tmpNum.ToString().Length-1;//索引后移至数字后一位numbers.Push(tmpNum);isNum = true;continue;}if (IsOperator(expression[index]) == true){//检测表达式是否正确if (IsOperator(expression[index - 1]) == true){thrownew InvalidExpressionException("无效的表达式:表达式中有连续两个运算符");}//检测第一位是否是运算符if (index == 0){thrownew InvalidExpressionException("无效的表达式:表达式开头不是数字");}//检测是否是乘除法if (expression[index] == '*' || expression[index] == '/'){//检测是否内嵌表达式if (expression[index+1] == '('){//扫描内嵌表达式的结尾int i = index+1;for (; i < expression.Length; i++){if (expression[i] == ')')break;}//新建子表达式并计算Formula innerFormula = new Formula(expression.Substring(index + 2, i - index - 2));//除去两个括号innerFormula.Calculate();double innerResult = innerFormula.result;//替换原表达式中的字符串string ToReplace = expression.Substring(index + 1, i - index);expression = expression.Replace(ToReplace,innerResult.ToString());}//取出下一个操作数double nextNum = ReadTheFirstNum(expression.Substring(index + 1));//取出栈顶操作数tmpNum = numbers.Pop();//执行运算if (expression[index] == '*')tmpNum *= nextNum;else{if (nextNum == 0)thrownew InvalidExpressionException("无效的表达式:表达式中存在除零运算");tmpNum /= nextNum;}//压回操作数堆栈numbers.Push(tmpNum);//索引后移index += nextNum.ToString().Length;isNum = true;//由于乘除法结束后会压入一个操作数,实际上等同于扫描了一个数字continue;}else{//检测到加减法//压入操作符operators.Push(expression[index]);}isNum = false;continue;}else{//检测到非法字符thrownew InvalidExpressionException();}}Stack<double> tmpn = new Stack<double>();Stack<char> tmpo = new Stack<char>();//转化为队列进行正序计算while (numbers.Count != 0){tmpn.Push(numbers.Pop()); }while (operators.Count != 0){tmpo.Push(operators.Pop()); }while (tmpn.Count != 0 && tmpo.Count != 0) {char operate;double num1;double num2;try{operate = tmpo.Pop(); num1 = tmpn.Pop();num2 = tmpn.Pop();}catch (Exception){thrownew InvalidExpressionException();}if (operate == '+'){num1 = num1 + num2;tmpn.Push(num1);}else{num1 = num1 - num2;tmpn.Push(num1);}}//检测是否还有未处理完的操作数或者运算符if (tmpn.Count != 1 || tmpo.Count != 0){thrownew InvalidExpressionException();}//存储表达式运算结果_result = tmpn.Pop();//声明计算完成calculated = true;}///<summary>///表达式的运算结果///</summary>publicdouble result{get{if (calculated == false)thrownew ExpressionNotCalculatedException();return _result;}}///<summary>///扫描第一个数字并返回///</summary>///<param name="s">待扫描字符串</param>///<returns></returns>protecteddouble ReadTheFirstNum(string s){if (s.Length == 0)thrownew InvalidExpressionException();if (IsNum(s[0]) == false)thrownew InvalidExpressionException();double result = 0;int i = 0;for (; i < s.Length; i++){if(IsNum(s[i]) == false)break;}result = double.Parse(s.Substring(0, i)); return result;}///<summary>///扫描一个子算式///</summary>///<param name="s"></param>///<returns></returns>protectedstring ReadAFormula(string s){if (s.Length == 0)thrownew InvalidExpressionException();if (IsNum(s[0]) == false)thrownew InvalidExpressionException();int i = 0;bool found = false;for (; i < s.Length; i++){if (s[i] == ')'){found = true;break;}}if (found == false)thrownew InvalidExpressionException("发现未封闭的表达式!"); return s.Substring(0, i + 1);}///<summary>///判断给定的字符是否是数字///</summary>///<param name="c">需判断的字符</param>///<returns></returns>protectedbool IsNum(char c){if (c >= '0'&& c <= '9' || c == '.')returntrue;elsereturnfalse;}///<summary>///判断给定的字符是否是操作符///</summary>///<param name="c">需判断的字符</param>///<returns></returns>protectedbool IsOperator(char c){switch (c){case'+':returntrue;case'-':returntrue;case'*':returntrue;case'/':default:returnfalse;}}}///<summary>///算数表达式未计算///</summary>[Serializable]publicclass ExpressionNotCalculatedException : ApplicationException{public ExpressionNotCalculatedException(): base("尝试在算数表达式未计算前就获取表达式结果"){}public ExpressionNotCalculatedException(string Message): base(Message){}public ExpressionNotCalculatedException(string Message, Exception inner) : base(Message, inner){}}///<summary>///无效的表达式///</summary>[Serializable]publicclass InvalidExpressionException : ApplicationException{public InvalidExpressionException(): base("无效的表达式"){}public InvalidExpressionException(string Message): base(Message){public InvalidExpressionException(string Message, Exception inner) : base(Message, inner){}}}程序运行结果图:。
科学计算器课程设计报告

计算机科学与技术学部C++课程设计题目科学计算器学部计算机科学与技术班级计科1103指导教师李军姓名刘明学号114304218176672012年6月27日摘要计算器的产生和发展是建立在电子计算机基础之上的。
硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。
软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。
在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。
能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。
此系统在Windows 7环境下,使用VC++ 6.0进行编写。
简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。
可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
并且包含清除,退格功能等。
我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。
关键词:计算器;运算;VC++等课程设计任务分配表:表1 分配信息表姓名主要工作组长刘明程序设计和编写舒兆月实验报告书的制作组员凡力强实验报告书的制作课程设计成绩表:表2 成绩表姓名学号班级成绩组长刘明11430421817667 计科1103舒兆月11430727814558 计科1103 组员凡力强11430426154534 计科1103科学计算器采用的数据类型采用的类的数据类型:class CCalculatorDlg : public CDialog{public:void clean_aliter();CString OLD_ANSWER;void out_change(int system);CCalculatorDlg(CWnd* pParent = NULL); // standard constructorint Sel,EndSel; //定义输入或插入时光标的位置int Expr_pos; //词法分析表达式时,标记当前字符位置int OS_pos ; //操作数栈顶位置int old_pos; //历史表达式的位置int old_head; //历史表达式数组中最最前位置int old_back; //历史表达式数组中最最后位置int error_mark; //标记表达式错误int parentheses_count; //记录表达式中括号的个数double operand_Stack[200]; //操作数栈CString old_expression[20]; //表达式历史记录void getword(WordType & w_type ,Operator& Fun_Ope,int system); //词法分析函数int getword16(); int getword10(); int getword8(); int getword2();//将用字符表示的N(2,8,10,16)进制转为浮点型void E_AddSub(); //加减void T_MulDiv(); //乘除void F_Power(); //乘方void L_Function(); //函数void H_Digit(); //数字void Factorial(); //阶乘void P_expression(); //括号void compute(Operator Op); //计算void error(int ); //错误标记函数void clean_all(); //清空表达式和计算结果protected:HICON m_hIcon;DECLARE_MESSAGE_MAP()};程序中所用到相关专业知识:类,对象数组,友元函数,继承与派生,指针,枚举,,数栈,算法目录前言 (1)第一章系统需求 (2)1.1 简介说明 (2)1.1.1 系统要求 (2)1.1.2 具体任务 (2)1.1.3 研究目的 (2)1.2 设计分析 (3)1.2.1 可行性分析 (3)1.2.2 需求分析 (3)1.2.3设计结构 (3)1.3 开发环境 (3)1.3.1 运行环境 (3)1.3.2 开发工具 (3)1.3.3 关于Visual C++ 6.0 (4)第二章系统设计 (5)2.1功能说明 (5)2.1.1 系统总体功能分析 (5)2.1.2 系统功能 (5)2.1.3课程设计内容 (6)2.2设计大概 (6)2.2.1设计思路 (6)2.2.2控件定义 (7)2.2.3 变量的定义以及初始化 (8)第三章系统实现 (9)3.1窗体设计 (9)3.1.1设计步骤 (9)3.1.2控件定义 (9)3.1.3一部分操作截图 (10)3.2 程序核心代码 (11)3.2.1数字键和字母键核心代码 (11)3.2.2计算类型函数的核心代码 (11)3.2.3 提示错误的核心代码 (13)3.2.4进制转换的核心代码 (14)3.2.5八进制单选按钮消息响应函数代码 (16)3.2.6二进制单选按钮消息响应函数 (17)第四章系统运行 (20)4.1测试以及运行界面 (20)4.1.1 程序主界面测试 (20)4.1.2运行的计算结果 (20)4.1.3转换进制计算 (21)4.2 测试 (22)4.2.1测试研究与选择 (22)4.2.2测试环境 (22)总结 (23)参考文献 (24)前言Visual C++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术学部C++课程设计题目科学计算器学部计算机科学与技术班级计科1103指导教师李军姓名刘明学号114304218176672012年6月27日摘要计算器的产生和发展是建立在电子计算机基础之上的。
硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。
软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。
在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。
能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。
此系统在Windows 7环境下,使用VC++ 6.0进行编写。
简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。
可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
并且包含清除,退格功能等。
我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。
关键词:计算器;运算;VC++等课程设计任务分配表:表1 分配信息表姓名主要工作组长刘明程序设计和编写舒兆月实验报告书的制作组员凡力强实验报告书的制作课程设计成绩表:表2 成绩表姓名学号班级成绩组长刘明11430421817667 计科1103舒兆月11430727814558 计科1103 组员凡力强11430426154534 计科1103科学计算器采用的数据类型采用的类的数据类型:class CCalculatorDlg : public CDialog{public:void clean_aliter();CString OLD_ANSWER;void out_change(int system);CCalculatorDlg(CWnd* pParent = NULL); // standard constructorint Sel,EndSel; //定义输入或插入时光标的位置int Expr_pos; //词法分析表达式时,标记当前字符位置int OS_pos ; //操作数栈顶位置int old_pos; //历史表达式的位置int old_head; //历史表达式数组中最最前位置int old_back; //历史表达式数组中最最后位置int error_mark; //标记表达式错误int parentheses_count; //记录表达式中括号的个数double operand_Stack[200]; //操作数栈CString old_expression[20]; //表达式历史记录void getword(WordType & w_type ,Operator& Fun_Ope,int system); //词法分析函数int getword16(); int getword10(); int getword8(); int getword2();//将用字符表示的N(2,8,10,16)进制转为浮点型void E_AddSub(); //加减void T_MulDiv(); //乘除void F_Power(); //乘方void L_Function(); //函数void H_Digit(); //数字void Factorial(); //阶乘void P_expression(); //括号void compute(Operator Op); //计算void error(int ); //错误标记函数void clean_all(); //清空表达式和计算结果protected:HICON m_hIcon;DECLARE_MESSAGE_MAP()};程序中所用到相关专业知识:类,对象数组,友元函数,继承与派生,指针,枚举,,数栈,算法目录前言 (1)第一章系统需求 (2)1.1 简介说明 (2)1.1.1 系统要求 (2)1.1.2 具体任务 (2)1.1.3 研究目的 (2)1.2 设计分析 (3)1.2.1 可行性分析 (3)1.2.2 需求分析 (3)1.2.3设计结构 (3)1.3 开发环境 (3)1.3.1 运行环境 (3)1.3.2 开发工具 (3)1.3.3 关于Visual C++ 6.0 (4)第二章系统设计 (5)2.1功能说明 (5)2.1.1 系统总体功能分析 (5)2.1.2 系统功能 (5)2.1.3课程设计内容 (6)2.2设计大概 (6)2.2.1设计思路 (6)2.2.2控件定义 (7)2.2.3 变量的定义以及初始化 (8)第三章系统实现 (9)3.1窗体设计 (9)3.1.1设计步骤 (9)3.1.2控件定义 (9)3.1.3一部分操作截图 (10)3.2 程序核心代码 (11)3.2.1数字键和字母键核心代码 (11)3.2.2计算类型函数的核心代码 (11)3.2.3 提示错误的核心代码 (13)3.2.4进制转换的核心代码 (14)3.2.5八进制单选按钮消息响应函数代码 (16)3.2.6二进制单选按钮消息响应函数 (17)第四章系统运行 (20)4.1测试以及运行界面 (20)4.1.1 程序主界面测试 (20)4.1.2运行的计算结果 (20)4.1.3转换进制计算 (21)4.2 测试 (22)4.2.1测试研究与选择 (22)4.2.2测试环境 (22)总结 (23)参考文献 (24)前言Visual C++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
为了方便计算,我们编写了计算器。
本报告在李军老师的指导下,并且形成了比较完善的体系,本设计报告具体包含以下内容:第一章直接介绍了基于C++语言,熟悉Visual 6.0的开发环境和C++控制台方式的调试和运行,使学生熟悉Visual C++ 6.0更自然。
以及我们编程的背景与意义及目的,主要介绍我们编写这个程序用来做什么。
第二章介绍了我们编程的怎么去做,设计时的一些想法。
第三章介绍了我们编程实用的一些技术与核心代码,设计时的具体做法。
第四章介绍我们运行时的一些具体操作,以及我们给出的总结与参考文献。
本程序编写一个程序来实现算术计算器。
通过数组和指针以及枚举来存放输入的每一数字或运算符号函数的记录(包括1、2、3等数字,+、--、*、等运算符号)中。
通过一些单击按钮实现一些标准与科学的操作混合运算,然后显示出结果。
本报告由刘明、凡力强、舒照月编写,由李军老师对全报告进行修改,以及很多同学以及网络朋友提供帮助,在此表示感谢。
由于水平有限,不当之处在所难免,恳请读者批评指正。
编者2012.6第一章系统需求1.1 简介说明1.1.1 系统要求1、用C++语言实现程序设计;2、利用MFC进行相关信息处理;3、画出总模块的流程图;4、系统的各个功能模块要求用函数的形式实现;5、界面友好(良好的人机互交),程序要有注释;1.1.2 具体任务1、定义以及初始化,输入0~9,A~F,运算符等信息;2、输入简单的运算符计算式,并显示出计算结果;3、画出总流程图;4、编写代码;5、程序分析与调试;1.1.3 研究目的1、熟悉掌握基于对话框的程序编写;2、熟练掌握放置控件及control 工具条的使用;3、掌握控件摆放的基本方法,熟练掌握Dialog 的使用;4、熟悉建立对话框步骤;5、了解CBUTTON类的实用;6、巩固并加深学生对C++语言程序设计知识的理解;7、培养学生面向对象的程序设计思想,与其认识面向过程和对象的区别;8、进一步掌握和应用VC++ 6.0集成开发环境;9、提高运用C++语言解决实际问题的能力;10、初步掌握开发小型实用软件的基本方法,能独立设计、实践操作;11、掌握书写程序设计开发文档的能力(书写课程设计实验报告);1.2 设计分析1.2.1 可行性分析伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作用。
我们在学校生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算器,所以便着手开发了这个计算器程序,既紧随科技发展的前沿,又方便了我们的生活,具有一定的现实意义。
1.2.2 需求分析本软件主要用于计算机Windows XP以上的用户使用,这次课程设计一般是实现简单计算器的功能。
需要程序实现:加减乘除,开方,平方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。
另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算,二、八、十、十六进制的转换等。
1.2.3设计结构第一章主要介绍了我们做这个课程设计目地是做什么。
第二章主要介绍了我们怎么去设计这个课程报告以及编程。
第三章主要介绍了我们实现代码的关键性技术与源码段的介绍。
第四章主要介绍了我们做这个程序的运行结果与一些运算的截图。
1.3 开发环境1.3.1 运行环境(1) Windows 7 64位/XP 32位系统(2) Visual C++ 6.0(中文版)编译环境1.3.2 开发工具C++语言1.3.3 关于Visual C++ 6.0Visual C++ 6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的优秀集成开发环境。
该环境为用户提供了良好的可视化编程环境,程序员可以利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。
Visual C++6.0不仅包括编辑器,还包括许多有用组件,通过这些组件的协同工作,可以在Visual C++6.0集成环境中轻松地完成创建源文件、编辑资源以及对程序的编译、连接和调试等各项工作。
VC++6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软件没有特殊要求。
就是说它对环境的要求与Windows 95/98、Windows NT的要求是一致的。
VC++6.0系统可以在一张CD盘上,也可以在“Visual Studio (Visual C++、Visual Foxpro)”等产品的第一张CD盘上。