




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 中南大学高级程序设计实践(C+)课程设计报告题 目 复数计算器 学生姓名 指导教师 学 院 信息科学与工程学院 专业班级 完成时间 2014.7.5 目录第一章 需求分析3第二章 概要设计3第三章 详细设计3第四章 调试分析3第五章 测试结果3第六章 课程设计总结3第七章 参考文献3第八章 附录3第一章 需求分析程序设计任务:运用面向对象程序设计知识,利用C+语言设计和实现一个复数计算器。主要功能:(1) 建立实数类、复数类(2) 实现实数、复数信息的初始化(3) 实现实数的加、减、乘、除、自增、自减、求平方、二次方根等操作(4) 实现复数的加、减、乘、除、取模、求平方、求共轭复数、求单个复
2、数的向量角、求两个复数的夹角等运算(5) 实现实数、复数信息的输出第二章 概要设计 含有两个类,实数Real类和复数Complex类,用于实数和复数的计算,两个类并列关系,定义两个菜单函数,用于输出欢迎界面和功能列表,主函数可分别调用两个类中的函数和菜单函数。对于Complex 类中应用运算符重载,是它可以对复数进行计算。第三章 详细设计1.Complex类用于复数的加法,减法,乘法,除法,取模,求共轭复数,求向量角,和两个复数夹角的计算。成员函数:(1).构造函数和析构函数。(2). int add(); 用于计算复数加法的函数。int subtraction();用于计算复数减法的函数。i
3、nt qumo();用于复数取模的函数。int multiplication();用于计算复数乘法的函数。int division();用于计算复数除法的函数。int square();用于计算复数平方的函数。int qiugonge();用于计算复数求共轭复数的函数。void xiangliangjiao();用于计算单个复数向量角的函数。void shuangxiangliangjiao();用于计算两个复数的向量角的函数。void display();用于输出结果的函数。(3).运算符重载Complex operator +(Complex &c2); 对于加号运算符的重载。Co
4、mplex operator -(Complex &c2); 对于减号运算符的重载。Complex operator *(Complex &c2); 对于乘法运算符的重载。Complex operator /(Complex &c2); 对于除法运算符的重载。friend istream&operator>>(istream&input,Complex &c2);对于输入运算符的重载,并把它定义为友元函数,可以使用类中定义为私有的变量。friend ostream&operator<<(ostream&ou
5、tput,Complex &c2);对于输出运算符的重载,并把它定义为友元函数,可以使用类中定义为私有的变量。以加法为例:Complex Complex:operator+(Complex &c2) Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; 由于其中this是指向当前对象的指针,即c1,所以在语句中c1.real可写成real2.Real类用于实数的加减乘除,平方,平方根,自增自减的操作。成员函数:(1).构造函数和析构函数(2). void add();用于计算实数加法的函数。 void su
6、btraction();用于计算实数减法的函数。 void multiplication();用于计算实数乘法的函数 void division();用于计算实数除法的函数。 void addself();用于实数自增的函数。 void decrement();用于实数自减的函数。 void square();用于计算实数平方的函数。 void square_root();用于计算实数平方跟的函数。 void get_real();用于输出结果。函数调用关系图main函数复数实数选择实数或复数subtraction()multiplication()division()qumo()qiugon
7、ge()xiangliangjiao()shuangxiangliangjiao()square()add()subtraction()multiplication()division()decrement()addself()square_root()square()add()输出get_real()结束 第四章 调试分析调试过程中,起先把实数和复数的加减乘除写在同一个函数中,但是这样对于后面不同的运算选择起来不太方便,最终解决方法是把实数和复数的算法完全分开。但是这样可能会导致程序的拖沓。程序对于实数的运算有可改进的地方,对于实数,不需定义那么多的函数,可以直接进行计算。这样可以简化程序。
8、第五章 测试结果 1-1 界面 1-2 实数加法 2-1 复数加法 2-2 复数减法 2-3 复数乘法 2-4 复数除法 2-5 复数取模 2-6 复数平方 2-7 向量角 2-8 两向量的夹角 2-9 共轭复数第六章 课程设计总结 通过这次课程设计,我学会了应用运算符重载和分文件写代码,让我更清楚的认识了C+的封装性,在头文件中写入声明,在源文件中写入函数定义,这样可以使思路和代码更清晰明了。成功写成代码,让我感到喜悦,让我更有信心去学习,也让我看出,只要肯努力,就一定会成功。虽然有很多地方又不足,但是我相信,经过不断的练习,我还会有进步,以后可以写出更加简单方便的程序。第七章 参考文献谭浩
9、强C+程序设计(第二版)第八章 附录#include<iostream>#include<cmath>#include<stdlib.h>using namespace std;class Realpublic:Real(void);Real(void);void add();void subtraction();void multiplication();void division();void addself();void decrement();void square();void square_root();void get_real();priva
10、te:float a,b;Real:Real(void)Real:Real(void)void Real:add()cout<<"请输入实数"<<endl;cin>>a>>b;cout<<"a+b="<<a+b<<endl;void Real:subtraction()cout<<"请输入实数"<<endl;cin>>a>>b;cout<<"a-b="<<a-b
11、<<endl;void Real:multiplication()cout<<"请输入实数"<<endl;cin>>a>>b;cout<<"a*b="<<a*b<<endl;void Real:division()cout<<"请输入实数"<<endl;cin>>a>>b;cout<<"a/b="<<a/b<<endl;void Real
12、:addself()cout<<"请输入实数"<<endl;cin>>a; cout<<"自增为"<<a+<<endl;void Real:decrement()cout<<"请输入实数"<<endl;cin>>a;cout<<"自减为"<<a-<<endl;void Real:square()cout<<"请输入实数"<<end
13、l;cin>>a;cout<<"平方为"<<a*a<<endl;void Real:square_root()cout<<"请输入实数"<<endl;cin>>a;cout<<"平方根为"<<sqrt(a)<<endl;class Complexpublic:Complex(void);Complex(void);Complex(double r,double i)real=r;imag=i;Complex oper
14、ator +(Complex &c2);Complex operator -(Complex &c2);Complex operator *(Complex &c2);Complex operator /(Complex &c2);friend istream&operator>>(istream&input,Complex &c2);friend ostream&operator<<(ostream&output,Complex &c2);int add();int subtraction
15、();double qumo();int multiplication();int division();int square();int qiugonge();void xiangliangjiao();void shuangxiangliangjiao();private:double real;double imag;Complex:Complex(void)real=0;imag=0;Complex:Complex(void)Complex Complex:operator+(Complex &c2)Complex c;c.real=real+c2.real;c.imag=im
16、ag+c2.imag;return c;Complex Complex:operator -(Complex &c2)Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;Complex 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 Complex:operator /(Complex &c2)Complex
17、 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;istream &operator>>(istream&input,Complex&c)cout<<"请输入实部和复部"<<endl;input>>c.real>>c.imag;return in
18、put;ostream&operator<<(ostream&output,Complex&c)output<<"("<<c.real;if(c.imag>=0)output<<"+"output<<c.imag<<"i)"<<endl;return output;int Complex:add() Complex c1,c2,c3;cin>>c1>>c2;c3=c1+c2; cout<<
19、;c3; return 0;void Complex:shuangxiangliangjiao()Complex c1,c2;double a;cin>>c1>>c2;a=(c1.real*c2.real+c1.imag*c2.imag)/(sqrt(c1.real*c1.real+c1.imag*c1.imag)*sqrt(c2.real*c2.real+c2.imag*c2.imag);a=acos(a)*180/(2*asin(1.0);cout<<"两向量夹角为"<<a<<"度"<
20、<endl;void Complex:xiangliangjiao()double a;Complex c;cin>>c;if(c.real=0)a=2*asin(1.0)/2.0;elsea=atan(c.imag/c.real)*180/(2*asin(1.0);cout<<"向量角为"<<a<<"度"<<endl;int Complex:square() Complex c1,c2;cin>>c1;c2=c1*c1;cout<<c2;return 0;int
21、Complex:multiplication()Complex c1,c2,c3;cin>>c1>>c2;c3=c1*c2;cout<<c3;return 0;double Complex:qumo()double a;Complex c1;cin>>c1;a=sqrt(c1.real*c1.real+c1.imag*c1.imag);cout<<"c1的模为"<<a<<endl;return a;int Complex:subtraction()Complex c3;Complex c1,
22、c2;cin>>c1>>c2;c3=c1-c2;cout<<c3;return 0;int Complex:division()Complex c3;Complex c1,c2;cin>>c1>>c2;c3=c1/c2;cout<<c3;return 0;int Complex:qiugonge()Complex c1,c2;cin>>c1;c2.real=c1.real;c2.imag=-c1.imag;cout<<"共轭为"<<c2;return 0;int se
23、lect,m;void selects()cout<<"*欢迎使用计算器*"<<endl;cout<<"若要使用实数计算器,请输入1"<<endl;cout<<"若要使用复数计算器,请输入2"<<endl;cout<<"退出0"<<endl;cout<<"*"<<endl;cin>>select;void menu1()cout<<"-请选择功
24、能-"<<endl;cout<<" 1.加法"<<endl;cout<<" 2.减法"<<endl;cout<<" 3.乘法"<<endl;cout<<" 4.除法"<<endl;cout<<" 5.自增"<<endl;cout<<" 6.自减"<<endl;cout<<" 7.求平方&qu
25、ot;<<endl;cout<<" 8.求二次方根"<<endl;void menu2()cout<<"-请选择功能-"<<endl; cout<<" 1.加法"<<endl; cout<<" 2.减法"<<endl; cout<<" 3.乘法"<<endl; cout<<" 4.除法"<<endl; cout<<" 5.取模"<<endl; cout<<" 6.求平方"<<endl; cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 穿戴式设备在智能执法记录仪中的应用考核试卷
- 空调器智能湿度调节算法考核试卷
- 2025年中国电镀金刚石打孔钻市场调查研究报告
- 自动扶梯驱动电机与控制技术考核试卷
- 2025钴产品购销合同范本版
- gps考试试题及答案
- 配送员考试试题及答案
- 新疆遴选公务员笔试题及答案
- 对口考试试题及答案
- 临床营养考试试题及答案
- 尘肺病介绍与预防课件
- 机电项目策划方案
- 脑机接口总体愿景与关键技术研究报告
- 霸王茶姬管理制度
- 边防检查专业
- 对接焊缝角焊缝的构造和计算
- 省级特色专业安徽省高等学校质量工程项目进展报告
- 【教案】2023届高考英语复习:阅读理解之词义猜测教学设计
- 青海风电场工程地质勘察报告
- 中学田径基础校本课程教材
- 牛津英语3BM3U3Seasons的资料
评论
0/150
提交评论