C++课程设计报告(复数计算器)
C课程设计简易计算器实验报告
《程序设计基础》(C++)课程设计报告计算器姓名:班级:学号:指导教师:成绩:完成时间:完成地点:计算器1 基本功能描述计算器包含基本的四则运算、开方、倒数、相反数(正负)等运算。
可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算。
同时包含清除功能。
2 设计思路如图1是计算器总流程图,输完第一个操作数后,若点击双目运算符,则把m_edit 传递给op1,并传递给变量calculator相对运算符对应的值,输入的第二个操作数传递给op2,点击等号根据calculator的值进行相应运算并输出结果。
若点击的是单目运算符,则直接对其处理得出结果。
若点击清零,则m_edit等于0。
设计思路流程图如下(见下页)。
图1 计算器设计思路总流程图3 软件设计创建步骤打开Microsoft Visual C++ ,选择新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculator及其所在位置。
将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成。
MFC AppWizard建立基于对话窗口的程序框架。
界面设计1、创建控件在对话框上的合适的位置画出编辑框和下压式按钮。
如图2所示。
图2 绘制编辑框在按钮和编辑框属性对话框中输入控件的ID值和标题属性。
如图3所示。
图3 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。
表1 各对象属性对象ID 标题或说明编辑框IDC_EDIT1 结果显示按钮IDC_BUTTON0 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_ BUTTONneg +/-按钮IDC_ BUTTONpot .按钮IDC_ BUTTONadd +按钮IDC_BUTTONsub -按钮IDC_BUTTONmul *按钮IDC_BUTTONdiv /按钮IDC_BUTTONsqrt sqrt按钮IDC_BUTTONCE CE完成后界面如图4所示。
C++程序设计-复数计算器
《C++面向对象程序设计》课程设计系专:班级:姓名:学号:指导老师:目录一、设计课题目的 (3)二、课程设计任务及要求 (3)三、课程设计总思路 (4)四、程序源代码 (4)五、运行结果显示 (11)六、本次课程设计的总结 (14)七、参考文献 (14)一、设计课题目的通过C++ 课程设计,使学生能够对现实世界中较简单的问题及其解决方法用计算机语言进行描述,掌握面向对象设计语言的方法。
同时,在实践过程中达到对C++ 语言程序设计的深入理解和熟练掌握。
二、课程设计任务及要求1、任务:课程设计选题是“小型复数计算器”,其任务:请用面向对象方法设计并实现一个小型复数计算器,功能包括:(1)实现复数的设置和显示。
(2)实现复数加减乘除功能,并显示运算结果。
2、要求:1、利用C++ 面向对象方法设计该程序,并实现其功能。
2、从键盘以a+bi的形式输入复数。
3、仿照计算器的运算过程,采用计算器方式进行有关分数运算。
三、课程设计总思路根据题中任务的功能,首先要搞清复数的运算法则,并使用c++语言表达。
复数包含实部与虚部,如何将这两部分表达出来也使关键。
主要需要定义一个cal类。
里面定义了复数所需的各种计算符,来实现复数的各种运算。
esc 函数实现提取输入的实部和虚部。
add 函数实现函数的加法运算。
sub 函数实现函数的减法运算。
mul 函数实现函数的乘法运算。
div 函数实现函数的除法运算。
在主函数中调用类中已定义的函数来实现程序。
四、程序源代码:#include<iostream>#define M 20using namespace std;class cal //定义一个类{public:cal(char a[M]){pt=a;}void esc(); //实现提取输入的实部和虚部void add(); //实现加法void sub(); //实现减法void mul(); //实现乘法void div(); //实现除法void out(); //输出结果void pass(); //传递数据private:char *p,*pt;float SUM_1,SUM_2,A,B;};//成员函数的实现void cal::esc(){int m,n,n2,m2;float shi=0,shi2=0,xu=0,xu2=0;if(pt[0]=='-')p=pt+1;else p=pt;for(m=0;m<M;m++){shi=shi*10+float(p[m]-48);if(p[m+1]=='+'||p[m+1]=='-'){m2=m+1;n2=m;break;}if(p[m+1]=='.'){n=m+2;n2=n-1;for(m=n;m<M;m++){if(p[m]=='-'||p[m]=='+'){m2=m;break;}n2++;}for(m=n2;m>=n;m--){shi2=shi2/10+float(p[m]-48);}break;}}shi+=shi2/10;if(pt[0]=='-')shi=0-shi;for(m=n2+2;m<M;m++){xu=xu*10+float(p[m]-48);if(p[m+1]=='i')break;if(p[m+1]=='.'){n=m+2; n2=n-1;for(m=n;m<M;m++){if(p[m]=='i')break;n2++;}for(m=n2;m>=n;m--){xu2=xu2/10+float(p[m]-48);}break;}}xu+=xu2/10;if(p[m2]=='-')xu=0-xu; A=shi;B=xu;}void cal::pass(){SUM_1=A;SUM_2=B;}void cal::add(){SUM_1+=A;SUM_2+=B;}void cal::sub(){SUM_1-=A;SUM_2-=B;}void cal::mul(){float C=SUM_1;SUM_1=SUM_1*A-B*SUM_2;SUM_2=B*C+SUM_2*A;}void cal::div(){float C=SUM_1;float D=(A*A+B*B);SUM_1=(SUM_1*A+B*SUM_2)/D;SUM_2=(B*C-SUM_2*A)/D;}void cal::out(){cout<<"----"<<endl;if(SUM_2<0)cout<<SUM_1<<SUM_2<<"i"<<endl;elsecout<<SUM_1<<"+"<<SUM_2<<"i"<<endl;}//主函数int main(){cout<<"这是一个简单的复数计算器,具有对复数进行'+,-,*,/' 运算的能力。
复数计算器 实验报告
中南大学高级程序设计实践(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,输入不同数字则进入不同的并列的小程序模块。
c课程设计计算器报告
c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
C课程设计复数计算器
C++课程设计实验报告姓名学号班级合作者学号班级任课教师时间教师指定题目复数计算器评定难易级别 A级实验报告成绩复数计算器程序功能设计1.程序功能的总体结构复数计算器的程序总体功能可设计成如图1所示,可以看出,复数计算器的各种功能都用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能。
2.课程设计要求(1)一开始运行程序,要有详细的菜单选项界面,用户不选择退出就可以反复运算。
(2)可以进行多个操作数的复数运算,输入0+0*i时为止。
(3)编写可以对输入的复数求模的成员函数。
(4)编写具有测试功能的函数,即计算机能够自动出题,并要求用户计算,同时计算机判断用户计算的对错并打分,要求十题为一个单元,每题一个运算符,运算符包括+,-,*三种,参与加减运算实部虚部为一位数。
(5)重载输入输出运算符,对复数的输入既可采用实部虚部分开提示输入,也可直接输入诸如a+i*b或a+ib这种形式,对复数的输出要考虑实部虚部的正负号,通过判断给出的输出结果。
. . . . . .1)类的封装程序中将复数形式的数据定义成一个复数类CComplex,重载了加法及减法等运算符,使函数的加减等运算像一般数据一样方便.每个运算符重载都用一个函数去实现。
参考类的定义如下:class CComplex{private: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<<(ostream&os,CComplex&com); //重载输出CComplex operator+(CComplex&com);CComplex operator-(CComplex&com); //减法重载CComplex operator*(CComplex&com); //乘法重载CComplex operator/(CComplex&com); //除法重载int operator==(CComplex&com);int operator!=(CComplex&com);int operator>(CComplex&com);int operator<(CComplex&com);float Module(void); //复数求模};(2)设计的任务要求1在实际应用中,输入复数可能为a+bi, a, bi, -a, -bi, +i. –i. I等形式。
c课程设计复数类
c 课程设计复数类一、教学目标本节课的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握复数的基本概念、运算规则及复数的几何意义;技能目标要求学生能够运用复数解决实际问题,如电路分析、信号处理等;情感态度价值观目标要求学生培养对数学的热爱和好奇心,提高独立思考和解决问题的能力。
针对课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
通过本节课的学习,学生应能:1.准确地描述复数的基本概念,如实部、虚部等;2.熟练运用复数进行基本的运算,如加、减、乘、除等;3.理解复数的几何意义,能在复平面上表示给定的复数;4.运用复数解决实际问题,如电路分析中的节点电压法等;5.培养对数学的热爱和好奇心,提高独立思考和解决问题的能力。
二、教学内容根据课程目标,我们选择和了以下教学内容:1.复数的基本概念:实部、虚部、复数的表示方法等;2.复数的运算:加、减、乘、除等基本运算规则;3.复数的几何意义:复平面、复数的几何表示等;4.复数在实际问题中的应用:电路分析、信号处理等;5.数学情感的培养:对数学的热爱、好奇心、独立思考和解决问题的能力。
教学内容的安排和进度如下:1.第一课时:介绍复数的基本概念和表示方法;2.第二课时:讲解复数的运算规则;3.第三课时:讲解复数的几何意义;4.第四课时:介绍复数在实际问题中的应用;5.第五课时:总结本节课的内容,并进行复习。
三、教学方法为了激发学生的学习兴趣和主动性,我们采用以下教学方法:1.讲授法:教师通过讲解、举例等方式,引导学生掌握复数的基本概念和运算规则;2.讨论法:学生分组讨论复数的几何意义,促进学生之间的交流与合作;3.案例分析法:通过实际问题,让学生学会运用复数解决实际问题;4.实验法:引导学生进行复数运算实验,加深对复数运算规则的理解。
四、教学资源为了支持教学内容和教学方法的实施,我们准备以下教学资源:1.教材:《高等数学》;2.参考书:《复数理论与应用》;3.多媒体资料:复数的几何意义动画演示;4.实验设备:计算器、复平面模型等。
(完整word版)C++实验报告
C++课程设计报告课程设计题目:复数计算器目录一.概述 (3)二.设计分析 (3)1.问题分析 (3)2.结构分析 (3)3.结构图 (3)4.类结构分析 (4)5.类结构图 (4)三.主程序 (5)1.程序源代码 (5)2.测试结果 (7)四.不足之处 (8)五.设计中遇到的问题及解决办法 (8)六.心得体会 (9)一.概述:程序功能介绍:该程序是一个数学问题求解程序,运用程序对复数进行四则运算。
设计要求:一开始运行程序,要求有菜单选项界面,用户不选择退出就可以反复进行运算。
二.设计分析:1.问题分析:要求实现复数计算的功能,因此,建立一个复数类complex,定义复数类,四则运算。
本程序的基本思想就是复数公式的应用:(a+bi)+(c+di)=(a+c)+(b+d)i;(a+bi)-(c+di)=(a-c)+(b-d)i;(a+bi)*(c+di)=(ac-bd)+(bc+ad)i;(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+(bc-ad)/(c^2+d^2);2..流程分析:1.执行main函数,选择执行的功能;2.输入选项,系统自动输出运算的结果;3.可不退出,继续进行下次选择。
3..流程图4.类结构分析:5.类结构图:三.主程序: 1.程序源代码:#include<iostream> #include<stdlib.h> using namespace std; class Complex{ private: double x,y; public: Complex(int xx=0,int yy=0):x(xx),y(yy){} ~Complex(){} double GetX(){return x;} double GetY(){return y;} Complex operator+(Complex cc); Complex operator-(Complex cc); Complex operator*(Complex cc); Complex operator/(Complex cc); void show(); };Complex Complex::operator+(Complex cc)//复数加法 { Complex temp; temp.x=x+cc.x; temp.y=y+cc.y;return temp;}Complex Complex::operator-(Complex cc)//复数减法{Complex temp;temp.x=x-cc.x;temp.y=y-cc.y;return temp;}Complex Complex::operator*(Complex cc)//复数乘法{Complex temp;temp.x=x*cc.x-y*cc.y;temp.y=x*cc.y+y*cc.x;return temp;}Complex Complex::operator/(Complex cc)//复数除法{Complex temp;double d=(cc.x*cc.x+cc.y*cc.y);temp.x=(double)(x*cc.y+y*cc.x)/d;temp.y=(double)(x*cc.x-y*cc.y)/d;return temp;}void Complex::show(){cout<<"The Complex Is: ("<<GetX()<<","<<GetY()<<")"<<endl; }void menu(){cout<<"1.+"<<endl;cout<<"2.-"<<endl;cout<<"3.*"<<endl;cout<<"4./"<<endl;cout<<"0.Exit"<<endl;cout<<"Your choice:";}int main(){Complex cc1(1,2),cc2(3,4);Complex cc3;,int sel;while(1){menu();cin>>sel;switch(sel){case 1:cc3=cc1+cc2;cc3.show();break;case 2:cc3=cc1-cc2;cc3.show();break;case 3:cc3=cc1*cc2;cc3.show();break;case 4:cc3=cc1/cc2;cc3.show();break;case 0:exit(0);break;default:cout<<"Error Input ...";break;}}return 0;}2.测试结果:四.不足之处:1.给流程图不能输入任意数字计算;2.不能同时进行多个多项式的四则运算;3.缺少测试功能,通过该功能可以考察用户是否会计算复数(系统会提供算式,用户自己填写答案,最后会得出答案,告知用户是否正确)。
c课程设计复数类
c 课程设计复数类一、教学目标本章节的教学目标是使学生掌握复数的基本概念、运算规则及其在实际问题中的应用。
具体包括:1.知识目标:学生能够准确地描述复数的概念,了解复数的四种表示方法,掌握复数的四则运算规则,并能够运用复数解决实际问题。
2.技能目标:学生能够熟练地进行复数的加、减、乘、除运算,能够将实际问题转化为复数问题,并能够运用复数进行问题的求解。
3.情感态度价值观目标:学生能够认识到复数在数学和科学研究中的重要性,培养对复数学习的兴趣和热情。
二、教学内容本章节的教学内容主要包括复数的基本概念、复数的表示方法、复数的四则运算及其在实际问题中的应用。
具体包括:1.复数的基本概念:实数、虚数、复数的概念及其关系。
2.复数的表示方法:代数表示法、几何表示法、极坐标表示法、指数表示法。
3.复数的四则运算:加法、减法、乘法、除法的运算规则及其应用。
4.复数在实际问题中的应用:复数在电路分析、信号处理、流体力学等领域的应用。
三、教学方法为了实现本章节的教学目标,将采用以下教学方法:1.讲授法:通过讲解复数的基本概念、运算规则及其应用,使学生掌握复数的基本知识。
2.案例分析法:通过分析实际问题,引导学生将复数知识应用于解决问题,提高学生的实际应用能力。
3.实验法:通过进行复数的运算实验,使学生熟练掌握复数的运算方法。
4.小组讨论法:通过小组讨论,激发学生的思考,培养学生的合作能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用《高等数学》、《复数与泛函分析》等教材,作为学生学习的基本参考资料。
2.参考书:推荐《复数与复分析》、《复数及其应用》等参考书,供学生深入研究。
3.多媒体资料:制作PPT、微视频等多媒体资料,生动形象地展示复数的概念和运算过程。
4.实验设备:准备计算器、电脑等实验设备,用于进行复数的运算实验。
五、教学评估本章节的评估方式将包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
c课程设计复数
c 课程设计复数一、教学目标本章的教学目标是使学生掌握复数的基本概念、运算规则及其在实际问题中的应用。
具体包括:1.知识目标:学生能够准确理解复数的概念,掌握复数的四则运算规则,了解复数在数学分析、电路分析等领域的应用。
2.技能目标:学生能够熟练进行复数的四则运算,解决与复数相关的实际问题,如复数在信号处理、流体力学等领域的应用。
3.情感态度价值观目标:学生能够认识到复数是数学中的重要分支,对科学研究和实际应用具有重要意义,激发学生对复数学习的兴趣和好奇心。
二、教学内容本章的教学内容主要包括复数的基本概念、四则运算规则及其在实际问题中的应用。
具体安排如下:1.复数的基本概念:介绍复数的概念,解释实数和虚数的概念,阐述复数的表示方法。
2.复数的四则运算:讲解复数的加法、减法、乘法和除法运算规则,举例说明运算过程。
3.复数在实际问题中的应用:通过具体案例,展示复数在数学分析、电路分析等领域的应用,让学生体会复数在解决实际问题中的重要性。
三、教学方法为了提高学生的学习兴趣和主动性,本章将采用以下教学方法:1.讲授法:教师通过讲解复数的基本概念、运算规则及应用案例,使学生掌握相关知识。
2.讨论法:教师学生分组讨论,让学生共同探讨复数运算的规律,提高学生的合作能力。
3.案例分析法:教师选取实际问题,引导学生运用复数知识进行分析,培养学生的应用能力。
4.实验法:教师学生进行复数实验,让学生通过实践操作,加深对复数运算规则的理解。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,本章将采用以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的复数知识体系。
2.参考书:推荐学生阅读相关参考书,拓展学生的知识视野。
3.多媒体资料:利用多媒体课件、视频等资料,生动展示复数的概念和运算过程。
4.实验设备:为学生提供复数实验所需的设备,如计算器、电路仿真软件等。
五、教学评估本章的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
复数计算器课程设计
复数计算器课程设计-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN目录1 题目内容及设计要求 .......................... 错误!未定义书签。
2 总体设计.............................................. 错误!未定义书签。
总体功能框图.................................. 错误!未定义书签。
类的设计说明 ................................. 错误!未定义书签。
主要算法流程图 ............................. 错误!未定义书签。
3 程序清单及注释................................. 错误!未定义书签。
4 运行结果与分析................................. 错误!未定义书签。
5 总结 .................................................... 错误!未定义书签。
6 参考文献 ............................................ 错误!未定义书签。
1 题目内容及设计要求题目17 复数计算器内容及要求:(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中>= <=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识别出实部虚部并正确赋值。
(3) 设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行测试,乘法要求为一位数的运算。
(4) 设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存在计算机内,开机时要求用户输入用户名,显示该名户以前的记录。
C++课程设计报告复数计算器
目录第一章需求分析 (1)第二章概要设计 (2)第三章详细设计 (4)第四章调试分析 (21)第五章测试结果 (25)第六章课程设计总结 (36)第七章参考文献 (37)第八章附录 (37)第一章需求分析1.1程序设计的任务1.1.1编程目的1.本次程序设计的目的运用面向对象程序设计知识,利用C++语言设计和实现一个复数计算器,要求具备如下主要功能:(1)建立实数类、复数类(2)实现实数、复数信息的初始化(3)实现实数的加、减、乘、除、自增、自减、求平方、二次方根等操作(4)实现复数的加、减、乘、除、取模、求平方、求共轭复数、求单个复数的向量角、求两个复数的夹角等运算(5)实现实数、复数信息的输出1.1.2编程要求在实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承、封装与多态等核心概念,每一个类应包含数据成员和成员函数。
1.1.3数据范围数据输入的形式为float型,输出形式亦是float型,数据(实数、复数的实部、虚部)范围是-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38。
1.2本程序能实现的功能1.2.1实数类(Complex)所实现的功能:实数的加法运算、减法运算、乘法运算、除法运算、前置自增运算、后置自增运算、前置自减运算、后置自减运算、求平方运算、求平方根运算;1.2.2复数类(Complex1)所实现的功能:复数的加法运算、减法运算、乘法运算、除法运算、模长运算、求平方运算、共轭复数运算、求单个复数的向量角运算、求两个复数的夹角运算。
1.2.3主函数所能实现的功能1.提供给操作者操作数据的类型(实数还是复数)的标识;2.操作者选择数据类型后,提供运算类型操作的标识;3.运用指针调用两个类的各成员函数分别完成各项计;第二章概要设计2.1构成部分2.1.1系统由三部分构成:实数类(Complex)、复数类(Complex1)、主函数main。
复数计算器课程设计
复数计算器课程设计一、课程目标知识目标:1. 理解复数的定义,掌握复数的表示方法及其运算规则;2. 学会使用复数计算器进行加减乘除等基本运算;3. 能够将复数运算应用于解决实际问题,如电路分析、流体力学等领域。
技能目标:1. 熟练操作复数计算器,提高计算速度和准确性;2. 能够运用复数知识解决实际问题,培养解决问题的能力;3. 通过小组合作,提高沟通协作能力。
情感态度价值观目标:1. 培养学生对复数知识的兴趣,激发学习热情;2. 培养学生的耐心和细致,提高面对复杂问题的勇气和信心;3. 培养学生的团队意识,增强合作精神。
课程性质:本课程为数学学科的一节实践应用课,旨在帮助学生掌握复数计算器的使用,将理论知识应用于实际问题。
学生特点:学生处于初中阶段,具有一定的数学基础,好奇心强,喜欢探索新知识,但可能对复数概念的理解尚不深入。
教学要求:结合学生特点,注重启发式教学,引导学生自主探究,培养实际应用能力。
在教学过程中,关注学生的个体差异,因材施教,确保每位学生都能达到课程目标。
通过课程学习,使学生能够将复数知识应用于实际问题,提高数学素养。
二、教学内容1. 复数基础知识回顾:复数的定义、实部和虚部、复数的表示方法(代数表示、极坐标表示)。
教材章节:第三章 复数概念与表示方法2. 复数计算器操作方法:介绍复数计算器的基本功能,如复数输入、存储、提取以及加减乘除等运算操作。
教材章节:第四章 复数的计算与计算器应用3. 复数运算规则:总结复数加减乘除运算的法则,以及复数乘方和开方的计算方法。
教材章节:第四章 复数的计算与计算器应用4. 实际问题中的应用:结合教材案例,引导学生将复数知识应用于解决实际问题,如交流电路中的复数阻抗计算。
教材章节:第五章 复数在实际问题中的应用5. 小组合作与讨论:组织学生进行小组合作,探讨复数计算器在生活中的应用,分享学习心得。
教材章节:第六章 复数知识在实际生活中的应用教学进度安排:第一课时:复数基础知识回顾,复数计算器操作方法介绍第二课时:复数运算规则,实际应用案例学习第三课时:小组合作与讨论,总结课程知识,拓展复数在实际生活中的应用三、教学方法1. 讲授法:在复数基础知识回顾环节,采用讲授法对复数的定义、表示方法等基本概念进行梳理和讲解,为学生提供清晰的理论框架。
复数计算器课程设计报告书
目录1 题目容及设计要求 (1)2 总体设计 (1)2.1 总体功能框图............. 错误!未定义书签。
2.2 类的设计说明 (1)2.3 主要算法流程图 (2)3 程序清单及注释 (4)4 运行结果与分析 (21)5 总结 (25)6 参考文献 (25)1 题目容及设计要求题目17 复数计算器容及要求:(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中>= <=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识别出实部虚部并正确赋值。
(3) 设计计算器测试程序,对加减法进行测试,要求在两位数以进行,对乘法进行测试,乘法要求为一位数的运算。
(4) 设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存在计算机,开机时要求用户输入用户名,显示该名户以前的记录。
用户记录用包括:做了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时用心的用户记录代替原有的记录。
2总体设计2.1 总体功能框图根据题中任务的功能,首先要搞清复数的运算法则,并使用c++语言表达。
复数包含实部与虚部,如何将这两部分表达出来也使关键定义一个复数类complex。
声明所需成员函数和友元函数对各运算符进行重载。
定义各成员函数。
定义主函数,实现对整个程序的控制。
编译、运行并调试2.2类的设计说明class CComplex //定义命名空间NameCComplex{private:double Real,Image;public:CComplex(double real=0,double image =0) //构造函数{Real=real;Image=image;}friend istream & operator>>(istream &is,CComplex & ); //重载输入friend ostream & operator<<(ostream &os,CComplex &); //重载输出CComplex operator+(CComplex &); //加法重载CComplex operator-(CComplex &); //减法重载CComplex operator*(CComplex &); //乘法重载CComplex operator+=(CComplex &); //加法赋值重载CComplex operator-=(CComplex &); //减法赋值重载CComplex operator*=(CComplex &); //乘法赋值重载CComplex operator++(); //自加CComplex operator--(); //自减double mod (void); //求复数的模int operator>(CComplex &);int operator<(CComplex &);int operator!=(CComplex &);int operator==(CComplex &);};2.3主要算法流程图。
C++课设报告书复数类的设计与实现
成绩评定表课程设计任务书摘要本文采用了C++语言来完成复数类的设计与实现。
首先设计了复数类,在类中定义了复数的实部和虚部,然后在类中设计构造函数和析构函数用于对象的初始化和清理,类中的重载运算符函数用于实现对复数的一些基本运算和输入输出。
程序分别采用Visual C++ 6.0的控制台工程和MFC工程来运行。
最终,通过对两种程序的测试结果表明:复数类的方法函数设计正确,两种程序均能正确实现复数类方法函数的功能。
关键词:复数;复数类;控制台工程;MFC工程目录1 需求分析 (1)2 算法基本原理 (1)3 类设计 (2)4 基于控制台的应用程序 (3)4.1类的接口设计 (3)4.2类的实现 (4)4.3主函数设计 (6)4.4基于控制台的应用程序测试 (7)5 基于MFC的应用程序 (8)5.1基于MFC的应用程序设计 (9)5.1.1 MFC程序界面设计 (9)5.1.2 MFC程序代码设计 (12)5.2基于MFC的应用程序测试 (15)结论 (19)参考文献 (20)1 需求分析(1)构造函数可以用于给对象赋初值;析构函数可以用于对象的生命期结束时,做一些清理工作;拷贝构造函数可以用于复制对象。
(2)类中重载运算符“+”、“-”、“*”、“/”的函数,可以依据复数的四则运算法则设计函数内部代码。
(3)复数的相反数为复数的实部与虚部分别取相反数。
(4)整个程序可以通过构建复数类,类中定义数据成员(复数的实部、虚部),设计方法,实现复数类对象的构造、析构,复数的加减乘除、取相反数的运算。
并通过重载流提取运算符和流插入运算符,来进行复数的输入和输出。
(5)要求类的声明与实现相分离,可以将其保存在不同的文件中,并在类的实现文件中包含类的声明头文件。
2算法基本原理(1)构造函数是一种特殊的成员函数,在建立对象时自动执行。
其名字与类名同名,不具有任何类型,不返回任何值。
构造函数中参数的值可以指定为默认值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京信息工程大学《面向对象程序设计》课程设计实验报告课程名:面向对象程序设计专业:网络工程班级:2班作者:张煜荻、吴辉煌、张一东日期:2011年5~6月实验内容题目:设计一个复数计算器。
要求:1)所设计的复数计算器可以进行+、-、×运算。
2)设计输入重载函数,要求能接收从键盘输入a+b i形式的复数,在程序中可以识别出实部、虚部并进行赋值。
3)设计算器测试程序,对加减法进行测试,要求在两位数以内,对乘法进行测试,乘法要求为一位数的运算。
小组分工程序源码#include<iostream>#include<cmath>#define EPS 1e-5//定义精度为10^-5using namespace std;namespace NameCalculator //定义空间NameCalculator{class Calculator //定义Calculator类{private:double Real,Image; //私有成员:实部Real、虚部Image public:Calculator(double real=0,double image=0) //构造函数{Real=real;Image=image;}int operator==(Calculator &com); //等于重载Calculator operator+(Calculator &com); //加法重载Calculator operator-(Calculator &com); //减法重载Calculator operator*(Calculator &com); //乘法重载Calculator operator*=(Calculator &com);//乘法赋值重载friend istream & operator>>(istream &is,Calculator &com); //输入重载friend ostream & operator<<(ostream &os,Calculator &com); //输出重载};int Calculator::operator==(Calculator &com) //重载等于{if(Real==com.Real && Image==com.Image)return 1;elsereturn 0;}Calculator Calculator::operator+(Calculator &com) //加法重载{Calculator sum;sum.Real=Real+com.Real;sum.Image=Image+com.Image;return sum;}Calculator Calculator::operator-(Calculator &com) //减法重载{Calculator sub;sub.Real=Real-com.Real;sub.Image=Image-com.Image;return sub;}Calculator Calculator::operator*(Calculator &com) //乘法重载{Calculator multi;multi.Real=Real*com.Real-Image*com.Image;multi.Image=Real*com.Image+Image*com.Real;return multi;}Calculator Calculator::operator*=(Calculator &com) //重载乘法赋值{double nReal=Real*com.Real-Image*com.Image;double nImage=Real*com.Image+Image*com.Real;Real=nReal;Image=nImage;return *this;}istream & operator>>(istream &is,Calculator &com) //重载输入{cout<<"请输入复数:";char s[20];is>>s; //用字符串形式接受输入的复数int len=strlen(s);int n=0,sign=1;com.Image=com.Real=0;for(int k=0;k<len;k++){if((s[k]<'0'||s[k]>'9')&&(s[k]!='+'&&s[k]!='-'&&s[k]!='i')){cout<<"输入错误"<<endl;return is;}}for(k=0;k<len;) //检查输入字符串{if(n!=0 &&(s[k]=='-'||s[k]=='+')) //字符是否是符号{com.Real=sign*n;n=0; //将原n*sign值赋给实部,将n清零,准备接受虚部的值}if(s[k]=='-') //字符为负号{sign=-1;k++;}if(s[k]=='+') //字符为正号{sign=1;k++;}if(s[k]=='i') //字符为'i'{if(k!=len-1) //判断字符'i'是否为最后一个字符cout<<"error\n";elsecom.Image=sign*n; //复数对象接受完成,用sign*n为虚部赋值break;}while(s[k]>='0'&&s[k]<='9') //字符在0~9之间,则将字符转换成数值{n=n*10+s[k]-'0';k++;}}if(s[len-1]!='i'&&n!=0) //如果最后一个字符不是'i',则没有虚部{com.Real=n*sign;}return is;}ostream & operator<<(ostream &os,Calculator &com) //重载输出{if(fabs(com.Image)<EPS) //如果虚部为0os<<com.Real; //只输出实部else if((fabs(com.Real)<EPS)) //如果实部为0os<<com.Image<<"i"; //只输出虚部else if(com.Image>0)os<<com.Real<<"+"<<com.Image<<"i";elseos<<com.Real<<com.Image<<"i"; //虚部为正return os;}void Add() //加法运算函数{Calculator num1,num2,sum,zero(0,0);cout<<"加法计算\n"<<"最少输入两个复数,并且以0结束\n";cout<<"第1个复数:";cin>>num1;cout<<"第2个复数:";cin>>num2;sum=num1+num2;cout<<"第3个复数:";cin>>num1;int i=4;while(!(num1==zero)){sum=sum+num1;cout<<"第"<<i<<"个复数:";cin>>num1;i++;}cout<<"加法结果是:"<<sum<<endl;cout<<"请按回车键继续\n";cout.flush();cin.get();cin.get();}void Sub() //减法运算函数{Calculator num1,num2,sub,zero(0,0);cout<<"最少输入两个复数,并且以0结束\n";cout<<"第1个复数:";cout<<"第2个复数:";cin>>num2;sub=num1-num2;cout<<"第3个复数:";cin>>num1;int i=4;while(!(num1==zero)){sub=sub-num1;cout<<"第"<<i<<"个复数:";cin>>num1;i++;}cout<<"减法结果是:"<<sub<<endl;cout<<"请按回车键继续\n";cout.flush();cin.get();cin.get();}void Mul() //乘法运算函数{Calculator num1,num2,mul,zero(0,0);cout<<"乘法计算\n"<<"最少输入两个复数,并且以零结束\n";cout<<"第1个复数:";cin>>num1;cout<<"第2个复数:";cin>>num2;mul=num1*num2;cout<<"第3个复数:";cin>>num1;int i=4;while(!(num1==zero)){mul*=num1;cout<<"第"<<i<<"个复数:";cin>>num1;i++;}cout<<"乘法结果是:"<<mul<<endl;cout<<"请按回车键继续\n";cout.flush();cin.get();}}using namespace NameCalculator;int main() //主函数{char Choise[20];do{system("cls"); //清屏cout<<"1:复数加法\n";cout<<"2:复数减法\n";cout<<"3:复数乘法\n";cout<<"0:退出程序\n\n";cout<<"请选择:";cin>>Choise;if(strcmp(Choise,"1")==0)Add();else if(strcmp(Choise,"2")==0)Sub();else if(strcmp(Choise,"3")==0)Mul();else if(strcmp(Choise,"0")==0){break;}else{cout<<"\n输入错误,按回车键继续\n";cin.get();cin.get();}}while((strcmp(Choise,"0")));return 0;}测试结果实验总结本实验的难点在于:如何让程序识别输入的“复数字符串”。