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

第十五周实验--任务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.挺好玩,如果对话框有动画效果那就更好了。

分享到:
评论

相关推荐

    DJ-808X实验指导书

    实验十五 简单I/O口扩展实验---------------------------------107 实验十六 8251可编程通讯接口与PC机通讯--------------------109 实验十七 LED16*16点阵显示实验-----------------------------116 实验十八 128...

    西南科技大学Java程序设计与实践 实验四 GUI实验实验报告及源码

    设计一个类似Windows计算器的Application应用程序。 三、实验要求: 1、采用Java Application方式建立应用程序框架; 2、仿照Windows计算器,利用多种布局方式实现界面设计; 3、完成简单的整数加、减、乘、除运算。...

    《Java语言程序设计》实验报告.zip

    多线程机制该窗口模拟Windows的计算器功能,添加一个文本行和4个按钮,单击【1】、【2】、【+】按钮时,将按钮的标签添加到文本行中;单击【C】按钮时,清空文本行中的内容;单击窗口的关闭按钮,将关闭该窗口。程序...

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

    设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。 基本要求 程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式...

    java实现四则运算

    java实现四则运算,将中缀表达式变成后缀表达式,使用栈来做最后的运算

    《数据库原理》实验报告-数据库系统设计开发.docx

    专业课程实验报告 课程名称: 开课学期: 至 学年 第 学期 专业: 年级班级: 学生姓名: 学号: 实验教师: 计算机与信息科学学院 软件学院 《数据库原理》实验报告-数据库系统设计开发全文共11页,当前为第2页。...

    《java游戏程序设计教程》—实验任务书.doc

    《java游戏程序设计教程》实验任务书 实验一 弹跳小球游戏设计 一 实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机 制的基本原理,并掌握游戏运行框架的设计方法。 二 实验...

    微嵌实验1-实验报告.doc

    电子科技大学 实 验 报 告 课程名称 微处理器系统结构与嵌入式系统设计 实验名称 ARM汇编基础实验 任课教师 " "实验教师 " " "姓名 " " " "学号 " " " " "实验地点 " " "分组号 " " "时间 " "年 " "月 "日 " " " " ...

    汇编实验报告.doc

    综合实验报告 ( 2010 -- 2011 年度第 一 学期) 名 称: 《汇编语言程序设计》综合实验 班 级: 学 号: 学生姓名: 指导教师: 设计周数: 一周 成 绩: 日期: 2011 年 1 月 3 日 《汇编语言程序设计》综合实验 任 ...

    《MFC窗口程序设计》-姚领田-源代码-2-4-5-6章.rar

    《MFC窗口程序设计》-姚领田-源代码-2-4-5-6章

    matlab开发-用Matlab设计图形用户界面应用程序

    matlab开发-用Matlab设计图形用户界面应用程序。此演示文稿提供了一个概述,使您可以开始在matlab中构建finctional gui

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

    自己编写的一个四则运算DOS界面菜单式小程序 适合一般C语言学者学习 里面内带我演讲时的PPT 所以不用担心看不懂 非常宝贵的资源

    MFC Windows程序设计(第2版修订版)--源代码

    但令人遗憾的是,VisualC++开发小组没有给我们一个真正的向导,而只是一个冒充向导的玩具。在他们能够做到以前,我们得习惯现有的向导。  CD.ROM中的内容  本书随附的CD-ROM包括书中全部示例程序的源代码,它们...

    linux窗口程序设计--源代码

    linux窗口程序设计--源代码 实例源代码.rar (5.13 MB,

    C# .net 计算器实验代码 实验报告

    若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作;...

    STM32F767单片机开发板实验例程HAL库版本60个软件工程源码合集.zip

    STM32F767单片机开发板实验例程HAL库版本60个软件工程源码合集: STM32F7开发指南-HAL库版本_V1.1.pdf 实验0-1 Template工程模板-新建工程章节使用 实验0-2 Template工程模板-调试章节使用 实验0-3 Template工程模板...

    Windows 程序设计(第5版)(上、下册)--详细书签版

    11.3.5 只调用一个函数的windows程序 第十二章 剪贴板 12.1 剪贴板的简单使用 12.1.1 标准剪贴板数据格式 12.1.2 内存分配 12.1.3 将文本传送到剪贴板 12.1.4 从剪贴板上获取文本 12.1.5 打开和...

    《MFC窗口程序设计》-姚领田-源代码-4606

    VC MFC 源代码 窗口程序设计 《MFC窗口程序设计》-姚领田-源代码-4606

    《MFC窗口程序设计》-姚领田-源代码2.rar

    本资源是姚领田著的《MFC窗口程序设计》的源代码2

    Visual Basic 2008程序设计完全自学教程 1/2

    最后一章 为案例实践,利用Windows Forms制作一个完整的程序——网页浏览器,初学者可以更实际地看到Visual Basic开发网络应用程序的妙用。《Visual Basic 2008 程序设计完全自学教程》的所有程序范例都以完整程序...

Global site tag (gtag.js) - Google Analytics