




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学课程设计专用纸 No26目 录1 题目内容及设计要求12 总体设计12.1 总体功能框图12.2类及功能函数设计说明22.3 主要算法流程图33程序清单及注释54运行结果与分析235总结256参考文献26沈阳理工大学1 题目内容及设计要求内容及要求:(1)所设计的复数计算器可以进行+ - * += -= *= + - = =( is:istream, com: CComplex ):istream +operator=(com:CComplex):int+operator(istream &is,CComplex &com ); /重载输入friend ostream & operator(CComplex &com); /比大int operator(CComplex &com); /比小int operator!=(CComplex &com); /不等int operator=(CComplex &com); /相等(2)、其中类User中包括: 数据成员:char Name20; /用户名 int nTest; /测试次数 double alAve; /平均成绩 int nAdd; /加法次数 int nSub; /减法次数 int nMul; /乘法次数 double dlScoreN; /用于分别存放前n次测试的总分数2、 用于计算的函数: Add() /加法计算Sub() /减法计算Mul() /乘法计算Text() /用户测试Add1() / 加法赋值计算Sub1() / 减法赋值计算Mul1() / 乘法赋值计算selfAdd() / 自加计算selfSub() / 自减计算Mod() / 模的计算Compare() / 比较计算3、 文件操作函数 Write() 文件写入 Read() /文件读取4、 其他函数 Menu() /菜单函数Clear() /输入数据类型错误时,用以清空输入流2.3 主要算法流程图。图21 算法流程图3 程序清单及注释#include #include #include #include #include #include #include #define N 10class CComplexprivate: double Real,Image;public: CComplex(double real=0,double image =0) /构造函数 Real=real;Image=image;friend istream & operator(istream &is,CComplex &com ); /重载输入friend ostream & operator(CComplex &com);int operator(istream &is,CComplex &com )/重载输入SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_BLUE);char s20;A: iss;int len=strlen(s);int n=0,sign=1;com.Image=com.Real=0;for(int k=0;klen;k+)if(sk9)&(sk!=+&sk!=-&sk!=i)cout输入不合法!endl;cout请重新输入复数:;goto A;for(k=0;klen;) if(n!=0&(sk=-|sk=+)com.Real=sign*n;n=0;if(sk=-) sign=-1;k+;if(sk=+)sign=1;k+; if(sk=i)if(k!=len-1)cout复数数据格式错误=0&sk=9)n=n*10+sk-0;k+;if(slen-1!=i&n!=0)com.Real=n*sign;return is;ostream & operator(ostream &os,CComplex &com)/重载输出if(fabs(com.Image)1e-6)oscom.Real;else if(fabs(com.Real)1e-6)oscom.Image0)oscom.Real+com.Imagei;elseoscom.Realcom.Image(CComplex &com)/比大if(mod()com.mod()return 1;elsereturn 0;int CComplex:operator(CComplex &com)/比小if(mod()com.mod()return 1;elsereturn 0;int CComplex:operator!=(CComplex &com)/判断不等if(Real!=com.Real|Image!=com.Image)return 1;elsereturn 0;int CComplex:operator=(CComplex &com)/判断相等if(Real=com.Real&Image=com.Image)return 1;elsereturn 0;void Clear(int &f1)/输入错误是清空输入流while(cin.fail() coutf1;void Text()/用户测试system(cls);couttttt欢迎进入测试模式!nttt本测试共5道题,每题20分,满分100分。endl;int i,score=0,x,e=1,f;double real1,image1,real2,image2,real3,image3,real4,image4;CComplex key,temp;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:放弃测试,1:开始测试f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:user.nTest+;for(i=1;i=5;i+)cout第i题 : ;srand(unsigned int)time(NULL);real1=rand()%200-100;image1=rand()%200-100;real2=rand()%200-100;image2=rand()%200-100;real3=rand()%20-10;image3=rand()%20-10;real4=rand()%20-10;image4=rand()%20-10;CComplex a(real1,image1),b(real2,image2),c(real3,image3),d(real4,image4);x=rand()%3;switch(x)case 0:key=a+b;cout(a)+(b)=;break;case 1:key=a-b;cout(a)-(b)=;break;case 2:key=c*d;cout(c)*(d)temp;if(key=temp)cout恭喜你!答对了!endl;score+=20;elsecout很遗憾,答错了!endl;cout正确答案为:keyendl;break;case 0:e=0;user.dlScore0=0;user.dlScoreuser.nTest=score;cout此时总分为:score0&user.nTest3)user.alAve=(score-user.dlScoreuser.nTest-3)/3;elseuser.alAve=0;cout测试次数:user.nTestendl;cout最后三次测试平均分是:user.alAveendl;cout此次计算结束!endl;system (pause);system(cls);void Add()/计算加法system(cls);couttttt欢迎进入加法模式!endl;CComplex n1,n2,sum;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:user.nAdd+;coutn1;coutn2;sum=n1+n2;cout结果为:sumendl;break;case 0:e=0;cout加法计算次数:user.nAddendl;cout此次计算结束!endl;system (pause);system(cls);void Sub()/计算减法system(cls);couttttt欢迎进入减法模式!endl;CComplex n1,n2,sum;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:user.nSub+;coutn1;coutn2;sum=n1-n2;cout结果为:sumendl;break;case 0:e=0;cout减法计算次数:user.nSubendl;cout此次计算结束!endl;system (pause);system(cls);void Mul()/计算乘法system(cls);couttttt欢迎进入乘法模式!endl;CComplex n1,n2,sum;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:user.nMul+;coutn1;coutn2;sum=n1*n2;cout结果为:sumendl;break;case 0:e=0;cout乘法计算次数:user.nMulendl;cout此次计算结束!endl;system (pause);system(cls);void Add1()/加法赋值运算system(cls);couttttt欢迎进入加法赋值模式!endl;CComplex n1,n2;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;coutn2;n1+=n2;cout结果为:n1endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void Sub1()/减法赋值运算system(cls);couttttt欢迎进入减法赋值模式!endl;CComplex n1,n2;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;coutn2;n1-=n2;cout结果为:n1endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void Mul1()/乘法赋值运算system(cls);couttttt欢迎进入乘法赋值模式!endl;CComplex n1,n2;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;coutn2;n1*=n2;cout结果为:n1endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void selfAdd()/自加运算system(cls);couttttt欢迎进入自加模式!endl;CComplex n1;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;+n1;cout结果为:n1endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void selfSub()/自减运算system(cls);couttttt欢迎进入自减模式!endl;CComplex n1;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;-n1;cout结果为:n1endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void Mod()/复数求模system(cls);couttttt欢迎进入复数求模模式!endl;CComplex n1;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;cout结果为:n1.mod()endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void Compare() /复数比较system(cls);couttttt欢迎进入复数比较模式!endl;CComplex n1,n2;int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_RED);cout0:退出计算,1:开始计算f;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:coutn1;coutn2;if(n1=n2)cout(n1) = (n2)n2)cout|(n1)| |(n2)|endl;else if(n1n2)cout|(n1)| |(n2)|endl;elsecout|(n1)| = |(n2)|endl;break;case 0:e=0;cout此次计算结束!endl;system (pause);system(cls);void Write()/文件保存用户数据ofstream out;out.open(c:file.text);if(!out)cout不能打开文件!endl;outuser.Nameendl;out计算加法次数 : user.nAddendl;out计算减法次数 : user.nSubendl;out计算乘法次数 : user.nMulendl;out用户测试次数 : user.nTestendl;out平均测试分数 : user.alAve;cout数据已保存!endl;out.close();void Read()/读取用户数据ifstream in;in.open(c:file.text);if(!in)cout不能打开文件!endl;char s30;while(!in.eof()in.getline(s,sizeof(s);coutsendl;in.close();void Username()/输入用户名coutname;coutendl;ifstream in;in.open(c:file.text);if(!in)cout不能打开文件!endl;strcpy(user.Name,name);char s30;while(!in.eof()in.getline(s,sizeof(s);if(strcmp(s,name)=0)cout感谢您再次使用复数计算器,您上次使用记录如下:endlendl;Read();break;strcpy(user.Name,name);system (pause);system(cls);void Menu()/菜单函数int e=1,f;while(e)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_RED); coutt*复数计算器*nendl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);coutnn;cout=MENU=;cout= =;cout= | 0:退出计算 | 1:加法计算 | 2:减法计算 | 3:乘法计算 | 4:用户测试 | =;cout= =;cout= | 5:加法赋值计算 | 6:减法赋值计算 | 7:乘法赋值计算 | 8:自加计算 | =;cout= =;cout= | 9:自减计算 | 10:复数模的计算 | 11:两复数比较计算 | 12:关于 | =; coutf;Clear(f);switch(f)default:cout输入错误,请重新输入endl;break;case 1:Add();break;case 2:Sub();break; case 3:Mul();break;case 4:Text();break;case 5:Add1();break;case 6:Sub1();break;case 7:Mul1();break;case 8:selfAdd();break;case 9:selfSub();break;case 10:Mod();break;case 11:Compare();break;case 12:system(cls);coutn产 品 信 息:endl;coutnnnn;coutttt*endl;coutttt* *endl;coutttt* 程序名称:复数计算器 *endl;coutttt* 制作人:杜壮 *e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建南平武夷有轨电车有限公司招聘1人考前自测高频考点模拟试题附答案详解(黄金题型)
- 红桥语文中考试卷及答案
- 建筑扬尘智能防控-洞察与解读
- 2025年中国无硅消泡剂行业市场分析及投资价值评估前景预测报告
- 2025国考抚顺市巡视巡察岗位申论模拟题及答案
- 2025国考福建财监行测言语理解与表达高分笔记
- 洗衣维修区块链智能合约-洞察与解读
- 2025国考大连市资源管理岗位申论高频考点及答案
- 2025国考北京市税务稽查岗位行测预测卷及答案
- 2025国考江西民航公安行测言语理解与表达易错点
- 涵洞内布放光缆施工方案
- 《建筑基坑工程监测技术标准》(50497-2019)
- 《中国政治思想史》课程教学大纲
- 许继保护装置说明书
- GB/T 5530-2005动植物油脂酸值和酸度测定
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- GA/T 1476-2018法庭科学远程主机数据获取技术规范
- 《矩阵论》研究生教学课件
- 操作系统第一章答案
- 民用爆炸物品报废及销毁制度(附表单)
- 小学反邪教工作方案及材料
评论
0/150
提交评论