第二次作业
一,[实验目的]
1.掌握软件开发的基本流程
2.掌握常用的软件开发方式和工具。
二,[实验内容]
1.设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)。
三,[实验要求]
1.完成软件的UI设计、使用Visio设计软件中所涉及的所有流程图。
2.选择合适的集成开发环境和工具完成计算器软件的开发
3.将开发好软件进行测试并截图
4.将本次实验过程写成实验报告提交在本次作业的链接中
5.关键代码部分以代码块格式粘贴在实验报告正文中
6.软件架构以及开发技术不限
四,[实验步骤及其结果]
1,利用Visual Stdio 2022 MFC框架建立一个登录对话框
流程图如下

界面如下

登录成功界面:

登陆失败界面如下:

实现代码如下:
// LoginDlgDlg.cpp: 实现文件
//
#include "pch.h"
#include "framework.h"
#include "LoginDlg.h"
#include "LoginDlgDlg.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CLoginDlgDlg 对话框
CLoginDlgDlg::CLoginDlgDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_LOGINDLG_DIALOG, pParent)
, user(_T(""))
, password(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CLoginDlgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, user);
DDX_Text(pDX, IDC_EDIT_PWD, password);
}
BEGIN_MESSAGE_MAP(CLoginDlgDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDOK, &CLoginDlgDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CLoginDlgDlg::OnBnClickedCancel)
ON_EN_CHANGE(IDC_EDIT_NAME, &CLoginDlgDlg::OnEnChangeEditName)
ON_EN_CHANGE(IDC_EDIT_PWD, &CLoginDlgDlg::OnEnChangeEditPwd)
END_MESSAGE_MAP()
// CLoginDlgDlg 消息处理程序
BOOL CLoginDlgDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
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 CLoginDlgDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CLoginDlgDlg::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
{
CDialogEx::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CLoginDlgDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CLoginDlgDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
CString m_userName="WH";
CString m_userPWD="111";
UpdateData(TRUE);
if (strlen(m_userName) < 1) {
MessageBox("请输入用户名!");
return;
}
if (strlen(m_userPWD) < 1) {
MessageBox("请输入密码!");
return;
}
if (m_userName.Compare(user)||password.Compare(m_userPWD) ){
MessageBox("登录失败");
}
else {
MessageBox("登录成功");
}
}
void CLoginDlgDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnCancel();
}
void CLoginDlgDlg::OnEnChangeEdit1()
void CLoginDlgDlg::OnEnChangeEdit2()
void CLoginDlgDlg::OnEnChangeEditName()
void CLoginDlgDlg::OnEnChangeEditPwd()
2,计算器运行流程图

计算器运行结果


计算器实现代码(第一次作业)
// test_computerDlg.cpp: 实现文件//#include "pch.h"#include "framework.h"#include "test_computer.h"#include "test_computerDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX){}//关于对话框void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CtestcomputerDlg 对话框 CtestcomputerDlg::CtestcomputerDlg(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_TEST_COMPUTER_DIALOG, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}//用户界面中的输入框与其变量关联void CtestcomputerDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, mStr);//将mStr变量与输入框IDC_EDIT1关联DDX_Text(pDX, IDC_EDIT2, mStr1);DDX_Text(pDX, IDC_EDIT3, mStr2);DDX_Text(pDX, IDC_EDIT4, mStr3);DDX_Text(pDX, IDC_EDIT5, mStr4);DDX_Text(pDX, IDC_EDIT6, mStr5);DDX_Text(pDX, IDC_EDIT7, mStr6);DDX_Text(pDX, IDC_EDIT8, mStr7);DDX_Text(pDX, IDC_EDIT9, mStr8);}BEGIN_MESSAGE_MAP(CtestcomputerDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON6, &CtestcomputerDlg::OnBnClickedButton6)ON_BN_CLICKED(IDC_BUTTON43, &CtestcomputerDlg::OnBnClickedButton43)ON_BN_CLICKED(IDC_BUTTON42, &CtestcomputerDlg::OnBnClickedButton42)ON_BN_CLICKED(IDC_BUTTON36, &CtestcomputerDlg::OnBnClickedButton36)ON_BN_CLICKED(IDC_BUTTON37, &CtestcomputerDlg::OnBnClickedButton37)ON_BN_CLICKED(IDC_BUTTON38, &CtestcomputerDlg::OnBnClickedButton38)ON_BN_CLICKED(IDC_BUTTON30, &CtestcomputerDlg::OnBnClickedButton30)ON_BN_CLICKED(IDC_BUTTON31, &CtestcomputerDlg::OnBnClickedButton31)ON_BN_CLICKED(IDC_BUTTON32, &CtestcomputerDlg::OnBnClickedButton32)ON_BN_CLICKED(IDC_BUTTON24, &CtestcomputerDlg::OnBnClickedButton24)ON_BN_CLICKED(IDC_BUTTON25, &CtestcomputerDlg::OnBnClickedButton25)ON_BN_CLICKED(IDC_BUTTON26, &CtestcomputerDlg::OnBnClickedButton26)ON_BN_CLICKED(IDC_BUTTON1, &CtestcomputerDlg::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON3, &CtestcomputerDlg::OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON2, &CtestcomputerDlg::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON45, &CtestcomputerDlg::OnBnClickedButton45)ON_BN_CLICKED(IDC_BUTTON44, &CtestcomputerDlg::OnBnClickedButton44)ON_BN_CLICKED(IDC_BUTTON10, &CtestcomputerDlg::OnBnClickedButton10)ON_BN_CLICKED(IDC_BUTTON11, &CtestcomputerDlg::OnBnClickedButton11)ON_BN_CLICKED(IDC_BUTTON12, &CtestcomputerDlg::OnBnClickedButton12)ON_BN_CLICKED(IDC_BUTTON13, &CtestcomputerDlg::OnBnClickedButton13)ON_BN_CLICKED(IDC_BUTTON14, &CtestcomputerDlg::OnBnClickedButton14)ON_BN_CLICKED(IDC_BUTTON15, &CtestcomputerDlg::OnBnClickedButton15)ON_BN_CLICKED(IDC_BUTTON39, &CtestcomputerDlg::OnBnClickedButton39)ON_BN_CLICKED(IDC_BUTTON33, &CtestcomputerDlg::OnBnClickedButton33)ON_BN_CLICKED(IDC_BUTTON27, &CtestcomputerDlg::OnBnClickedButton27)ON_BN_CLICKED(IDC_BUTTON21, &CtestcomputerDlg::OnBnClickedButton21)ON_BN_CLICKED(IDC_BUTTON20, &CtestcomputerDlg::OnBnClickedButton20)ON_BN_CLICKED(IDC_BUTTON19, &CtestcomputerDlg::OnBnClickedButton19)ON_BN_CLICKED(IDC_BUTTON18, &CtestcomputerDlg::OnBnClickedButton18)ON_BN_CLICKED(IDC_BUTTON17, &CtestcomputerDlg::OnBnClickedButton17)ON_BN_CLICKED(IDC_BUTTON16, &CtestcomputerDlg::OnBnClickedButton16)ON_BN_CLICKED(IDC_BUTTON23, &CtestcomputerDlg::OnBnClickedButton23)ON_BN_CLICKED(IDC_BUTTON34, &CtestcomputerDlg::OnBnClickedButton34)ON_BN_CLICKED(IDC_BUTTON41, &CtestcomputerDlg::OnBnClickedButton41)ON_BN_CLICKED(IDC_BUTTON35, &CtestcomputerDlg::OnBnClickedButton35)ON_BN_CLICKED(IDC_BUTTON29, &CtestcomputerDlg::OnBnClickedButton29)ON_BN_CLICKED(IDC_BUTTON28, &CtestcomputerDlg::OnBnClickedButton28)ON_BN_CLICKED(IDC_BUTTON40, &CtestcomputerDlg::OnBnClickedButton40)ON_BN_CLICKED(IDC_BUTTON22, &CtestcomputerDlg::OnBnClickedButton22)ON_BN_CLICKED(IDC_BUTTON4, &CtestcomputerDlg::OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON5, &CtestcomputerDlg::OnBnClickedButton5)ON_BN_CLICKED(IDC_BUTTON7, &CtestcomputerDlg::OnBnClickedButton7)ON_BN_CLICKED(IDC_BUTTON8, &CtestcomputerDlg::OnBnClickedButton8)ON_BN_CLICKED(IDC_BUTTON9, &CtestcomputerDlg::OnBnClickedButton9)END_MESSAGE_MAP()// CtestcomputerDlg 消息处理程序BOOL CtestcomputerDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);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 CtestcomputerDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,// 这将由框架自动完成。void CtestcomputerDlg::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{CDialogEx::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR CtestcomputerDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}//B->D按钮void CtestcomputerDlg::OnBnClickedButton6(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_BD;}//按钮0void CtestcomputerDlg::OnBnClickedButton43(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//获取输入框中的值并且赋值给输入框关联的变量mStr += L"0";UpdateData(FALSE);//将更改后的值返回给输入框}//按钮“.”void CtestcomputerDlg::OnBnClickedButton42(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//如果没有小鼠点,则加上小数点,如果找到小鼠点,则忽略此次点击if (-1 == mStr.Find(L'.')){mStr += _T(".");}UpdateData(FALSE);}//按钮1void CtestcomputerDlg::OnBnClickedButton36(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"1";UpdateData(FALSE);}//按钮2void CtestcomputerDlg::OnBnClickedButton37(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"2";UpdateData(FALSE);}//按钮3void CtestcomputerDlg::OnBnClickedButton38(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"3";UpdateData(FALSE);}//按钮4void CtestcomputerDlg::OnBnClickedButton30(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"4";UpdateData(FALSE);}void CtestcomputerDlg::OnBnClickedButton31(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"5";UpdateData(FALSE);}void CtestcomputerDlg::OnBnClickedButton32(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"6";UpdateData(FALSE);}void CtestcomputerDlg::OnBnClickedButton24(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"7";UpdateData(FALSE);}void CtestcomputerDlg::OnBnClickedButton25(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"8";UpdateData(FALSE);}void CtestcomputerDlg::OnBnClickedButton26(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"9";UpdateData(FALSE);}//返回按钮(消去输入框中最后一个字符)void CtestcomputerDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);if (!mStr.IsEmpty()) {//判断是否为空,若不空,则mStr = mStr.Left(mStr.GetLength() - 1);//去掉字符串最后一个字符,left从左边开始取}UpdateData(FALSE);}//清除按钮void CtestcomputerDlg::OnBnClickedButton3(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//获取输入框mStr = L"";mNum1 = 0.0f;mNum2 = 0.0f;mFlag = FLAG_JIA;UpdateData(FALSE);//输出到输入框}//清除所有按钮void CtestcomputerDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//获取输入框mStr1 = L"";mStr2 = L"";mStr3 = L"";mStr4 = L"";mStr5 = L"";mStr6 = L"";mStr7 = L"";mStr8 = L"";mStr = L"";mNum1 = 0.0f;mNum2 = 0.0f;mFlag = FLAG_JIA;UpdateData(FALSE);//输出到输入框}//保存第一个输入值void CtestcomputerDlg::SaveFirstValue(){UpdateData(TRUE);mNum1 = _wtof(mStr);//第一个运算数mTempStr = mStr;//中间变量 为了构建历史记录mStr = L"";//至空输入框 为了输入第二个运算数UpdateData(FALSE);}//计算void CtestcomputerDlg::Calculator(){UpdateData(TRUE);mNum2 = _wtof(mStr);//第二个运算数 _wtof把字符串内容转换为浮点数double result = 0.0f;//用来存放计算结果switch (mFlag){case FLAG_JIA: //加result = mNum1 + mNum2;//进行加运算mTempStr = mTempStr + _T("+") + mStr + _T("=");//历史记录中break;case FLAG_JIAN://减result = mNum1 - mNum2;mTempStr = mTempStr + _T("-") + mStr + _T("=");break;case FLAG_CHENG: //乘result = mNum1 * mNum2;mTempStr = mTempStr + _T("*") + mStr + _T("=");break;case FLAG_CHU: //除if (mNum2 = 0) {mTempStr = _T("除0错误");}else {result = mNum1 / mNum2;mTempStr = mTempStr + _T("/") + mStr + _T("=");}break;case FLAG_NFANG: // n次方result = pow(mNum1, 1.0/mNum2);mTempStr = mTempStr + _T("^") + mStr + _T("=");break;case FLAG_KAINFANG://开n方result = pow(mNum1, mNum2);mTempStr = mTempStr + _T("^") + mStr + _T("=");break;case FLAG_MOD://模运算result = (int)mNum1 % (int)mNum2;//模运算必须是整数mTempStr = mTempStr + _T("%") + mStr + _T("=");break;case FLAG_LOGNX://对数运算result = log(mNum2) / log(mNum1);mTempStr = _T("log") + mTempStr + _T("(") + mStr + _T(")") + _T("=");break;case FLAG_PINGFANG://平方result = mNum2 * mNum2;mTempStr = mStr + _T("^2=");break;case FLAG_KAIFANG://开平方result = sqrt(mNum2);mTempStr = _T("根号") + mStr + _T("=");break;case FLAG_LIFANG://立方result = mNum2 * mNum2 * mNum2;mTempStr = mStr + _T("^3=");break;case FLAG_KAILIFANG://开立方result = pow(mNum2, 1.0 / 3);mTempStr = _T("开立方") + mStr + _T("=");break;case FLAG_SIN: // 正弦result = sin(mNum2);mTempStr = _T("sin(") + mStr + _T(")=");break;case FLAG_COS://余弦result = cos(mNum2);mTempStr = _T("cos(") + mStr + _T(")=");break;case FLAG_TAN://正切result = tan(mNum2);mTempStr = _T("tan(") + mStr + _T(")=");break;case FLAG_EX://e的x次方{double e = exp(1.0);result = pow(e, mNum2);mTempStr = _T("e^") + mStr + _T("=");}break;case FLAG_N://计算n的阶乘{int n = (int)mNum2;if (n == 0){result = 1;mTempStr = mStr + _T("!=");}else if (n < 0){mTempStr = _T("负数没有阶乘");}else {result = 1;for (int i = 1; i <= n; i++) {result *= i;}mTempStr = mStr + _T("!=");}}break;default:break;}if (result - (int)result <= 1e-5)//如果结果是整数{mStr.Format(L"%d", (int)result);//以整数形式显示}else {mStr.Format(L"%f", result);//以小数形式显示}mTempStr += mStr;//将结果与表达式拼接mStr8 = mStr7;mStr7 = mStr6;mStr6 = mStr5;mStr5 = mStr4;mStr4 = mStr3;mStr3 = mStr2;mStr2 = mStr1;mStr1 = mTempStr;UpdateData(FALSE);mNum1 = result;mNum2 = 0.0f;}//点击+按钮void CtestcomputerDlg::OnBnClickedButton45(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();//保存第一个运算数mFlag = FLAG_JIA;//设置运算符}//点击=按钮void CtestcomputerDlg::OnBnClickedButton44(){// TODO: 在此添加控件通知处理程序代码Calculator();//调用运算方法}//点击A按钮void CtestcomputerDlg::OnBnClickedButton10(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"A";UpdateData(FALSE);}//点击B按钮void CtestcomputerDlg::OnBnClickedButton11(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"B";UpdateData(FALSE);}//点击C按钮void CtestcomputerDlg::OnBnClickedButton12(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"C";UpdateData(FALSE);}//点击D按钮void CtestcomputerDlg::OnBnClickedButton13(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"D";UpdateData(FALSE);}//点击E按钮void CtestcomputerDlg::OnBnClickedButton14(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"E";UpdateData(FALSE);}//点击F按钮void CtestcomputerDlg::OnBnClickedButton15(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);mStr += L"F";UpdateData(FALSE);}//点击-按钮void CtestcomputerDlg::OnBnClickedButton39(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();//保存第一个运算数mFlag = FLAG_JIAN;//设置运算符}//点击x按钮void CtestcomputerDlg::OnBnClickedButton33(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();//保存第一个运算数mFlag = FLAG_CHENG;//设置运算符}//点击/按钮void CtestcomputerDlg::OnBnClickedButton27(){//双目运算符// TODO: 在此添加控件通知处理程序代码SaveFirstValue();//保存第一个运算数mFlag = FLAG_CHU;//设置运算符}//点击x^2按钮void CtestcomputerDlg::OnBnClickedButton21(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_PINGFANG;//设置运算符}//点击2/x按钮void CtestcomputerDlg::OnBnClickedButton20(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_KAIFANG;}//点击x^3按钮void CtestcomputerDlg::OnBnClickedButton19(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_LIFANG;//单目运算符}//点击3/x按钮void CtestcomputerDlg::OnBnClickedButton18(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_KAILIFANG;}//点击x^nvoid CtestcomputerDlg::OnBnClickedButton17(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();mFlag = FLAG_KAINFANG;}//点击n/xvoid CtestcomputerDlg::OnBnClickedButton16(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();//双目运算符,先保存第一个运算数mFlag = FLAG_NFANG;}//点击%按钮void CtestcomputerDlg::OnBnClickedButton23(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();mFlag = FLAG_MOD;}//点击lognXvoid CtestcomputerDlg::OnBnClickedButton34(){// TODO: 在此添加控件通知处理程序代码SaveFirstValue();mFlag = FLAG_LOGNX;}//点击tanXvoid CtestcomputerDlg::OnBnClickedButton41(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_TAN;}//点击cosXvoid CtestcomputerDlg::OnBnClickedButton35(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_COS;}//点击sinXvoid CtestcomputerDlg::OnBnClickedButton29(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_SIN;}//点击lnXvoid CtestcomputerDlg::OnBnClickedButton28(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_LNX;}//点击e^xvoid CtestcomputerDlg::OnBnClickedButton40(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_EX;}//点击n!按钮void CtestcomputerDlg::OnBnClickedButton22(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_N;}//H->D按钮void CtestcomputerDlg::OnBnClickedButton4(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_HD;}//O->Dvoid CtestcomputerDlg::OnBnClickedButton5(){// TODO: 在此添加控件通知处理程序代码mFlag = FLAG_OD;}//Hexvoid CtestcomputerDlg::OnBnClickedButton7(){// TODO: 在此添加控件通知处理程序代码}//Octvoid CtestcomputerDlg::OnBnClickedButton8(){// TODO: 在此添加控件通知处理程序代码}//Binvoid CtestcomputerDlg::OnBnClickedButton9(){// TODO: 在此添加控件通知处理程序代码} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
// test_computerDlg.h: 头文件//#pragma once//运算符enum Calculator_Flag { FLAG_JIA, FLAG_JIAN, FLAG_CHENG, FLAG_CHU, FLAG_NFANG, //n方 FLAG_KAINFANG, //开n方 FLAG_PINGFANG,//平方 FLAG_KAIFANG,//开方 FLAG_LIFANG,//立方 FLAG_KAILIFANG,//开立方 FLAG_EX, //e的x次方 FLAG_SIN,//正弦 FLAG_COS,//余弦 FLAG_TAN,//正切 FLAG_MOD, //模运算 FLAG_N, //n的阶乘 FLAG_LNX, //以10为低的对数 FLAG_LOGNX,//对数运算 FLAG_HD,//十六进制到十进制 FLAG_OD,//八进制到十进制 FLAG_BD,//二进制到十进制 FlAG_HEX,//十六进制 FLAG_OCT,//八进制 FLAG_BIN//二进制};// CtestcomputerDlg 对话框 用户界面类以及类中的函数和变量class CtestcomputerDlg : public CDialogEx{// 构造public: CtestcomputerDlg(CWnd* pParent = nullptr); // 标准构造函数 void SaveFirstValue();//保存第一个输入值 void Calculator();//计算// 对话框数据#ifdef AFX_DESIGN_TIME enum { IDD = IDD_TEST_COMPUTER_DIALOG };#endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected: HICON m_hIcon; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP()//控件的变量,,,即输入框的变量 在这里声明后需要在test_computerDlg.cpp文件中关联private: CString mStr;//编辑框1内的字符串 CString mStr1;//编辑框2内的字符串 CString mStr2; CString mStr3; CString mStr4; CString mStr5; CString mStr6; CString mStr7; CString mStr8; CString mTempStr;///中间变量 double mNum1;//运算数 double mNum2; Calculator_Flag mFlag;//运算符号public: //点击按钮自动生成的函数声明,函数原型在test_computerDlg.cpp文件中 //这些都是按钮你的消息处理函数 afx_msg void OnBnClickedButton6(); afx_msg void OnBnClickedButton43(); afx_msg void OnBnClickedButton42(); afx_msg void OnBnClickedButton36(); afx_msg void OnBnClickedButton37(); afx_msg void OnBnClickedButton38(); afx_msg void OnBnClickedButton30(); afx_msg void OnBnClickedButton31(); afx_msg void OnBnClickedButton32(); afx_msg void OnBnClickedButton24(); afx_msg void OnBnClickedButton25(); afx_msg void OnBnClickedButton26(); afx_msg void OnBnClickedButton1(); afx_msg void OnBnClickedButton3(); afx_msg void OnBnClickedButton2(); afx_msg void OnBnClickedButton45(); afx_msg void OnBnClickedButton44(); afx_msg void OnBnClickedButton10(); afx_msg void OnBnClickedButton11(); afx_msg void OnBnClickedButton12(); afx_msg void OnBnClickedButton13(); afx_msg void OnBnClickedButton14(); afx_msg void OnBnClickedButton15(); afx_msg void OnBnClickedButton39(); afx_msg void OnBnClickedButton33(); afx_msg void OnBnClickedButton27(); afx_msg void OnBnClickedButton21(); afx_msg void OnBnClickedButton20(); afx_msg void OnBnClickedButton19(); afx_msg void OnBnClickedButton18(); afx_msg void OnBnClickedButton17(); afx_msg void OnBnClickedButton16(); afx_msg void OnBnClickedButton23(); afx_msg void OnBnClickedButton34(); afx_msg void OnBnClickedButton41(); afx_msg void OnBnClickedButton35(); afx_msg void OnBnClickedButton29(); afx_msg void OnBnClickedButton28(); afx_msg void OnBnClickedButton40(); afx_msg void OnBnClickedButton22(); afx_msg void OnBnClickedButton4(); afx_msg void OnBnClickedButton5(); afx_msg void OnBnClickedButton7(); afx_msg void OnBnClickedButton8(); afx_msg void OnBnClickedButton9();}; |
浙公网安备 33010602011771号