简单计算器课程设计报告

合集下载

计算器课程设计报告

计算器课程设计报告

计算器课程设计报告一、课程目标本节计算器课程设计以提升学生的数学计算能力、逻辑思维能力和实际应用能力为核心,结合三年级学生的认知特点和实际需求,制定以下课程目标:1. 知识目标:(1)学生能够掌握计算器的基本功能及操作方法;(2)学生能够运用计算器进行简单的四则运算,并理解相关数学概念;(3)学生能够运用计算器解决生活中的实际问题,提高数学应用能力。

2. 技能目标:(1)培养学生运用计算器进行快速、准确计算的能力;(2)培养学生运用计算器辅助解决数学问题的能力;(3)提高学生逻辑思维能力,培养学生独立思考和解决问题的能力。

3. 情感态度价值观目标:(1)激发学生对计算器的兴趣,培养学生主动探究新知的习惯;(2)培养学生合作交流、分享成果的团队精神;(3)培养学生将所学知识应用于实际生活的意识,增强学生的自信心和成就感。

本课程旨在通过计算器教学,使学生在掌握基本计算技能的同时,提高数学素养,培养实际应用能力,激发学生对数学学习的兴趣,为学生的终身学习打下坚实基础。

二、教学内容本节计算器课程依据课程目标,结合课本内容,选择以下教学材料和安排:1. 教学大纲:(1)计算器的基本功能介绍与操作方法;(2)使用计算器进行加、减、乘、除四则运算;(3)运用计算器解决实际问题。

2. 教学内容安排与进度:第一课时:认识计算器,了解计算器的基本功能和操作方法,包括开关机、清屏、数字键、运算符号键等。

第二课时:学习使用计算器进行加、减、乘、除四则运算,并通过练习巩固运算方法。

第三课时:运用计算器解决生活中的实际问题,如购物找零、计算面积等。

3. 教材章节及内容列举:(1)第三章《计算器与计算》:介绍计算器的基本功能、操作方法及四则运算;(2)第四章《计算器在实际应用中的作用》:举例说明计算器在生活中的应用,提高学生实际操作能力。

教学内容科学系统地组织,注重理论与实践相结合,使学生能够熟练掌握计算器的使用方法,并能在实际生活中运用计算器解决简单问题,提高学生的数学素养。

vb 简易计算器实验报告

vb 简易计算器实验报告

简易计算器课程设计报告一、实验目的:模拟计算器的功能。

系统启动后, 先清屏, 再在显示屏右侧显示0字样, 系统仅接收数字键、加减乘除键、退格键、C键(复位)、=或回车键、ESC键(退出系统)作为有效按键, 其余按键不响应。

按键后屏幕显示效果要达到一般计算器显示屏的同样效果。

不要求设计一般计算器上都具有的M功能。

二、实验设计内容及思想:首先, 创建一个主体框架: 建立程序的主要界面后, 系统自动生成界面的主要窗口生成代码。

对于每个按钮的的代码段中, 分别添加事件触发的处理代码。

分别设立三个显示屏, 第一个显示屏作为“被加数”框, 第二个显示屏作为“加数”框, 第三个显示屏则作为输出框。

四则运算时直接采用计算表达式。

所以, 优先级和运算规则皆宜考虑在内。

在进行除法运算时, 若遇到除数为0, 则运用条件语句执行, 并在输出显示屏上输出“E”。

三角函数、指数、对数、整除、取余等运算, 也是运用类似手法。

考虑到计算器的操作简便性, 所以加入了复位和退出按钮。

三、源程序文件:Private Sub Command1_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x + yEnd SubPrivate Sub Command10_Click()Dim x As Integerx = Text1.TextText3.Text = Cos(x)End SubPrivate Sub Command11_Click()Dim x As Integerx = Text1.TextText3.Text = Tan(x)End SubPrivate Sub Command12_Click()Dim x As Integerx = Text1.TextText3.Text = Atn(x)End SubPrivate Sub Command13_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x ^ yEnd SubPrivate Sub Command14_Click() Dim x As Integerx = Text1.TextIf x <= 0 ThenText3.Text = "输入错误"ElseText3.Text = Log(x)End IfEnd SubPrivate Sub Command15_Click() Text3.Text = "此按钮仅作装饰用" End SubPrivate Sub Command2_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x - yEnd SubPrivate Sub Command3_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x * yEnd SubPrivate Sub Command4_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextIf y = 0 ThenText3.Text = "E"ElseText3.Text = x / yEnd IfEnd SubPrivate Sub Command5_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x \ yEnd SubPrivate Sub Command6_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x Mod yEnd SubPrivate Sub Command7_Click()Text1.Text = ""Text2.Text = ""Text3.Text = " 0" End SubPrivate Sub Command8_Click()EndEnd SubPrivate Sub Command9_Click()Dim x As Integerx = Text1.TextText3.Text = Sin(x)End Sub源代码截图:四、运行结果演示: 加法演示:减法演示: 乘法演示:除法演示:能够整除: 不能够整除:除数为零:。

C语言课程设计报告【简易计算器设计】

C语言课程设计报告【简易计算器设计】
附源程序清单:
1Calc.h(运算函数集头文件)
#include<stdio.h>
#include<string>
#include<string.h>
#define HIGH struct high
#define MAXN 5000
#define MAXSHOW 40
#define key_num 0
}
void initNum(HIGH *numb) //初始化
{
int i;
HIGH tmp;
memset(tmp.num, 0, sizeof(tmp.num));
*numb = tmp;
}
int absCmp(HIGH a, HIGH b) //比较绝对值大小
{
int i;
for(i = MAXN - 1; i > 0; i--)
5对于高精度,采用结构体struct high{int num[MAXN];};的形式,数组的一个元素存一位。个位为num[1],将符号存在num[0]之中。
1对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。
2对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。
2输入数字,再输入运算符,输入等于号的结果为“当前输入的数字→运算符→当前输入的数字”。可以调节正负号。
3输入“数字,运算符,数字,运算符...数字,运算符”亦可。
七、心得体会
这次“简单计算器制作”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度,而且在一定意义上对面向对象设计的理解更加深刻了。是我在编程路途上的一次质的飞跃。而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。当看着一个具有图形界面的计算器的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。

简单计算器实验报告

简单计算器实验报告

简单计算器实验报告简单计算器实验报告引言:在现代社会,计算器已经成为人们生活中不可或缺的工具之一。

无论是在学校、办公室还是家庭,计算器都扮演着重要的角色。

本实验旨在设计和构建一个简单的计算器,并通过实验验证其功能和准确性。

实验步骤:1. 设计计算器的外观和功能:我们首先对计算器进行了外观设计,选择了简洁、易于使用的界面。

然后确定了计算器的基本功能,包括加法、减法、乘法和除法。

2. 选择合适的硬件和软件:为了构建计算器,我们选择了合适的硬件和软件。

硬件方面,我们选用了一块Arduino开发板、液晶显示屏和按键。

软件方面,我们使用了Arduino编程语言。

3. 连接硬件和编写代码:我们将液晶显示屏和按键与Arduino开发板连接起来,并编写了相应的代码。

代码中包括了计算器的逻辑运算和界面显示。

4. 测试计算器的功能和准确性:在完成硬件连接和代码编写后,我们对计算器进行了测试。

我们输入了一系列的算术表达式,包括简单的加减乘除运算,以及复杂的多步运算。

通过与手动计算的结果进行对比,我们验证了计算器的功能和准确性。

实验结果:经过多次测试,我们的计算器表现出了良好的功能和准确性。

无论是简单的加法还是复杂的多步运算,计算器都能够正确地给出结果。

液晶显示屏清晰地显示了算术表达式和计算结果,而按键的响应速度也非常迅速。

讨论:虽然我们的计算器在功能和准确性方面表现出色,但仍有一些改进的空间。

首先,我们可以增加更多的功能,如开方、求余等。

其次,我们可以改进界面设计,使其更加美观和易于使用。

此外,我们还可以考虑加入更强大的处理器和更大的内存,以提高计算器的性能。

结论:通过本次实验,我们成功设计和构建了一个简单的计算器,并验证了其功能和准确性。

计算器在各种算术运算中表现出色,并且具有清晰的界面和快速的响应速度。

然而,我们也意识到计算器仍有改进的空间,包括增加更多功能和改进界面设计。

总的来说,本次实验为我们深入了解计算器的原理和构造提供了宝贵的经验。

c简单计算器课程设计

c简单计算器课程设计

c 简单计算器课程设计一、课程目标知识目标:1. 让学生掌握简单计算器的基本操作,包括开机、关机、清除屏幕、输入数字和运算符号。

2. 使学生理解加、减、乘、除四则运算的基本概念,并能够在简单计算器上进行正确的运算操作。

3. 帮助学生识别计算器上各个按键的功能,了解其对应的数学意义。

技能目标:1. 培养学生运用简单计算器解决实际问题的能力,如购物找零、计算面积等。

2. 提高学生进行四则运算的速度和准确性,提高计算效率。

3. 引导学生掌握计算器使用技巧,如连续计算、顺序计算等。

情感态度价值观目标:1. 培养学生对计算器的正确态度,认识到计算器是学习数学的工具,而非替代品。

2. 激发学生学习数学的兴趣,让学生在轻松愉快的氛围中体验数学计算的乐趣。

3. 培养学生的合作意识,使学生在小组讨论和互助学习中提高沟通能力,培养团队精神。

本课程针对小学三年级学生设计,结合学生年龄特点,注重激发兴趣和培养动手操作能力。

课程内容紧密联系教材,将目标分解为具体的学习成果,便于后续教学设计和评估。

通过本课程的学习,学生将能够熟练运用简单计算器,提高数学计算能力,培养良好的学习习惯和团队协作能力。

二、教学内容1. 计算器的基本结构:引导学生认识计算器的外观、各部分名称及其功能。

- 教材章节:第三章第1节《认识计算器》- 内容列举:计算器按键布局、显示屏、开机与关机、清除键等。

2. 四则运算操作:讲解加、减、乘、除四则运算在计算器上的操作方法。

- 教材章节:第三章第2节《计算器的四则运算》- 内容列举:按键输入、运算顺序、连续运算、计算结果读取等。

3. 计算器使用技巧:教授计算器的高级使用技巧,提高计算效率。

- 教材章节:第三章第3节《计算器使用技巧》- 内容列举:百分比计算、乘方运算、记忆功能等。

4. 实践应用:结合实际生活场景,让学生运用计算器解决实际问题。

- 教材章节:第三章第4节《计算器在实际生活中的应用》- 内容列举:购物找零、计算面积、体积、速度等。

《设计一个简单计算器》课程设计报告

《设计一个简单计算器》课程设计报告

C语言课程设计设计一个简单的计算器学生姓名:肖婷学生学号:201140130201所在班级:1141302任课教师:肖俊芳2012年6月19日目录1.设计目的2.内容3.总体设计(有流程图)4.源程序编写(附上了运行图)5.执行结果6.心得体会一、设计目的设计一个简单计算器,在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

熟悉和掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,逐步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、内容1、程序设计的一般步骤a、确定数据结构b、确定算法c、编程d、调试e、总结资料2、基本要求a.设计正确,方案合理,能实现相应功能。

b.界面友好,使用方便。

c.程序精炼,结构清晰。

d.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。

e.上机演示。

三、总体设计(程序设计组成框图、流程图)四、源程序编写#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]; double x,n,l,z=0,zhan3[20]; typedef struct{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 shu;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;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';}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;\}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++;}}while(t2>0){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}t1=1;while(nibo[t1]!='\0'){if(nibo[t1]>='0'&&nibo[t1]<='9'){for(i=0;i<=shu.top;i++){if(nibo[t1]-'0'==shu.data[i].d2){m=i;break;}}zhan3[++t3]=shu.data[m].d1;}else if(nibo[t1]=='+'){zhan3[t3-1]=zhan3[t3-1]+zhan3[t3]; t3--;}else if(nibo[t1]=='-'){zhan3[t3-1]=zhan3[t3-1]-zhan3[t3]; t3--;}else if(nibo[t1]=='*'){zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[t1]=='/'){zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[t1]=='^'){zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[t1]=='@'){zhan3[t3]=sqrt(zhan3[t3]);}t1++;}return zhan3[1];}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");}}五、执行结果1、输入5 4结果92、输入5 4结果 13、输入5 4结果204、输入5 4结果 1图例:2012年6月19日星期二注:分别输入5、4,分别进行加减乘除。

简单计算器设计报告

简单计算器设计报告

简单计算器设计报告045一、基本功能描述通过文本编辑框实现基本整数的加减乘除运算二、设计思路如下图是整个程序进行的流程图, 基本方法是在ItemText文本编辑框输入字符, 程序对字符进行判断, 若输入不是数字则提示错误。

输入正常时, 通过下拉框ComboBox_InsertString选择相应运算符。

点击等号IDC_OK, 即可得出运算结果。

操作简便, 算法简单。

三、软件设计1、设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建, 在弹出框内选择MFC AppWizard[exe]工程, 输入工程名zhoutong及其所在位置, 点击确定将弹出MFC AppWizard-step 1对话框, 选择基本对话框, 点击完成MFC AppWizard就建立了一个基于对话窗口的程序框架四、主要程序分析1.字符判定函数BOOL IsInt(TCHAR*str) {int i=atoi(str);TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) {return FALSE;}Else{return TRUE;}}3、该函数通过atoi把文本编辑框读取的字符转换为数字, 再通过wsprintf把转换数字转换为字符, 通过strcmp比较原字符和转换得来的字符。

如相同返回true,不通则返回false.4、运算符选择程序BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP);ComboBox_InsertString(hwndComboOP,-1,TEXT("+"));ComboBox_InsertString(hwndComboOP,-1,TEXT("-"));ComboBox_InsertString(hwndComboOP,-1,TEXT("*"));ComboBox_InsertString(hwndComboOP,-1,TEXT("/"));return TRUE;}通过ComboBox_InsertString插入要输入的运算符5、主程序字符获取TCHAR str1[256];TCHAR str2[256];GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));调用子程序判断输入是否为数字if(IsInt(str1)==FALSE){MessageBox(hwnd,TEXT("第一个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR); return;}if(IsInt(str2)==FALSE){MessageBox(hwnd,TEXT("第二个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR); return;}将输入字符转换为数字int i1=atoi(str1);int i2=atoi(str2);int i3=0;获取运算符HWND hwndComboOp=GetDlgItem(hwnd,IDC_COMBOOP);int curIndex=ComboBox_GetCurSel(hwndComboOp);运算switch(curIndex){case 0:{i3=i1+i2;}break;case 1:{i3=i1-i2;}break;case 2:{i3=i1*i2;}break;case 3:{i3=i1/i2;}break;}运算结果转换为字符TCHAR str3[256];itoa(i3,str3,10);输出运算结果SetDlgItemText(hwnd,IDC_EDIT3,str3);}break;退出程序case IDC_EXIT:{exit(0);}break;五、结果分析六、该计算器只能实现简单的整数运算, 不能对小数分数进行运算。

简单计算器实验报告

简单计算器实验报告

简单计算器实验报告
《简单计算器实验报告》
实验目的:通过使用简单计算器进行数学运算,探究其在日常生活中的实际应用价值。

实验材料:简单计算器、纸笔
实验步骤:
1. 使用简单计算器进行加法、减法、乘法和除法运算,记录运算过程和结果。

2. 尝试使用计算器进行复杂运算,如求平方根、求倒数等。

3. 计算器的功能和使用方法的讨论。

实验结果:
通过实验,我们发现简单计算器在日常生活中有着非常重要的应用价值。

它可以帮助我们快速准确地进行数学运算,节省时间和精力。

同时,计算器还具有一些高级的功能,如求平方根、求倒数等,这些功能在科学计算和工程计算中也具有很大的作用。

结论:
简单计算器是我们日常生活中必不可少的工具之一,它的实际应用价值是非常高的。

通过这次实验,我们更加深入地了解了计算器的功能和使用方法,对于我们的学习和工作都有着重要的帮助。

通过这次实验,我们不仅对计算器有了更深入的了解,也增加了对数学运算的兴趣,希望我们在日常生活中能够更加灵活地运用计算器,提高我们的数学运算能力。

c简单计算器课程设计报告

c简单计算器课程设计报告

c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。

2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。

3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。

技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。

2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。

3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。

情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。

2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。

3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。

本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。

课程性质为实践操作类,强调学生在动手实践中掌握知识。

在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。

课程目标分解为具体学习成果,以便于后续教学设计和评估。

在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。

二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。

2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。

- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。

4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。

- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。

教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。

c简易计算器课程设计

c简易计算器课程设计

c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。

2. 学生能够运用所学知识,解决生活中简单的数学问题。

3. 学生了解计算器的发展历程,认识到科技对生活的影响。

技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。

2. 学生通过实际操作,培养动手能力和问题解决能力。

3. 学生能够运用计算器辅助学习,提高数学学习效率。

情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。

2. 学生在合作交流中,培养团队意识和沟通能力。

3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。

课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。

学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。

教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。

在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。

通过本课程的学习,使学生达到预期的学习成果。

二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。

2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。

3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。

4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。

教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。

第二课时:四则运算的操作方法,实践练习。

第三课时:计算器在数学学习中的应用,解决实际问题。

教材章节:《信息技术》第四章:计算器与计算机。

简单计算器课程设计报告

简单计算器课程设计报告

简单计算器课程设计报告目录1.基本功能描述 (1)2.设计思路 (1)2.1相关说明 (1)2.2各块流程图 (2)3.软件设计 (7)3.1 设计步骤 (7)3.2 界面设计 (9)3.2.1添加图标 (9)2.2.2添加控件 (10)3.2.3添加菜单 (12)3.3 关键功能的实现 (14)4.结论与心得体会 (16)5.参考文献 (18)6.思考题 (18)7.附录 (20)7.1调试报告 (20)7.2测试结果 (21)7.3关键源代码 (23)简单计算器1.基本功能描述该简单计算器主要实现了双目运算和单目运算功能。

双目运算符包含基本的四则运算及乘幂功能,单目运算符主要包含正余弦,阶乘,对数,开方,倒数等运算,同时也包含角度制的转换、科学型与标准型的转换、输出设计者信息、清除、退格、退出功能。

简单计算器可对输入的任意操作数,包括小数和整数及正数和负数进行上述各种运算并能实现连续运算,并且能在出现错误时给出相应提示。

同时也可以操作与运算按钮相对应的菜单项。

2.设计思路2.1相关说明1)相关的变量标志位:m_num:与编辑框相关联的变量num1:作为临时变量储存当时按下的按钮值num2:作为临时变量储存编辑框的值m_hudu:角度制的标志位,为0时为弧度m_jiao:角度转换的临时变量point:bool值,小数点有无标志位,当值为ture时为有小数点dianhou:小数点后位数记录位danshuang:单双目运算符标志位zhengfu:bool值,作为正负数标志位,当为ture时为正数2)主要功能设计简述:该简单计算器的重难点主要在一个编辑框要实现输入和输出的显示,小数的实现,正负数的交替输入,退格时数的实现,单双目运算符的不同如何实现等方面。

其中单目运算符sin、cos、tan等要考虑角度转换,之后的运算和其他单目运算符没有差别,基于以上的考虑,想到必须对相关的操作进行相应的标志位,具体的如上列举。

简单计算器c++课程设计报告书

简单计算器c++课程设计报告书

简单计算器1 基本功能描述简单计算器包括双目运算符和单目运算符。

双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。

可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。

出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。

2 设计思路如图1,是输入数据子函数的流程图。

打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。

判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。

如图2,是整个计算器的流程图。

对于输入的算式,判断运算符是双目运算符还是单目运算符。

如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。

下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。

结束程序。

图2 简单计算器总流程图3 软件设计3.1设计步骤打开Microsoft Visual C++6.0,在文件中点击新建,在弹出框选择MFC AppWizard[exe]工程,输入工程名及其存储路径,点击确定,如图3所示。

图3 新建MFC AppWizard[exe]工程将弹出MFC AppWizard-step1对话框,选择基本对话框,点击完成,如图4所示。

图4 基本对话框这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示。

图5 新建的对话框3.2界面设计1、创建控件在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_LUXIAOYING_DIALOG,在右边的窗口中显示出待编辑的对话框。

开始摆放控件,包括编辑框和按钮的创建。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。

二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。

乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。

2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。

栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。

3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。

然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。

三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。

2、操作系统:Windows 10 操作系统。

四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。

2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。

遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。

3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。

根据运算符的优先级进行相应的运算,将结果压入操作数栈。

4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。

c课程设计简易计算器

c课程设计简易计算器

c 课程设计简易计算器一、课程目标知识目标:1. 让学生掌握简易计算器的基本功能与操作,包括加、减、乘、除等四则运算。

2. 使学生理解计算器的工作原理,了解显示屏、键盘等组成部分及其作用。

3. 帮助学生掌握计算器的使用规范,如开关机、输入输出等基本操作。

技能目标:1. 培养学生运用计算器解决实际问题的能力,提高计算速度和准确性。

2. 培养学生通过观察、尝试、探索等方法,自主发现计算器操作技巧和功能特点。

3. 培养学生合作交流的能力,学会在小组讨论中分享观点,共同解决问题。

情感态度价值观目标:1. 激发学生对计算器的学习兴趣,培养良好的学习习惯和探究精神。

2. 培养学生尊重科学、严谨求实的态度,树立正确的价值观。

3. 培养学生团队协作意识,增强合作解决问题的能力。

本课程针对小学四年级学生,结合教材内容,以实用性为导向,注重培养学生的动手操作能力和实际问题解决能力。

课程目标明确,易于衡量,为后续教学设计和评估提供依据。

在教学过程中,教师应关注学生个体差异,因材施教,确保每位学生都能在课程中收获知识和技能。

二、教学内容本章节教学内容主要包括以下几部分:1. 计算器的基本结构:介绍计算器的显示屏、键盘、电池等组成部分及其功能。

2. 四则运算操作:详细讲解加、减、乘、除四则运算在计算器上的操作步骤。

3. 计算器操作规范:教授计算器的开关机、清屏、输入输出等基本操作规范。

4. 实际问题解决:结合教材实例,引导学生运用计算器解决生活中的实际问题。

5. 操作技巧与功能探索:指导学生探索计算器的其他功能,如百分比、乘方等,并分享操作技巧。

教学内容安排如下:第一课时:计算器的基本结构及操作规范介绍。

第二课时:四则运算操作教学,以教材为例题进行讲解和实操。

第三课时:实际问题解决,分组讨论并运用计算器解决生活中的数学问题。

第四课时:操作技巧与功能探索,学生自主探究计算器其他功能并分享。

教学内容与教材紧密关联,确保科学性和系统性。

c课程设计简单计算器

c课程设计简单计算器

c课程设计简单计算器一、教学目标本节课的学习目标包括:知识目标:学生需要掌握简单计算器的原理和基本操作,了解计算机内部是如何进行加减乘除等运算的。

技能目标:学生能够独立设计并实现一个简单计算器,提高逻辑思维能力和编程能力。

情感态度价值观目标:通过完成计算器设计,学生能够体会到编程的乐趣,增强对计算机科学的兴趣,培养创新精神和团队合作意识。

二、教学内容本节课的教学内容主要包括:1.简单计算器的原理介绍:讲解计算器的工作原理,让学生了解计算机是如何进行数学运算的。

2.编程语言的基本概念:介绍编程语言的基本语法和结构,为学生编写计算器程序打下基础。

3.计算器的设计与实现:引导学生通过编程实现一个简单计算器,培养学生的实际操作能力。

三、教学方法本节课采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解计算器的原理和编程语言的基本概念,为学生提供理论支持。

2.案例分析法:分析已有的计算器程序,让学生从中学习编程技巧和方法。

3.实验法:学生动手编写计算器程序,培养实际操作能力和创新能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供配套的教材,帮助学生学习计算器原理和编程语言。

2.多媒体资料:制作PPT等多媒体资料,生动形象地展示计算器原理和编程方法。

3.实验设备:准备计算机等实验设备,让学生能够顺利进行编程实践。

五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现评估:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和积极性。

2.作业评估:通过学生提交的作业,评估学生的编程能力和对知识的理解程度。

3.考试评估:设置期末考试,测试学生对简单计算器原理和编程语言的掌握程度。

六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节安排,逐步讲解计算器原理和编程语言知识。

2.教学时间:安排在正常的上课时间,确保学生能够专心学习。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:学号:姓名:一、课程设计目的1. 巩固和加深C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、课程设计的基本过程课程设计的基本过程包括5个步骤,即功能需求,总体设计,详细设计,程序测试,结论。

每个步骤都有其特定的任务。

2.1 【功能需求】功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。

2.2 【总体设计】2.2.1 系统模块机构框图2.2.2 功能模块框图2.2.3 系统流程图2.2.42.3Visual C++2.3.1 模块描述(1)显示界面模块为系统提供类似于菜单的功能,让用户输入要操作的运算类型的数字代码,并进入相应的功能执行程序,显示相应界面。

(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。

(3)退出程序模块。

根据用户的需要,选择是否退出程序。

2.3.2 系统头文件#include<stdio.h> /* I/Q函数 */#include<math.h> /* 数学函数的定义 */#include<conio.h> /*屏幕操作函数*/#include<stdlib.h> /*库函数*/2.3.3 函数声明(1)主函数main()功能:计算器功能选择界面输入:用户输入运算类型、退出程序的相应数字代码(1 四则运算,2 特殊运算,3 退出程序)处理:根据用户输入的数字代码,跳转到相关功能函数输出:显示相应界面或退出程序程序清单(a)void main(){char h;int a;double b;do{printf(" 简单计算器 \n");printf("******************************\n");printf(" 请输入要进行的运算 \n");printf("------------------------------\n");printf(" 1 四则运算 \n");printf(" 2 特殊运算 \n");printf(" 3 退出程序 \n");h=getche();switch(h) /*判断用户想要进行的操作*/ {case'1': /*输入1则调用四则运算函数*/ a=size();printf("结果是: %d",a);break;case'2': /*输入2则调用特殊运算函数*/ b=teshu();printf("结果是:%f",b);break;case'3': /*输入3则退出程序*/break;}}while(h!='3');}(2)自定义函数size()功能:进行简单的加、减、乘、除四则运算输入:用户输入要计算的数字和运算符号(+、-、* 、/)处理:根据用户输入的运算符号,跳转到相关运算函数,并调用输出:运算结果和是否需要继续运算(y/n)程序清单(b)int size() /*定义四则(size)运算函数*/{int n,m;int c;char l;int d;do{printf("\n请输入第一个要计算的数并按Enter结束:");scanf("%d",&m);printf("\n请输入第二个要计算的数并按Enter结束:");scanf("%d",&n);printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");l=getche(); /*得到运算符号*/switch(l){case'+': /*加法运算*/c=m+n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'-': /*减法运算*/c=m-n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'*': /*乘法运算*/c=m*n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'/': /*除法运算*/c=m/n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;}for(d=0;d<=999999;d++){printf("\t 是否继续?(y/n):"); /*是否继续运算*/l=getche(); /*得到输入的值*/printf("\n");if(l=='y') /*如果得到的是y,则重复运算步骤,达到无限运算的作用*/{printf("\n请输入下一个要计算的数并按Enter结束:"); scanf("%d",&n);printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");l=getche();switch(l){case'+': /*加法运算*/c=c+n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'-': /*减法运算*/c=c-n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'*': /*乘法运算*/c=c*n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;case'/': /*除法运算*/c=c/n;printf("\n\n\t结果是 %d\n",c);printf("\n");break;}}else{exit(l); /*如果得到的是n,则退出程序*/ }}}while(l!='n');return(c); /*返回值*/}(3)自定义函数teshu()功能:进行一些特殊的运算(余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算)输入:用户输入要计算的数字和特殊运算方式的数字代码(1 余弦,2 正弦,3 正切,4 绝对值,5 平方根,6 以e为底的指数,7 以10为底的对数)处理:根据用户输入的数字代码,跳转到相关运算函数程序输出:运算结果和是否需要继续运算(y/n)程序清单(c)double teshu() /*定义(teshu)特殊运算函数*/{double y;int n,m;char p;printf("---------请选择特殊运算类型---------");printf(" 1 余弦 2 正弦 3 正切 4 绝对值 \n");printf(" 5平方根 6 以e为底的指数 7 以10为底的对数 \n");printf("\n请输入您要计算的数并按Enter结束: ");scanf("%d",&m); /*得到要进行运算的数*/printf("\n请选择您要做的运算类型: ");n=getche(); /*得到要做的运算*/ do{switch(n){case'1':y=cos(m); /*余弦函数*/printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'2':y=sin(m); /*正弦函数*/printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'3':y=tan(m); /*正切函数*/ printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'4':y=fabs(m); /*绝对值函数*/printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'5':y=sqrt(m); /*平方根函数*/printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'6':y=exp(m); /*底数为e的指数函数*/ printf("\n\n\t结果是: %f\n",y);printf("\n");break;case'7':y=log10(m); /*底数为10的对数函数*/ printf("\n\n\t结果是: %f\n",y);printf("\n");break;}printf("\n是否继续?y/n");p=getche();if(p=='n')exit(1);return(y); /*返回值y*/}while(p=='y');}2.4【程序测试】系统主界面其他功能截图等……2.5【设计总结】本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。

简易计算器的课程设计

简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握其功能和使用方法。

2. 学生能运用所学的数学知识,如加、减、乘、除等运算,进行计算器操作。

3. 学生了解计算器在日常生活和学习中的应用场景。

技能目标:1. 学生能够熟练操作简易计算器,完成基本的数学运算。

2. 学生通过计算器解决实际问题,提高问题解决能力和逻辑思维能力。

3. 学生通过小组合作,培养团队协作能力和沟通能力。

情感态度价值观目标:1. 学生培养对数学学习的兴趣,认识到数学与生活的紧密联系。

2. 学生在学习过程中,培养细心、耐心和严谨的学习态度。

3. 学生通过计算器的使用,认识到科技进步对生活的影响,增强科技意识。

课程性质:本课程为实践操作课程,结合数学知识,培养学生的实际操作能力和问题解决能力。

学生特点:考虑到学生所在年级的特点,课程内容难度适中,注重激发学生的学习兴趣和动手能力。

教学要求:教师应注重理论与实践相结合,关注学生的个别差异,引导他们主动探索和解决问题。

在教学过程中,将目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 计算器的发展历史及分类- 了解计算器的演变过程,认识不同类型的计算器及其功能特点。

2. 简易计算器的结构组成- 学习简易计算器的按键功能、显示屏幕、电池等组成部分。

3. 基本数学运算操作- 学习运用计算器进行加、减、乘、除等基本数学运算。

4. 计算器在生活中的应用实例- 分析计算器在购物、预算、科学研究等领域的实际应用。

5. 计算器操作技巧与注意事项- 掌握计算器操作的快捷键,了解使用计算器时的注意事项。

6. 解决实际问题的方法- 结合实际问题,运用计算器进行数据计算和问题分析。

教学内容安排与进度:第一课时:计算器的发展历史及分类,简易计算器的结构组成。

第二课时:基本数学运算操作,计算器在生活中的应用实例。

第三课时:计算器操作技巧与注意事项,解决实际问题的方法。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C 语言课程设计报告
系:
级:
号:
名:
院 班 学 姓
、课程设计目的
、课程设计的基本过程
课程设计的基本过程包括 5 个步骤,即功能需求,总体
设计,详细设计,程序测试,结论。

每个步骤都有其特定的 任务。

2.1 【功能需求】
功能概述:该软件为用户提供一个在 windows 系统上
运 行的简单计算器,能进行简单的加、减、乘、除四则运算和
些常用特殊运算,包括余弦运算、正弦运算、正切运算、 绝对值、平方根运算、以 e 为底的指数运算、以 10 为底的 对数运算。

2.2 【总体设计】
1. 巩固和加深 C 语言课程的基本知识的理解和掌握
2. 掌握 C 语言编程和程序调试的基本技能
3. 利用 C 语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用 C 语言解决实际问题的能力。

简单计算器课程设计报告设计任务

简单计算器课程设计报告设计任务

简单计算器课程设计报告设计任务设计一个简单计算器课程,包括加、减、乘、除四种基本运算的实现及其对应的按钮和界面。

设计思路:1. 界面设计:一个简洁的界面可以增强用户体验,使用Java Swing提供的GUI工具可以方便快速地实现界面设计。

计算器界面应该包括以下部分:①显示屏:显示当前数值和操作符。

可以使用JLabel或者JTextArea实现。

②数字按钮:0 - 9的数字按钮。

可以使用JButton实现。

③运算符按钮:加、减、乘、除等运算符按钮,可以使用JButton实现。

④其他按钮:清除、退格、等于按钮,可以使用JButton实现。

2. 实现逻辑:在设计计算器的逻辑时,应该考虑到以下情况:①数字键输入:记录当前数字的值,输出到显示屏。

②运算符键输入:记录当前数字的值,输出到显示屏,保存当前操作符。

③清除键:清空当前数字的值和操作符,并输出到显示屏。

④退格键:删除当前数字的最后一个字符,输出到显示屏。

⑤等于键:根据保存的操作符,计算上一个数字和当前数字的结果,并输出到显示屏。

在整个计算器的逻辑中,还需要考虑一些异常的情况,例如被除数为零、除数输入错误等问题,需要对这些异常情况进行处理和提示。

3. 代码实现:在代码实现上,应该把界面设计和计算逻辑完全分开,使得代码的可读性和可维护性都能够得到保障。

同时,代码还应该尽可能地遵循面向对象的设计原则。

总结:通过上述设计思路,可以较为完整地实现一个简单计算器的功能。

在实现时,还需要考虑一些小细节的处理,如显示屏的格式控制、运算结果的精度控制等等。

在代码实现时,可以采用MVC(Model-View-Controller)架构,使得代码的可扩展性能够得到保障。

数据结构课程设计报告--简单计算器

数据结构课程设计报告--简单计算器

计算机科学与信息工程学院数据结构课程设计设计题目:简单计算器专业计算机软件班级计软2班小组成员蔡松佐陈吉院王希刘军符锦柏曾祖滨刘一霖指导教师张显全2010 年12 月25 日数据结构分工情况组长:蔡松佐组员:曾祖滨、陈吉院、符锦柏、刘军、刘一霖、王希王希:负责设计程序的整体框架(定义数据结构,编写主函数)评分:90分符锦柏:负责编写栈的代码评分:95分蔡松佐:负责编写计算算术表达式的代码评分:95分陈吉院:负责编写比较符号优先级的代码评分:90分曾祖滨:负责将所有代码整合成一个完整的程序评分:88分刘军:负责写实验报告评分:90分刘一霖:负责测试程序,看其是否具有良好的健壮性评分:88分简单计算器一基本功能描述简单的计算器的功能是对基本的加、减、乘、除、四则运算,可对输入的操作数,包括整数,小数等进行运算。

二设计思路本程序主要是采用栈的理论知识,主要用到两个结构体栈,一个用来转化表达式,一个用来计算表达式。

区别就在于一个存储字符,一个存储浮点。

首先,用一个字符数组来存储用户输入的中缀表达式。

然后用栈来把这个表达式转化为后缀表达式,转化时要进行符号优先级比较,这里将‘*’‘/’的优先级定为2,‘+’‘-’定为1,括号和‘=’定为0。

具体思想如下:例如用户输入了1+2*3=,将其存放入一个字符数组中。

先在栈的底部存放一个‘=’号符,用作符号优先级比较。

首先将1存放到另外一个字符数组s1中,再将‘+’号入栈。

入栈的同时与底部的‘=’比较优先级,‘+’的优先级高于‘=’,所以不出栈,之后将2存放入s2中,然后再将‘*’入栈,入栈的同时与‘+’比较符号优先级,‘*’比‘+’高,所以不出栈。

再将3存入s2中。

之后将栈中不是‘=’的运算符都弹出栈,并依次存入s2中。

所以s2中的表达式为123*+。

之后进行计算,计算时用到浮点栈。

首先将s2中的字符依次入栈,遇到运算符时进行计算。

所以将123入栈后,再将‘*’入栈的同时,将前面两个数字进行运算,算出结果为6并存入栈中,之后再将‘+’入栈,再与1进行运算,结果即为7,然后输出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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]=='^')//对乘方的定义
C语言集中上机报告
院系:通信与信息工程学院
班级:电子信息工程0120905班
姓名:
指导教师:张林
2012年05月20日
1.1
为综合应用C语言程序设计理论知识、进一步提高我们综合解决问题、协调工作的能力和良好的软件开发习惯,学校为我们特意安排此次课程设计。希望通过该实习能够进一步激发我们的学习热情,培养我们初步编程的能力,为后续的学习和发展奠定基础。
l=l+1;
x=x+n*(a[k]-'0');//一个带小数的操作数读取完成
}
i=j+1;//开始下一个操作数的读取
}
else i=j;
shu->data[++shu->top].d1=x;//先取shu->top值,++,(shu->top先加1在使用。
shu->data[shu->top].d2=++cnt;
{
nibo[++t1]=zhan2[t2];//将括号输出给表达式
nibo[t1+1]='\0';//下移一位
t2--;//指向zhan2的下一位
}
zhan2[++t2]=a[i];
i++;
}
}
else if(a[i]=='*'||a[i]=='/')//对乘法和除法的定义
{
while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#')

全部代码及注释
#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;//定义整型变量i,j,k,m,n,cnt,t1,t2,t3
{j++;}
j--;
for(k=i;k<=j;k++)
{
n=pow(0.1,l);//pow(x,y)表示计算x的y次方,这里指计算0.1的l次方
l=l+1;
x=x+n*(a[k]-'0');//一个带小数的操作数读取完成
}
i j
.
k
n
x=k+n
(3)逆波兰算法流程
1、建立运算符栈stackOperator用于运算符的存储,压入'\0'。
char nibo[50],zhan2[50];//定义字符型数组
double x,n,l,z=0,zhan3[50];//定义双精度变量x,n,l,z,zhan3[50]
typedef struct//结构体定义
{
double d1;
int d2;
}dd;
typedef struct
{
dd data[50];
2.编译时提示错误
原因为头文件里忘了写#include<malloc.h>,导致出现 Undeclaredidentifier,在头文件里加上即可改正。
4.
※(普通加减乘除四则运算)
※(小数的开方运算)
※(负数的乘方运算)
※(带括号的运算)
※(负数的开方运算)
※(很大的数也可以运算)

本课程设计我只完成了一些基本的功能,还有很多功能没有实现:如不能进行三角函数运算,不能进行ln,阶乘运算等。还有因为我自己没有设计出计算器界面,所以使用户感觉不是那么方便,因此该设计还有待进一步完善。我觉得要设计出好用的计算器界面,可以利用VC++6.0里边的MFC AppWizard(exe)进行设计,我已经初步设计出计算器界面,但和程序的结合方面还有问题,但我有时间会继续完成的。
除此之外要善于思考。程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。只有这样才能纠正程序的不足并使其更加人性化。
这次课程设计让我学到了很多,不仅是巩固了先前学的C程序设计知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。希望今后类似这样课程设计、类似这样的锻炼机会能更多些!
{
char x,a[50];
double jieguo;
int i=0;
a[0]='$';
printf("#表示开方,^表示乘方(支持负数)\n");
printf("请输入表达式,退出请输入q:\n\n");
scanf("%c",&x);
if(x=='q') break;//输入q表示退出
while(x!='\n')//碰到'\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]!='(')//t2>0说明zhan2里还有括号
1.3
用不同的数组存储操作数和操作符号,然后要定义运算的优先级,因为我准备通过输入运算表达式来直接求出运算结果,所以要使用到括号。通过上网查阅资料,我决定采用逆波兰表达式,它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下: 如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。由于我对栈的应用不是很熟练,因此这里改用数组和指针。但基本思路是类似的。
1.2
掌握从上至下的分析过程;合理完成功能的分解;分析获得实现功能所需的各种数据结构;功能模块的整合;使用面相过程开发语言建立各种数据结构,各种结构体;掌握面相过程开发语言的特点,建立各种函数实现各个功能;调用各个功能模块,完成系统的整体功能;调试、测试各个功能模块,并完成系统的测试;分析画出各个功能的流程等。
nibo[t1+1]='\0';
j--;
}
t2=j-1;
i++;
}
else if(a[i]=='+')//对加法的定义
{
while(t2>0&&zhan2[t2]!='(')//定义当加号和括号同时出现时
{
nibo[++t1]=zhan2[t2];//将zhan2[t2]赋给nibo[++t1]
nibo[t1+1]='\0';
如果 栈顶元素运算符优先级 >= 当前元素的优先级,出栈并顺序输出运算符直到 栈顶元素优先级 < 当前元素优先级,然后当前元素入栈; 如果 栈顶元素 < 当前元素,直接入栈。
5、重复第3点直到表达式扫描完毕。
6、顺序出栈并输出运算符直到栈顶元素为'\0'。

4.1
1、编译时提示错误:
原因为分号是在中文输入法状态下输入,将其改为英文输入状态下了分号即可。

通过这次课程设计,我明白了很多。
首先基本功要过硬。不能马虎经常犯犯小错误。提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。
其次要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的头脑来完成它了。

2.1
2.2主要功能表
序号
文件名
主要功能
备注
1
相关文档
最新文档