C模拟计算器程序合院何浩

C模拟计算器程序合院何浩
C模拟计算器程序合院何浩

合肥学院

计算机科学与技术系

课程设计报告

2009~2010学年第二期

课程

课程设计名称

学生姓名

学号

专业班级

指导教师

一.课程设计题目:

模拟计算器程序

设计内容:设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。选作内容如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。测试数据程序输入不少于5种不同的表达式进行测试。

二.问题的分析

此程序设计主要运用了栈,利用栈后进先出的原理,建立两个栈,操作数栈和操作符栈,先将数据和运算符分别压入这两个栈,判断栈内和栈外运算符的优先级,依据运算符的优先级判断是应再次压入运算符,还是将数据和运算符弹出栈,在栈外进行运算,再将所得的结果压入栈,继续进行与计算,直至运算结束。

例如;计算5/2+1-2*3=

操作数2入操作数栈, 2

运算符”/”入运算符栈,

操作数5入操作数栈 5 /

数字栈运算符栈

运算符“+”入运算符栈顶

比较后,将2,5出栈运算,

并将结果入数字栈

2.5

数字栈字符栈

运算符“+”入字符栈,操作 1

数1入数字栈

2.5 +

数字栈字符栈

运算符“—”入运算符栈顶比较后,将

1,2.5出栈运算,并将结果压入操作

数栈

3.5 —运算符“—”入运算符栈

数字栈字符栈

操作数2入操作数栈,运算符“*”

入运算符栈顶比较后压入运算符栈 3

将操作数3压入操作数栈 2 *

3.5 —

数字栈字符栈

当扫描到=号时,操作数3和2出栈

运算符*出栈,进行运算,运算结果入

操作数栈

6

3.5 —

数字栈字符栈

操作数6和2出栈,运算符“—”

出栈,进行运算,运算结果入操作数

栈 6

3.5 —

数字栈字符栈

运算符栈空,操作数栈中运算为运算

—2.5

结果

数字栈字符栈

分析:

设置两个栈,运算数栈和运算符栈,然后,自左向右扫描表达式,遇操作数进操作数栈,遇操作符栈则与操作符栈顶运算符比较:若当前操作符大于操作符栈顶,则当前操作符进入操作符栈;若当前操作符小于等于运算符栈顶,次栈顶出栈,同时操作数栈顶也出栈,形成一个运算,并将运算的结果压入数字栈。

流程图

三.算法的设计

1、创建一个calculator类,将计算器需要用到的函数都封装起来,形成一个整体。

2、设计成员函数及数据。

首先定义两个私有的结构体save1和save2分别用来存放数字和运算符,在结构体内定义整型的栈顶元素top,和存放数据及运算符的数组double n[MAX]和char n[MAX]。

定义了一个空的构造函数calculator()。

函数bool stack1empty(save1 s),bool stack2empty(save2 s)分别判断数字栈和字符栈是否为空,若栈顶为-1则空则返回1表示真,否则返回0表示假。

函数void push1(save1 &s,double num);,void push2(save2 &s,char op);分别将数字和字符压入栈。若所存储的内容已经数组的最大限度,则显示“栈已满”,否则将数字和字符压入栈顶。

函数void pop1(save1 &s,double &num),void pop2(save2 &s,char &op)分别是将栈内的数字和字符弹栈,存储在num和op中。首先判断栈是否为空,若空则显示“栈为空”,否则将栈顶元素分别赋值给num和op。

函数int in(char op),int out(char op)分别判断栈内和栈外运算符的优先级。

在栈内,“+”“—”返回2,“*”“/”返回4,在栈外“+”“—”返回1,“*”“/”返回3,当遇到“+”或“—”和“*”或“/”同时存在时,“*”“/”的优先级高于“+”“—”,首选“*”“/”运算。当遇到同级运算符时在时,先进行栈内运算。通过返回值的大小选择进行在哪里的哪种运算。

函数void count(double a,char op,double b)是用来进行计算的,并将计算的结果压入栈。以便下一次的运算。

函数void cal ()是最主要的操作函数。首先提示输入表达式,并在表达式之后加上=,然后输入表达式。分别清空存放数字和字符的栈。总体用一个while语句,以“=”结束。

由于是用char定义的表达式expression[MAX],所以要将里面的数字提取出来,转化成int或float类型,利用库函数isdigit()查找,若读入的字符为数字,则继续判断下一个字符,直到下个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈。库函数atof()将char类型进行转换。当栈内和栈外同时都有运算符时,利用int in(char op) 和int out(char op)函数根据其返回值的大小判断运算符的优先级,判断是将栈外的运算符压入栈还是将站内的数据及运算符弹出栈进行运算。若为后者,运算完后再将所得的结果压入栈顶,再次进行判断,直至栈顶为空,运算结束。

主函数void main(),首先提示此程序设计者的信息。然后进行正式的计算环节,将整个主函数分为part1 和part2两部分,运用goto语句使程序在执行的流程可以跳转到part1部分,进行多次运算。定义calculator mycal,进行运算。运算结束提示是否继续进行运算,输入选择y(是) n(否) A(退出)

利用while语句,当输入A时结束运算。当输入“y”时,运用system("cls")对前面的运算进行全清除,然后利用goto语句跳转到part1再次进行计算。当输入“n”时停止运算,输出“谢谢使用!”程序运行结束。

系统类图

属性和方法定义

用户手册

程序运行时,首先显示此程序设计者的信息。

提示欢迎使用计算机请输入表达式(输完之后请加=),然后输入所要进行计算的表达式,进行计算。计算结束后提示:继续计算吗?,输入y表示同意继续计算,输入n 表示结束计算,并显示谢谢使用!输入A时退出,选择你所需的形式,进行计算。

(四)上机调试过程

(1)刚开始只能进行两个数字的运算,不能进行多个数字的计算,想到用for循环解决输入数字上的问题,但只能进行一种运算,达不到多重运算的要求。

(2)想到在用for循环解决次问题,但改来改去都弄不好,最后经老师提示,运用栈的知识解决问题。

(3)开始对栈一点都不了解,全部程序都需要重新写,完全没有一点头绪,把课本关于栈的部分看了好多遍,和同学讨论,大概知道栈是什么样的了,开始写我的程序了。

(4)本来只是考虑到建立一个数字栈的,但这样运算符的优先级不能进行,得不出正确的结果,经同学提示,建立两个栈,一个存储数字,另一个存放运算符,判断运算符的优先级以后,将数字和运算符弹出栈,进行计算,把计算的结果压入栈,以便下一次运算。

(5)解决了多个多个数和多个运算符计算的问题,又想到了可不可以进行多次运算,当想结束时,按指定的键,结束运算,想到了用goto语句进行跳转,达到循环计算的目的。

说明:此程序清除的功能还不能实现,只能进行全清除,修改了好长时间也未能找到一个好方法解决。

(五)运行实例

选择继续运算,跳转到part1部分。

经验与体会

此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,C++已经成为当今计算机应用中空前活跃的领域,在生活和学习中可以说得是无处不在。因此作为二十一世纪的大学来说掌握C++软件开发技术是十分重要的。

此次课程设计使我们将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,使我们在各方面的能力应该得到锻炼,不仅进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

而且全面考核我们所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。并且利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。还使我们懂得了对于给定的设计题

目,如何进行分析,理清思路,并给出相应的数学模型。

同时也使我们掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。熟练掌握C++语言的基本语法,灵活运用各种数据类型。进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

这次课程设计历时二周,通过这次设计让我对C++有了更新的认识,认识到了它的实际应用价值,可以及大的减少工作量,节省人力物力,同时也让我认识发现到自己再学习上的存在的不足,再以后的生活学习中要多加练习编程,力求改变自己的不足。课程设计学习让我学到了很多,学会了用所学习的知识去解决实际问题,一开始拿到题目,根本就不知道要从什么地方下手,感觉写这个也不行写那个不行,但经过时间的磨练以及和同学之间的交流开始有点头绪,脑海中有个大概,但还是无法全部写出来,只能实现一部分功能,而且在写程序时遇到了很多问题,程序出错自己无法修改,后来经过学长的指导和同学以及指导老师的帮助大部分功能都可以实现,自己再慢慢摸索,程序终于写出来了,这期间感觉以前好多不懂的,通过这次的学习都可以一一解决,但发现自己也有很多的不足,很多以前学过的知识点都不记得了,而且无法将它们联系在一起,除了课本上的知识还有好多跟本课程有关的知识点都不懂,所以通过这次的学习,我知道自己不仅仅要把课本上的东西学好,还要了解相关的东西,让自己的知识面更广,同时我也更深刻的认识到了任何事都不可能一个人独立完成,同学和老师的帮助是非常重要的。

(六)参考资料

[1] 郑莉等编著《C++语言程序设计(第三版)》北京:清华大学出版社

[2] 郑莉等编著《C++语言程序设计(第三版)学生用书》北京:清华大学出版社

[3] 刘振安等编著《C++程序设计课程设计》机械工业出版社

[4] 吴乃陵等编著《C++程序设计》北京:高等教育出版社

[5] 李春葆等编著《C++程序设计学习与上机实验指导》北京:清华大学出版社

[6] 范辉等编著《Visual C++6.0程序设计简明教程》高等教育出版社

[7] 李龙澍《C++程序设计实训教程》北京:清华大学出版社

[8] 洪国胜等编著《C++ Builder程序设计轻松上手》北京:清华大学出版社

[9] 宁正元《数据结构(c语言)》南京:东南大学出版社。2000年6月第1版

[10] 严蔚敏等《数据结构(c语言版)》北京:清华大学出版社,1997年4月第1版。

[11] 胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年第1版。

源程序:

#include

#include

#include

# define MAX 1000

class calculator

{

private:

struct save1 //存储数字

{

double n[MAX];

int top;

}

stack1;

struct save2 //存储运算符

{

char n[MAX];

int top;

}

stack2;

public:

calculator(){}; //空的构造函数

bool stack1empty(save1 s);

bool stack2empty(save2 s);

void push1(save1 &s,double num);

void push2(save2 &s,char op);

void pop1(save1 &s,double &num);

void pop2(save2 &s,char &op);

int in(char op);

int out(char op);

void count(double a,char op,double b);

void cal();

};

bool calculator::stack1empty(save1 s) //判断数字栈是否为空{

if(s.top==-1)

return 1;

else return 0;

}

bool calculator::stack2empty(save2 s)//判断运算符栈是否为空{

if(s.top==-1)

return 1;

else return 0;

}

void calculator::push1(save1 &s,double num)//将数据压入数字栈

{

if(s.top==MAX-1)

{cout<<"栈已满";

}

else

{

s.top++;

s.n[s.top]=num;

}

}

void calculator::push2(save2 &s,char op)//将运算符压入运算符栈

{

if(s.top==MAX-1)

{cout<<"栈已满";

}

else

{

s.top++;

s.n[s.top]=op;

}

}

void calculator::pop1(save1 &s,double &num)//将栈顶的数据元素取出,存放在num 中

{

if(s.top==-1)

cout<<"栈为空"<

else

{

num=s.n[s.top];

s.top--;

}

}

void calculator::pop2(save2 &s,char &op)//将栈顶的运算符取出,存放在op中

{

if(s.top==-1)

cout<<"栈为空"<

else

{

op=s.n[s.top];

s.top--;

}

}

int calculator::in(char op)//在栈内优先级的判断

{

if(op=='-'||op=='+')

return 2;

else if(op=='*'||op=='/')

return 4;

else return -1;

}

int calculator::out(char op)//早栈外优先级的判断

{

if(op=='-'||op=='+')

return 1;

else if(op=='*'||op=='/')

return 3;

else return -1;

}

void calculator::count(double a,char op,double b)//进行计算并将所得的结果压入栈顶{

double sum;

switch(op)

{

case '+':sum=a+b;break;

case '-':sum=a-b;break;

case '*':sum=a*b;break;

case '/':sum=a/b;break;

default:break;

}

push1(stack1,sum);

}

void calculator::cal(void)

{

int i=0,j;

double a,b,c;

char expression[MAX],operate,temp[20];

cout<<"请输入表达式(输完之后请加=):";

cin>>expression;

stack1.top=-1;//清空数字栈

stack2.top=-1;//清空运算符栈

while(expression[i]!='=')//以=号结尾

{

if(isdigit(expression[i]))/*若读入的字符为数字,则继续判断下一个字符,直到下个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈*/

{

j=0;

while(isdigit(expression[i])||expression[i]

=='.')

{

temp[j++]=expression[i];

i++;

}

temp[j]='\0';

c=atof(temp);//char类型进行转换

push1(stack1,c);

}

else

{

if(expression[i]=='-'||expression[i]

=='+'||expression[i]=='*'||expression[i]

=='/')//若读入的字符为运算符的情况

{

if(in(stack2.n[stack2.top])

[i])||stack2empty(stack2))//读入的运算符与运算符栈顶元素相比,并进行相应的操作{

push2(stack2,expression[i]);

i++;

}

else

{

pop1(stack1,a);

pop1(stack1,b);

pop2(stack2,operate);

count(b,operate,a);//先进后出原则

}

}

}

}

while(stack2.top!=-1)//读入结束后,继续进行操作,直到运算符栈为空{

pop1(stack1,a);

pop1(stack1,b);

pop2(stack2,operate);

count(b,operate,a);

}

cout<

}

void main()

{

cout<<"\t****************************************\n";

cout<<"\t 模拟计算器程序\n";

cout<

cout<<" \t**** 制作人:陈露\n";

cout<<" \t**** 指导老师:徐静\n";

cout<<" \t**** 专业班级:08网工(1)班\n";

cout<<" \t**** 制作时间:2009年6月19日\n";

cout<<" \t*****************************************\n"; cout<

part1:

cout<<"----------欢迎使用本计算器--------"<

calculator mycal;

mycal.cal();

cout<<"继续计算吗?"<

cout<<"y(是) n(否) A(退出)"<

char choice;

cout<<"请输入你的选择:";

cin>>choice;

while( choice!='A'){

if(choice=='y')

{system("cls");//进行全清除

goto part1;}//goto语句跳转到part1再次进行计算else

{

cout<<"谢谢使用!"<

break;

}

}

}

模拟简单计算器实训

苏州市职业大学 课程设计说明书 名称___模拟简单计算器_______________ 2011 年12月26 日至2011年12月31 日共1 周 院系__ 计算机工程系 班级10嵌入式 姓名 系主任____李金祥 教研室主任刘文芝 指导教师徐丽华、刘文芝

目录 一.课程设计的目的与要求 (2) 1.课程设计的目的 (2) 2.课程设计的要求 (2) 二.题目说明 (2) 2.1开发背景 (3) 2.2 开发工具介绍 (4) 2.3 小组成员分工 (4) 三.硬件方案 (5) 3.1硬件设计 (5) 3.2电路原理图 (7) 四.软件设计 (8) 4.1 模块划分 (8) 4.2 模块结构图 (9) 4.3 液晶显示模块 (9) 4. 4 定时器模块 (6) 五.运行结果分析与系统改进 (10) 六.遇到的问题和解决方法 (11) 七.课程设计总结 (11) 八.参考文献 (11)

一.课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门专业技术基础课,是一门实践性很强的课,单片机课程设计要求将所学的理论知识通过实践加强理解和认识,提高学生们对单片机的认识,同时提高同学们的设计能力和实践动手能力。 同时《单片机原理与应用》也是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。同时也为了提高学生的学习能力,锻炼同学之间的合作能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。 认真编写课程设计报告。 课程设计可以由2~4名同学合作完成一个课题。全体成员应共同完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。 整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。 课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。 1、对系统进行功能需求分析; 2、设计合理的模块结构和系统框架; 3、编程简练,程序功能齐全,能正确运行; 4、说明书、流程图要清楚; 5、课题完成后必须按要求提交课程设计报告;

最新计算机模拟试卷操作题答案

模拟卷1 三、简答题: 1、外存存储器有哪些?内存分哪两种?P13、15 答:外存存储器包括软盘、硬盘、光盘、U盘等。内存分只读存储器ROM和随机存取存储器RAM。 2、计算机网络的分类(按网络覆盖的范围)?P230 答:局域网、城域网、广域网和互联网。 3、常见的视频文件格式有哪些(至少四种)?P343-344 答:视频格式有:.avi格式、.mpg格式、.rm格式和.mov格式。 4、Windows操作题目(写出关键步骤) (1)在桌面上建立AA文件夹,在AA文件夹建立一个名为“JSB”的快捷方式,该快捷方式所指向的对象为“记事本”程序。(记事本程序的文件为 “C:\WINDOWS\system32\notepad.exe”) 步骤:在桌面空白处右击—选择新建文件夹,重命名为“AA”,打开“AA”文件夹,右击选择创建快捷方式,在“浏览”中找到 “C:\WINDOWS\system32\notepad.exe”,点下一步,名称输入“JSB”,完成即可。 (2)将CC文件夹中的“Excel”和“Word ”两个文件夹复制到AA文件夹中,并将“Excel”改名为“TEST”,并将其设置为隐藏属性。 步骤:打开“cc”文件夹,按住“ctrl”键选中“excel”和“word”两个文件夹,右击选择“复制”,打开“AA”文件夹,右击粘贴。在“excel”文件上右击,重命名为“TEST”,右击选择属性,在常规选项卡中,将属性改为“隐藏”。 5、WORD操作题目(6分) (1)修改Word文档中的文字字符的字体、颜色、大小,可以使用哪两种不同的方法实现?P90 答:通过“格式”工具栏和通过菜单“格式”—“字体”命令。 (2)修改文档中的首行缩进2个字符,有哪两种方法实现?P91 答:方法一:选中待修改的文档,把窗口上方的标尺左上的那个小三角往右方移动两个字符的距离,即可。 方法二:选中待修改的文档,右击——段落,在对话框内,特殊格式选择首行缩进,度量值输入2字符,即可。 (3)Word中的哪些对象可以图文混排的? 答:图片、图形,艺术字、文本框等(不确定) 6、EXCEL题目(6分) (1)列举几种Excel中的函数?p156 答:有数学(数值计算)函数、统计函数、逻辑函数、日期与时间函数、财务函数、文本函数等。 (2)列举几种对工作表的操作有哪些?p151 答:选择工作表插入工作表删除工作表移动和复制工作表重命名工作表

java编写的简单的计算器程序

j a v a编写的简单的计 算器程序 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化

参考代码: import .*; import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

简单计算器程序设计

简单计算器程序设计 2010-01-20 16:44 1、编写一个程序实现十进制加减乘除运算 2、在命令提示后输入算式,运算符号不超过四个 3、回车后进行计算并以十进制显示结果 ;能做带括号的运算,输入错误能报警 data segment msg1 db 'Please Input an Expression:',0AH,0DH,'$' msg2 db 'the result is:$' db '(' num db 200 dup (0) temp1 db 200 dup(0),13 temp dw 0 data ends stack segment db 200 dup (?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax lea dx,msg1 mov ah,9 int 21h call input again2: lea si,num again1: inc si cmp byte ptr[si],13 je outt cmp byte ptr[si],')' jne again1 call chasc1 call count push ax jmp again2 outt:pop bx mov ah,2

mov dl,10 int 21h mov dl,13 int 21h lea dx,msg2 mov ah,9 int 21h call chaou mov ah,8 int 21h mov ah,4ch int 21h ;************************************** input proc ;输入子程序能纠错 push ax push bx push cx push dx push si push di xor si,si xor bh,bh mov bl,0ffh xor cx,cx top: mov ah,8 int 21h cmp al,8 jne next1 cmp si,0 jne ne1 mov bl,0ffh jmp next6 ne1: mov ah,2 mov dl,8 int 21h mov dl,0 int 21h mov dl,8 int 21h dec si

简单计算器可视化程序编程

简单计算器

一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能 对不正确的表达式能指出其错误原因 二、流程图

图1 输入数据子函数流程图 图2 三、 设计步骤 打开Microsoft Visual C++ ,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculter 及其所在位置,点击确定,如图3所示。 N 输入数据子函数

图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。 图4 基本对话框 这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示。 图5 新建的对话框 四、界面设计 1、创建控件 在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6 Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现1.问题描述 对任意给定的正确四则运算表达式,程序计算其结果值并输出。程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 2.设计说明 2.1简要的分析 根据要求,要先输入包含有+,-,*,/的运算符的表达式,然后经过计算得到正确的答案。从键盘中输入的是ASCII码,因此要将其转换为十进制的数据然后才能进行计算。如果输入混合表达式,要将中缀式先变化成后缀式,然后再进行计算。 2.2概要分析 2.2.1 定义的数据段 用于定义一些中间变量,并将显示在试验界面上,以及提示信息。data segment stri db 50 dup(0) exp db 30 dup(0) track db 30 dup(0) instr db 100 dup(0) msg0 db 'please input your formular:',0dh,0ah,'$' msg1 db 0dh,0ah,'wrong input','$' msg2 db 0dh,0ah,') and ( does not match','$' msg3 db 0dh,0ah,'div zero error','$' msg4 db 0dh,0ah,'sorry,minus data appears','$' msg5 db 0dh,0ah,'any key to continue,esc to exit','$' data ends

模拟计算器程序-课程设计

模拟计算器 学生姓名:**** 指导老师:**** 摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。 关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;

目录 1 引言 (3) 1.1课程设计目的 (3) 1.2课程设计内容 (3) 2 设计思路与方案 (4) 3 详细实现 (5) 3.1 表达式的合法判定 (5) 3.2 中缀表达式转化为后缀表达式 (5) 3.3 处理后缀表达式 (7) 3.4 表达式嵌套处理 (8) 4 运行环境与结果 (9) 4.1 运行环境 (9) 4.2 运行结果 (9) 5 结束语 (12) 参考文献 (13) 附录1:模拟计算器源程序清单 (14)

1 引言 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表达式来求解表达式的值。该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。 1.1课程设计目的 数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表达式,并且运用了递归的思想来解决Abs()和Sqrt()中嵌套表达式的问题,其中还有一些统计的思想来判定表达式是否合法的算法。 1.2课程设计内容 本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表达式。 2 判定表达式是否合法。 3 把中缀表达式转化为后缀表达式。 4 求出后缀表达式的结果。 5 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

数据结构课程设计 模拟计算器程序

数据结构课程设计 题目名称:模拟计算器程序 计算机科学与技术学院 课程设计任务书 一、设计任务 设计一个模拟计算器的程序 二、设计要求 1、要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进 行求解

2、程序基本功能要求实现完整,并有简单的验证。 3、设计报告要求格式规范,符合学校课程设计报告要求。 4、报告中流程图要求描述规范,算法设计清楚正确。 三、设计期限 2018年3月5日到2018年3月30日 前言 利用本学期所学的《数据结构》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解,并且在程序运行过程中能够正常的退出程序。

这个程序实际上就是对一个表达式进行计算。而一个算术表达式中包含各种运算符,每个运算符的等级可能会不同,这就成了本程序需要解决的一个主要的问题之一了。另外计算器中需要有各种数学函数,比如:abs sqrt sin cos tan等,如何对这些函数进行处理,也是本程序能成功的一个关键。还有一个问题就是如何处理操作符和操作数之间的关系也是一个要点。例如:1+2*(3-2/1),经过怎么样的变换和处理能得出结果5。数据的输入这里应该要用字符,然后通过字符和整形之间的关系进行转换即可,这样处理的话,就方便很多了。 在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。 目录 第1章需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.1系统设计流程图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.2 主要功能表‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 6

用JAVA编写计算器程序(模拟Windows计算器)

用JAVA编写计算器程序(模拟Windows计算器) import java.awt.*; import java.awt.event.*; public class Calculation extends WindowAdapter implements ActionListener { double dResult=0; double dNowInput=0; double dMemory; int n=0; //记载小数位数 int nOperation=1; // 记录运算符类型 int nBitsNum=0; //记录总共输入的位数 boolean alreadyHaveDot=false; //已经有小数点? boolean keyAvailable=true; boolean alreadyClickedEqueal=false; //是否按下过"="? boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值? Frame f; Panel p1,p2,p3,p4,p5,p6; TextField tf1,tf2; Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM; public void display() { f=new Frame("计算器"); f.setSize(280,213);

java课程设计-模拟科学计算器

JAVA课程设计说明书 题目:模拟科学计算器 姓名: 学号: 班级:网络工程11-2 山东科技大学 2013年11月7日

目录 1 课设任务及要求 (3) 1.1课设任务 (3) 1.2设计要求 (3) 2 需求分析 (2) 2.1 设计背景 (2) 2.2 需求获取 (3) 2.3 程序功能图 (4) 3 设计思路 (4) 3.1 界面布局 (4) 3.2 类的定义 (5) 3.3变量的定义 (5) 4 详细设计 (6) 4.1整体概述 (6) 4.2 误操作处理 (7) 4.3流程图和结构图 (8) 5 系统调试 (11) 5.1 程序界面 (11) 5.2 运行界面 (11) 6 心得与体会 (15) 7 参考文献 (16) 8 附录 (16)

1 课设任务及要求 1.1课设任务: 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 要求提交Application和Applet两个版本的程序。 1.2设计要求 ①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。具体可参考windows附件下的计算器 ②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。

③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。 2 需求分析 2.1 设计背景 本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会

c 面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:54 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 总体框架 图1 系统框架

系统功能说明 在VC++中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 系统主调模块 图5 程序流程图

各模块详细设计 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; 按钮的处理函数 void CCalcDlg::OnPt() { point_flag=TRUE; && buffer[i+1]==0)之前那位 }

m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。 本次MFC计算器的制作,学习到了MFC基本的编程方法。对OOP编程的理解进一步加深。但是程序仍然存在一定的问题,比如除数不能为0的Exception handle,符号键多次点击结果混乱。通过这次课程设计,以后Windows 应用程序势必会轻车熟路。 参考书目: [1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年。[2]孙鑫《深入浅出MFC》,视频教程。 [3]《Visual_C++MFC入门教程》,电子版。

简单计算器程序操作步骤

简单计算器程序操作步骤 一、建立”D\ajsq”文件夹 二、用VC6编写“简单计算器程序” 1、启动VC6,创建“简单计算器程序”工程。选择D:\asjq,工程名:jsq,选择基于对话框,下一步,完成。(介绍:类卡、文件卡、资源卡,代码提示工具卡两个,安装visual assist X) 2、设计主界面对话框:IDD_JSQ_DIALOG,删除自生成的控件,添加三个Edit Box文本编辑框控件、一个Button按钮控件。 (1)对EDIT查看属性、增加、关联变量: 右击EDIT1,选属性,查看ID号为:IDC_EDIT1。 增加、关联变量,右击EDIT1,建立类向导,选成员变量,选中IDC_EDIT1,单击增加变量,名称:m_a,value:float,单击OK。 右击EDIT2,选属性,查看ID号为:IDC_EDIT2。 增加、关联变量,右击EDIT2,建立类向导,选成员变量,选中IDC_EDIT2,单击增加变量,名称:m_b,value:float,单击OK。 右击EDIT3,选属性,查看ID号为:IDC_EDIT3。 增加、关联变量,右击EDIT3,建立类向导,选成员变量,选中IDC_EDIT3,单击增加变量,名称:m_c,value:float,单击OK。 (2)对BUTTON1修改属性和增加消息映射响应函数: 右击BUTTON1,选属性,查看ID号为:IDC_BUTTON1,修改标题为:add; 增加消息映射响应函数,右击,建立类向导,选中Message Maps,选中IDC_BUTTON1,选中BN_CLICKED,单击Add Function,名称:OnButton1,单击OK。 单击edit code,编写代码:BUTTON1的OnButton1的代码.txt。 UpdateData(true); //从控件得到值赋给变量,给m_a=5;m_b=8;m_c=0; m_c=m_a+m_b; // m_c=13; UpdateData(false); //从变量值给控件显示,文本框分别显示:5,8,13; 三、操作使用所编写的“简单计算器程序” F7, Ctrl+F5 1

计算器模拟系统设计-毕业设计

计算器模拟系统设计 学生:XXX 指导教师:XXX 内容摘要:本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件选择AT89C51单片机和 74lS164,输入用4×4矩阵键盘。显示用5位7段共阴极LED静态显示。软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。选用编译效率最高的Keil 软件用汇编语言进行编程,并用proteus仿真。 关键词:LED 计算器 AT89C51芯片 74LS164

Calculator simulation system desig n Abstract:The design is a simple calculator based on 51 series microcontroller system design, to complete the calculator keyboard input, add, subtract, multiply, and in addition to three unsigned numeric simple four operations, and the corresponding result will be displayed on the LED. The design process of hardware and software aspects of the synchronous design. Hardware choose AT89C51 microcontroller and 74ls164--enter the 4 × 4 matrix keyboard. Static display with five 7-segment common cathode LED display. Software calculator function from the analysis, flow charts, design, and then program the preparation of system design. Selected to compile the most efficient Keil software in assembly language programming, and with proteus simulation. Keywords: LED calculator AT89C51 chip 74LS164

软件工程导论——简易计算器

2011-2012(2)《软件工程导论》实验报告 实验一:项目计划、分析和设计 学院:计算机学院 班级: 软件111 姓名: 张鹏 学号:119074174 内容:实验一:项目计划、分析和设计 [ 实验日期 ]2012 年3月28日 [ 实验目的 ] 1. 初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。 2. 为了解决自己及他人对世界困惑,更加客观真实的了解国内外!(任务艰巨呀!) [ 实验内容 ] (1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 [ 实验原理和步骤 ] 界面要求 N

[ 实验结果]即[ 实验报告要求] [ 实验总结]经过了两个星期的C语言程序设计,在同学的热情帮助下基本完成了计算器课题的设计修改任务,虽然有些地方不尽如人意但是初步达到了对自己的要求。信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方便他人,可行性很强。刚开始设计的时候找不到头绪,不知道该从哪里下手,通过向同学询问和向老师寻求帮助找走进了设计的门槛。在设计这个程序时,刚开始是根据网上的资料,,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我搞定了。这些只要你自己愿意去尝试,问题都可以迎刃而解的。 通过网上查找到很多成功的计算器程序,通过对那些已经成功地程序进行分析找到自己的设计思路,制定设计流程。并通过比较各种程序了解各个程序的利弊,从而明确自己计算器的设计方向和如何通过技术手段达到自己的目的。万事开头难,可是对于并不是很熟悉的C语言在下面的工作中困难处处能遇见。通过查找C语言教材去图书馆查

C模拟计算器程序合院何浩

合肥学院 计算机科学与技术系 课程设计报告 2009~2010学年第二期 课程 课程设计名称 学生姓名 学号 专业班级 指导教师 一.课程设计题目:

模拟计算器程序 设计内容:设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。选作内容如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。测试数据程序输入不少于5种不同的表达式进行测试。 二.问题的分析 此程序设计主要运用了栈,利用栈后进先出的原理,建立两个栈,操作数栈和操作符栈,先将数据和运算符分别压入这两个栈,判断栈内和栈外运算符的优先级,依据运算符的优先级判断是应再次压入运算符,还是将数据和运算符弹出栈,在栈外进行运算,再将所得的结果压入栈,继续进行与计算,直至运算结束。 例如;计算5/2+1-2*3= 操作数2入操作数栈, 2 运算符”/”入运算符栈, 操作数5入操作数栈 5 / 数字栈运算符栈 。 运算符“+”入运算符栈顶 比较后,将2,5出栈运算, 并将结果入数字栈 2.5 数字栈字符栈 运算符“+”入字符栈,操作 1 数1入数字栈 2.5 + 数字栈字符栈

运算符“—”入运算符栈顶比较后,将 1,2.5出栈运算,并将结果压入操作 数栈 3.5 —运算符“—”入运算符栈 数字栈字符栈 操作数2入操作数栈,运算符“*” 入运算符栈顶比较后压入运算符栈 3 将操作数3压入操作数栈 2 * 3.5 — 数字栈字符栈 当扫描到=号时,操作数3和2出栈 运算符*出栈,进行运算,运算结果入 操作数栈 6 3.5 — 数字栈字符栈 操作数6和2出栈,运算符“—” 出栈,进行运算,运算结果入操作数 栈 6 3.5 — 数字栈字符栈

C语言课程设计简单计算器程序

课程设计名称:C语言课程设计课程设计题目:简单计算器程序

目录 第1章需求分析 0 1.1设计要求 0 1.2任务 0 第2章总体设计 (2) 2.1设计简介及设计方案论述 (2) 2.2功能模块层次图 (2) 第3章详细设计 (3) 3.3由(后缀)逆波兰表达式计算中缀表达式原理 (12) .................................................. 错误!未定义书签。第4章调试分析. (14) 4.1程序设计中所遇到的错误及犯错的原因 (14)

4.2错误的解决方法 (14) 第5章用户手册 (16) 总结 (18) 参考文献 (18) 附录(程序清单) (19)

第1章需求分析 1.1 设计要求 (1)用 C 语言数据结构实现程序设计; (2)利用结构体、栈、进行相关信息处理; (2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。 1.2 任务 (1)定义一个结构体类型数组,输入 0~9 及+、--、*等符号的信息,将其信息存储起来; (2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表达式和计算结果; (3)编写代码; (4)程序分析与调试。

说明: 本课程设计将实现一个简单计算器。在功能上尽量模仿 windows 的计算器。系统界面不做牵制要求。该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

简易计算器

齐鲁理工学院 课程设计说明书 题目简易计算器设计 课程名称单片机原理及应用 二级学院机电工程学院 专业电气工程及其自动化 班级 2014级 学生姓名王军可 学号 201410530042 指导教师王艳玲 设计起止时间:2014 年12月5日至2014年12月16日

目录 摘要 (3) 1 设计思路 (4) 2 原件功能 (4) 2.1 运算模块AT89C51 (4) 2.2 AT89S51的引脚功能 (5) 2.3 AT89C51的基本操作 (6) 3 键盘输入 (7) 4 液晶模块简介 (8) 4.1 LCD1602简介及引脚功能 (8) 5 程序流程图与总原理图 (9) 5.1 流程图 (9) 5.2 仿真原理图 (10) 6 结论 (11) 参考文献: (11) 致谢 (12) 附录A 程序编写 (13) 附录B 仿真图与原件清单 (20)

简易计算器设计 摘要:近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。 本设计采用AT89C51芯片,实现了利用单片机进行了一个简单计算器设计。允许对输入数据进行加减乘除运算及LCD 显示。实例所设计的计算器是用LCD1602显示的,当然也可以用其他的器件显示,如LED 显示屏,这样就可以显示出更多的字符。科技的进步告别了以前复杂的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。现在应用较广泛的是科学计算器,但在市场还是需要简易计算器,因为其价格低廉,设计简单,使用方便被广泛的运用于我们的日常生活之中。关键词:AT89C51LCD1602单片机LED

模拟计算器

智能仪器仪表课程设计报告

摘要 (3) 关键词 (3) 说明 (3) 一.设计功能及工具 (4) 1.1设计功能 (4) 1.2单片机AT89C51简介 (4) 1.3 LED数码显示管简介 (7) 1.4输入设备键盘 (7) 二.电路设计 (8) 2.1时钟电路 (8) 2.2复位电路 (9) 2.3显示驱动电路 (9) 2.4蜂鸣器提示电路 (10) 2.5总电路原理图 (10) 三.C设计和运行 (12) 3.1 C程序代码 (12) 3.2 Keil C调试运行 (18) 3.3 Proteus 操作运行 (19) 四.Proteus 仿真演示 (20) 4.1加法演示 (20) 4.2减法演示 (21) 4.3乘法演示 (22) 4.4除法演示 (23) 五.总结 (24) 参考文献 (24)

摘要 本设计一简易的模拟计算器程序,实现基本的加减乘除的运算并将结果显示在相应的LED上,且在数字信息输入完毕时有声音提示。 此次设计利用proteus 7 professional 软件绘制电路原理图,在Keil C平台上实现C语言程序编制,最后联立proteus和Keil C实现仿真设计成果。采用了4X4矩阵式键盘输入,8位LED动态显示,避免了I/O口扩展使程序简化。利用的A T89C51单片机,八个引脚用来扫描键盘的输入,八个引脚用来驱动八位LED显示,八个引脚用作八位LED的位选信号。当显示器输出大于八位时,可在剩下的I/O口中任意选一个用来使扬声器发出声音警报。 关键词:A T89C51 、计算器、proteus、Keil C 说明 本次模拟计算器程序小组共2人:耿莎莎(我)和黄洁雯。 其中,我主要负责Proteus 和Keil C软件的下载并学习用法;利用Proteus绘制电路原理图;成功无错误地运行C程序并联立Proteus仿真计算器成果。 鉴于程序运行无错误无警告,然而仿真徒有信号无法输入显示,遂求教于指导老师,以期发现并改正按键键盘输入程序来使仿真成果实现。

简单计算器可视化程序编程

简单计算器 一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能

图1输入数据子函数流程图 图2 三、设计步骤 打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名Calculter及其所在位置,点击确定,如图3所示。 四、界面设计 1、创建控件 在图5所示的ResoureView选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键

此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图7所示,在该对话框中输入控件的ID值和标题属性。 图7PushButton属性 按照上面的操作过程编辑其他按钮和编辑框等对象的属性。 表1各按钮和编辑框等对象的属性

模拟计算器程序C++

课程设计报告课程设计题目:模拟计算器程序 学生姓名: 专业: 班级: 指导教师: 2011年11 月24 日 东华理工大学

课程设计评分表 学生姓名:陈春英班级:10211303 学号:1021130304 课程设计题目:模拟计算器程序

目录 1.设计目标…………………………………………………………… 2.设计内容…………………………………………………………… 3.设计思想…………………………………………………………… 4.设计说明…………………………………………………………… 5.设计步骤…………………………………………………………… 6.主要成员函数关系图……………………………………………… 7.程序主要代码……………………………………………………… 8. 难点分析…………………………………………………………… 9. 总结…………………………………………………………………

模拟计算器 1.设计目标 了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。 2.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 3. 设计思想 基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。 4.设计说明 (1)包含的功能有:加、减、乘、除运算等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 5. 设计步骤 (1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮

相关文档
最新文档