c++复数计算器课程设计报告1
- 格式:doc
- 大小:231.00 KB
- 文档页数:24
《程序设计基础》(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++面向对象程序设计》课程设计系专:班级:姓名:学号:指导老师:目录一、设计课题目的 (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语言进行程序设计。
具体分为三个部分: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小时。
南京信息工程大学《面向对象程序设计》课程设计实验报告课程名:面向对象程序设计专业:网络工程班级: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;}测试结果实验总结本实验的难点在于:如何让程序识别输入的“复数字符串”。
c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
c 课程设计复数类一、教学目标本章节的教学目标是使学生掌握复数的基本概念、运算规则及其在实际问题中的应用。
具体包括:1.知识目标:学生能够准确地描述复数的概念,了解复数的四种表示方法,掌握复数的四则运算规则,并能够运用复数解决实际问题。
2.技能目标:学生能够熟练地进行复数的加、减、乘、除运算,能够将实际问题转化为复数问题,并能够运用复数进行问题的求解。
3.情感态度价值观目标:学生能够认识到复数在数学和科学研究中的重要性,培养对复数学习的兴趣和热情。
二、教学内容本章节的教学内容主要包括复数的基本概念、复数的表示方法、复数的四则运算及其在实际问题中的应用。
具体包括:1.复数的基本概念:实数、虚数、复数的概念及其关系。
2.复数的表示方法:代数表示法、几何表示法、极坐标表示法、指数表示法。
3.复数的四则运算:加法、减法、乘法、除法的运算规则及其应用。
4.复数在实际问题中的应用:复数在电路分析、信号处理、流体力学等领域的应用。
三、教学方法为了实现本章节的教学目标,将采用以下教学方法:1.讲授法:通过讲解复数的基本概念、运算规则及其应用,使学生掌握复数的基本知识。
2.案例分析法:通过分析实际问题,引导学生将复数知识应用于解决问题,提高学生的实际应用能力。
3.实验法:通过进行复数的运算实验,使学生熟练掌握复数的运算方法。
4.小组讨论法:通过小组讨论,激发学生的思考,培养学生的合作能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用《高等数学》、《复数与泛函分析》等教材,作为学生学习的基本参考资料。
2.参考书:推荐《复数与复分析》、《复数及其应用》等参考书,供学生深入研究。
3.多媒体资料:制作PPT、微视频等多媒体资料,生动形象地展示复数的概念和运算过程。
4.实验设备:准备计算器、电脑等实验设备,用于进行复数的运算实验。
五、教学评估本章节的评估方式将包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
描写童年趣事作文600字高二描写童年趣事作文600字高二6篇童年是七色的,是热忱的、可爱的、好玩的,布满笑声的。
共享一下你的童年趣事吧。
下面是我为大家收集的描写童年趣事作文600字高二例文,期望你宠爱。
描写童年趣事作文600字高二(篇1)一进教室,映入眼帘的就是讲台上的那几个易拉罐和几根“专业”的钓鱼竿。
我一下子就呆住了,心里不禁猜想起老师葫芦里卖的是什么药?“莫非是去钓鱼,不对,要易拉罐干什么?莫非里面装的是鱼食?不对,不对”“下面我们来玩一个叫‘钓旱鱼’的玩耍吧!”老师的一句话打断了我的猜想,也点破了我的困惑。
首先,江老师将我们分成四个大组,每个大组有六名“钓鱼者”。
老师为了让我们生疏玩耍规章,便让我们先进行练习。
在练习的过程中,我渐渐把握了要领,能在十五秒之内钓起一条“旱鱼”了。
在为自己的成绩窃喜时,我才发觉真是“人外有人,天外有天”啊!———有些同学格外娴熟,不出十秒就能钓起一条“旱鱼”,这使我不由得站在一旁观看起其他人的动作。
不一会儿,练习结束,老师让各组前来抽签。
令我欣喜的是:我们组竟幸运的抽到了第5号,这样我们就有机会进行训练了。
这时,老师让每组选出2名队员来参赛。
然而,在参赛问题上,大家竟不约而同的推选了我和刘宇欣,这是我颇感意外的。
竞赛最终开头了。
首先上场的是闵耀东和王涵,他们或许是由于第一个上场产生了恐惊心理,或许是由于不太娴熟,所以显得有些力不从心,连续2次都使“鱼儿”顺当脱钩,最终才钓起了2次。
我和队友们马上对他们报以了“鼓舞”的掌声。
最精彩的也是最使人感到意外的,是第四个上场的李亦桐和方菁如一组。
她们一开头上场的表现是顺风顺水,一连钓起了2个,但到中间的时候,不知是谁顺手将竿一抖,两根鱼竿就像热恋情人一般纠缠在一起了,害得同学们费了九牛二虎之力才将难分难舍的它们分开。
“哈!哈!哈!”的笑声始终萦绕在我的耳畔,它不仅使我的童年丰富多彩,更使它意义非凡。
描写童年趣事作文600字高二(篇2)每个人的童年生活都是丰富多彩的,布满了无穷的乐趣。
c 设计计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本原理和功能,掌握计算器的基本操作方法。
2. 学生能够运用计算器解决基本的数学运算问题,如加减乘除、百分比计算等。
3. 学生能够理解并运用计算器上的科学计算功能,如平方根、指数运算等。
技能目标:1. 学生能够熟练操作计算器,快速进行数值输入、计算和结果读取。
2. 学生能够运用计算器进行实际问题的计算,如购物找零、时间计算等。
3. 学生能够通过计算器解决一些简单的数学问题,培养解决问题的能力和逻辑思维能力。
情感态度价值观目标:1. 学生培养对计算器的正确使用态度,明白计算器是辅助工具,提高计算效率的同时,不应过度依赖。
2. 学生在合作交流中使用计算器,培养团队合作意识和分享精神。
3. 学生通过计算器的运用,增强对数学学科的兴趣,认识到数学与生活的紧密联系。
课程性质:本课程属于实践操作类课程,注重培养学生的动手操作能力和实际问题解决能力。
学生特点:学生处于小学高年级阶段,对计算器有一定了解,好奇心强,喜欢动手操作。
教学要求:教师应引导学生通过实践操作,掌握计算器的使用方法,将计算器与实际生活问题相结合,提高学生的数学应用能力。
同时,注重培养学生的团队合作意识和正确使用计算器的态度。
在教学过程中,关注学生的学习成果,及时进行教学评估和调整。
二、教学内容1. 计算器的基本结构:介绍计算器的各个部分及其功能,如显示屏、键盘、电源等。
教材章节:《计算器与计算法则》第一章内容列举:计算器按键的功能及操作方法。
2. 计算器的基本操作:教授加减乘除、百分比、平方根、指数等基本运算。
教材章节:《计算器与计算法则》第二章内容列举:各类运算的操作步骤及注意事项。
3. 计算器在生活中的应用:通过实例教授计算器解决实际问题,如购物找零、时间计算等。
教材章节:《计算器与计算法则》第三章内容列举:实际案例及解决方法。
4. 科学计算器的使用:针对高年级学生,介绍科学计算器的拓展功能,如三角函数、对数等。
c 课程设计复数一、教学目标本章的教学目标是使学生掌握复数的基本概念、运算规则及其在实际问题中的应用。
具体包括:1.知识目标:学生能够准确理解复数的概念,掌握复数的四则运算规则,了解复数在数学分析、电路分析等领域的应用。
2.技能目标:学生能够熟练进行复数的四则运算,解决与复数相关的实际问题,如复数在信号处理、流体力学等领域的应用。
3.情感态度价值观目标:学生能够认识到复数是数学中的重要分支,对科学研究和实际应用具有重要意义,激发学生对复数学习的兴趣和好奇心。
二、教学内容本章的教学内容主要包括复数的基本概念、四则运算规则及其在实际问题中的应用。
具体安排如下:1.复数的基本概念:介绍复数的概念,解释实数和虚数的概念,阐述复数的表示方法。
2.复数的四则运算:讲解复数的加法、减法、乘法和除法运算规则,举例说明运算过程。
3.复数在实际问题中的应用:通过具体案例,展示复数在数学分析、电路分析等领域的应用,让学生体会复数在解决实际问题中的重要性。
三、教学方法为了提高学生的学习兴趣和主动性,本章将采用以下教学方法:1.讲授法:教师通过讲解复数的基本概念、运算规则及应用案例,使学生掌握相关知识。
2.讨论法:教师学生分组讨论,让学生共同探讨复数运算的规律,提高学生的合作能力。
3.案例分析法:教师选取实际问题,引导学生运用复数知识进行分析,培养学生的应用能力。
4.实验法:教师学生进行复数实验,让学生通过实践操作,加深对复数运算规则的理解。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,本章将采用以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的复数知识体系。
2.参考书:推荐学生阅读相关参考书,拓展学生的知识视野。
3.多媒体资料:利用多媒体课件、视频等资料,生动展示复数的概念和运算过程。
4.实验设备:为学生提供复数实验所需的设备,如计算器、电路仿真软件等。
五、教学评估本章的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
课程设计报告课程设计题目:复数计算器学生姓名:张小华专业:软件(嵌入式)班级:10211111学号:1021111115完成实验时间:2011-11-30实验地点:软件楼(306)指导教师:张军2011年12 月1 日东华理工大学课程设计评分表学生姓名:班级:学号:课程设计题目:课程设计报告要求:结构要求:1、问题分析:要求用自己的话概括出本课题的内容、功能结构2、结构分析:根据问题分析的结果,进一步分析出系统的类结构及相互关系,画UML的类图并描述其内部结构属性及相互关系3、现流程分析:概述自己的实现过程:如工程建立流程、类创建流程等4、个性功能介绍:应介绍自己在系统中的程序改进与新增的功能模块的意义、价值5、课程设计小结:简述自己课程设计的收获(一):问题描述和要求:(1):该复数计算器可进行“+”、“-”、“*”、“+=”、“-=”、“*=”、“比较两模的大小”,可识别用户输入“a+bi”格式,这些可用多态中的对应的运算符重载(2):可对上面每个功能进行测试并记录最后三次的平均成绩这可以用一个test()函数实现(3):把数据写入文件当下次用户输入存在的姓名时把他的数据读出来如果输入的姓名不存在就替换掉,这可以用对应的写入文件和读取去实现。
(二):结构分析、系统分析、画uml图描述它们的关系(1):根据问题描述和要求,系统要求该复数计算器有加、减、乘、加等于、减等于、乘等于、对用户进行测试、比较两个复数模长、能够识别客户输入“a+bi”的模式等功能。
最后还要求把客户做过的信息(做了多少次加、减、乘、测试、最后三次的平均分、用户名等信息)用文件来保存(2):既然要具备上面的功能我可以用我学过的多态中的运算符重载来实现还有要把数据存入盘中我可以用文件来对他进行保存文件名为:“xiao.txt”到下一个客户想查信息时可输入姓名进行匹配当新的用户用时可对上次保存的信息覆盖来保存当前的信息这我用系统函数r emove()来实现。
对于加、减、等功能的实现可以分辨用一个函数来完成,例如加可以用jia()函数完成。
做好界面,另外还得要一个结构体来定义一个用户对象并把信息放在里面保存到文件中,这里用结构体可定义全局变量对下面实行有好处。
最后在主函数中调用每个函能Uml图:(三):系统设计(1):系统的总框架使用面向对象的程序设计是想进行分析,整个系统涉及一个类的信息和操作。
该类为complex:复数类。
在必要运算符重载中定义相应的类的对象。
该类所有成员如下:class Complex //定义一个complex的类{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); //加法赋值重载CComplex operator-=(CComplex &com); //减法赋值重载CComplex operator*=(CComplex &com); //乘法赋值重载CComplex operator++(); //自加CComplex operator--(); //自减double mod (void); //求复数的模int operator>(CComplex &com);int operator<(CComplex &com);int operator!=(CComplex &com);int operator==(CComplex &com);};(2):该程序的系统流程如下图:(四):对新添功能的介绍(1)本人是按要求做的没加什么别的功能。
(五):实验心得(1):通过本课程设计让我更好地知道多态中的运算符重载。
(2):让给我更好地了解键盘输出流的格式与运用。
(3):在本实验中遇到不少问题,通过老师见讲解和建议让我知道以后在写序时更快地去找到错误并解决。
(4):通过本实验让我更好地理解文件并运用文件6、程序清单及注释#include <iostream>#include <cmath>#include <fstream>using namespace std;class complex //定义一个complex的类{private:float Real,Image;public:complex(float real=0,float image=0) //构造函数{Real=real;Image=image;}friend istream & operator >>(istream &is,complex &s) //输出流重载{char b[80];is>>b;int len=strlen(b);int n=0,sign=1;s.Image=s.Real=0;for(int k=0;k<len;k++){if((b[k]<'0' || b[k]> '9') && (b[k]!='+' && b[k]!='-' && b[k]!='i')) //度输入格式规范如不让“+”,“-”,“*”在一起的还有输入的一点,还有输入的必须为0-9或运算付或“i”{cout<<"error"<<endl;return is;}}for(k=0;k<len;) //提取实部和虚部{if(n!=0 &&(b[k]=='-'||b[k]=='+')){s.Real=sign*n;n=0;}if(b[k]=='-'){sign=-1;k++;}if(b[k]=='+'){sign=1;k++;}if(b[k]=='i'){if(k!=len-1) //如果i不是最后一个就报错cout<<"error\n";elses.Image=sign*n;break;}while(b[k]>='0' && b[k]<='9') //对n赋值{n=n*10+b[k]-'0';k++;}}if(b[len-1]!='i' && n!=0){s.Real=n*sign;}return is;}friend ostream &operator <<(ostream &os,complex &s) //输出符重载{if ( s.Image==0 )os<<s.Real;else if ( s.Real==0 )os<<s.Image << "i";else if (s.Image>0)os<<s.Real << "+" << s.Image << "i";elseos<<s.Real << s.Image << "i";return os;}complex operator +(complex &s); //对加法运算符重载complex operator -(complex &s); //对减法运算符重载complex operator *(complex &s); //对乘运算符重载complex operator +=(complex &s ); //对加等于运算符重载complex operator -=(complex &s); //对减等于运算符重载complex operator *=(complex &s); //对乘等于运算符重载complex operator ++() //对加运算符重载并实现{Real=Real+1;Image=Image+1;return *this;}complex operator --() //对减运算符重载并实现{Real=Real-1;Image=Image-1;return *this;}int operator ==(complex &s);float lenmod(void);int operator !=(complex &s);int operator >(complex &s);int operator <(complex &s);};struct user //定义一个结构体来保存用户使用过复数计算器的信息{int k;char name[50];int zd;int zs;int nsum;int ndel;int nmui1;int ntest;float avg;}a;complex complex ::operator +(complex &s) //对加运算符的实现{complex sum;sum.Real =Real+s.Real ;sum.Image =Image+s.Image ;return sum;}complex complex:: operator -(complex &s) //对减运算符的实现{complex sub;sub.Real =Real-s.Real ;sub.Image =Image-s.Image ;return sub;}complex complex:: operator *(complex &s) //对乘运算符的实现{complex accum;accum.Real=Real*s.Real-Image*s.Image ;accum.Image =Real*s.Image +Image*s.Real ;return accum;}float complex::lenmod() //求复数的模长{return Real*Real+Image*Image;}complex complex::operator += (complex &s) /对加等于运算符的实现{Real=Real+s.Real ;Image=Image-s.Image ;return *this;}complex complex::operator -= (complex &s) /对减等于运算符的实现{Real=Real-s.Real ;Image=Image-s.Image ;return *this;}complex complex::operator *= (complex &s) //对乘等于运算符的实现{Real=Real*s.Real -Image*s.Image ;Image=Real*s.Image +Image*s.Real ;return *this;}int complex::operator <(complex &s){if(lenmod()<s.lenmod ())return 1;elsereturn 0;}int complex ::operator >(complex &s){if(lenmod()>s.lenmod ())return 1;elsereturn 0;}int complex::operator != (complex &s){if(lenmod()!=s.lenmod())return 1;elsereturn 0;}int complex::operator == (complex &s){if(Real==s.Real && Image==s.Image )return 1;return 0;}void jiemian(); //界面函数的声明void zijia() //自加函数{a.zs=0;int n;do{++(a.zs);complex b;cout<<"输入一个复数:";cin>>b;++b;cout<<"结果为:"<<b<<endl;cout<<"输入的复数为(0)回界面或者继续,请输入n==:";cin>>n;}while(n!=0);jiemian();}void zijian() //自减函数{a.zd=0;int n;do{++(a.zd);complex b;cout<<"输入一个复数:";cin>>b;--b;cout<<"结果为:"<<b<<endl;cout<<"输入的复数为(0)回界面或者继续,请输入n==:";cin>>n;}while(n!=0);jiemian();}void jia() //加函数a.nsum =0;int n,i;do{++(a.nsum);complex num1[20],sum(0,0);cout<<"输入加复数的个数至少两个:";cin>>n;for(i=0;i<n;i++){cout<<"输入第"<<i<<"个复数:";cin>>num1[i];sum=sum+num1[i];}cout<<"相加复数的结果为:"<<sum<<endl;cout<<"输入的数在(0)回界面不在(0)继续,请输入n==:";cin>>n;}while(n!=1&&n!=0);jiemian();}void jian() //减函数{a.ndel=0;int n,i;do{++(a.ndel);complex num1[20],del;cout<<"输入被减复数:";cin>>num1[0];del=num1[0];cout<<"输入减复数的个数至少一个:";cin>>n;for(i=1;i<=n;i++){cout<<"输入第"<<i<<"个复数:";cin>>num1[i];del=del-num1[i];}cout<<"相减复数的结果为:"<<del<<endl;cout<<"输入的数在(0)回界面不为(0)继续,请输入n==:";}while(n!=1&&n!=0);jiemian();}void cheng() //乘法函数{a.nmui1 =0;int n,i;do{++(a.nmui1 );complex num1[10],mui1;cout<<"输入一个乘复数:";cin>>num1[0];mui1=num1[0];cout<<"输入乘复数的个数至少一个:";cin>>n;for(i=1;i<=n;i++){cout<<"输入第"<<i<<"个复数:";cin>>num1[i];mui1=mui1*num1[i];}cout<<"相乘复数的结果为:"<<mui1<<endl;cout<<"输入的数在(0-1)回界面不在(0-1)继续,请输入谢谢n==:";cin>>n;}while(n!=1&&n!=0);jiemian();}void bijiaodaxiao() //模的比较函数{a.k =0;int n;do{ ++a.k;complex s,b;cout<<"输入两个复数"<<endl;cout<<"输入第一个复数:";cin>>s;cout<<"输入第二个复数:";if(s.lenmod ()>b.lenmod ())cout<<"输入第一个复数的模大于第二复数的模\n";else{if(s.lenmod ()==b.lenmod ())cout<<"两复数的模相等"<<endl;elsecout<<"输入第一个复数的模小于第二复数的模"<<endl; }cout<<"输入0回界面或者继续,请输入n==:";cin>>n;}while(n!=0);jiemian();}void test() //测试函数{complex consis,ques;float real1,real2,real3,real4,image1,image2,image3,image4;int i,n,k;char ops;float score=0;float sum1=0;a.ntest =0;a.avg =0;int j,m;cout<<"欢迎进入测试系统"<<endl;cout<<"输入你要测试的次数:";cin>>m;for(j=1;j<=m;j++){++(a.ntest );cout<<"输入你要测试的题数:";cin>>n;for(i=1;i<=n;i++){real1=rand()%200-99;real2=rand()%200-99;image1=rand()%200-99;image2=rand()%200-99;real3=rand()%20-9;real4=rand()%20-9;image3=rand()%20-9;image4=rand()%20-9;complex a(real1,image1),b(real2,image2),c(real3,image3),d(real4,image4); k=rand()%3;switch(k){case 0:{ops='+';cout<<"该题为:";cout<<a<<" "<<"+"<<" "<<b;consis=a+b;break;}case 1:{ops='-';cout<<"该题为:";cout<<a<<" "<<"-"<<" "<<b;consis=a-b;break;}case 2:{ops='*';cout<<"该题为:";cout<<a<<" "<<"*"<<" "<<b;consis=a*b;break;}}cout<<"输入你做的答案:";cin>>ques;if(consis==ques){score=score+100/n;cout<<"回答正确,你现在的得分是:";cout<<score<<endl;if((j>=(m-2)) && ((m-2)>0) ){sum1=sum1+score;score=0;}}else{cout<<"你做错了请继续努力,正确答案是:";cout<<consis;cout<<"你现在的得分是:";cout<<score<<endl;}}}a.avg =sum1/ a.ntest;}void show(); //信息显示函数声明void savefile() //把数据写到文件中去{show();ofstream outfile("xiao.txt");outfile.write(reinterpret_cast<char*>(&a),sizeof(a));outfile.close();return;}void jiemian() //界面函数{int choose;do{system("cls");cout<<"\t"<<"*****==========================================************* ****"<<endl;cout<<"\t"<<"*****欢迎进入一个由张小华制作的简单的复数计算器********"<<endl;cout<<"\t"<<"*****==========================================********"<<en dl;cout<<"\t"<<"=========================菜单如下======================================"<<endl;cout<<"\t"<<"\t"<<"1:复数加法\n";cout<<"\t"<<"\t"<<"2:复数的减法\n";cout<<"\t"<<"\t"<<"3:复数自加\n";cout<<"\t"<<"\t"<<"4:复数自减\n";cout<<"\t"<<"\t"<<"5:复数模的比较\n";cout<<"\t"<<"\t"<<"6:复数乘法\n";cout<<"\t"<<"\t"<<"7:测试\n";cout<<"\t"<<"\t"<<"0:退出该程序并保存\n";cout<<"请选择:";cin>>choose;switch(choose){case 1:jia();break;case 2:jian();break;case 3:zijia();break;case 4:zijian();break;case 5:bijiaodaxiao();break;case 6:cheng();break;case 7:test();break;case 0:cout<<"谢谢你的使用欢迎下次再来:"<<endl;break;default :cout<<"输入有误请按任意键再输谢谢:"<<endl;exit(0);}}while(choose!=0);savefile();}void show() //显示信息函数{cout<<"该用户的姓名为:"<<<<endl;cout<<"做的加法次数为:"<<a.nsum <<endl;cout<<"做的减法次数为:"<<a.ndel <<endl;cout<<"做的乘法次数为:"<<a.nmui1 <<endl;cout<<"做的测试次数为:"<<a.ntest <<endl;cout<<"平均分为:"<<a.avg <<endl;cout<<"做的自减次数为:"<<a.zd<<endl;cout<<"做的自加次数为:"<<a.zs<<endl;cout<<"做的模比较次数为:"<<a.k <<endl;}void login() //登陆读取文件函数{int n;char name1[50];cout<<"请输入你的姓名:";cin>>name1;ifstream infile("xiao.txt",ios_base::in);infile.read(reinterpret_cast<char*>(&a),sizeof(a));if ( strcmp( ,name1)==0 ){cout<<"该用户的姓名为:"<<<<endl;cout<<"做的加法次数为:"<<a.nsum<<endl;cout<<"做的减法次数为:"<<a.ndel<<endl;cout<<"做的乘法次数为:"<<a.nmui1<<endl;cout<<"做的测试次数为:"<<a.ntest<<endl;cout<<"平均分为:"<<a.avg<<endl;cout<<"做的自减次数为:"<<a.zd<<endl;cout<<"做的自加次数为:"<<a.zs<<endl;cout<<"做的模比较次数为:"<<a.k <<endl;cout<<"欢迎再来";infile.close();remove("xiao.txt");//system("del xiao");cout<<"输入(0)到界面否则结束,请输入n==:";cin>>n;if(n!=0)exit(0);}else{cout << "没有原始记录文件,您是第1位用户!\n";strcpy( ,name1);return;}}int main() //主函数{login();jiemian();return 0;}7,调试结果(1):输入姓名进行登录,调试操作如下:(2):对加法运算调试操作如下:(3)对减法运算调试操作如下:(4)对复数自加运算调试操作如下:(5):对复数自减运算调试操作如下:(6):对复数乘法运算调试操作如下:(7):对退出程序、文件保存操作如下:(8):输入姓名读文件信息操作如下:。