




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计综合训练1 课程设计报告 得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计 课程: 程序设计综合训练1 班级: 12软嵌2班学号: 姓名: 谢文靖指导教师: 朱丽2013年 6 月28日目 录 1引言- 11.1课题背景-21.2课程设计目的-32需求分析-52.2系统功能模块-52.3设计要求-63系统实现 -83.1 对话框界面设计-83.2 数值计算功能的实现-104程序关键代码及运行结果 -125总结与体会 -15 1 引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.1.2 课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。2 需求分析2.1系统功能模块1)输入的符号,数字从左向右显示; 点击“=”输出结果,在输出行显示2)支持加减乘除运算;3)支持“xy”的运算;4) 括号“(”“)”的使用;5)支持混合运算;6)功能键“ANS” ,“CLEAR” ,“BACKSPACE”的使用;7)计算器的输入方式:支持鼠标点击计算器键输入; 8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数;10)特殊情况的计算;11)以上所有的运算都是在10进制下进行.1)输入的符号,数字从右向左显示。 先输入“8”8 再输入“”8* 点击“=”输出结果,在输出行显示.2)支持加减乘除运算.输入行a.乘法计算:8*3 24输出行 b. 加法计算 1+0 1 c. 减法计算8-3 5 d.除法运算(特殊情况见10.B)9/4 2.25 2) 支持求次方(x y)运算。求次方(x y)运算:“”为次方(x y)在输入行中的显示符号42 164)“(”“)”的使用。(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合运算则按优先级表中的运算符优先顺序从左向右计算(5+2)*5 356)功能键“CLEAR”及“BACKSPACE”的使用。 a“CLEAR”为清0键。只要按下“CLEAR”键,输入行所有字符清0,输出行回到原始状态。输入前:(5+2)*5 输入后:0 b.“BACKSPACE”为退格键。当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。(注:初始的“0”不能被删除)输入前:(5+2)*5 输入后:(5+2)* C.“ANS”为变量储存器。当一次结果被清除后,只要按下“ANS”键就会显示这个结果。如: 5+2 7 按“CLEAR”键后,再按“ANS”键就会这样 77 77)计算器的输入方式:只支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时。默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常! 99999* InfinityB.除数为0的情况,提示用户被除数不能为零!1/0 除零错误 C在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30 .666若舍弃超出部位后,结果全为0,则结果为01/9999 0 D在运算时,若结果的整数位不为0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/3 1.6666E当用户输入“0”时,若“0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”11) 以上所有的运算都是在10进制下进行2.2设计要求(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的基本思路和方法。(4)掌握用VC+开发MFC应用程序的一般步骤和方法。(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6)掌握后缀表达式算法。(7)掌握VC+开发工具的使用。包括资源管理,项目创建,运行调试等。(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。3系统实现3.1对话框界面设计3.2数值计算实现例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 84程序关键代码及运行结果#include #include #include 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)/将符号压栈op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyCheck=(int)name.at(i-1);if(MyCheck=48|MyCheck=41)break;else throw CString(括号中的表达式不合法);elsethrow CString(出现未匹配的);tryop.Delete(mid);catch(CString e)throw CString(出现未匹配的);double data1,data2; trydata.Delete(data2); data.Delete(data1);catch(CString e)throw CString(缺少操作数); if(!jisuan(data1,data2,mid,data1) result=0; throw CString(表达式异常); data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 实现文件/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#include counter.h#include #include .compuetrdlg.husing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid 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() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);else CRect 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 CompuetrDlg.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;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/ 如果一个运行在 Windows XP 上的应用程序清单指定要/ 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,/则需要 InitCommonControls()。否则,将无法创建窗口。InitCommonControls();CWinApp:InitInstance();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistryKey(_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#includeusing namespace std;template class LinkedStack;template class Node friend 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(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()consttry Node *p=new Node;delete p;return false;catch(bad_alloc& e) return true;template T L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实践中如何提升软件设计的可维护性与可扩展性试题及答案
- 2025届湖北省孝感市八校七年级数学第二学期期末调研模拟试题含解析
- 网络设备应用实例试题及答案
- 2025年社会环境风险试题及答案
- 江苏省南京市致远中学2025届八年级数学第二学期期末质量检测试题含解析
- 2025至2030年中国液位报警控制器行业投资前景及策略咨询研究报告
- 2025至2030年中国延时型微型保险丝行业投资前景及策略咨询研究报告
- 2025至2030年中国压力表虹吸器行业投资前景及策略咨询研究报告
- 法律思维的培养与技巧试题及答案
- 2025至2030年中国RF-AV适配器行业投资前景及策略咨询研究报告
- 第七章 循证医学课件
- 风电专业考试题库带答案
- 艾滋病职业防护培训
- 教学反思不足之处和改进措施简短
- 舒适化医疗麻醉
- 露营地合伙人合同协议书范本
- 2024年315消费者权益保护知识竞赛题库及答案(完整版)
- 2024秋期国家开放大学《可编程控制器应用实训》一平台在线形考(形成任务1)试题及答案
- 2023年高考真题-地理(河北卷) 含答案
- DB50-T 1649-2024 餐饮业菜品信息描述规范
- GB/T 17775-2024旅游景区质量等级划分
评论
0/150
提交评论