当前位置:文档之家› 复数计算器 实验报告

复数计算器 实验报告

中南大学高级程序设计实践(C++)课程设计报告题目复数计算器学生姓名指导教师陈丽萍学院信息科学与工程学院专业班级通信工程1301班完成时间 2014年7月5日第一章需求分析与程序设计1.1 需求分析1.1.1程序设计的目的与任务1.复习和巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握。

2.为学生提供独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生独立分析问题、解决问题、查阅资料以及自学能力。

3.学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。

4.在程序实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承、封装与多态等核心概念,每一个类应包含数据成员和成员函数,以实现预期的功能,解决实际问题。

1.1.2“复数计算器”程序所能实现的功能1.建立实数类、复数类,复数类由实数类公有继承而来。

2.实现实数、复数信息的初始化。

3.通过选择结构和调用相关函数实现实数的相关运算,包括:两个实数间的加、减、乘、除和一个实数的自增、自减、求平方、二次方根等运算。

4.通过选择结构和调用相关函数实现复数的相关运算,包括:两个复数间的加、减、乘、除、求两个复数的夹角和一个复数的取模、求平方、求共轭复数、求单个复数的向量角等运算。

5.通过调用相关函数实现实数、复数信息的输出,显示在显示屏上。

6.通过多次运用选择和循环结构实现对实数、复数运算的选择,在选择了实数或复数运算的前提下,再实现对各种运算的选择,运算结束后还可以选择继续实现其它运算或退出程序。

1.2 程序设计1.2.1概要设计1.系统中的各个实体及它们之间的关系系统中的实体是实数类对象和复数类对象,它们的关系是复数类对象所属的类是由实数类对象所属的类公有派生而来的。

2.系统的类层次程序中建立了两个类,分别是实数类、复数类,复数类是由实数类公有派生而来的。

3.主程序的流程以及各程序模块之间的层次(调用)关系首先从键盘输入数字1或2或0,输入不同数字则进入不同的并列的小程序模块。

若输入1,则进行实数相关运算,再输入1-8选择具体运算,此时会调用实数类中的相关成员函数,运算出正确结果,运算结束后,则会进入循环结构,进行下一次选择及运算。

若输入2,则进行复数相关运算,再输入1-9选择具体运算,此时会调用复数类中的相关成员函数,运算出正确结果,运算结束后,则会进入循环结构,进行下一次选择及运算。

若输入0,则将退出复数计算器系统。

1.2.2详细设计1.类层次中各个类的描述实数类数据成员(都属于保护数据成员):double real成员函数(都属于公有成员函数):构造函数:Simple() Simple(double r)相加函数:double jia(Simple &s2)相减函数:double jian(Simple &s2)相乘函数:double cheng(Simple &s2)相除函数:double chu(Simple &s2)自加函数:double zijia()自减函数:double zijian()平方函数:double pingfang()二次方根函数:double kaifang()输入函数:void input()输出函数:double output()复数类数据成员(都属于私有数据成员):double imag成员函数(都属于公有成员函数):构造函数:Complex() Complex(double r,double i)重载“+”函数:Complex operator+(Complex &c2)重载“-”函数:Complex operator-(Complex &c2)重载“/”函数:Complex operator*(Complex &c2)重载“*”函数:Complex operator/(Complex &c2)输入函数:void setnumber()取模函数:double qumo()平方函数:Complex pf()取共轭复数函数:Complex gonge()求向量角函数:double xiangliangjiao()求夹角函数:double jiajiao(Complex &c2)重载“<<”函数:friend ostream&operator<<(ostream&output,Complex&c)2.类中各个成员函数的定义实数类中成员函数定义:Simple(){double real=0.0;}//构造函数Simple(double r){real=r;}//构造函数double jia(Simple &s2)//两个实数相加函数{double a;a=real+s2.real;return a;}double jian(Simple &s2)//两个实数相减函数{double a;a=real-s2.real;return a;}double cheng(Simple &s2)//两个实数相乘函数{double a;a=(real)*(s2.real);return a;}double chu(Simple &s2)//两个实数相除函数{double a;a=(real)/(s2.real);return a;}double zijia()//一个实数自加函数{double a;a=++real;}double zijian()//一个实数自减函数{double a;a=--real;return a;}double pingfang()//一个实数的平方函数{double a;a=(real)*(real);return a;}double kaifang()//一个实数的二次方根函数{double a;a=sqrt(real);return a;}void input()//实数的输入函数{cout<<"请输入一个实数:"<<"";cin>>real;}double output()//实数的输出函数{return real;}复数类中成员函数定义:Complex(){real=0.0;imag=0.0;}//构造函数Complex(double r,double i){real=r;imag=i;}//构造函数void setnumber()//复数的输入函数{cout<<"请输入一个复数的实部:"<<"";cout<<"请输入一个复数的虚部:"<<"";cin>>imag;}Complex operator+(Complex &c2)//重载"+"用于两复数相加{Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;}Complex operator-(Complex &c2)//重载"-"用于两复数相减{Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;}Complex operator*(Complex &c2)//重载"*"用于两复数相乘{Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=real*c2.imag+imag*c2.real;return c;}Complex operator/(Complex &c2)//重载"/"用于两复数相除{Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;}double qumo()//一个复数取模函数{double a;a=sqrt(real*real+imag*imag);return a;}Complex pf()//一个复数的平方函数{Complex c;c.real=real*real-imag*imag;c.imag=2*real*imag;return c;}Complex gonge()//一个复数的共轭复数函数{Complex c;c.real=real;c.imag=0-imag;return c;}double xiangliangjiao()//单个复数的向量角函数{double a;a=atan(imag/real)*57.295;return a;}double jiajiao(Complex &c2)//两个复数的夹角函数{double a;a=fabs((atan(imag/real))*57.295-(atan(c2.imag/c2.real))*57.295return a;}friend ostream&operator<<(ostream&output,Complex&c)//重载"<<"用于复数的输出{output<<c.real;if(c.imag>=0)output<<"+";output<<c.imag<<"i"<<endl;return output;}3.主程序和重要模块的算法调试程序后,显示屏会显示文字提醒计算器使用者输入数字0或1或2,使用者需根据提示输入相关数据。

部分相关程序代码如下:cout<<"【欢迎使用复数运算器】"<<endl;gg: cout<<"请输入0或1或2"<<endl;cout<<"【0】退出复数计算器;"<<endl;cout<<"【1】进行实数相关运算;"<<endl;cout<<"【2】进行复数相关运算:"<<"";cin>>a;若计算器使用者输入1,则选择了实数的相关运算,系统会提示输入数字1-8,1-8分别对应两个实数间的相加、相减、相乘、相除和一个实数的自加、自减、平方、二次方根等运算,使用者需根据提示输入1-8,再从键盘输入一个或两个实数,按回车键后即可得到正确结果。

相关主题