- 1
- 0
- 约2.46千字
- 约 45页
- 2018-12-03 发布于广西
- 举报
案例二十九 复数的四则运算 本案例知识要点 复数类的定义 “+”、“?”、“*”、“/”运算符重载 输出函数的设计 一、案例需求 案例描述 案例效果图 案例的设计效果和运行结果分别如图(a)和图(b)所示。 功能说明 进行加“?”,减“?”,乘“*”,除“/”运算符重载,根据输入的两个复数对象输出其运算结果。 当第二个复数b的实部和虚部同时为0时,不能进行除法运算,需要给出提示。 设计输出函数,对于计算结果的虚部为负数的情况进行处理。例如,2?2i不要输出为2??2i。 二、案例分析 根据案例需求,需要利用MFC环境定义一个菜单、一个输入对话框类,提供两个复数的输入界面;另外定义一个complex类,在complex类中定义数据成员,包括实部值和虚部值;定义成员函数,声明友元加号运算符重载函数、友元减号运算符重载函数、友元乘号运算符重载函数、友元除号运算符重载函数、实部值获取函数和虚部值获取函数。最后在视图区输出两个复数的运算结果。 本案例的重点是使用运算符重载函数来进行复数对象的四则运算,因为在MFC环境中不能重载输入和输出运算符,需要独立设计复数输出函数。本案例的难点在于复数的虚部计算结果为负数时的输出函数设计。 三、案例设计 1.类的设计 本案例需要设计一个类complex,其结构如图所示。 (1)数据成员 double real; 复数实部。 double imag; 复数虚部。 (2)函数成员 complex(); 默认构造函数。 complex(double,double); 带参构造函数。 friend complex operator + (complex c1,complexc2); 友元运算符重载函数“+”。 friend complex operator ? (complex c1,complexc2); 友元运算符重载函数“-”。 friend complex operator * (complex c1,complexc2); 友元运算符重载函数“*”。 friend complex operator / (complex c1,complexc2); 友元运算符重载函数“/”。 double getr(); 读出实部值函数。 double geti(); 读出虚部值函数。 2.对话框的设计 在资源视图Resource View中右击Dialog选项,选择Insert Dialog命令,在对话框内添加静态文本Static Text和文本框Edit Box控件并修改属性,对话框的设计结果如图所示。 设计对话框 双击对话框,弹出Adding a class对话框,保持默认值添加一个新类Creat a new class,单击【OK】按钮。在弹出的对话框中填写对话框类名inputdlg,单击【OK】按钮。在“查看”菜单下选择Class Wizard命令,切换到Member Variable选项卡。添加成员变量的名称和类型,m_ar和m_ai是复数a的实部和虚部;m_br和m_bi,是复数b的实部和虚部。设计结果如图所示。 对话框类成员变量的设计结果 3.菜单设计 在资源视图Resource View中单击Menu目录,双击IDR_MAINFRAME选项,修改命令,设置菜单complex的ID为ID_MENUcomplex。 从“查看”菜单中打开类向导MFC ClassWizard,在Object IDs列表框中选择ID_MENUcomplex选项,在Class name下拉列表框中选择CExample4View选项,在Message列表框中选择COMMAND选项后,单击【Add Function】按钮,弹出对话框,默认菜单成员函数的名称为OnMENUcomplex(),单击【OK】按钮,则在Member functions列表框中添加了成员函数,该函数是CExample4View类的成员函数,单击【Edit Code】按钮可以对函数进行编辑。 为了实现复数对象的输出,在Example4View类中定义了output()函数。该函数在Example4View.h文件中的声明为: void output(complex num,CString sign,int y); 在Example4View.cpp文件中的定义为: void CExample4View::output(complex num,CString sign,int y) 当第二个复数的实部和虚部同时为0时,不能进行除法运算,因此在对话框inputdlg中添加了OnOK()函数,该函数是inputdlg类的成员函数,单击【Edit Code】按钮可以对其进行编辑。 菜单调用流程图 四、案例实现 五
您可能关注的文档
最近下载
- SY_T 5333-2023 钻井工程设计规范.pdf VIP
- 深度解析(2026)《SYT 5946-2019钻井液用包被抑制剂 聚丙烯酰胺钾盐》.pptx VIP
- 卧式储罐体积容积计算(带公式).xls VIP
- 深度解析(2026)《SYT 5661-2019钻井液用增粘剂 丙烯酰胺类聚合物》.pptx VIP
- SY_T 5061-2020 钻井液用石灰石粉.docx VIP
- 深度解析(2026)《SYT 5677-2019钻井液用滤纸》.pptx VIP
- ICU常用药物中英文对照一览表.doc VIP
- 心血管常用名词缩写和心血管常用药物英汉对照.pdf VIP
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套).doc VIP
- 深度解析(2026)SYT 5794-2010《钻井液用沥青类评价方法》:从标准解读到未来油田化学智能化应用的战略前瞻.pptx VIP
原创力文档

文档评论(0)