分数计算器设计-韩明泽

分数计算器设计-韩明泽
分数计算器设计-韩明泽

荆楚理工学院

课程设计成果

学院: 计算机工程学院班级: 2014级计算机科学与技术2班

学生姓名: 韩明泽学号: 2014404010216

设计地点(单位)教学楼B栋102实验室

设计题目: 分数计算器设计

完成日期: 2016 年 06 月 18 日

指导教师评语:

成绩(五级记分制):

教师签名:

C++面向对象程序设计课程设计报告

摘要

随着面向对象程序设计方法的不断普及和应用,学习和掌握C++语言已经成为许多计算机专业工作者和广大计算机应用人员的迫切需要。C++语言是在C语言基础上扩充了面向对象机制而形成的一种面向对象程序设计语言,它继承了C 语言的全部优点和功能外,还支持面向对象程序设计。

本次分数计算器设计运用了C++中类和派生类的使用,实行对流提取和流插入运算符进行重载;分数对整数的加、减、乘和除法运算;整数对分数的加、减、乘和除法运算;分数对分数的加、减、乘和除法运算。最后对整个设计过程进行了总结。

【关键词】:C++;类;分数的加、减、乘、除计算。

目录

1、问题描述 (1)

2、功能要求 (1)

3、问题的解决方案 (1)

4、功能调试 (2)

4.1 开始界面 (2)

4.2 分数与整数的加法运算调试 (3)

4.3 整数与分数的减法运算调试 (3)

4.4 分数与分数的乘法运算调试 (4)

4.5 分数与分数的除法运算调试 (4)

4.6 分数分母为0错误测试 (5)

5、总结 (5)

参考文献 (6)

附录:源代码 (7)

1、问题描述

定义一个整数类。

定义一个分数类,由整数类派生出。能对分数进行各种计算和输入/输出。

2、功能要求

(1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。

(6)菜单功能:每种功能的操作都是在菜单中进行相应选择。

3、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

图3.1 功能应用模块

(2)分析系统中的各个实体及它们之间的关系;

图3.1 各个实体关系

头文件 声明整数类

声明派生类 成员函数定义 主函数 定义类的对象

定义成员函数

主函数

成员函数定义

Main.obj 分数计算器.obj

main.exe

(3)根据问题描述,设计系统的类层次;

class Integer //定义整数类

class Fraction:public Integer //分数类,由整数类进行派生friend istream & operator>>(istream & ,Fraction & ); //重载输入流

friend ostream & operator<<(ostream & ,Fraction & ); //重载输出流

(4)完成类中各个成员函数的描述和定义;

Fraction(int a=0,int b=1) //分数类成员函数

display() //实现成员函数

operator+(Fraction &c) //重载两个分数的加法运算符

operator-(Fraction &c) //重载两个分数的减法运算符

operator*(Fraction &c) //重载两个分数的乘法运算符

operator/(Fraction &c) //重载两个分数的除法运算符

operator+(int n) //重载分数和整数的加法运算

operator-(int n) //重载分数减整数的减法运算符

operator *(int n) //重载分数与整数的乘法运算符

operator/(int n) //重载分数除以整数的除法运算符

Fraction predigest(); //约分函数

main() //主函数

4、功能调试

4.1 开始界面

图4.1 开始界面

图4.2 分数与整数的加法运算4.3 整数与分数的减法运算调试

图4.3 整数与分数的减法运算

4.5 分数与分数的除法运算调试

图4.5 分数与分数的除法运算调试

4.6 分数分母为0错误测试

图4.6 错误测试

5、总结

通过此次的课程设计,我们将本学期由课本上所学习的有关内容应用到实践当中,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。后来在老师的帮助下理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。其中也遇到很多麻烦,在网上搜索解决了问题。

这一次课程设计也使我在应用过程中更加清楚的了解并掌握C++语言的各部分的内容,进一步加深了对C++语言的认识与理解,尤其注重了C++语言与C 语言不同的部分,同时提高了个人程序设计思想,及时发现一些错误,并在调试过程中更加深刻的认识到C++语言程序的严谨性。认识到C++语言,他不仅全面兼容了C语言,保持了C语言的简洁、高效和接近汇编语言的特点,更对C的类型系统进行了改革和扩充,比C语言更安全,编译系统更强大。

总之,通过此次课程设计,我们学到了许多我们在书本上学不到的知识,受益匪浅。通过实践,我们能更好地掌握C++语言,并运用它编写应用程序。我们对它的功能和实用性、严密性,和对程序的编写都有了比较深刻的体会。毫无疑问,编程过程中我们遇到了许多问题,但通过我们不懈的努力,团结奋斗的精神,我们终究将问题一一解除,最终实现了程序的各项功能。虽然我们的程序还不够完善,加以改进以实现更多的功能。但通过这次的课程设计我们不仅学到了许多知识,学会如何设计一个应用程序,包括程序设计方法,调试程序,还学会如何解决问题,学会将所学知识运用到实际情况中。

参考文献

[1]李素若,杜华兵编.《C++面向对象程序设计》.北京:中国水利水电出版社,2013.

[2]李素若,杜华兵编.《C++面向对象程序设计习题解答及上机指导》.北京:中国水利水电

出版社,2013.

[3]郑莉,傅仕星编.《C++面向对象程序设计》.清华大学出版社,2003.

[4]谭浩强编.《C++面向对象程序设计》.北京:清华大学出版社,2006.

[5]Davis Chapman,《学用Visual c++ 6.0》,清华大学出版社,2001.

附录:源代码

//分数计算器h.h:

#include

class Integer //整数类

{

protected:

int fz;

int fm;

public:

Integer(int a=0,int b=1):fz(a),fm(b){}

~Integer(){}

void display();

};

class Fraction:public Integer //分数类,进行计算和输入输出

{

public:

Fraction(int a=0,int b=1):Integer(a,b){}

friend istream & operator>>(istream & ,Fraction & ); //重载输入流

friend ostream & operator<<(ostream & ,Fraction & ); //重载输出流

Fraction operator+(Fraction &c); //重载+运算符(分数与分数)

Fraction operator+(int n); //重载+运算符(整数与分数)

Fraction operator-(Fraction &c); //重载-运算符(分数与分数)

Fraction operator-(int n); //重载-运算符(整数与分数)

friend Fraction operator-(int n,Fraction &c);

Fraction operator*(Fraction &c); //重载*运算符(分数与分数)

Fraction operator*(int n); //重载*运算符(整数与分数)

Fraction operator/(Fraction &c); //重载/运算符(分数与分数)

Fraction operator/(int n); //重载/运算符(整数与分数)

friend Fraction operator/(int n,Fraction &c);

Fraction predigest(); //约分函数

void display();

};

//实现函数(分数计算器设计)

#include

//#include"分数计算器h.h"

void Integer::display ()

{

cout<

cout<<" ------------------分数计算器-----------------"<

cout<<" 请选择功能: "<

cout<<" 1 分数与整数的四则运算。 "<

}

Fraction Fraction::predigest()//定义约分函数

{

int n,d,t,sign=1;

Fraction temp;

if(fz<0 && fm<0)

{

fz=-fz;

fm=-fm;

}

if(fz>0 && fm<0)

{

fm=-fm;

sign=-1;

}

if(fz<0 && fm>0)

{

fz=-fz;

sign=-1;

}

n=fz;

d=fm;

int r;

if(n

r=n%d;

while(r!=0)

{

n=d;

d=r; //d为最大公约数

r=n%d;

}

temp.fz=sign*(fz/d);

temp.fm=fm/d;

return temp;

}

Fraction Fraction::operator+(Fraction &c)//重载两个分数的加法运算符

{

Fraction temp;

temp.fz=fz*c.fm+fm*c.fz;

temp.fm=fm*c.fm;

return temp;

}

Fraction Fraction::operator+(int n)//重载分数和整数的加法运算

{

Fraction temp;

temp.fz=fm*n+fz;

temp.fm=fm;

return temp;

}

Fraction operator-(int n,Fraction &c)

{

Fraction temp;

temp.fz=c.fm*n-c.fz ;

temp.fm=c.fm;

return temp;

}

Fraction Fraction::operator-(int n) //重载分数减整数的减法运算符

{

Fraction temp;

temp.fz=fz-fm*n;

temp.fm=fm;

return temp;

}

Fraction Fraction::operator-(Fraction &c) //重载两个分数的减法运算符

{

Fraction temp ;

temp.fz =fz*c.fm -fm*c.fz;

temp.fm =fm*c.fm;

return temp;

}

Fraction Fraction::operator*(Fraction &c) //重载两个分数的乘法运算符

{

Fraction temp;

temp.fz=fz*c.fz;

temp.fm=fm*c.fm;

return temp;

}

Fraction Fraction::operator *(int n) //重载分数与整数的乘法运算符

{

Fraction temp;

temp.fz=fz*n;

temp.fm=fm;

return temp;

}

Fraction Fraction::operator/(Fraction &c) //重载两个分数的除法运算符

{

Fraction temp;

temp.fz=fz*c.fm;

temp.fm=fm*c.fz;

return temp;

}

Fraction Fraction::operator/(int n) //重载分数除以整数的除法运算符

{

Fraction temp;

temp.fz=fz;

temp.fm=fm*n;

return temp;

}

Fraction operator /(int n,Fraction &c)

{

Fraction temp;

temp.fz =n*c.fm ;

temp.fm =c.fz ;

return temp;

}

ostream& operator<<(ostream &output,Fraction &t) //重载输出运算符,输出分数

{

int a,b,c;

a=t.fz;

b=t.fm;

if(a==0||b==0) //当分子,或者分母为0时,输出0 cout<<"0";

if(b==1) //当分母为1时,输出分子

cout<

if(a>b&&b!=1) //判断分数为假分数

{

c=a/b;

a=a%b;

cout<

if(a!=0)

cout<<"又"<

}

if(a<0&&-a>b&&b!=1) //当分数为负时,判断为假分数

{

c=-a/b;

a=-a%b;

c=-c;

cout<<'='<

if(a!=0)

cout<<"又"<

}

if(t.fz>0&&t.fz

output<

if(t.fz<0 && -t.fz

return output;

}

istream& operator>>(istream &input,Fraction &t) //重载输入运算符,输入分数

{ int a,c;

char b;

input>>a>>b>>c;

if(b=='/' && c!=0 )

{

t.fz=a;

t.fm=c;

}

else

cout<<"错误!!!输入格式错误或分母为0!请退出重新输入!"<

return input;

}

#include

int main() //main函数

{

Integer dis;

Fraction a,b,result,real;

int m,z;

char c; //数据类型

dis.display ();

while(m!=0)

{

cout<<" 请输入:(0-3): ";

cin>>m;

if(m==1) //分数与整数的运算

{

cout<

cin>>a;

cout<

cin>>c;

cout<

cin>>z;

if(c=='+')

result=a+z;

if(c=='-')

result=a-z;

if(c=='*')

result=a*z;

if(c=='/')

result=a/z;

real=result.predigest();

cout<<"运算式规范为:"<

result=b+z;

if(c=='-')

result=z-b;

if(c=='*')

result=b*z;

if(c=='/')

result=z/b;

real=result.predigest();

cout<<"运算式规范为: "<

result=a+b;

if(c=='-')

result=a-b;

if(c=='*')

result=a*b;

if(c=='/')

result=a/b;

real=result.predigest();

cout<<"运算式规范为:"<

labview计算器课程设计报告

武汉工程大学 —虚拟仪器课程设计报告 院系:电气院 题目:labview计算器 班级:测控02 学号:0904010217 姓名:吕禹 指导老师:李国平 小组成员:黎巧珍、王悦、张松、卢崇俊、洪俊初、於旭、徐洁、吕禹设计时间:2011年11月5号

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

最新单片机简易计算器课程设计

单片机简易计算器课 程设计

引言 说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识、专业技能分析和解决问题全面系统的锻炼。 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。 事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

简易计算器课程设计

基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言 一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理 (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案和硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。 图1 系统设计框图

2.2硬件的选择与连接 图二硬件连接总图 2.2.1硬件选择 (1)由于本设计比较简单,因此选用内部含有4KBE2PROM的89C51单片机作为系统的核心。 (2)扩展输入/输出端口 在扩展输入/输出端口时,要求输入口能够缓冲,,输出口能够锁存。常用小规模集成电路芯片74LS244或74LS245等扩展输入端口,用74LS273、74LS373、 74LS377扩展输出端口。这种扩展方法的特点是电路简单,但功能单一、灵活性差。因而常采用中规模的可编程并行接口芯片8255A扩展输入/输出端口。 (3)锁存电路采用74LS373 2.2.2接口设计 (1)单片机与8255A的接口设计 8255A中的数据总线缓冲器为三态双向数据缓冲存储器,用于将8255A的数据线 D0~D7和单片机的数据总线(P0口)连接,实现单片机和接口间的数据传送。 读写控制部件的接口设计 1、/CS为片选信号,接成低电平表示8255A 被选中。/CS与P2.7相连,用P2口的最高位控制8255A是否工作。即将P2.7控制为低电平。 2、RESET-复位信号,高电平有效,接在单片机的RST端。 3、/RD和/WR为读写控制信号,低电平有效。分别将两个端口接单片机的/RD和/WR 4、A1和A0-端口选择信号,分别与单片机的低两位地址线P1.1和P1.0相连。用于选择不同端口。采用74LS373三态锁存器,用于分离P0口第八位地址线,将它的Q0和Q1口接至8255A的地址输入端A0和A1。

C++课程设计——计算器.

面向对象程序设计语言 --课程设计题目计算器设计 院系航空宇航学院 专业飞行器设计与工程 学生姓名张权 学号011110320 指导教师张德平 二零一二年六月九日

计算器设计 (一)、目的与要求: 1、目的: 通过开发计算器程序,进一步熟悉C++中类和对象的定义与使用,掌握程序控制的方法,掌握C++程序设计的基本知识。 2、基本要求: (1)设计计算器程序,可对实数操作; (2)可对多个基数操作的四则运算; (3)增加函数如:正弦、余弦、正切、对数、平方和平方根、完成四则混合运算,注意考虑优先级,对应增加主菜单选项; (4)根据程序的提示,可以进行正弦运算进行余弦运算、正切运算、对数运算、求平方运算、混合运算、华氏温度转化为摄氏温度的运算、摄氏温度转化为华氏温度的运算、求平方根运算。使四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,同时计算机判断用户的对错并打分,要求十题为一个单元,加减运算时最高为两位数的运算,乘法为两位数乘以一位数,除法是两位数或者三位数除以一位数,要求没有余数。 (二)、设计方法和基本原理: 1、问题描述(功能要求): 实数间的计算很复杂,它包括:相加、相减、相乘、相除、求三角函数、求对数、四则混合运算等。试设计计算器,使之能提供以下功能: 1).可以连续输入运算,对于输入的表达式能够按算符优先级进行处理。 如: 输入4+5*3时,应该输出60,而不是27。 2).可以处理包含括号的表达式。 如: 输入2*(3+2)时,应该输出10,而不是8。 3).可以计算三角函数、对数函数、平方根以及平方。 4).能够实现华氏温度与摄氏温度之间的转换。 5).四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

简易计算器课程设计

科研训练论文 题目:基于单片机的计算器的设计 目录 一、概述 (3) 1.1设计要求及任务: (3) 1.2设计原理: (3) 二、系统总体方案及硬件设计 (3) 2.1计算器总体思想 (3) 2.2硬件的选择与连接 (4) 2.2.1硬件选择 (4) 2.2.2接口设计 (5) 三、软件设计 (7)

3.2系统流程总图 (8) 3.3显示程序设计 (8) 3.4键盘识别程序设计 (9) 3.4.1原理与分析 (9) 3.4.2流程图 (10) 四、设计体会与总结 (11) 五、参考文献 (11) 附录 基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言

一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理: (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案及硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。

计算器java课程设计(完整版)

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

单片机简易计算器课程设计

单片机简易计算器课程设计 课程设计 题目名称________________ 简易计算器设计____________ 课程名称_____________ 单片机原理及应用____________ 学生姓名________________

班级学号________________ 2018年6月20日

目录 一设计目的 (2) 二总体设计及功能介绍 (2) 三硬件仿真图 (3) 四主程序流程图 (4) 五程序源代码 (5) 六课程设计体会 (28)

设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUE仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51 系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0?9)、符号键(+、-、x、十)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘;

执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

相关文档
最新文档