C++作业 武汉科技大学机械学院研究生
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:
班级:
学号:
完成日期:2014.02
武汉科技大学机械自动化学院
任务一开发一个计算器程序
一软件功能
开发一个计算器软件,要求是基于对话框的应用程序,至少具有加、减、乘、除四个基本功能。在此基础上扩展平方、开方、三角函数等功能。对话框是最重要的用户界面元素之一,是与用户交互的重要手段,可用于捕捉用户的输入信息或数据。通过计算器软件开发,主要培养学生熟悉使用C++编写基于对话框的应用程序,同时学会将所学知识运用于计算器界面的实际案例中,增进对C++认识和运用。
二软件设计
设计基于对话框的计算器软件,该计算器软件可以实现加、减、乘、除、平方、开方、正弦、余弦、正切、对数函数的功能。基本操作流程如下:
(1) 用MFC AppWizard 创建一个基于对话框的应用程序。
(2) 再根据“计算器”的要求设计对话框的相关属性。
(3) 添加和布局所需类型的控件,如组框、按钮、编辑框、静态文本等,并对各种控件进行属性设置(如ID号等)和布局安排。
(4) 在创建基本对话框时,一个基于对话框资源模板的对话框类CCalculatorDlg 就创建好了。
(5) 添加对话框映射函数和代码,添加成员变量m_first,m_second,m_result, m_operator
(6) 编译,运行计算器软件程序,实现各种功能。
三软件实现过程
1. 用MFC AppWizard 创建一个基于对话框的应用程序,如图1.1 所示
图 1.1 基于对话框的应用程序
2. 添加对话框,并布局对话框上的控件,设置各个控件的属性,如图1.2所示
图1.2 基于对话框的计算器界面
(1)设置“迷你计算器”的属性,如图1.3所示
图1.3 “迷你计算器”的属性
(2)设置输入的两个数的ID号分别为IDC_first,IDC_second, 结果输出数的ID 号为IDC_result, 如图1.4所示
图1.4 第一个输入数的属性
(3) 运算符号加、减、乘、除、平方、开方、正弦、余弦、正切、对数函数、等号的ID号分别为IDC_add,IDC_minus,IDC_mul,IDC_divide,IDC_square,IDC_sqrt,IDC_sin,IDC_cos,IDC_tan,IDC_lg,IDC_equal。学生个人信息的ID号为IDC_information。“加”的属性如图1.5所示.
图1.5 “加”的属性
(4) 添加成员变量m_first,m_second,m_result, m_operator。变量的类型分别为double,double,double,int。
3. 添加消息映射函数,写主要代码
(1) 分别为各个运算符号添加映射函数,并写出相应代码
void CCalculatorDlg::Onadd()
{
m_operator=1;
}
void CCalculatorDlg::Onminus()
{
m_operator=2;
}
void CCalculatorDlg::Onmul()
{
m_operator=3;
}
void CCalculatorDlg::Ondivide()
{
m_operator=4;
}
void CCalculatorDlg::Onsquare()
{
m_operator=5;
}
void CCalculatorDlg::Onsin()
m_operator=6;
}
void CCalculatorDlg::Oncos()
{
m_operator=7;
}
void CCalculatorDlg::Ontan()
{
m_operator=8;
}
void CCalculatorDlg::Onsqrt()
{
m_operator=9;
}
void CCalculatorDlg::Onlg()
{
m_operator=10;
}
void CCalculatorDlg::Onequal()
{
UpdateData(TRUE);
switch (m_operator)
{
case 1 : m_result=m_first+m_second ;break;
case 2 : m_result=m_first-m_second ;break;
case 3 : m_result=m_first*m_second ;break;
case 4 :
{
if(m_second==0)
MessageBox("请输入不等于0的数!","提醒",0); else
m_result=m_first/m_second ;break;
}
case 5 : m_result= m_first*m_first;break;
case 6 : m_result=sin(m_first*3.14159/180);break; case 7 : m_result=cos(m_first*3.14159/180);break; case 8 : m_result=tan(m_first*3.14159/180);break; case 9 :
{
if(m_first<0)
MessageBox("请输入不小于0的数!","提醒",0); else