《面向对象与C++》
课程设计
题目:计算器
院、系:计算机信息与技术系学科专业:计算机科学与技术学号:
学生姓名:
指导教师:
2010年12月30日
中文摘要
本课程设计将实现一个简单计算器。这个计算器不仅能实现简单的加减乘除运算,还实现了科学计算功能。它的设计简单易行,系统具有较好的显示界面,快速简单的操作,准确得到答案,具有计算器的基本功能,并且具有可行性。降低了数字计算难度和节约了时间,对大家的计算有了一定帮助。在课程设计中,开发工具统一使用了VC++6.0,同时使用了面向对象的思想,如类、对象、多态、重载、等,遵守C++程序标识符的一般约定,并加了适量的注释。在程序设计中,采用了结构化与面向对象两种解决问题方法。
目录
第一章总体设计 (1)
1.1功能需求分析 (1)
1.2 功能结构图 (1)
第二章详细设计 (1)
2.1. zhujm类 (1)
2.2. jiben类 (2)
2.3. sanjiao类 (4)
2.4. jinzhizh类 (4)
第三章功能调试及分析讨论 (7)
3.1. 主界面 (7)
3.2. 基本运算界面 (7)
3.2.1加法运算 (7)
3.2.2取余运算 (8)
3.2.3开方根运算 (8)
3.3. 三角函数运算界面 (8)
3.3.1 sin三角函数运算 (9)
3.3.2 tan三角函数运算 (9)
3.4. 进制转换运算界面 (9)
3.4.1 二进制转十进制 (10)
3.4.2 二进制转十六进制 (10)
3.4.3 十六进制转八进制 (10)
第四章工作总结 (11)
第五章参考文献 (12)
第一章总体设计
本计算器是基于C++语言面向对象程序设计的思路和方法,实现了计算器的基本运算、三角函数、进制转换的功能。
1.1功能需求分析
本课题根据简易计算器的综合分析,将计算器的功能总结起来,共需实现以下几个功能模块:1.基本运算功能主要包括:加、减,乘、除、乘方、平方根等。
2.三角函数运算功能主要包括:正弦、余弦、正切等。
3.进制转换功能主要包括:二进制转换为十进制、八进制,十六进制,其它进制转换为十进制,以及八进制和十六进制的互相转换。
通过上述功能的设计与实现,实现了计算器的基本功能。当然在实际的计算器中,其功能要比本课题的多的多,也复杂的多,本课题仅以比较简单易懂的方式介绍给读者一个计算器的设计与实现的流程。从而让读者明白一个项目开发中需要做的工作,并在今后的工作中能遇到相关问题能知道如何解决。
1.2 功能结构图
第二章详细设计
2.1. zhujm类
该类负责计算器的主界面,主函数通过该类的对象调用,实现了计算器的功能,程序从该类开始执行。
(1)主要调用的类见表2-1
(2)主要函数见表2-2
表2-2 主要函数
(3)主要函数代码
1)主函数代码:
#include "iostream"
#include "jiben.h"
#include"sanjiao.h"
#include"zhujm.h"
#include"jinzhizh.h"
using namespace std;// .h文件为各个类,包含各函数的声明
void main()//主函数
{
zhujm m;//创建一个对象
m.fn3();//调用主菜单界面函数
}
2)zhujm主要函数实现代码:
void zhujm::fn3()//调用函数实现主界面
{ int flag=1;
while (flag==1)
{show();
int ch;
cin>>ch;
switch(ch){
case 1:{jiben a;system("cls"); //调用基本运算菜单显示函数
a.fn1();break; }
case 2:{sanjiao b;system("cls"); //调用三角函数菜单显示函数
b.fn2();break;}
case 3:{jinzhizh c;system("cls"); //调用进制转换菜单显示函数
c.fn4();break;}
case 0:{flag=0;break;} //退出程序
default:cout<<"--------请重新输入---------"< } } 详细源代码见附录zhujm.cpp &zhujm.h 2.2. jiben类 该类负责计算器中的基本功能,通过该类的函数的调用,实现了计算器中加、减,乘、除等的功能。 (1)主要函数见表2-2 表2-2 主要函数 (2)主要函数源代码: void jiben::shuru(double &Number1,double &Number2){//输入两个数 cout<<"please input number1"< cin>>Number1; cout<<"please input number2"< cin>>Number2;} void jiben::Add(double Number1,double Number2) { cout< } void jiben::quyu(double Number1,double Number2)//两数取余 { if(Number2!=0)//Number2不能为0 {cout<<(int)Number1<<"%"<<(int)Number2<<"="<<(int)Number1%(int)Number2< else {cout<<"the number2=0,error!"< void jiben::Root()//求x的y次根运算 { double Number1,Number2; cout<<"请输入一个底数"< cin>>Number1; cout<<"请输入开几次方根"< cin>>Number2; double y; y=1/Number2;//X的Y次即 x的开y次根号 cout< } 详细代码见附件jiben.cpp & jiben.h 2.3. sanjiao类 该类负责计算器中的三角函数功能,通过该类的函数的调用,实现了计算器中正弦、余弦、正切等功能。 (1)主要函数见表2-2 表2-2 主要函数 (2)主要函数源代码: void sanjiao::shuru(double &x)//输入函数 {cout<<"please input a number:"< cin>>x;} void sanjiao::Sin(double x) //正弦函数 {cout<<"sin("< void sanjiao::Cot(double x)//余切函数 {cout<<"cot("< } 详细代码见附录sanjiao.cpp & sanjiao.h 2.4. jinzhizh类 该类负责计算器中的进制转换功能,通过该类的函数的调用,实现了计算器中二进制、八进制、十进制、十六进制之间的转换等功能。 (1)主要函数见表2-2 (2)主要函数源代码: void jinzhizh::shuru(int &x) ////////输入数据 {cout<<"请输入一个整数"< cin>>x;} void jinzhizh::zh16(int x)////十进制转十六进制,也可直接调用hex {int s[16];int y=x; for(int i=0;i<16;i++) {s[i]=x%16; x=x/16;} int count=0; for(i=15;i>=0;i--) {if(s[i]!=0&&count==0) {count++; cout<<"它的十六进制为"; for(int t=i;t>=0;t--) if(s[t]>=10)//当s[t]>10时转换为字符 cout< else cout< } cout< void jinzhizh::zh10()////二进制转十进制 { cout<<"请输入一个二进制的整数:"; char a[16]; cin>>a; int i=0,t=0,j=-1; int sum=0; i=strlen(a);//计算数组长度即二进制长度 for(t=i-1;t>=0;t--) {j++; if(a[t]=='1')//当数组中字符为'1'时乘2的J次 {sum+=(int)pow(2,j);}//将结果保存在SUM中}