编写一个计算器程序课程设计报告范例
计算器课程设计报告
计算器课程设计报告一、课程目标本节计算器课程设计以提升学生的数学计算能力、逻辑思维能力和实际应用能力为核心,结合三年级学生的认知特点和实际需求,制定以下课程目标: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小时。
c语言程序设计课程计算器设计报告
课程设计实验报告题目 C/C++语言程序设计所在院系信息学院专业计算机科学与技术班级 12级计科班学生指导教师2014年9月24 日程序设计流程图:源代码:#include <stdio.h>#include<math.h> #include <stdlib.h>void fun1(){printf("\t\t\t*****************************\n");printf("\t\t\t$ 欢迎使用计算器 $\n");printf("\t\t\t$ $\n");printf("\t\t\t$ 1.加法 $\n");printf("\t\t\t$ 2.减法 $\n");printf("\t\t\t$ 3.乘法 $\n");printf("\t\t\t$ 4.除法 $\n");printf("\t\t\t$ 5.乘方 $\n");printf("\t\t\t$ 6.开方 $\n");printf("\t\t\t$ 7.八进制转换 $\n");printf("\t\t\t$ 8.十六进制转换 $\n");printf("\t\t\t$ 9.退出 $\n");printf("\t\t\t$ $\n");printf("\t\t\t*****************************\n");}void fun2(float x,float y,int c){float z;int n,i;switch(c){case 1: z=x+y;printf("结果:%g+%g=%g\n",x,y,z);break; case 2: z=x-y;printf("结果:%g-%g=%g\n",x,y,z);break; case 3: z=x*y;printf("结果:%g*%g=%g\n",x,y,z);break; case 4: if(y==0)printf("错误!");else{z=x/y;printf("结果:%g/%g=%g\n",x,y,z);}break; case 5: n=x;for(i=1;i<y;i++){x=x*n;}printf("结果:%g\n",x);break;default:printf("请重新输入!");}}void fun3(float x,int c){float z;switch(c){case 6:if(x<0)printf("错误!");else{z=sqrt(x);printf("结果:%g\n",z);}break;default:printf("请重新输入!");}}void convert(int m,int c){char s[128];switch(c){case 7:printf("结果:%o\n",m);break;case 8:printf("结果:%x\n",m);break;default:printf("请重新输入!");}}void main(){for(;;){float x,y,z;int c,m;char h;fun1();printf("请选择运算:\n");printf("1\n2\n3\n4\n5\n6\n7\n8\n9\n"); printf("请输入运算方式前面的数字:\n");scanf("%d",&c);if(c==1||c==2||c==3||c==4||c==5){printf("输入两个数:");scanf("%f%f",&x,&y);fun2(x,y,c);}if(c==6){printf("输入一个数:");scanf("%f",&x);if(x<0)printf("错误!");elsefun3(x,c);}if(c==7||c==8){printf("输入一个数:");scanf("%d",&m);convert(m,c);}if(c==9){printf("<<<<<<<<<谢谢使用!>>>>>>>>>\n");} if(c>='a' && c<='z')printf("没有这个选择!\n");if(c>='A' && c<='Z')printf("没有这个选择!\n");}}。
c简单计算器课程设计报告
c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
c语言实验报告计算器
c语言实验报告计算器C 语言实验报告计算器一、实验目的本次 C 语言实验的主要目的是通过编写程序实现一个简单的计算器功能,加深对 C 语言基本语法、数据类型、控制结构和函数的理解和运用,提高编程能力和解决实际问题的能力。
二、实验要求1、实现基本的四则运算(加、减、乘、除)功能。
2、能够处理用户输入的合法表达式,并输出计算结果。
3、具备错误处理能力,如除数为 0 、输入不合法等情况。
三、实验环境本次实验使用的编程环境是 Visual Studio Code,编译器为 GCC。
四、算法设计与思路(一)整体思路首先,需要从用户那里获取输入的表达式。
然后,对表达式进行解析和计算。
在计算过程中,需要根据运算符的优先级进行相应的运算。
为了实现这个过程,可以使用栈来存储运算符和操作数。
(二)具体算法1、定义一个栈来存储运算符,另一个栈来存储操作数。
2、逐字符读取输入的表达式。
如果是数字字符,则将其转换为数字并压入操作数栈。
如果是运算符,则根据运算符的优先级进行处理。
如果当前运算符的优先级高于栈顶运算符的优先级,则将其压入运算符栈。
否则,从操作数栈中弹出两个操作数,从运算符栈中弹出一个运算符,进行相应的运算,并将结果压入操作数栈。
3、当表达式读取完毕后,依次从运算符栈和操作数栈中弹出元素进行计算,直到运算符栈为空,此时操作数栈中的唯一元素即为表达式的计算结果。
五、代码实现```cinclude <stdioh>include <stdlibh>include <ctypeh>//定义栈的最大容量define MAX_SIZE 100//定义操作符栈typedef struct {char itemsMAX_SIZE;int top;} OperatorStack;//定义操作数栈typedef struct {double itemsMAX_SIZE;int top;} OperandStack;//初始化操作符栈void initOperatorStack(OperatorStack stack) {stack>top =-1;}//初始化操作数栈void initOperandStack(OperandStack stack) {stack>top =-1;}//判断操作符栈是否为空int isOperatorStackEmpty(OperatorStack stack) {return stack>top ==-1;}//判断操作数栈是否为空int isOperandStackEmpty(OperandStack stack) {return stack>top ==-1;}//操作符入栈void pushOperator(OperatorStack stack, char op) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = op;} else {printf("Operator stack overflow!\n");exit(1);}}//操作数入栈void pushOperand(OperandStack stack, double num) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = num;} else {printf("Operand stack overflow!\n");exit(1);}}//操作符出栈char popOperator(OperatorStack stack) {if (!isOperatorStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operator stack underflow!\n");exit(1);}}//操作数出栈double popOperand(OperandStack stack) {if (!isOperandStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operand stack underflow!\n");exit(1);}}//获取操作符的优先级int getPriority(char op) {switch (op) {case '+':case '':return 1;case '':case '/':return 2;default:return -1;}}//计算表达式double calculate(char expression) {OperatorStack opStack;OperandStack numStack; initOperatorStack(&opStack);initOperandStack(&numStack);int i = 0;while (expressioni!='\0'){if (isdigit(expressioni)){double num = 0;while (isdigit(expressioni)){num = num 10 +(expressioni '0');i++;}if (expressioni ==''){double fraction = 01;i++;while (isdigit(expressioni)){num +=(expressioni '0') fraction; fraction /= 10;i++;}}pushOperand(&numStack, num);} else if (expressioni =='('){pushOperator(&opStack, expressioni);i++;} else if (expressioni ==')'){while (opStackitemsopStacktop!='('){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}popOperator(&opStack);i++;} else {while (!isOperatorStackEmpty(&opStack) &&getPriority(opStackitemsopStacktop) >= getPriority(expressioni)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}pushOperator(&opStack, expressioni);i++;}}while (!isOperatorStackEmpty(&opStack)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}return popOperand(&numStack);}int main(){char expression100;printf("Enter an expression: ");scanf("%s", expression);double result = calculate(expression);printf("Result: %f\n", result);return 0;}```六、实验结果与分析(一)测试用例及结果以下是一些测试用例及其对应的结果:1、输入:"2 + 3",输出:50000002、输入:"5 2",输出:30000003、输入:"3 4",输出:120000004、输入:"6 / 2",输出:30000005、输入:"2 + 3 4",输出:140000006、输入:"(2 + 3) 4",输出:200000007、输入:"5 / 0",输出:Division by zero!(二)结果分析从测试结果来看,程序能够正确计算基本的四则运算表达式,包括有括号的情况。
C++课程设计--计算器设计报告
一、项目简介本设计将实现一个简单计算器。
其功能参照Windows附件中自带的计算器。
这个计算器实现了简单的四则运算功能,还实现了模运算和指数运算,具有简洁的图文外观。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互让使用人员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。
在课程设计中,系统开发平台为Windows 7,程序设计设计语言采用Visual C++,在程序设计中,采用了面向对象的解决问题的方法。
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
在程序设计中,可以用面向对象程序设计方法解决问题。
由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
二、功能介绍它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
使用人员能快捷简单地进行操作。
即可单击按钮进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除运算,开方、求模等功能.(2)计算器上数字0——9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3) 输入的原始数据和结果都显示在窗口顶部的同一个标签中。
(4) 计算功能基本上是用公式计算方法实现。
(5) 程序可以能自动判断输出数据的正确性,保证不出现结果中以0开头等不正常现象。
功能模块的实现:基于dialog类添加Caculator类,在这个类中实现高级的按钮控件。
在此类中对于所有的对于按钮的绘制工作都是在对话框资源管理中完成的,实现按钮对鼠标单击动作执行不同的计算,在UpdateData(false)函数后显示文本。
计算器程序设计报告
计算器程序设计报告计算器程序设计报告1. 引言2. 设计目标本计算器程序的设计目标如下:提供简单的四则运算功能,包括加法、减法、乘法和除法;提供括号功能,可以进行复杂的运算操作;提供求幂功能,支持指数运算;接受用户输入,并返回计算结果。
3. 系统设计3.1 输入与输出本计算器程序采用命令行界面。
用户可以通过键盘输入数学表达式,程序将对表达式进行解析计算,并将结果输出到屏幕上。
3.2 表达式解析与计算本计算器程序的关键功能是解析并计算用户输入的数学表达式。
为了实现这一功能,我们需要进行以下步骤:1. 从用户输入中提取出数字、运算符和括号,并将它们按照正确的顺序组合成一个合法的数学表达式。
2. 对表达式中的括号进行处理,按照括号的优先级逐步计算子表达式的值,最终得到整个表达式的结果。
3. 对表达式中的运算符进行处理,按照运算符的优先级进行相应的运算。
3.3 错误处理为了提高用户体验和程序的健壮性,我们需要对用户输入进行合法性检查,并及时给出错误提示。
例如,输入的表达式中如果缺少括号或运算符,或者存在不支持的字符,程序应该能够及时发现并提示用户进行修正。
4. 系统实现本计算器程序的实现可以采用编程语言。
提供了丰富的字符串处理和数值计算的库,十分适合用来实现一个简单的计算器程序。
具体的实现过程如下:1. ,我们需要定义一个函数,用于接受用户输入的数学表达式,并返回计算结果。
这个函数可以使用的input函数实现。
2. 接下来,我们需要编写一个函数,用于对用户输入的表达式进行解析,并把它们按正确的顺序组合成一个合法的数学表达式。
这个函数可以使用的字符串处理函数实现。
3. 对于带有括号的表达式,我们可以使用递归的方式进行解析和计算。
递归函数可以反复调用自身,处理子表达式,并将最终的计算结果返回。
4. ,我们需要编写一个函数,用于对表达式中的运算符进行处理,并按照优先级进行相应的运算。
5. 测试与验证为了验证计算器程序的正确性和可靠性,我们需要进行一系列的测试。
编写一个计算器程序课程设计报告范例
编写一个计算器程序课程设计报告范例Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】《金融IT 入门-程序设计》课程设计报告中国地质大学长城学院XX 系2017年 月 3 日目录一.总体概述:二.设计目标: 三.程序流程图: 四.程序代码:五.设计体会:题目: 用Python 编写简易计算器程序学号:专业: 班级: 姓名: 指导教一、设计内容1.课程设计目的:1)掌握Java语言的程序设计方法;2)理论联系实际,进一步提高学生的软件开发技术;3)培养学生分析、解决问题的能力;4)提高学生实践论文撰写能力。
2.课程设计任务:1)设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);2)有求倒数、退格和清零功能。
3.创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。
图形界面采用继承windowadapter类,采取调用类方法来注册监听!4.设计要求:1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零功能。
2)课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
3)认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。
二、原理与分析1.开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。
程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。
2.设计思路设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。
编写一个计算器程序课程设计报告范例定稿版
编写一个计算器程序课程设计报告范例HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】《金融IT 入门-程序设计》课程设计报告中国地质大学长城学院XX 系2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码:五.设计体会:细则题目: 用Python 编写简易计算器程序 学号:专业:班级:姓名: 指导教师:2016-2017学年 第二学期一、设计内容--------------------------------------------------- - 2 -1. 课程设计目的:------------------------------------------- - 2 -2.课程设计任务:??------------------------------------------ - 2 -3.创新要求:------------------------------------------------ - 2 -4.设计要求:------------------------------------------------- - 2 -二、原理与分析------------------------------------------------- - 2 -1.开发的技术及功能------------------------------------------ - 3 -2.设计思路-------------------------------------------------- - 3 -3.设计效果图------------------------------------------------ - 3 -三、设计过程--------------------------------------------------- - 3 -1. 程序思路:----------------------------------------------- - 3 -2.功能实现:------------------------------------------------ - 4 -1)加减乘除求余以及指数运算------------------------------ - 4 -2)其他运算---------------------------------------------- - 4 -3)主要方法说明------------------------------------------ - 6 -4)程序流程图-------------------------------------------- - 6 -3.算法思路:------------------------------------------------ - 7 -4.数据分析:------------------------------------------------ - 8 -四、设计结果与分析---------------------------------------------- - 8 -⒈运行调试-------------------------------------------------- - 8 -1)进行加减乘除求余以及指数运算-------------------------- - 8 -2)求倒-------------------------------------------------- - 9 -3)退格------------------------------------------------- - 10 -4)清零------------------------------------------------- - 10 -5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算- 11 -6)连续运算(例:2*3*4=24.0)--------------------------- - 11 -7)异常处理(例:求倒时输入数为0)--------------------- - 12 -五、设计体会与小结-------------------------------------------- - 13 -六、参考文献-------------------------------------------------- - 13 -七、源程序---------------------------------------------------- - 14 -一、设计内容1.课程设计目的:1)掌握Java语言的程序设计方法;2)理论联系实际,进一步提高学生的软件开发技术;3)培养学生分析、解决问题的能力;4)提高学生实践论文撰写能力。
C语言课程设计-计算器程序设计报告书
C语言课程设计-计算器程序设计报告书课程设计说明书题目计算器程序设计起讫日期 2006 年 7月 3日至 2006 年 8月 6日所在院系软件学院专业机械+软件班级 04-2 学生姓名学号指导教师2010年 8 月日摘要当今社会是信息社会,科技经济高速发展的社会~为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。
由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品~随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小~电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成~电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延~下面我们将用我们学习的c 语言编写一个简易的计算器程序~实现简单的初步的计算功能~本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。
生成的程序可移植性强兼容性好稳定~现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。
这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。
但是,每次只能运算一个表达式。
不能运算多个表达式。
在程序里面在添加一组选择函数即可。
本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。
重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。
关键词:C语言 Tubro c 2.0汉化版计算器时钟目录第一章综述…………………………………………………………………1 (1 课题的现实意义………………………………………………………1 11(2 软件环境........................................................................1 1(3 硬件环境 (1)第二章系统设计流程图……………………………………………………2 2(1 系统流程图……………………………………………………………2 (2 主要功能表……………………………………………………………2 2第三章系统分析和设计……………………………………………………3 (1 图形的绘制和输出……………………………………………………3 33(2 文本的输出显示...............................................................3 3(3 计算函数的调用...............................................................4 3(4 程序的运行和退出 (5)第四章系统测试.....................................................................6 4(1 系统测试........................................................................6 4(2 调试..............................................................................6 4(3 错误原因分析一...............................................................6 4(4 错误原因分析二 (6)第五章用户使用说明书……………………………………………………8 5(1 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使用..................................................................9 5(3 退出程序 (9)第六章工作总结 (10)参考文献………………………………………………………………………11 附录: 源代码第一章综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
计算器程序设计报告
计算器程序设计报告计算器程序设计报告1-引言1-1 背景计算器是一种常见的工具,可以进行基本的数学运算,如加减乘除等。
为了满足用户的需求,我们决定设计一个计算器程序,使用户能够方便地进行各种数学运算。
1-2 目的本报告旨在描述我们设计的计算器程序的详细功能和实现过程。
通过本文档,读者将了解到如何使用计算器程序进行各种数学运算,并且可以根据需要进行扩展。
2-需求分析2-1 用户需求用户希望使用一个具有简单操作界面、支持各种基本数学运算,并具备一些额外功能的计算器程序。
2-2 功能需求●支持基本的四则运算:加法、减法、乘法、除法。
●支持括号的运算优先级。
●支持取余和取模运算。
●支持科学计数法。
●支持计算平方根、立方根等常用数学函数。
●支持存储和读取计算结果。
●支持清除当前输入和计算结果。
●支持多种界面主题选择。
●支持历史记录功能,记录之前的计算操作。
3-设计方案3-1 总体架构计算器程序将采用分层架构,包括界面层、业务逻辑层和数据存储层。
界面层负责用户交互,业务逻辑层负责处理用户的输入和计算逻辑,数据存储层负责存储用户的计算结果和历史记录。
3-2 界面设计界面将采用简洁直观的设计,包括数字按钮、运算符按钮和其他功能按钮。
用户可以通过按钮进行数学运算和额外功能的操作。
3-3 数据结构设计程序将使用栈来处理运算符的优先级和括号的匹配。
同时,还需设计适当的数据结构来存储计算结果和历史记录。
4-功能实现4-1 基本四则运算程序将设计相应的函数来实现加法、减法、乘法和除法运算,并考虑数值溢出和除数为零的异常情况。
4-2 括号的运算优先级程序将使用栈来处理具有括号的运算,保证括号内的运算先于外层运算。
4-3 科学计数法程序将设计函数来处理科学计数法表示的数值,并进行相应的运算。
4-4 常用数学函数程序将设计函数来计算平方根、立方根等常用数学函数,并进行相应的运算。
4-5 计算结果的存储和读取程序将提供存储计算结果和读取之前结果的功能,方便用户进行连续计算和结果的查看。
编写一个计算器程序课程设计报告_范例
《金融IT 入门-程序设计》课程设计报告中国地质大学长城学院XX 系2017年 月 3 日题目: 用Python 编写简易计算器程序 学号: 专业: 班级: 姓名:指导教师:2016-2017学年 第二学期目录一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.设计体会:一、设计内容------------------------------------------------------------ - 2 -1. 课程设计目的:---------------------------------------------------- - 2 -2.课程设计任务:--------------------------------------------------- - 2 -3.创新要求:--------------------------------------------------------- - 2 -4.设计要求: ---------------------------------------------------------- - 2 -二、原理与分析---------------------------------------------------------- - 3 -1.开发的技术及功能--------------------------------------------------- - 3 -2.设计思路----------------------------------------------------------- - 3 -3.设计效果图--------------------------------------------------------- - 4 -三、设计过程------------------------------------------------------------ - 4 -1. 程序思路:-------------------------------------------------------- - 4 -2.功能实现:--------------------------------------------------------- - 6 -1)加减乘除求余以及指数运算--------------------------------------- - 6 -2)其他运算------------------------------------------------------- - 6 -3)主要方法说明--------------------------------------------------- - 8 -4)程序流程图----------------------------------------------------- - 9 -3.算法思路:-------------------------------------------------------- - 10 -4.数据分析:-------------------------------------------------------- - 12 -四、设计结果与分析------------------------------------------------------ - 12 -⒈运行调试---------------------------------------------------------- - 13 -1)进行加减乘除求余以及指数运算---------------------------------- - 13 -2)求倒----------------------------------------------------------- - 9 -3)退格---------------------------------------------------------- - 10 -4)清零---------------------------------------------------------- - 11 -5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算------ - 11 -6)连续运算(例:2*3*4=24.0)------------------------------------ - 12 -7)异常处理(例:求倒时输入数为0)------------------------------ - 13 -五、设计体会与小结----------------------------------------------------- - 14 -六、参考文献----------------------------------------------------------- - 15 -七、源程序------------------------------------------------------------- - 15 -一、设计内容1.课程设计目的:1)掌握Java语言的程序设计方法;2)理论联系实际,进一步提高学生的软件开发技术;3)培养学生分析、解决问题的能力;4)提高学生实践论文撰写能力。
C语言课程设计报告【简易计算器设计】
C语言课程设计报告【简易计算器设计】1000字一、设计目的本设计旨在通过设计一个简易计算器,使初学者通过该计算器,了解C语言基本语法并且巩固数学运算知识。
二、设计内容(一)需求分析本计算器,要求能够完成一般的数学运算(加、减、乘、除),以及开平方、自然对数、正弦等常用函数的计算。
(二)功能设计1. 实现加、减、乘、除基本运算符的计算功能,实现数值运算。
2. 实现开平方、自然对数、正弦等常用函数的计算功能。
3. 提供菜单界面,使用户可以选择所需要的计算功能。
4. 能够对输入的数字进行异常处理,如输入非数字字符等。
(三)技术实现本计算器的实现基于C语言,主要涉及基本输入输出和函数的应用。
1. 输入输出功能:本计算器通过scanf函数实现用户输入,通过printf函数将结果输出。
2. 函数应用:本计算器通过调用数学库函数实现对开平方、自然对数、正弦等常用函数的计算。
(四)算法设计本计算器的算法主要基于基本的数学运算原理以及数学库函数的应用。
1. 加法运算:\t输入要加的两个数a和b\t输出a+b的结果2. 减法运算:\t输入要减的两个数a和b \t输出a-b的结果3. 乘法运算:\t输入要乘的两个数a和b \t输出a*b的结果4. 除法运算:\t输入要除的两个数a和b \t如果b=0,输出错误信息\t否则,输出a/b的结果\t5. 开平方:\t输入要开平方的数a\t如果a<0,输出错误信息\t否则,输出a的平方根\t6. 自然对数:\t输入要求自然对数的数a \t如果a≤0,输出错误信息\t否则,输出a的自然对数\t7. 正弦:\t输入要求正弦的角度a\t输出a的正弦值(五)程序设计以下是本计算器的主体代码:。
C++课程设计(计算器)报告
课程设计报告Visual C++ 课程设计题目:计算器题目:计算器1.程序功能简介实现计算器功能。
用户根据程序提示,输入数字,选择要进行的运算,可以进行加,减,乘,除,开方、温度单位的换算。
2.课程设计要求(1)完善计算器程序,改写成可对实数操作。
(2)完善程序,改为多个操作数基本四则运算,遇到0为止(3)增加函数、完成四则混合运算,注意算法要考虑优先级,对应增加主菜单选项。
(4)添加语句,使四则运算具有测试功能,即计算器出题目,并要求用户计算,同时计算机判断用户对错并打分,要求十题为一个单元,加减运算时最高为两位数运算,乘除法为两位数乘一位数,除法是两位数或三位数除以一位数,且没有余数。
3.设计思路将原函数的int型数据改为float型数据。
仿照类设计四则混合运算的程序,四则混合运算的分函数主要有double eval_exp(char *exp);//运算四则运算表达式的主函数,返回结果、void oopcalc::sizeyunsuan();//四则运算调用的主函数、double oopcalc::eval_exp(char *exp)//计算表达式函数并返回结果、get_token();//取表达式函数等。
利用类的结构编写一个void test()//测试函数,并给出选项选择测试的内容。
并参考资料改写随机数生成器源代码,使之符合类的结构能够被调用,添加有关头文件。
4.程序结构图5.添加的主要函数代码添加四则运算主要代码oopcalc::parser(){exp_ptr = NULL;}// 将exp_prt赋值为空指针double oopcalc::eval_exp(char *exp)//计算表达式函数并返回结果{double result;exp_ptr = exp;//将指针指向表达式get_token();//取表达式函数if(!*token)//取得链表为空时,显示错误警告,并返回0值{serror(2);return 0.0;}eval_exp2(result);if(*token) serror(0);return result;}void oopcalc::eval_exp2(double &result)//识别加减符号{register char op;double temp;eval_exp3(result);while((op = *token) == '+' || op == '-')//判断指针指向的符号{get_token();eval_exp3(temp);switch(op) //通过switch语句实现判断{case '-':result = result - temp;break;case '+':result = result + temp;break;}}}void oopcalc::eval_exp3(double &result)//识别乘除号与百分号,方法同加减号{register char op;double temp;eval_exp4(result);while((op = *token) == '*' || op == '/' || op == '%'){get_token();eval_exp4(temp);switch(op) {case '*':result = result * temp;break;case '/':result = result / temp;break;case '%':result = (int) result % (int) temp;break;}}}void oopcalc::eval_exp4(double &result){double temp, ex;register int t;eval_exp5(result);if(*token== '^'){get_token();eval_exp4(temp);ex = result;if(temp==0.0){result = 1.0;return;}for(t=(int)temp-1; t>0; --t) result = result * (double)ex;}}void oopcalc::eval_exp5(double &result){register char op;op = 0;if((tok_type == DELIMITER) && *token=='+' || *token == '-') {op = *token;get_token();}eval_exp6(result);if(op=='-') result = -result;}void oopcalc::eval_exp6(double &result){if((*token == '(')){get_token();eval_exp2(result);if(*token != ')')serror(1);get_token();}else atom(result);}void oopcalc::atom(double &result){switch(tok_type){case NUMBER:result = atof(token);get_token();return;default:serror(0);}}void oopcalc::serror(int error)//输入空时显示输入错误{static char *e[]= //将一组字符串赋值给指针{"Syntax Error","Unbalanced Parentheses","目前没有表达式"};cout << e[error] << endl;//输出字符串}void oopcalc::get_token()//{register char *temp;tok_type = 0;temp = token;*temp = '\0';if(!*exp_ptr) return;while(isspace(*exp_ptr)) ++exp_ptr;if(strchr("+-*/%^=()", *exp_ptr)){tok_type = DELIMITER;*temp++ = *exp_ptr++;}else if(isalpha(*exp_ptr)){while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;tok_type = V ARIABLE;}else if(isdigit(*exp_ptr)){while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;tok_type = NUMBER;}*temp = '\0';}int oopcalc::isdelim(char c){if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)return 1;return 0;}void oopcalc::sizeyunsuan()//——————————————————————————————四则运算{char expstr[80];cout << "输入0使计算终止。
C语言计算器程序设计报告
C语言集中上机实验报告一、需求分析(1)制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果。
(2)程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算)(3)可以输入括号二、设计思路(1)运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(zhan3)。
(2)开始,对所输入的字符串进行转化,把运算符存放在zhan2里面,把数值存放到data结构体里面,然后进行运算和操作。
(3)运用循环来实现无限输入,用数组nibo来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出结果,退出输入q。
三、流程图四、主程序段#include<stdio.h>#include<math.h>#include<malloc.h>double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo[50],zhan2[50];//zhan2存放的是运算符double x,n,l,z=0,zhan3[50];//暂存结果typedef struct{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0'){if(a[i]>='0'&&a[i]<='9'){z=0;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;//j跳到数字后一位x=z;if(a[j]=='.')//如果是小数的话就把小数和整数一起加上{l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}//如果是数字那么就保存到结构体里的dd数组里的第二个成员里else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+'){while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-'){if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/'){while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#'){while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}//把输出的多项式中的数字字符先转换成数值型存入结构体里,然后把加减乘除等的字符存入到zhan2里--这是转化过程并存储入站//下面就是开始计算结果相当于出站的过程把dd结构体里的数值取出和zhan2的字符来进行运算,当前结果存储到zhan3里,就用nibo数组来判断是否计算完毕while(t2>0){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')//{for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+'){zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-'){zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*'){zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/'){zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^'){zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#'){zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];}void main()//{for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");printf("请输入表达式无需输入= 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n'){a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n"); }}}五、调试分析六、调试说明以及分析:1、当输入为正确的格式时,能算出正确的结果,其中包括:小数、整数以及个位以上的数字,且运算符包括:加、减、乘、除运算,还有就是可以加括号等。
java程序设计报告---设计一个计算器
课程设计课程设计目的设计一个基于Swing的计算器应用程序,完成普通的算术运算。
课程设计要求1.设计的计算器是基于Swing的,可以完成加减乘除和取余运算。
2.增加计算器的日期计算功能,能够计算两个日期之间相距的天数。
(要判断键入的日期格式是否正确,并能正确处理按钮动作事件,同时能够得到正确的计算结果)设计要点主要练习使用布局管理器设计一个计算器的界面,并使用事件监听器处理数据的输入,完成相关的计算。
在面板上可以增加一个算术/日期的转换按钮来选择是普通计算还是日期计算。
以及增加一个清零的按钮CE,用以将显示结果的单行文本域清空,同时将各个参数设置为默认值。
二、总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet 中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。
本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能。
本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域还可以将进制转换的面板与单行文本框放一块包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
四、程序的调试与运行结果说明程序功能实现:使用swing组件和awt图形用户界面以及BroadLayout布局管理器。
通过在按钮的单击事件处理方法中调用类的成员方法calculator()来进行简易计算器的各种运算,并正确实现运算功能。
基于51单片机简易计算器课程设计报告(一)
基于51单片机简易计算器课程设计报告(一)基于51单片机简易计算器课程设计报告1. 介绍在本次课程设计中,我设计了一个基于51单片机的简易计算器。
本报告将会详细介绍该计算器的设计思路、功能实现以及课程设计中遇到的问题与解决方法。
2. 设计思路功能需求•支持基本的加、减、乘、除运算•具备数字输入与显示功能•具备清零和等于功能•具备连续计算功能硬件设计本计算器的硬件设计主要包括51单片机、LCD显示模块以及按键输入模块。
其中,51单片机负责控制计算器的逻辑,LCD显示模块用于显示计算结果和用户输入,按键输入模块用于接收用户的输入。
软件设计计算器的软件设计主要分为以下几个部分: - 初始化:初始化51单片机、LCD模块以及按键模块。
- 按键扫描:通过扫描按键模块,获取用户的输入。
- 数字输入与显示:根据用户输入,将数字显示在LCD上。
- 运算逻辑:根据用户输入的运算符和数字,执行相应的计算操作,并将结果显示在LCD上。
3. 功能实现初始化在初始化阶段,我们需要初始化51单片机的GPIO口、LCD模块以及按键模块。
具体的初始化代码如下:// 初始化51单片机的GPIO口// 初始化LCD模块// 初始化按键模块按键扫描为了获取用户的输入,我们需要通过按键模块进行扫描。
具体的按键扫描代码如下:// 扫描按键模块// 如果检测到按键按下,则进行相应的处理数字输入与显示当用户按下数字键时,我们将获取到的数字输入缓存起来,并将其显示在LCD上。
具体的数字输入与显示代码如下:// 获取按键输入的数字// 将数字添加到输入缓存// 将输入缓存显示在LCD上运算逻辑当用户按下运算符键时,我们需要根据输入的数字和运算符执行相应的计算操作,并将结果显示在LCD上。
具体的运算逻辑代码如下:// 获取运算符输入// 根据运算符和输入的数字执行相应的计算操作// 将计算结果显示在LCD上清零和等于功能为了提升用户体验,我们还可以添加清零和等于功能。
java程序设计课程报告书---计算器
面向对象程序设计课程设计报告题目:计算器模拟程序组成员信息任课教师:成绩:2010年12月30 日目录1.课程设计目的 (3)1.1 (3)1.2 (3)2.设计题目分析 (3)2.1 (3)2.2 (3)3.课程设计容 (3)3.1 (3)3.2 (4)4.设计心得与总结 (7)5、附录 (8)6、小组成员分工说明 (16)1、课程设计目的(1)复习稳固java语言的根底知识,进一步加深对java语言的理解和掌控〔2〕课程设计为大家提供了一个既动手又动脑,独立实践的时机,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
〔3〕培养我们在工程开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析2.1 题目简介利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、对数、平方、三角正/余弦、求倒数、进制转换的简单功能。
2.2 设计要求及需求分析设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI 来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比拟低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计容3.1 总体设计:系统总体设计框架Panel :5*6的数字及运算键Panel2:进制转换的单项选择按钮及倒退清空键Panel0:输入及运行结果系统功能模块图:Container//定义容器 方法参数说明:布尔型的border frame.setVisible ,设置窗口的可见性frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);设置关闭窗口的默认执行动作〔布尔型数据〕frame.setIconImage ;设置窗口最小化图标frame.setSize(int,int);设置窗口尺寸方法调用:主函数中的new Calculator()调用了前面的public Calculator()流程图:3.3 调试与测试:包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;〔列出主要问题的出错现象、出错原因、解决方法及效果等〕。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《金融IT 入门-程序设计》课程设计报告中国地质大学长城学院XX 系 2017年 月 3 日目录一.总体概述:二.设计目标: 三.程序流程图: 四.程序代码: 五.设计体会:题目: 用Python 编写简易计算器程序 学号:专业:班级:姓名:指导教师:2016-2017学年 第二学期一、设计内容1.课程设计目的:1)掌握Java语言的程序设计方法;2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力;4)提高学生实践论文撰写能力。
2.课程设计任务:??1)设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);2)有求倒数、退格和清零功能。
3.创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。
图形界面采用继承windowadapter类,采取调用类方法来注册监听!4.设计要求:1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零功能。
2)课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
3)认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。
二、原理与分析1.开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。
程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。
2.设计思路设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。
但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。
总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。
3.设计效果图设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。
设计的界面如下:图一计算器运行界面三、设计过程1.程序思路:1)本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。
包含各种按钮的面板JPanelp 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。
如:Button b=new Button();b.addActionListener(事件监听器);2)事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。
事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。
3)在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。
触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。
4)计算器完成的是一个数学表达式,如:3+2,所以可以采用一个数组来存储数字或字符,如3,+,2分别存储在数组中,最后运算时,可以一一取出来进行运算。
5)利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。
6)利用文本框显示操作数和运算结果。
2.功能实现:1)加减乘除求余以及指数运算void doOperation(){double m=Double.parseDouble(x.getText());if(preOperater.equals("")) sum=m; //无前一操作,结果为刚输入数//将结果与文本框中的数据按照前一个运算符运算if(preOperater.equals("+")) sum=sum+m; //加法运算if(preOperater.equals("-")) sum=sum-m; //减法运算if(preOperater.equals("*")) sum=sum*m; //乘法运算if(preOperater.equals("/")) sum=sum/m; //除法运算if(preOperater.equals("%")) sum=sum%m; //求余if(preOperater.equals("pow")) sum=Math.pow(sum, m); //求幂,指数运算}2)其他运算Ⅰ、求平方根Void sqrt(){double m=Double.parseDouble(x.getText());if (m<0)x.setText("负数不能开根号");elsex.setText(""+Math.sqrt(m));}Ⅱ、对数运算Void log(){double m=Double.parseDouble(x.getText());if (m<0)x.setText("负数不能进行自然对数运算");elsex.setText(""+Math.log(m));}Ⅲ、余弦运算Void cos(){double m=Double.parseDouble(x.getText());x.setText(""+Math.cos(m));}Ⅳ、正切运算Void tan(){double m=Double.parseDouble(x.getText());x.setText(""+Math.tan(m));}Ⅴ、e的指数运算Void exp(){double m=Double.parseDouble(x.getText());x.setText(""+Math.exp(m));}Ⅵ、倒数运算Void daoshu(){if (Double.parseDouble(x.getText())==0)x.setText("除数不能为零");else{x.setText(""+1/(Double.parseDouble(x.getText())));preOperater="";}}3)主要方法说明public cos(double x) //求x的余弦函数public tan (double x) //求x的正切函数public sqrt(double x) //求x的平方根public log (double x) //求x的自然对数运算public exp (double x) //求e的x次幂public pow (double a,double b) //求a的b次幂public daoshu (double x) //求x的倒数4)程序流程图3.算法思路:这是一个简单的计算器,里面所涉及到的功能就是加、减、乘、除、开方运算、等基本功能。
仅须定义两个变量来保存双运算操作的前一个数和当前在计算器上显示的数字即可,而对于单运算的操作要求更加简单,只需要一个变量就可以了。
当然对数据进行判断是必不可少的。
在输入数据之后Character.isDigit(Command.charAt(0))判断输入的数据是否符合要求。
不符合要求给出提示,符合要求以后将判断点击的运算符,执行相应的操作。
对于单运算操作要进一步判断是否符合要求,如果是就进入下步计算,如果不是就弹出相应的提示:“负数不能开根号"; "除数不能为零";用try….catch捕获异常,如果有异常则中止活动。
在进行开方(sqrt)运算时,如果输入数为负数,则弹出"负数不能开根号",中止运算。
在进行自然对数运算时(log)如果输入数为负数,则弹出"负数不能进行自然对数运算”。
在进行三角函数运算时(cos、tan)不必考虑输入的数字是否符合规范,对于任意输入的数函数本身有一个判断的过程,都能把输入的数转化为合适的范围,进而得到正确的结果。
对于加减乘除等双运算操作,每个功能都由每一个模块来实现,当按下加按钮时,进行相应的加法操作,这一块对相应的操作数没有要求;当点击减号时,则进行减法操作,由jTextField.getText()得到数字按钮的值显示在相应的文本框中;乘法操作在点击一个操作数然后点击乘号再点击另一个时得出相应的结果显示在文本框中;在作除法运算时,当被除数点击为零时,调用catch进行异常处理,弹出“Infinity”。
4.数据分析:在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。
触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。
四、设计结果与分析⒈运行调试1)进行加减乘除求余以及指数运算带负数的浮点加法运算(例:-1.2+4=2.8)依次按“+/-”(也可以最后按),“1.2”,“+”,“4”键按下“+”键按下“4”键按下“=”键分析:输出的结果如图所示,计算器可以直接输入“-”,计算比较简便,带负号的浮点数加法做起来没有问题。