`
java-mans
  • 浏览: 11710383 次
文章分类
社区版块
存档分类
最新评论

第十五周实验--任务2--设计分数类,开发一个窗口式程序,可以完成分数的四则运算。

 
阅读更多

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计分数类,开发一个窗口式程序,可以完成分数的四则运算

* 作 者: 雷恒鑫
* 完成日期: 2012 年 05 月23 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:

* 程序头部的注释结束

*/

CFraction.h

using namespace std;    
  
int gcd(int m, int n);    
  
class CFraction  
{  
private:  
    int nume;  // 分子  
    int deno;  // 分母  
public:  
    //构造函数及运算符重载的函数声明  
    CFraction(int nu=0,int de=1);   //构造函数,初始化用    
    void Simplify();                    //化简(使分子分母没有公因子)      
    void output();           //输出:以8/6为例,style为0时,输出8/6; 
	int get_nume();
	int get_deno();
    CFraction operator+(CFraction &c);     
    CFraction operator-(CFraction &c);  
    CFraction operator*(CFraction &c);    
    CFraction operator/(CFraction &c);  
    CFraction operator-();  
      
};  


CFraction.cpp

#include "stdafx.h"
#include <iostream>
#include"CFraction.h"
CFraction::CFraction(int nu,int de)   //构造函数,初始化用     
{  
       if (de!=0)    
       {    
           nume=nu;    
           deno=de;    
       }    
       else    
       {    
           cerr<<"初始化中发生错误,程序退出\n";    
           system("pause");    
         exit(0);    
       }    
}  
void CFraction::Simplify()                    //化简(使分子分母没有公因子)   
{   
    int n;  
    if(nume < 0)    
    {    
        n = gcd(-nume, deno);    
    }    
    else    
    {    
        n = gcd(nume, deno);    
    }    
    
    nume = nume / n;      
    
    deno = deno / n;  
}  
// 求m,n的最大公约数    
int gcd(int m, int n)    
{    
    int r;    
    if (m<n){r=m;m=n;n=r;}    
    while(r=m%n)  // 求m,n的最大公约数    
    {    
        m=n;    
        n=r;    
    }    
    return n;    
}    
  
void CFraction::output()          //输出:以8/6为例,style为0时,输出8/6;   
{  
    cout<<nume<<'/'<<deno<<endl;  
}  

CFraction CFraction::operator+(CFraction &c)  
{  
    CFraction c2,c3,c4;  
    c2.nume =nume*c.deno ;  
    c3.nume =c.nume *deno;  
    c2.deno =deno*c.deno ;  
    c3.deno =c.deno *deno;  
    c4.nume=c2.nume +c3.nume ;  
    c4.deno =c2.deno ;  
    c4.Simplify ();  
    return c4;  
}  
CFraction CFraction::operator-(CFraction &c)  
{  
    CFraction c2,c3,c4;  
    c2.nume =nume*c.deno ;  
    c3.nume =c.nume *deno;  
    c2.deno =deno*c.deno ;  
    c3.deno =c.deno *deno;  
    c4.nume=c2.nume -c3.nume ;  
    c4.deno =c2.deno ;  
    c4.Simplify ();  
    return c4;  
}  
CFraction CFraction::operator*(CFraction &c)   
{  
    CFraction c2,c3,c4;  
    c2.nume =nume*c.nume  ;  
    c2.deno =deno*c.deno ;  
    c2.Simplify ();  
    return c2;  
}  
CFraction CFraction::operator/(CFraction &c)  
{  
    CFraction c2,c3;  
    c2.nume =c.deno ;  
    c2.deno =c.nume ;  
    c3.nume =nume*c2.nume ;  
    c3.deno =deno*c2.deno ;  
    c3.Simplify ();  
    return c3;  
}  
CFraction CFraction::operator-()  
{  
    CFraction c2;  
    c2.nume =nume;  
    c2.deno =deno;  
    c2.Simplify ();  
    if(c2.nume<0 || c2.deno<0)  
    {  
        if(c2.nume <0)  
        {  
            c2.nume =-nume;  
        }  
        else  
        {  
            c2.deno =-deno;  
        }  
    }  
    else  
    {  
        c2.nume =-nume;  
        c2.deno =deno;  
    }  
    return c2;  
}  
int CFraction::get_nume()
{
	return nume;
}
int CFraction::get_deno()
{
	return deno;
}


MyCFrationDlg.cpp

void CMyCFractionDlg::OnBnClickedButton1()
{
	// TODO: Add your control notification handler code here
	UpdateData(); //将把界面上各控件输入的值“捕获”到与之关联的变量中
    CFraction c1(c_1,c_2),c2(c_4,c_5),c;
	if(c_3=='+')
	{
		c=c1+c2;
		c_6=c.get_nume();
		c_7=c.get_deno();
	}
	else if(c_3=='-')
	{
		c=c1-c2;
        c_6=c.get_nume();
		c_7=c.get_deno();
	}
	else if(c_3=='*')
	{
		c=c1*c2;
        c_6=c.get_nume();
		c_7=c.get_deno();
	}
	else
	{
		c=c1/c2;
        c_6=c.get_nume();
		c_7=c.get_deno();
	}
    UpdateData(FALSE); //用m_area的值更新界面上对应的控件的值并实现显示
}


运行结果:

经验积累:

1.挺好玩,如果对话框有动画效果那就更好了。

分享到:
评论

相关推荐

    java课程设计-设计一个图形界面的计算器-完成简单的算术运算.doc

    【Java课程设计】本次课程设计的目标是开发一个基于图形用户界面(GUI)的计算器应用程序,能够执行基本的算术运算,包括加法、减法、乘法、除法和取余运算,同时具备小数点、正负号切换、求倒数、退格和清零功能。...

    微信小程序,四则运算计算器wechat-miniprogram-calculator-master.zip

    在这个名为“微信小程序,四则运算计算器wechat-miniprogram-calculator-master.zip”的项目中,开发者创建了一个简单实用的计算器,支持基本的四则运算(加法、减法、乘法、除法)。这个压缩包文件包含了一整个微信...

    C++重载运算符实现分数的运算(有界面)

    这通常通过在`Fraction`类中定义一个成员函数或者友元函数完成。成员函数可以访问类的私有数据成员,而友元函数则可以访问非成员函数无法直接访问的私有数据。重载`+`运算符的示例代码可能如下: ```cpp class ...

    .Net程序开发与设计实验课件()-1-2号机房

    在软件开发领域,.Net框架是一个重要的平台,它提供了丰富的工具和库,使得程序员可以高效地开发出跨平台的应用程序。本课程主要针对.Net程序开发与设计,旨在帮助学生掌握基础的编程技巧和面向对象的设计原则。 ...

    Java综合程序设计-计算器-实验报告

    【Java综合程序设计-计算器-实验...总之,这份实验报告展示了如何使用Java进行综合程序设计,特别是构建一个简易计算器的过程,涵盖了程序设计的基础理论、图形界面设计和高级算法的实现,为学生提供了宝贵的实践经验。

    C++课程设计分数类的设计与实现(有理数运算).docx

    在C++编程中,课程设计任务“分数类的设计与实现”是一个常见的练习,旨在让学生掌握面向对象编程的基本概念,特别是类的设计和对象的封装。在这个项目中,目标是创建一个名为`RationalNumber`的类,它能表示并处理...

    c语言DOS界面菜单式四则运算自编(菜单功能很不错宝贵资源)

    这个PPT可能涵盖了关于C语言基础知识、菜单式程序设计思路和四则运算的具体实现步骤,对初学者来说是一份非常宝贵的参考资料。 总结来说,这个C语言DOS界面菜单式四则运算程序是一个理想的实践项目,可以帮助初学者...

    设计一个程序来模拟一个简单的手持计算器

    设计一个手持计算器程序涉及到多个方面的知识点,包括程序结构设计、用户界面交互、数据类型处理、错误检查和控制流。以下是对这些知识点的详细说明: 1. **程序结构设计**: - **计算器类**:根据描述,我们可以...

    wpf 实现多项式四则运算

    在编程中,我们需要定义一个结构来表示多项式,并实现相应的四则运算方法。 1. **多项式类的设计**: - 定义一个类`Polynomial`,包含一个数组或列表来存储多项式的系数。每个系数对应多项式的一个项。 - 添加...

    DSP实验报告—实验2 编写一个以C语言为基础的DSP程序

    【DSP实验报告—实验2 编写一个以C语言为基础的DSP程序】 在这个实验中,学生将学习如何使用标准C语言编写数字信号处理(DSP)程序,并掌握与之相关的工具和概念。实验主要包括以下几个关键知识点: 1. **C语言...

    Java实战项目:计算器应用程序 - 实现基本的数学运算功能

    在这个Java实战项目中,我们将构建一个简单的计算器应用程序,利用Java Swing库来创建用户界面,并实现基本的数学运算功能。以下是一些关键知识点: 1. **Java Swing库**:Java Swing是Java Foundation Classes ...

    java简易计算器(四则运算、三角函数、实现优先级)

    Java简易计算器是一个基于Java编程语言实现的计算工具,它不仅支持基本的四则运算,还具备处理三角函数的能力,并且已经实现了运算的优先级规则。这个项目的核心是将用户输入的中缀表达式(常见的数学表达式形式)...

    加减乘除四则混合运算计算器-java

    在本项目中,我们主要探讨的是如何利用Java编程语言设计一个具有加减乘除四则混合运算功能的GUI(图形用户界面)计算器。这个计算器旨在模拟Windows操作系统中的标准计算器,提供用户友好的交互方式,使得非程序员也...

    汇编程序设计实验报告

    【汇编程序设计实验报告】涉及的主要是使用汇编语言进行程序设计的实践,包括了判断闰年、数据加密、四则运算以及屏幕窗口管理等多个实际应用任务。这些任务不仅要求掌握基本的汇编语言指令,还涉及到程序设计的高级...

    VisualBasic程序设计形考1-5全答案.zip

    《VisualBasic程序设计形考1-5全答案》是一个针对国家开放大学21秋季学期的VisualBasic程序设计课程的学习资源包。这个压缩文件包含了五个关键实验的完整解答,旨在帮助学生理解和掌握VB编程的基本概念、技术和应用...

    java数学表达式计算程序设计报告

    综上所述,这个"java数学表达式计算程序设计报告"涵盖了 Java 语言的基础应用、GUI 设计、事件处理、数学运算、软件工程实践等多个知识点,是一个综合性的编程项目。通过这个项目,开发者可以锻炼编程技能,了解完整...

    四则运算JAVA计算器

    该项目是一个基于Java Swing的简单计算器应用程序,能够实现基本的四则运算功能,并且支持括号操作,以解决优先级问题。为了处理复杂的数学表达式,该计算器还引入了栈的概念。 #### 二、项目结构与组件分析 1. **...

    VB程序设计-15-数学运算测试.pdf

    【VB程序设计-数学运算测试】的项目是一个旨在训练学生VB编程能力的课程设计任务,主要涉及数组、控件数组的使用以及控件属性的设置。该任务要求学生开发一个数学运算测试程序,具备不同难度等级,包括初级、中级和...

    Intel Visual Fortran窗口程序设计

    ### Intel Visual Fortran窗口程序设计相关知识点 #### 一、Intel Visual Fortran 编译器简介 Fortran作为历史悠久的高级编程语言之一,在科学计算领域有着不可替代的地位。随着计算机技术的发展,Fortran也在不断...

Global site tag (gtag.js) - Google Analytics