15周任务2

来源:互联网 发布:mac上好用的手绘软件 编辑:程序博客网 时间:2024/05/29 15:02
/* (程序头部注释开始)    * 程序的版权和版本声明部分    * Copyright (c) 2011, 烟台大学计算机学院学生     * All rights reserved.    * 文件名称:  窗口四则运算* 作    者:  白传雷                               * 完成日期:   2012  年  5  月  30  日    * 版 本 号:  v1.0            * 对任务及求解方法的描述部分    * 输入描述:    * 问题描述:  * 程序头部的注释结束    *///CFraction.hint gcd(int m, int n);      class CFraction    {    private:        int nume;  // 分子          int deno;  // 分母      public://构造函数及运算符重载的函数声明          CFraction(int nu=1,int de=1){nume=nu;deno=de;}       void simplify();int get_nume();int get_deno();    CFraction operator+(CFraction &t);        CFraction operator-(CFraction &t);        CFraction operator*(CFraction &t);        CFraction operator/(CFraction &t);    };  
//CFraction.cpp//运算符重载定义函数#include "stdafx.h"   #include "CFraction.h"   CFraction CFraction::operator+(CFraction &t)//分数的加法运算        {          CFraction a;          if(deno==t.deno)          {              a.deno=deno;              a.nume=nume+t.nume;          }          else          {              a.deno=deno*t.deno;              a.nume=nume*t.deno+deno*t.nume;          }          return a;      }          CFraction CFraction::operator-(CFraction &t)//分数的减法运算        {          CFraction a;          if(deno==t.deno)          {              a.deno=deno;              a.nume=nume-t.nume;          }          else          {              a.deno=deno*t.deno;              a.nume=nume*t.deno-deno*t.nume;          }          return a;      }              CFraction CFraction::operator*(CFraction &t)//分数的乘法运算        {          CFraction a;          a.deno=deno*t.deno;          a.nume=nume*t.nume;          return a;      }              CFraction CFraction::operator/(CFraction &t)//分数的除法运算        {          CFraction a;          a.deno=deno*t.nume;          a.nume=nume*t.deno;          return a;      }                            void CFraction::simplify() //化简分数         {           int n=gcd(deno, nume);            deno/=n;     // 化简               nume/=n;        }                int CFraction::get_deno()  {      return nume;  }  int CFraction::get_nume()  {      return deno;  }          // 求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;        }              


// Mymath.cpp//#include "stdafx.h"#include "Mymath.h"#include "MymathDlg.h"#include "CFraction.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialog{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()// CMymathDlg 对话框CMymathDlg::CMymathDlg(CWnd* pParent /*=NULL*/): CDialog(CMymathDlg::IDD, pParent), t1_n(0), t1_d(0), t2_n(0), t2_d(0), t3_n(0), t3_d(0), C(_T("")){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMymathDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, t1_n);DDX_Text(pDX, IDC_EDIT2, t1_d);DDX_Text(pDX, IDC_EDIT4, t2_n);DDX_Text(pDX, IDC_EDIT5, t2_d);DDX_Text(pDX, IDC_EDIT6, t3_n);DDX_Text(pDX, IDC_EDIT7, t3_d);DDX_Text(pDX, IDC_EDIT3, C);}BEGIN_MESSAGE_MAP(CMymathDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//}}AFX_MSG_MAPON_BN_CLICKED(IDC_BUTTON1, &CMymathDlg::OnBnClickedButton1)END_MESSAGE_MAP()// CMymathDlg 消息处理程序BOOL CMymathDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}void CMymathDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,//  这将由框架自动完成。void CMymathDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR CMymathDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}void CMymathDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData();//将把界面上各控件输入的值“捕获”到与之关联的变量中        CFraction t1(t1_n,t1_d);        CFraction t2(t2_n,t2_d);        CFraction t3(t3_n,t3_d);           if(C=='+')           t3=t1+t2;       else if(C=='-')           t3=t1-t2;       else if(C=='*')            t3=t1*t2;      else if (C=='/')                                    t3=t1/t2;      t3.simplify();      t3_d=t3.get_deno();      t3_n=t3.get_nume();      UpdateData(FALSE);  }


运算结果:  


	
				
		
原创粉丝点击