




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程设计题目:复数计算器 学生姓名: 专 业: 班 级 : 指导教师: 2011年 12 月 16 日东华理工大学课程设计评分表学生姓名:胡梦阳 班级:10211123 学号:1021112328课程设计题目:复数计算器项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总 分100指导教师评语: 指导教师签名: 年 月 日目录评分表 .第2页问题分析 .第4页结构分析 .第4页实现流程分析 .第5页个性功能介绍 .第6页课程设计小结 .第7页附:源代码 .第7页问题分析: 要求实现复数计算的功能,因此,建立一个复数类complex;定义复数类,成员函数加减乘除等等,在运算过程中,不免遇见不同的数据类型,于是,自然而然利用类成员函数的重载,实现题目要求的功能,实现虚部实部的判断需要建立两个对象,再引用test类进行对比,实现虚部实部的正确赋值,这样有利于在测试中实现对比,不用达到整体对比,只要是实部比实部,虚部比虚部。实现检测功能,要实现此功能,可以另建一个类test,实现复数计算的对比与比较,定义test类。本程序的基本思想就是实现复数公式的应用:(a+bi)+(c+di)=(ac)+(bd)i (a+bi)(c+di)=(ac)+(bd)i(a+bi)(c+di)=(ac-bd)+(bc+ad)i (a+bi)(c+di)=(ac+bd)/(c2+d2)+(bc-ad)/(c2+d2)结构分析:UMLcomplex-real : double-imag : double+complex(double r,double i):real(r),imag(i)+setcomplex(double r,double i)+complex operator+complex operator-+complex operator*+complex operator/+friend ostream &operatortest-x : double-y : double+test():void+test(double z,double t)+test operator+test operator-+test operator*类结构图成员函数:代参构造函数 complex()设置参数函数 setcomple()运算符重载+ test operator+运算符重载- complex operator-()运算符重载* complex operator*()运算符重载/ complex operator/()输出流重载 friend ostream &operator()Complex(复数计算类)数据成员:实部 real虚部 imag成员函数:不带参构造函数 test()代参构造函数 test()设置参数函数 setcomple随机运算符重载+ test operator+()随机运算符重载- test operator-()随机运算符重载* test operator*()数据成员:实部 x虚部 yTest(测试类)实现流程分析:1、 执行main函数,选择要执行的功能2、 输入参与运算的数字,系统自动输出所选功能的结果3、 选择测试的话,主要考察用户是否会计算复数,系统会提供算式,用户自己填答案,最后会得出结果,告知用户4、 可以提供多项式的加减乘除运算5、 实现复数模的大小比较个性功能介绍:系统自动倒计时进入可选功能菜单实现连加功能,减乘除都是如此两个复数的比较,通过模计算测试的过程颜色的变化,字体颜色的变化 通过以上例子,可以明显看出测试功能与计算功能的不同。实现了式子的可视化与随机化。课程设计小结:1. 明确实验操作对象和目的。2. 针对目的和对象进行总体设计。3. 细化流程:书写程序,编译,递归修改,调试。4. 经过一系列的整改,实现了通过键盘输入得到答案的功能,实现了人机交互,并且去除了数据类型为double型的选择bug,原来,比如:当进入功能时,选择除数字外的键时,会发生死循环,通过整改,此问题以解决,当输入不符合的数据时,会提示错误,实现容错处理!5. 通过检查,个人认为,本程序已经尽了自己的努力,修改了好多小BUG,完成了最终版的程序,完成了课程设计的要求,初始化了登陆界面,但自己知道,还有好多缺陷,自己曾试图修改增添,无奈,改来改去无法实现,而且把原来的代码弄错了,只能怪自己的学术不精,请老师见谅6. 基本实现课程设计基本要求和选作要求。7. 基本上是运用C+的核心知识点。附:源代码如下/类的定义代码(class1.h)#ifndef Class1_H#define Class1_H/定义complex类#include#includeusing namespace std;class complex public:complex();/默认构造函数 complex(double r,double i):real(r),imag(i);/构造函数 void setcomplex(double r,double i);/重新设置复数 complex operator+(complex &c2);/运算符+重载声明 complex operator-(complex &c2);/运算符-重载声明 complex operator*(complex &c2);/运算符*重载声明 complex operator/(complex &c2);/运算符/重载声明 friend ostream & operator(ostream&,complex&);/重载流插入运算符“(istream&,complex&);/重载流提取运算符“”,用于复数输入 void complexAdd(); void complexSubtract(); void complexMultiply(); void complexDivide(); friend void complexcompare(); friend double mod(const complex &c);/求模长的平方 private: double real; double imag; ;class testpublic: test() test(double z,double t);/构造函数 test operator+(test &c2);/运算符+重载声明 test operator-(test &c2);/运算符-重载声明 test operator*(test &c2);/运算符*重载声明 /friend ostream & operator(istream &,test &);private:double x;double y;#endif/类的实现代码(复数计算.cpp)#include class1.h#include #include #includeusing namespace std;/=成员函数类外定义=void complex:setcomplex(double r,double i)/重置复数 real=r;imag=i;/-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; c.imag=imag-c2.imag; return c;/-complex complex:operator*(complex &c2)/乘法 complex c; c.real=real*c2.real-imag*c2.imag; c.imag=imag*c2.real+real*c2.imag; return c;/-complex 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;/-ostream & operator=0) output(c.real+c.imagi); else output(c.real c.imag(istream &input,complex &c)/输入 coutc.realc.imag; return input;/=功能函数(普通函数)的定义=/复数加法void complex:complexAdd() int num ; cout请输入操作数(参加加法的复数)的个数(注意操作数=0):; cinnum ; while(num10|num0)/使输入的操作数=10 cout您输入的数大于或小于,请重新输入!endl; cout请输入操作数(参加加法的复数)的个数(注意操作数=0):; cinnum ; if(num=0)cout没有输入任何复数n; else complex total(0.0,0.0); for(int i=0;ic; total=total+c; cout这num个复数累加的和为totalendl; /复数减法void complex:complexSubtract() int num ; cout请输入操作数(参加减法的复数)的个数(注意操作数=0):; cinnum ; while(num10|num0)/使输入的操作数=10 cout您输入的数大于或小于,请重新输入!endl; cout请输入操作数(参加减法的复数)的个数(注意操作数=0):; cinnum ; if(num=0)couttotal; for(int i=2;ic; total=total-c; cout这num个复数累减的和为totalendl; /复数乘法void complex:complexMultiply() int num ; cout输入操作数(参加乘法的复数)的个数(注意操作数=0):; cinnum ; while(num10|num0)/使输入的操作数=10 cout您输入的数大于或小于,请重新输入!endl; cout输入操作数(参加乘法的复数)的个数(注意操作数=0):; cinnum ; if(num=0)cout没有输入任何复数nnn; else complex total(1.0,0.0);/注意此处的初值 for(int i=1;ic; total=total*c; cout这num个复数累乘的和为totalendl; /复数除法void complex:complexDivide() int num ; cout输入操作数(参加除法的复数)的个数(注意操作数=0):; cinnum ; while(num10|num0)/使输入的操作数=10 cout您输入的数大于或小于,请重新输入!endl; cout输入操作数(参加除法的复数)的个数(注意操作数=0):; cinnum ; if(num=0)couttotal;/把参加除法的第一个数赋值给total for(int i=2;ic; if(!mod(c) coutc; total=total/c; cout这num个复数累除的商为totalendl; /两个复数的比较函数void complexcompare() /两复数比较函数 complex c1,c2; coutc1; cinc2; if(c1.real=c2.real)&(c1.imag=c2.imag) coutmod(c2) coutc1的模大于c2的模n;/比较模长 else if(mod(c1)mod(c2) coutc2的模大于c1的模n;/比较模长 else cout这两个复数的模相等n;/比较模长/求模长平方函数double mod(const complex &c) return(c.real*c.real+c.imag*c.imag);/-test类的实现-test test:operator+(test &c2)/随机加法/*cout加法;*/test b;test c;double x = rand()%20 - 10; / 产生的随机数是一位数,可以是正数或负数double y = rand()%20 - 10;c2.x=rand()%20-10;c2.y=rand()%20-10;/coutx;/cout=0)couttt(x+yi)+(c2.x+c2.y)i=;else couttt(x+yi)-(c2.x+(c2.y)i)c.xc.y;coutendl;if(b.x=c.x&b.y=c.y)cout回答正确endl;elsecout回答错误endl; return b; /- test test:operator-(test &c2)/随机减法/cout=0)couttt(x+yi)-(c2.x+c2.y)i=;else couttt(x+yi)-(c2.x+(c2.y)i)c.xc.y;coutendl;if(b.x=c.x&b.y=c.y)cout回答正确endl;elsecout回答错误endl; return b;/-test test:operator*(test &c2)/乘法 /cout=0)couttt(x+yi)*(c2.x+c2.y)i=;else couttt(x+yi)*(c2.x+(c2.y)i)c.xc.y;coutendl;if(b.x=c.x&b.y=c.y)cout回答正确endl;elsecout回答错误endl;return b;/-test:test(double z, double t)/测试构造函数/*cout正在测试;*/test d;test c;int i=1;/ostream output;int oper;doi+;oper = rand()%3; / 随机产生3 种运算符switch(oper)case 1: /*cout(d);*/ break;case 2:/*cout(d);*/operator-(d);break;case 3:/*cout(d);*/break;while(i11);/main()函数的实现(key.cpp)#include class1.h#include #include#include #include #include#include/#includeusing namespace std;/主函数int main()char name10=胡梦阳;char mba10;char card11=1021112328;char password11;srand( time(NULL) ); / 初始化随机数种子coutttt欢迎进入复数计算器系统endl;/进入系统cout0;t-)Sleep(1000);cout t秒;system(cls);/清屏函数coutmba;couta;coutpassword; system(cls);if(!strcmp(mba,name) & !strcmp(password,card)system(color C3);coutnntttt欢迎进入本系统!endl;coutendl;coutttendl; coutttendl;coutttendl;couttt周末快乐endl; coutttendl;coutttendl;coutttendl;coutendl;cout0;t-)Sleep(1000);cout.;system(cls);elsecoutnntt对不起,您输入的用户名或密码错误。本系统即将退出!endl;exit(0);int i=0; char choice;system(color 08); coutttt :.,.-:*:-.,.-:*:endl; /主要程序的操作界面 coutttt endl; coutttt 周末快乐endl; coutttt endl; coutttt * * * * * * * * * * * * *endl; couttttendl; coutttt财招吉大阁endl; coutttt源财祥吉家endl; coutttt广进如大平endl; coutttt进宝意利安endl; couttttendl; coutttt欢迎进入复数计算系统:endl; coutttt1.加法endl; coutttt2.减法endl; coutttt3.乘法endl; coutttt4.除法endl; coutttt5.复数大小(模)的比较endl; coutttt6.复数计算检测(十个式子)endl; coutttt0.退出endl; coutchoice;/输入功能选择 if(choice=0) exit(0);for(choice!=0;) test b; complex a; switch(choice
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淘宝客服雇工合同范本
- 饭店冰柜押金合同范本
- 酒水供店协议合同范本
- 济南委托租房合同范本
- 进口商品回收合同范本
- 装修清扫服务合同范本
- 租车广告租赁合同范本
- 软件战略合同协议范本
- 银行柜员劳动合同范本
- 装修活动定金合同范本
- 2025-2026学年人教版(2024)小学体育与健康三年级(全一册)教学设计(附目录P114)
- 起重机作业人员Q2证理论考试练习题含答案
- 四川遂宁2021-2024年中考满分作文64篇
- 轧钢安全规程培训课件
- 2025年下半年上海市新航社区服务总站招聘5人备考练习题库及答案解析
- 2025版防洪堤坝加固工程施工合同
- 2025年消防经济学试题及答案
- 2025-2026学年人教版(2024)小学美术三年级上册教学计划及进度表
- 智能培训系统构建
- 2025年秋期新教材人音版三年级上册小学音乐教学计划+进度表
- 2025广东广州越秀区矿泉街招聘禁毒专职人员1人考试备考题库及答案解析
评论
0/150
提交评论