科学计算器课程设计报告C课程设计修订稿
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科学计算器课程设计报告C课程设计
集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]
计算机科学与技术学部
C++课程设计
题目科学计算器
学部计算机科学与技术
班级计科1103 指导教师李军
姓名刘明
学号
2012年6月27日
摘要
计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。
在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。
简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。
关键词:计算器;运算;VC++等
课程设计任务分配表:
采用的类的数据类型:
class CCalculatorDlg : public CDialog
{
public:
void clean_aliter();
CString OLD_ANSWER;
void out_change(int system);
变量的定义以及初始化
int Sel,EndSel; //定义输入或插入时光标的位置
int Expr_pos; //词法分析表达式时,标记当前字符位置int OS_pos ; //操作数栈顶位置
int old_pos; //历史表达式的位置
int old_head; //历史表达式数组中最最前位置
int old_back; //历史表达式数组中最最后位置
int error_mark; //标记表达式错误
int parentheses_count; //记录表达式中括号的个数double operand_Stack[200]; //操作数栈
CString old_expression[20]; //表达式历史记录
//以上为定义部分,以下为初始化部分
Sel=0; //输入的光标位置
EndSel=0; //插入光标的位置
Expr_pos = 0; //当前字符的位置
OS_pos = 0 ; //操作数栈顶位置
old_pos=old_head=old_back=0;//历史表达式的位置
error_mark=0; //表达式错误
parentheses_count=0; //括号的个数
OLD_ANSWER = _T(""); //初始化
第三章系统实现
窗体设计
利用MFC AppWinzard生成计算器应用程序框架具体步骤如下:
(1)执行VC++ 程序,选择文件——新建命令,转到工程选项卡,选择MFC AppWizard(exe)选项,然后在工程名称输入名字,一般以C开头,也可以自定义,位置路径自定义。
(2)单击确定,弹出MFC 应用程序向导-步骤1对话框。选中单选按钮基本对话框,单击完成即可,如图所示:
(1)为控件添加成员变量已经在系统设计里面列举出,这里就不再重复;
(2)为控件添加消息,查看-类向导命令,转到Message Maps选项卡,为控件添加BN_CLICKED消息,单击确定即可,具体哪些控件这里就不再详细介绍了。
程序核心代码
void CCalculatorDlg::OnNumberKey(UINT nID) //按键输入
{
(Sel,EndSel); //得到输入框的光标位置
switch(nID)
{// 在光标位置插入按钮表示的字符,在输入框插入相应的数值
case IDC_0:{ (Sel,"0");break;}
case IDC_1:{ (Sel,"1");break;}
case IDC_2:{ (Sel,"2");break;}
case IDC_3:{ (Sel,"3");break;}
case IDC_4:{ (Sel,"4");break;}
case IDC_5:{ (Sel,"5");break;}
case IDC_6:{ (Sel,"6");break;}
case IDC_7:{ (Sel,"7");break;}
case IDC_8:{ (Sel,"8");break;}
case IDC_9:{ (Sel,"9");break;}
case IDC_A:{ (Sel,"A");break;}
case IDC_B:{ (Sel,"B");break;}
case IDC_C:{ (Sel,"C");break;}
case IDC_D:{ (Sel,"D");break;}
case IDC_E:{ (Sel,"E");break;}
case IDC_F:{ (Sel,"F");break;}
}
Sel++; //光标后移
UpdateData(FALSE);