C++课程设计报告复数计算器.docx
《C++课程设计报告复数计算器.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告复数计算器.docx(65页珍藏版)》请在冰豆网上搜索。
C++课程设计报告复数计算器
第一章需求分析.................................第1页
第二章概要设计.................................第2页
第三章详细设计.................................第4页
第四章调试分析................................第21页
第五章测试结果................................第25页
第六章课程设计总结............................第36页
第七章参考文献................................第37页
第八章附录....................................第37页
第一章需求分析
1.1程序设计的任务
1.1.1编程目的
1.本次程序设计的目的运用面向对象程序设计知识,利用C++语言设计和实现一个复数计算器,要求具备如下主要功能:
(1)建立实数类、复数类
(2)实现实数、复数信息的初始化
(3)实现实数的加、减、乘、除、自增、自减、求平方、二次方根等操作
(4)实现复数的加、减、乘、除、取模、求平方、求共轭复数、求单个复数的向量角、求两个复数的夹角等运算
(5)实现实数、复数信息的输出
1.1.2编程要求
在实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承、封装与多态等核心概念,每一个类应包含数据成员和成员函数。
1.1.3数据范围
数据输入的形式为float型,输出形式亦是float型,数据(实数、复数的实部、虚部)范围是-2^128~+2^128,也即-3.40E+38~+3.40E+38。
1.2本程序能实现的功能
1.2.1实数类(Complex)所实现的功能:
实数的加法运算、减法运算、乘法运算、除法运算、前置自增运算、后置自增运算、前置自减运算、后置自减运算、求平方运算、求平方根运算;
1.2.2复数类(Complex1)所实现的功能:
复数的加法运算、减法运算、乘法运算、除法运算、模长运算、求平方运算、共轭复数运算、求单个复数的向量角运算、求两个复数的夹角运算。
1.2.3主函数所能实现的功能
1.提供给操作者操作数据的类型(实数还是复数)的标识;
2.操作者选择数据类型后,提供运算类型操作的标识;
3.运用指针调用两个类的各成员函数分别完成各项计;
第二章概要设计
2.1构成部分
2.1.1系统由三部分构成:
实数类(Complex)、复数类(Complex1)、主函数main。
2.1.2.构成部分关系
复数类(Complex1)由实数类(Complex)派生而来,其中两者成员函数中的enter(输入数据)函数是虚函数,用以实现多态性。
主函数main通过指针调用实数类(Complex)、复数类(Complex1)分别完成实数运算、复数运算。
2.1.3.类层次
实数类是父类,复数类是子类。
2.2主程序流程以及程序模块之间的调用关系
如图2.2—1所示:
w=3w=4w=5w=6……w=12v=3v=4v=5v=6……v=11
图2.2--1主程序流程以及程序模块之间的调用关系图
注:
图2.2--1中没有画出
1.flag=0时退出系统;
2.flag不等于0,1,2时出现错误提示语句的选择结构;
3.w,v在选择范围之外时出现错误提示语句的选择结构。
4.特殊处理:
除法运算分母为0;求二次方根数为负数;求单个复数夹角时判断象限的过程。
第三章详细设计
3.1类层次中各个类的描述
3.1.1.实数类(Complex)
私有部分仅数据:
float型数据real;
公共部分包括12个成员函数,分别是:
类的构造函数:
Complex()
实数加法运算函数:
Complexoperator+(Complex&c1)
实数减法运算函数:
Complexoperator-(Complex&c1)
实数乘法运算函数:
Complexoperator*(Complex&c1)
实数除法运算函数:
Complexoperator/(Complex&c1)
实数前置自增函数:
Complexoperator++()
实数后置自增函数:
Complexoperator++(int)
实数前置自减函数:
Complexoperator--()
实数后置自减函数:
Complexoperator--(int)
实数求平方根函数:
floatRootOfTwo()
实数求平方函数:
floatSquare()
实数输入数据函数:
virtualvoidenter()
3.1.2.复数类(Complex1)
私有部分仅数据成员float型数据real和float型数据imag,二者分别代表复数的实部和虚部;
公共部分包含11个成员函数,分别是:
类的构造函数:
Complex1()
复数加法运算函数:
Complex1operator+(Complex1&c1)
复数减法运算函数:
Complex1operator-(Complex1&c1)
复数乘法运算函数:
Complex1operator*(Complex1&c1)
复数除法运算函数:
Complex1operator/(Complex1&c1)
复数求模长函数:
floatLength()
复数求平方函数:
Complex1Square1()
求共轭复数函数:
Complex1Conjugate()
复数求角度函数:
floatAngle1()
复数间求角度函数:
floatAngle2(Complex1&c1)
复数输入数据函数:
voidenter()
3.2类中各成员函数的定义
3.2.1实数类(Complex)
1类的构造函数
函数体部分:
Complex(){};
2实数加法运算函数
函数体部分
Complexoperator+(Complex&c1)
{
Complexc;
cout<<"theresultis:
"<c.real=real+c1.real;
cout<returnc;
}
3实数减法运算函数
函数体部分
Complexoperator-(Complex&c1)
{
Complexc;
cout<<"theresultis:
"<c.real=real-c1.real;
cout<returnc;
}
4实数乘法运算函数
函数体部分
Complexoperator*(Complex&c1)
{
Complexc;
c.real=real*c1.real;
cout<<"theresultis:
"<cout<returnc;
}
5实数除法运算函数
函数体部分
Complexoperator/(Complex&c1)
{
Complexc;
cout<<"theresultis:
"<c.real=real/c1.real;
cout<returnc;
}
6实数前置自增函数
函数体部分
Complexoperator++()
{
cout<<"theresultis:
"<cout<<"++"<++real;
cout<<"="<return*this;
}
7实数后置自增函数
函数体部分
Complexoperator++(int)
{
Complextemp(*this);
cout<<"theresultis:
"<cout<real++;
cout<<"="<cout<returntemp;
}
8实数前置自减函数
函数体部分
Complexoperator--()
{
cout<<"theresultis:
"<cout<<"--"<--real;
cout<<"="<return*this;
}
9实数后置自减函数
函数体部分
Complexoperator--(int)
{
Complextemp(*this);
cout<<"theresultis:
"<cout<real--;
cout<<"="<cout<returntemp;
}
10实数求平方根函数
函数体部分
floatRootOfTwo()
{
Complexc;
if(real<0)
{
cout<<"thenumberiswrong!
!
!
"<}
else
{
cout<<"theresultis:
"<c.real=sqrt(real);
cout<<"sqrt"<}
returnc.real;
}
11实数求平方函数
函数体部分
floatSquare()
{
Complexc;
cout<<"theresultis:
"<c.real=real*real;
cout<<"square"<returnc.real;
}
12实数输入数据函数(虚函数)
函数体部分
virtualvoidenter()
{
cin>>real;
}
3.2.2复数类(Complex1)
1.类的构造函数
函数体部分
Complex1(){};
2.复数加法运算函数
函数体部分
Complex1operator+(Complex1&c1)
{
Complex1c;
cout<<"theresultis:
"<c.real=real+c1.real;
c.imag=imag+c1.imag;
cout<<"("<<<"("<<<"("<returnc;
}
3复数减法运算函数