简单计算器设计报告
一、 基本功能描述
通过文本编辑框实现基本整数的加减乘除运算
二、 设计思路
如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。
1、 设计步骤
打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定
将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成
MFC AppWizard就建立了一个基于对话窗口的程序框架
2、 界面设计
对象 ID 说明
文本编辑框 IDC_EDIT1 输入数字
下拉框 IDC_COMBOOP 运算符
文本编辑框 IDC_OK 输入数字
文本编辑框 IDC_EDIT3 运算结果输出
按钮 IDC_EXIT 退出键
设计界面
四、 主要程序分析
1、字符判定函数
BOOL IsInt(TCHAR*str)
{
int i=atoi(str);
TCHAR strtemp[256];
wsprintf(strtemp,"%i",i);
if(strcmp(str,strtemp)!=0)
{
return FALSE;
}
Else
{
return TRUE;
}
}
该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false.
3、 运算符选择程序
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP);
ComboBox_InsertString(hwndComboOP,-1,TEXT("+"));
ComboBox_InsertString(hwndComboOP,-1,TEXT("-"));
ComboBox_InsertString(hwndComboOP,-1,TEXT("*"));
ComboBox_InsertString(hwndComboOP,-1,TEXT("/"));
return TRUE;
}
通过ComboBox_InsertString插入要输入的运算符
4、 主程序
字符获取
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
调用子程序判断输入是否为数字
if(IsInt(str1)==FALSE)
{
MessageBox(hwnd,TEXT("第一个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR);
return;
}
if(IsInt(str2)==FALSE)
{
MessageBox(hwnd,TEXT("第二个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR);
return;
}
将输入字符转换为数字
int i1=atoi(str1);
int i2=atoi(str2);
int i3=0;
获取运算符
HWND hwndComboOp=GetDlgItem(hwnd,IDC_COMBOOP);
int curIndex=ComboBox_GetCurSel(hwndComboOp);
运算
switch(curIndex)
{
case 0:
{
i3=i1+i2;
}
break;
case 1:
{
i3=i1-i2;
}
break;
case 2:
{
i3=i1*i2;
}
break;
case 3:
{
i3=i1/i2;
}
break;
}
运算结果转换为字符
TCHAR str3[256];
itoa(i3,str3,10);
输出运算结果
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
退出程序
case IDC_EXIT:
{
exit(0);
}
break;
五、 结果分析
该计算器只能实现简单的整数运算,不能对小数分数进行运算。并且只能进行简单的加减乘除运算,功能有待完善。
六、 心得体会
通过编写该计算器程序,基本学会简单API函数的编写windows界面化程序,有助今后进一步深化学习。
发给你了!
可以发我参考一下么,那个MFC的,526442715@qq.com,谢谢