版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、得分:信电工程学院课程设计报告基于 VC的表达式计算器软件设计课程:程序设计综合训练 1班级:12 软嵌 2 班学号:20120509223姓名:谢文靖指导教师:朱丽2013 年 6 月 28 日目录1 引言 11.1 课题背景 21.2 课程设计目的 32 需求分析 52.2 系统功能模块 52.3 设计要求 63 系统实现 83.1 对话框界面设计 83.2 数值计算功能的实现 104 程序关键代码及运行结果 125 总结与体会 151 引言1.1 课题背景 计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒 数等简单运算的工具。要实现计算功能,可以用 VC+ 的知识编
2、写程序来解决此 问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。 该计算器使用非常简单和方便, 对广大中小学生的学习有巨大帮助作用, 也对在 职人员的工作有点帮助作用 .1.2 课程设计目的 本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程, 还要 上机调试运行。 同时,本课程也注重提高学生编写技术文档和技术文档阅读的能 力。学生通过本课程的学习实践, 将学习和强化软件开发的能力、 文档写作能力、 英语阅读能力、软件使用能力等。 为今后计算机编程的学习和工作打下良好、 扎 实的理论实践基础。2 需求分析2.1 系统功能模块1)输入的符号,数字从左向右显示
3、; 点击“ =”输出结果,在输出行显 示2)支持加减乘除运算 ;3)支持“x?y”的运算;4)括号“(”“)”的使用 ;5)支持混合运算 ;6)功能键“ ANS” ,“CLEAR” ,“BACKSPAC”E的使用 ;7)计算器的输入方式:支持鼠标点击计算器键输入 ;8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数 ;10)特殊情况的计算 ;11)以上所有的运算都是在 10 进制下进行 .1)输入的符号,数字从右向左显示。先输入“ 8”点击“ =”输出结果,在输出行显示2) 支持加减乘除运算 .a. 乘法计算:d. 除法运算(特殊情况见 10.B)9/4
4、2) 支持求次方 (x ?y) 运算。求次方(x ?y) 运算:“?”为次方 (x ?y) 在输入行中的显示符号 4?24)“(”“)”的使用。(括号的使用) 要使用“(”“)”的时候,先点击“ (”,再输入数字或符号,内容输入完毕 以后,点击“)”,完成“(”“)”的所有功能。例如:2 (2+2)=?2*(2+22*(2+2)2* (2+2)5)支持混合运算附:运算符的优先级表优先级功能键显示结合律从( 、)( 、 )自左向右高x ?y、1/x?、自左向右到、*、/自左向右低自左向右例如:(5+2) 5=?5+2)*5混合运算则按优先级表中的运 算符优先顺序从左向右计算6)功能键“ CLEA
5、R”及“ BACKSPAC”E的使用。a “ CLEAR”为清 0 键。只要按下“ CLEAR”键,输入行所有字符清 0,输 出行回到原始状态。输入前:b. “BACKSPAC”E为退格键。当输入任何数字或运算符 , 只要按下“BACKSPAC”E 键,字符位自右向左消去一位。 (注:初始的“ 0”不能被删除)输入前:5+2) *5输入后:(5+2)*C.“ ANS”为变量储存器。当一次结果被清除后,只要按下“ ANS”键就会显示 这个结果。如:7)计算器的输入方式:只支持鼠标点击计算器键输入 ;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.
6、 输入行最大显示的字符数 32位,每个运算符算一位 ;b. “(”,“)”各占一个字符位;c. 输出行最大显示的字符数为 32位;d. 纯小数显示的最大字符数为小数点后 30 位,整数及小数点各占一位; 若纯小数为负数,则显示最大字符数为小数点后 29 位,“- ”占一位;e. 输入行在未输入任何数字的时候,显示“ 0”,只占一个字符位;当输入任何 数字时。“0”消失,输入的的数字取代“ 0”;当输入任何运算符时。默认之前输 入数字“ 0”;f. 点击“ =”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出 32 位,显示 Infinity (无穷大);出现运算异常!
7、B.除数为 0 的情况,提示用户被除数不能为零!1/0除零C在运算时,若结果为纯小数,小数位超过 30 位,则超出的字符舍弃 2/3 0 .6666666666666666666若舍弃超出部位后,结果全为 0,则结果为 01/9999D在运算时,若结果的整数位不为 0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示E当用户输入“ 0”时,若“ 0”之前的算式或数字的值为 0,点击“ =”后, 输出界面显示“底数不能为 0”11) 以上所有的运算都是在 10 进制下进行2.2 设计要求(1) 了解 Windows 编程的基础知识,掌握 MFC
8、应用程序的基本知识。(2) 理解需求分析过程,掌握需求分析文档编写。(3) 理解面向对象程序设计的基本思路和方法。(4) 掌握用 VC+ 开发 MFC 应用程序的一般步骤和方法。(5) 掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6) 掌握后缀表达式算法。(7) 掌握 VC+ 开发工具的使用。包括资源管理,项目创建,运行调试等。(8) 完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且 支持包括括号的表达式运算功能3 系统实现3.1 对话框界面设计3.2 数值计算实现例如:2 (2+2)=?+2)4 程序关键代码及运行结果#include #include #in
9、clude Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double& d)switch (c)case +:d=a+b;/couta+bendl;return true;case -:d=a-b;/couta-bendl;return true;case *:d=a*b;/couta*bendl;return true;case /:if(b=0)throw CString(除零错误 !);/couta/bendl;d=a/b;return true;case ,:/couta,b0)/ 将
10、符号压栈op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyCheck=(int)name.at(i-1);if(MyCheck=48|MyCheck=41)break;e-see-sefhrow css.ng(=盘4甘siiMM 并=fhrow csmng(=圧洁目碍孚)opDe-eCD3id=caohosfring e)fhrow cs=ring(=圧洁目碍孚)doub-e daQrlo.a5r2 八fry宀dafaDe-eCD(daQr2)八dafaDe-eCD(daQrl)八caohosfring e)宀fhrow
11、cs=ring(=&嶽蒲= if(_jisuan(dafal dafazmid-dafal) 宀resu-Hafhrow cs=ring(=iiM=)-data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 实现文件/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#include counter.h#include #include .compuetrdlg.h using namespace std;#ifdef _DEBUG#define new DEBUG_NEW#e
12、ndifvoid CCompuetrDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxI
13、con + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCRect rect;CPaintDC dc(this);GetClientRect(rect);dc.FillSolidRect(rect,RGB(255,0,0);/ 设置背景颜色CDialog:OnPaint();CDialog:OnPaint();/ Compuetr.cpp : 定义应用程序的类行为。/#include stdafx.h#include Compuetr.h#include Compuet
14、rDlg.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CCompuetrAppBEGIN_MESSAGE_MAP(CCompuetrApp, CWinApp)ON_COMMAND(ID_HELP, CWinApp:OnHelp) END_MESSAGE_MAP()/ CCompuetrApp 构造CCompuetrApp:CCompuetrApp()/ TODO: 在此处添加构造代码,/ 将所有重要的初始化放置在 InitInstance 中/ 唯一的一个 CCompuetrApp 对象CCompuetrApp theApp;/ CCompuetrAp
15、p 初始化BOOL CCompuetrApp:InitInstance()/ 如果一个运行在 Windows XP 上的应用程序清单指定要/ 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, /则需要 InitCommonControls() 。否则,将无法创建窗口。 InitCommonControls();CWinApp:InitInstance();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegist
16、ryKey(_T( 应用程序向导生成的本地应用程序 );CCompuetrDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置处理何时用“确定”来关闭 /对话框的代码else if (nResponse = IDCANCEL)/ TODO: 在此放置处理何时用“取消”来关闭 /对话框的代码/ 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,/ 而不是启动应用程序的消息泵。return FALSE;/stack#include#include#incl
17、udeusing namespace std;template class LinkedStack;template class Nodefriend LinkedStack;private:T data;Node *link;template class LinkedStackpublic:LinkedStack()top=0;length=0;LinkedStack();bool isEmpty()constreturn top=0;bool isFull()const;T Top() const;LinkedStack&Add(const T& x);LinkedStack&Delete
18、(T& x);int getLength()return length; private:Node *top;int length;template LinkedStack:LinkedStack()Node *next;while(top)next=top-link;delete top;top=next;template bool LinkedStack:isFull()consttryNode *p=new Node;delete p;return false;catch(bad_alloc& e)return true;template T LinkedStack:Top()const
19、if(isEmpty()throw CString( 堆栈空异常 !); return top-data;template LinkedStack& LinkedStack:Add(const T& x) Node *p=new Node;p-data=x;p-link=top;top=p;length+;return *this;template LinkedStack& LinkedStack:Delete(T& x)if(isEmpty()throw CString( 堆栈空异常 !); x=top-data;Node *p=top;top=top-link;delete p;lengt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025模拟辩论面试题及答案
- 2025至2030带传动辊道输送机行业项目调研及市场前景预测评估报告
- 2025至2030农田排灌机械市场行业调研及市场前景预测评估报告
- 装修装饰工程施工合同
- 2025年Python二级考试培训试卷:实战技巧提升解题技巧
- 2026秋季国家管网集团山东分公司高校毕业生招聘考试参考题库(浓缩500题)含答案详解(综合卷)
- 2026秋季国家管网集团浙江省天然气管网有限公司高校毕业生招聘笔试备考试题(浓缩500题)附参考答案详解(培优b卷)
- 背景音乐合同
- 2025至2030反绒皮鞋市场发展趋势分析与未来投资战略咨询研究报告
- 科比生涯合同
- 小儿病毒性脑膜炎护理查房
- 2025年视觉设计岗位面试题库
- 钻床考试题及答案
- 新疆的歌课件
- 隔爆水棚替换自动隔爆装置方案及安全技术措施
- cice考试题库及答案
- 中西医高血压讲座
- 尼安德特人基因解码-洞察及研究
- 2025年广州市海珠区华洲街道招聘雇员(4人)笔试备考试题含答案详解(综合题)
- 电能质量在线监测装置试验报告(二)2025
- 中医护理健康教育课件
评论
0/150
提交评论