C++课程设计报告复数计算器Word格式文档下载.docx
《C++课程设计报告复数计算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告复数计算器Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
㈠系统功能设计
根据题目要求,系统需要实现四则计算,根据复数的运算法则,四则运算的计算如下:
1.复数的加法
Complexoperator+(Complex&
c)//加法重载
{
Complexsum;
sum.real=real+c.real;
//实部相加
sum.imag=imag+c.imag;
//虚部相加
returnsum;
}
2.复数的减法
Complexoperator-(Complex&
c)//减法重载
Complexsub;
sub.real=real-c.real;
//实部相减
sub.imag=imag-c.imag;
//虚部相减
returnsub;
3.复数的乘法
Complexoperator*(Complex&
c)//乘法重载
Complexmulti;
multi.real=real*c.real-imag*c.imag;
//实部乘积
multi.imag=real*c.imag+imag*c.real;
//虚部乘积
returnmulti;
4.复数的除法
Complexoperator/(Complex&
c)//除法重载
Complexdiv;
div.real=(real*c.real+imag*c.imag)/(c.real*c.real+c.imag*c.imag);
//实部除积
div.imag=(imag*c.real-real*c.imag)/(c.real*c.real+c.imag*c.imag);
//虚部除积
returndiv;
㈡类设计
定义Complex类:
1.实部real,虚部imagdoublereal,imag;
2.构造函数:
Complex(){},Complex(doubler,doublei){}
3.析构函数:
~Complex(){}
4.加法重载:
c){}
5.减法重载:
Complexoperator-(Complex&
6.乘法重载:
7.除法重载:
c){}
8.重载==:
intComplex:
:
operator==(Complex&
c){}
9.重载!
=:
intComplex:
operator!
=(Complex&
c)
㈢函数设计
1.多个复数四则运算的设计
①voidAdd(){}//复数加法运算函数
②voidSub(){}//复数减法运算函数
③voidMul(){}//复数乘法运算函数
④voidDiv(){}//复数除法运算函数
2.主函数的设计
数字选择功能菜单,根据输入的数字选择执行不同的功能。
用户输入复数的实部,虚部,从而得到计算结果。
voidmain()//主函数开始
{
charstrChoise[20];
//定义字符串名
system("
cls"
);
cout<
<
"
\t这是一个复数计算器,可以实现以下功能,请按对应的按键(0-4)\n\n\n"
;
\t**************************菜单**************************\n"
\t1:
多复数加法,以0结束\n"
\t2:
多复数减法,以0结束\n"
\t3:
多复数乘法,以0结束\n"
\t4:
多复数除法,以0结束\n"
\t0:
退出程序\n\n:
\t请您选择:
cin>
>
strChoise;
if(strcmp(strChoise,"
1"
)==0)//用户选1则调用Add()函数
Add();
elseif(strcmp(strChoise,"
2"
)==0)//用户选2则调用Sub()函数
Sub();
3"
)==0)//用户选3则调用Mul()函数
Mul();
4"
)==0)//用户选4则调用Div()函数
Div();
0"
)==0)//用户选0则结束调用函数
\n\n\t欢迎下次继续使用复数计算器!
\n\n"
else
\n\t输入错误,请按任意键继续!
\n"
}
}
㈣流程图
四、主程序
㈠代码
#include<
iostream>
cmath>
cstring>
usingnamespacestd;
classComplex
{
public:
doublereal,imag;
Complex()
{
real=0.0;
imag=0.0;
Complex(doubler,doublei)//构造函数
real=r;
imag=i;
~Complex()
{}
if(real==c.real&
&
imag==c.imag)
return1;
else
return0;
};
voidAdd()//复数加法运算函数
doublea,b,c,d;
加法计算\n"
最少输入两个复数,并且以0结束\n"
第1个复数的实部和虚部:
a>
b;
第2个复数的实部和虚部:
c>
d;
Complexnum1(a,b),num2(c,d),sum,zero(0,0);
sum=num1+num2;
doublex,y;
第3个复数的实部和虚部:
x>
y;
Complexnum(x,y);
inti=4;
while(!
(num==zero))
sum=sum+num;
第"
i<
个复数的实部和虚部:
num.real=a;
num.imag=b;
i++;
if(sum.imag>
0)
加法结果是:
sum.real<
+"
sum.imag<
j"
endl;
else
请按任意键继续\n"
voidSub()//复数减法运算函数
减法计算\n"
Complexnum1(a,b),num2(c,d),sub,zero(0,0);
sub=num1-num2;
sub=sub-num;
if(sub.imag>
减法结果是:
sub.real<
sub.imag<
voidMul()//复数乘法运算函数
乘法计算\n"
Complexnum1(a,b),num2(c,d),mul,zero(0,0);
mul=num1*num2;
mul=mul*num;
if(mul.imag>
乘法结果是:
mul.real<
mul.imag<
voidDiv()//复数除法运算函数
doublea,b,c,d;
除法计算\n"
Complexnum1(a,b),num2(c,d),div,zero(0,0);
div=num1/num2;
while((num!
=zero))
div=div/num;
if(div.imag>
除法结果是:
div.real<
div.imag<
㈡运行结果
1.加法运算
2.减法运算
3.乘法运算
4.除法计算
五、不足之处
在测试的环节中,界面的结构不够人性化,不如加法算完后要重新进入才能继续算减法。
六、心得体会
通过这一次的课程设计,我自己有了很大的收获,不仅仅是在C++的知识上,更有在问题的处理能力上的一个很大的提升。
大学更多的是要我们将理论熟练地运用到实际中。
可是,因为上学期的学习本来就不够深入,所以在一开始的时候我的心里满是忐忑,生怕自己完成不了。
可是在慢慢的摸索中,我发现其实这并没有我想像的那么可怕。
在一次一次的思考中,运行中,我不仅对程序的结构有了深入的了解,而且甚至上学期的部分疑难问题都在最近得到了解决。
所以说实践能够检验理论,还能够加深我们对知识的记忆,因此,我在以后的学习中也会牢记这点,不仅要记住知识,更要运用知识解决实际的问题。
七、参考文献
陈家骏郑淘编著《程序设计教程用C++语言编程》第二版机械工业出版社