课程设计计算器_第1页
课程设计计算器_第2页
课程设计计算器_第3页
课程设计计算器_第4页
课程设计计算器_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象与C+课程设计论文题目:计算器院 系: 计算机信息与技术学科专业: 计算机科学与技术 学 号: B10060121 学生姓名: 童则辉指导教师: 赵娟 2013年1月4日摘要本课程设计将实现一个简单计算器。这个计算器不仅能实现简单的加减乘除运算还实现了科学计算功能。它的设计简单易行系统具有较好的显示界面快速简单的操作准确得到答案具有计算器的基本功能并且具有可行性。降低了数字计算难度和节约了时间对大家的计算有了一定帮助。在课程设计中开发工具统一使用了VC+6.0同时使用了面向对象的思想如类、对象、多态、重载、等遵守C+程序标识符的般约定并加了适量的注释。在程序设计中采用了结构化与面向对象

2、两种解决问题方法。目 录第一章总体设计11.1功能需求分析11.2 功能结构21.3程序流程3第二章详细设计42.1Main函数42.2 类zhujiemian42.3类jiben72.4类sanjiao102.5类jinzhi132.6 类anweiyunsuan17第三章功能测试及运行效果193.1 主界面193.2 基本数据运算界面193.3 三角函数运算界面203.4 进制转换运算界面203.5按位运算界面20第一章 总体设计本计算器是基于C+语言面向对象程序设计的思路和方法实现了计算器的基本运算、三角函数、进制转换的功能。1.1功能需求分析1基本运算功能主要包括加、减乘、除、取余等。

3、2三角函数运算功能主要包括正弦、余弦、正切等。3进制转换功能主要包括十进制转化为二进制,八进制,十六进制等的转换。4 进行逻辑运算包括与,或,非,异或,按位与,按位或运算等。 通过上述功能的设计与实现实现了计算器的基本功能。当然在实际的计算器中其功能要比本课题的多的多也复杂的多本课题仅以比较简单易懂的方式介绍给读者一个计算器的设计与实现的流程。从而让读者明白一个项目开发中需要做的工作并在今后的工作中能遇到相关问题能知道如何解决1.2 功能结构图图1-2-1结构功能图1.3程序流程见图图1-3-1程序流程第二章 详细设计2.1.Main函数(1)主要源代码#include<iostream

4、.h>#include"zhujiemian.h"void main()zhujiemian f;f.show();cout<<"谢谢使用。"<<endl;2.2 类zhujiemian(1)局部变量见表2-2-2表2-2-2变量名类型KIntaJibenbSanjiaocJinzhizhuanhuandanweiyusuan函数名返回类型参数类型功能Show()Void无显示主界面菜单(3)各对象见表2-2-3表2-2-3对象名所属类调用的函数功能a基本Show1()调用显示基本运算界面函数b三角Show2()调用显示三角

5、运算界面函数c进制转换Show3()调用显示进制转换运算界面函数d按位Show()调用显示按位运算界面函数(4)源代码见文件:zhujiemian.cpp和zhujiemian.h1、zhujiemian.cpp:#include "zhujiemian.h"#include "jiben.h"#include "luoji.h"#include "sanjiao.h"#include "shuzhizhuanhuan.h"#include<iostream.h>#include &

6、quot;windows.h"zhujiemian:zhujiemian(int ii)k=ii;zhujiemian:zhujiemian()zhujiemian:show() cout<<""<<endl;cout<<" 多元化计算器 "<<endl;cout<<""<<endl;cout<<" 1. 基本运算. 2. 三角运算. "<<endl;cout<<""<&l

7、t;endl;cout<<" 3. 进制转换. 4. 逻辑运算. "<<endl;cout<<""<<endl;cout<<" 5.退出系统. "<<endl;cout<<""<<endl;switch(k)case 1:jiben d;d.show1();break;case 5:exit(0);2、zhujiemian.h:class zhujiemian public:zhujiemian(int ii=0);sh

8、ow();virtual zhujiemian();private:int k;2.3类jiben(1)局部变量见表2-3-1表2-3-1变量名类型iintaCharxDoubleyDouble(2)函数见表2-3-2表2-3-2函数名返回类型参数类型功能Show1()VoidDouble x,double y显示基本运算界面adVoidDouble x,double y实现加法运算suVoidDouble x,double y实现减法运算muVoidDouble x,double y实现乘运算diVoidDouble x,double y实现除法运算quyuVoidDouble x,doub

9、le y实现取余运算(3)源代码见文件:jiben.cpp和jiben.h(均为部分代码)1、jiben.cpp:cout<<""<<endl;cout<<" 基本运算 "<<endl;cout<<""<<endl;cout<<" 1. 加法运算. 2. 减法运算. "<<endl;cout<<""<<endl;cout<<" 3. 乘法运算. 4. 除法

10、运算. "<<endl;cout<<""<<endl;cout<<" 5.取余运算. 6. 返回到主界面 "<<endl;cout<<""<<endl;switch(k)case 1:int i=1;while(i=1)char a;cout<<"请输入x的值:"cin>>x;cout<<"请输入y的值:"cin>>y;ad(x,y);cout<&l

11、t;"是否继续加法<Y/N>:"cin>>a;while(a!='N'&& a!='n'&& a!='Y'&& a!='y')cout<<"输入错误请重新输入"<<endl;cout<<"是否继续<Y/N>:"cin>>a;if(a='N'|a='n')i=0;break;break;case 6: :syst

12、em("cls");zhujiemian a; a.show();break;cout<<"是否继续基本运算<Y/N>:"char a;cin>>a;while(a!='N'&& a!='n'&& a!='Y'&& a!='y')cout<<"输入错误请重新输入"<<endl;cout<<"是否继续<Y/N>:"cin&g

13、t;>a;if(a='N'|a='n')zhujiemian a;a.show();jiben:jiben()void jiben:ad(double x,double y)cout<<x<<"+"<<y<<"的值:"<<x+y<<endl;void jiben:su(double x,double y)cout<<x<<"-"<<y<<"的值:"<&l

14、t;x-y<<endl;void jiben:mu(double x,double y)cout<<x<<"*"<<y<<"的值:"<<x*y<<endl;void jiben:di(double x,double y)while(y=0)cout<<"错误,除数不能为0."cout<<"请输入不为0的除数:"cin>>y;cout<<x<<"/"<

15、;<y<<"的值:"<<x/y<<endl;void jiben:quyu(double x,double y)while(y=0)cout<<"错误,取余数不能为0."cout<<"请输入不为0的取余数:"cin>>y;cout<<x<<"%"<<y<<"的值:"<<(int)x%(int)y<<endl;2、jiben.h:class jibe

16、n public:jiben(double xx=0,double yy=0);void show1();void ad(double x,double y); /加法void su(double x,double y); /减法void mu(double x,double y); /乘法void di(double x,double y); /除法void quyu(double x,double y); /% 取余virtual jiben();private:double x,y;2.4类sanjiao该类负责显示三角函数运算界面以及通过此类实现正弦、余弦、正切等三角函数的运算功能。(

17、1)局部变量见表2-4-1表2-4-1变量名类型iIntxdoubleydouble表 (2) 函数见表2-4-2表2-4-2函数名返回类型参数类型功能Show2()Void无显示三角运算界面Sin()VoidDouble x实现正弦运算Cos()VoidDouble x实现余弦运算Tan()VoidDouble x实正切运算Cot()VoidDouble x实现余切运算(3)源程序代码见文件:sanjiao.cpp和sanjiao.h(均为部分代码)1、sanjiao.cpp:sanjiao:show2()cout<<""<<endl;cout&l

18、t;<" 三角运算 "<<endl;cout<<""<<endl;cout<<" 1. sin运算. 2. cos运算. "<<endl;cout<<""<<endl;cout<<" 3. tan运算. 4. cot运算. "<<endl;cout<<""<<endl;cout<<" 5.返回到主界面. "&

19、lt;<endl;cout<<""<<endl;while(j=1)switch(k)case 1:int i=1;while(i=1)char c;cout<<"请输入角度x的值:"cin>>a;si(a);cout<<"是否继续正弦运算<Y/N>:"cin>>c;while(c!='N'&& c!='n'&& c!='Y'&& c!='y&

20、#39;)cout<<"输入错误请重新输入"<<endl;cout<<"是否继续三角运算<Y/N>:"cin>>c;if(c='N'|c='n')i=0;break;break;case 4: :system("cls");zhujiemian a; a.show();break;cout<<"是否继续三角运算<Y/N>:"char c;cin>>c;while(c!='N'

21、;&& c!='n'&& c!='Y'&& c!='y')cout<<"输入错误请重新输入"<<endl;cout<<"是否继续<Y/N>:"cin>>c;if(c='N'|c='n')zhujiemian a;a.show();sanjiao:sanjiao()void sanjiao:si(double a)double b=a;while(b>=360)b=

22、b-360;while(b<0)b=b+360;b=pai*b/180;cout<<"sin("<<a<<")"<<"的值为:"<<sin(b)<<endl;void sanjiao:co(double a)double b=a;while(b>=360)b=b-360;while(b<0)b=b+360;b=pai*b/180;cout<<"cos("<<a<<")"&

23、lt;<"的值为:"<<cos(b)<<endl;2、sanjiao.h:class sanjiao public:sanjiao(double aa=0);show2();void si(double a); /sin函数void co(double a); /cos函数void ta(double a); /tan函数virtual sanjiao();private:double a;2.5类jinzhi(1)局部变量见表2-5-1表2-5-1变量名类型iIntxdoubleydouble(2)函数见表2-5-2表2-5-2函数名返回类型

24、参数类型功能Show3()Void无显示进制运算界面BianerVoidDouble x实现十进制转二进制BianbaVoidDouble x实现十进制转八进制BianshiliuVoidDouble x实现十进制转十六进制(3)源代码见文件:jinzhi.cpp和jinzhi.h(均为部分代码)1、jinzhi.cpp:void shuzhizhuanhuan:show3()cout<<""<<endl;cout<<" 进制转换运算 "<<endl;cout<<""<

25、<endl;cout<<" 1. 十转二. 2. 十转八. "<<endl;cout<<""<<endl;cout<<" 3. 十转十六. 4. 按位运算. "<<endl;cout<<""<<endl;cout<<""<<endl;while(j=1)switch(k)case 1: /变二进制int i=1;while(i=1)char a;cout<<&

26、quot;请输入十进制x的值:"cin>>x;bianer(x);cout<<"是否继续转二进制<Y/N>:"cin>>a;while(a!='N'&& a!='n'&& a!='Y'&& a!='y')cout<<"输入错误请重新输入"<<endl;cout<<"是否继续进制转换<Y/N>:"cin>>a;

27、if(a='N'|a='n')i=0;break;break;case 4: system("cls");zhujiemian a; a.show();break;cout<<"是否继续进制转换运算<Y/N>:"char a;cin>>a;while(a!='N'&& a!='n'&& a!='Y'&& a!='y')cout<<"输入错误请重新输入&qu

28、ot;<<endl;cout<<"是否继续<Y/N>:"cin>>a;if(a='N'|a='n')zhujiemian a;a.show();void shuzhizhuanhuan:bianshiliu(double x) /十进制变十六进制int s16;int y=(int)x; for(int i=0;i<16;i+) si=y%16; y=y/16; int count=0; for(i=15;i>=0;i-) if(si!=0&&count=0) cou

29、nt+; cout<<"它的十六进制为" for(int t=i;t>=0;t-) if(st>=10)/当st>10时转换为字符 cout<<char(st+55); else cout<<st; cout<<endl;2、jinzhi.h:class shuzhizhuanhuan public:shuzhizhuanhuan(double xx=0);void show3();void bianer(double x); /十进制转二进制void bianba(double x); /十进制转八进制vo

30、id bianshiliu(double x); /十进制转十六进制virtual shuzhizhuanhuan();private:double x;2.6 类anweiyunsuan(1)局部变量见表2-6-1表2-6-1变量名类型iIntmcharnchar(2)函数见表2-6-2函数名返回类型参数类型功能Show4()Void无显示按位算界面yuVoidDouble x,double y实现与运算HuoVoidDouble x,double y实现或运算QufanVoidDouble x,double y实现取反运算ZuoyiVoidDouble x,double y实现左移运算yo

31、uyiVoidDouble x,double y实现右移运算表2-6-23)源代码见文件:anweiyunsuancpp和anweiyunsuan.h(均为部分代码)1、janweiyunsuan.cpp:anweiyunsuan:show4()cout<<""<<endl;cout<<" 按位运算 "<<endl;cout<<""<<endl;cout<<" 1. 与运算. 2. 或运算. "<<endl;cout&l

32、t;<""<<endl;cout<<" 3. 异或运算. 4. 取反运算. "<<endl;cout<<""<<endl;cout<<" 5.左移运算.6.右移运算. "<<endl;cout<<""<<endl;cout<<" 7.返回到主界面. "<<endl;cout<<""<<endl;a

33、nweiyunsuan:yu(int x,int y)cout<<x<<"与"<<y<<"的值为:"<<(x&y)<<endl;anweiyunsuan:huo(int x,int y)cout<<x<<"或"<<y<<"的值为:"<<(x|y)<<endl;anweiyunsuan:yihuo(int x,int y)cout<<x<<&q

34、uot;异或"<<y<<"的值为:"<<(xy)<<endl;anweiyunsuan:fei(int x)cout<<x<<"取反的值为:"<<(x)<<endl;anweiyunsuan:zuoyi(int x,int y)x=(x<<y);cout<<x<<"左移的值为:"<<x<<endl;anweiyunsuan:youyi(int x,int y)x=(x>>y);cout<<x<<"右移的值为:"<<x<<endl;2、janweiyunsuan.cpp:class anweiyunsuan public:anweiyu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论