基於MFC的物件導向多功能計算器設計

2022-10-15 18:51:03 字數 4670 閱讀 2643

一、需求分析

1、設計背景

計算器是日常生活中十分便捷有效的工具,計算器大大的降低了數字計算的難度及提高了計算的準確度和精確度。但是目前很多計算器的功能過於簡單化,精確度也不高。本次設計的基於mfc的vc++物件導向多功能計算器,實現了功能的多樣化,使用非常簡單和方便,增加了使用者的選擇性,應用範圍大為提高,更加符合現在社會使用者的要求。

2、計算器功能

系統具有良好的介面;必要的互動資訊;簡約美觀的效果。使用人員能快捷簡單地進行操作。即可單機按鈕進行操作,也可直接通過鍵盤直接輸入。

即時準確地獲得需要的計算的結果,充分降低了數字計算的難度和節約了時間.該計算器不但功能上比一般的計算器多很多,而且精度上也提高了不少。根據目前的背景分析所知道的社會需求以及本人平時在課堂上蔣老師所講的知識,參考相關資料,本次設計所實現的功能:

1) 一般計算機所具有的加、減、乘、除、開方、清零功能

2) 進行二進位制、八進位制、十進位制、十六進製制之間的轉換

3) 有退格功能

4) 進行度數和弧度的sin 、arcsin 、cos、 arccos 、cot 、arccot 、tan 、arctan運算

5) 進行x^y x^2 x^3運算

6) 進行ln log運算

7) 輸出結果的精確度為小數點後六位

8) 程式可以能自動判斷輸入資料的正確性和運算元據的正確性,若有錯去會提醒。

二、概要設計

1. 設計基礎

microsoft visual c++提供了利用mfc編寫程式的方法,這大大提高了軟體的開發,提高程式設計的效率。mfc提供了大量預定義的類和支援**,可以處理許多標準windows程式設計任務,如生成視窗和處理訊息,加入各種複雜的特性,如工具欄、ole支援、active控制項非常的方便和高效。本次軟體即是基於mfc進行設計,基於mfc庫類進行對對話方塊介面的設計,通過建立類成員函式成員變數,編輯控制項建立訊息對映,呼叫訊息函式完成資料的輸入輸出,實現計算功能。

使用c++,在vc下進行編寫。

2. 軟體主體框架

總體設計思路流程圖如圖1

圖1 計算器總體設計思路流程圖

3、詳細設計

1、程式流程及解釋

1.1 圖2為主要關係圖:

圖2 主要關係圖

1.2功能模組流程圖舉例

1)輸入數字的流程圖,以輸入數字1為例(如圖3):

圖3 輸入數字1流程圖

2)四則運算、x^2、x^3、x^y、取模、log、ln和開方運算的流程圖(以開方運算為例,如圖4)

圖4 開方運算流程圖

3)三角函式運算流程圖,以sin運算為例,如圖5

圖5 sin運算流程圖

2、函式模組

#include ""

#include ""

#include ""

#include ""

#ifdef _debug

#define new debug_new

#undef this_file

static char this_file = __file__;

#endif

#define pi 3.1415926535897932384626433832795

// caboutdlg dialog 應用程式

class caboutdlg : public cdialog

; protected:

virtual void dodataexchange(cdataexchange* pdx);

protected:

declare_message_map()

};caboutdlg::caboutdlg() : cdialog(caboutdlg::idd)

void caboutdlg::dodataexchange(cdataexchange* pdx)

begin_message_map(caboutdlg, cdialog)

end_message_map()

// ccalculatordlg dialog

ccalculatordlg::ccalculatordlg(cwnd* pparent)

: cdialog(ccalculatordlg::idd, pparent)

void ccalculatordlg::dodataexchange(cdataexchange* pdx)

begin_message_map(ccalculatordlg, cdialog)

on_wm_syscommand()

on_wm_paint()

on_wm_querydragicon()

on_bn_clicked(idc_button0, onbutton0)

on_bn_clicked(idc_button1, onbutton1)

on_bn_clicked(idc_button2, onbutton2)

on_bn_clicked(idc_button3, onbutton3)

on_bn_clicked(idc_button4, onbutton4)

on_bn_clicked(idc_button5, onbutton5)

on_bn_clicked(idc_button6, onbutton6)

on_bn_clicked(idc_button7, onbutton7)

on_bn_clicked(idc_button8, onbutton8)

on_bn_clicked(idc_button9, onbutton9)

on_bn_clicked(idc_buttona, onbuttona)

on_bn_clicked(idc_buttonb, onbuttonb)

on_bn_clicked(idc_buttonc, onbuttonc)

on_bn_clicked(idc_buttond, onbuttond)

on_bn_clicked(idc_buttone, onbuttone)

on_bn_clicked(idc_buttonf, onbuttonf)

on_bn_clicked(idc_btn_back, onbtnback)

on_bn_clicked(idc_btn_dot, onb***ot)

on_bn_clicked(idc_btn_ac, onbtnac)

on_bn_clicked(idc_btn_add, onbtnadd)

on_bn_clicked(idc_btn_decrease, onb***ecrease)

on_bn_clicked(idc_btn_multi, onbtnmulti)

on_bn_clicked(idc_btn_div, onb***iv)

on_bn_clicked(idc_btn_equal, onbtnequal)

on_bn_clicked(idc_btn_sign, onbtnsign)

on_bn_clicked(idc_btn_hex, onbtnhex)

on_bn_clicked(idc_btn_dec, onb***ec)

on_bn_clicked(idc_btn_oct, onbtnoct)

on_bn_clicked(idc_btn_bin, onbtnbin)

on_bn_clicked(idc_btn_degress, onb***egress)

on_bn_clicked(idc_btn_mod, onbtnmod)

on_bn_clicked(idc_btn_square, onbtnsquare)

on_bn_clicked(idc_btn_cube, onbtncube)

on_bn_clicked(idc_btn_radians, onbtnradians)

on_bn_clicked(idc_btn_sin, onbtnsin)

on_bn_clicked(idc_btn_arcsin, onbtnarcsin)

on_bn_clicked(idc_btn_cos, onbtncos)

on_bn_clicked(idc_btn_arccos, onbtnarccos)

on_bn_clicked(idc_btn_tan, onbtntan)

on_bn_clicked(idc_btn_arctan, onbtnarctan)

on_bn_clicked(idc_btn_cot, onbtncot)

on_bn_clicked(idc_btn_arccot, onbtnarccot)

on_bn_clicked(idc_btn_xy, onbtnxy)

on_bn_clicked(idc_btn_log, onbtnlog)

on_bn_clicked(idc_btn_ln, onbtnln)

on_bn_clicked(idc_btn_ext, onbtnext)

end_message_map()

// ccalculatordlg 程式執行

//初始化對話方塊

bool ccalculatordlg::oninitdialog()

{ cdialog::oninitdialog();

// 加上系統專案選單,idm_aboutbox 必須在系統控制的範圍。

assert((idm_aboutbox & 0xfff0) == idm_aboutbox);

assert(idm_aboutbox < 0xf000);

MFC多功能發泡砼

多功能發泡砼製作 方案江蘇南通二建集團 仙林鼓樓醫院專案部 多功能發泡砼製作方案 一 工程概況 工程名稱 南京鼓樓醫院仙林國際醫院基本醫療區 建設單位 仙林鼓樓醫院投資管理 工程地點 南京仙林大學城 二 產品簡介 多功能發泡砼是以矽酸鹽水泥或硫鋁酸水泥 氯氧鎂水泥 活性矽和鈣質材料等無機膠結材料與集...

物件導向的優點

oop的優點 oop具有許多優點,無論是對於程式設計者或者使用者來說都是如此。物件導向為軟體產品擴充套件和質量保證中的許多問題提供了解決辦法。這項技術能夠大大提高程式設計師的生產力,並可提高軟體的質量以及降低其維護費用。其主要的優點陳列於下 1 通過繼承,我們可以大幅減少多餘的 並擴充套件現有 的用...

物件導向設計原則的總結

正如牛頓三大定律在經典力學中的位置一樣,開 閉 原則 open closed principle 是物件導向的可復用設計 object oriented design或ood 的基石。其他設計原則 黎克特制代換原則 依賴倒轉原則 合成 聚合復用原則 迪公尺特法則 介面隔離原則 是實現 開 閉 原則的...