版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计课程:程序设计综合训练1班级:12软嵌2班学号:姓名:谢文靖指导教师:朱丽2013年6月28日目录1 引言 11.1课题背景 21.2 课程设计目的2 需求分析 -52.2 系统功能模块2.3 设计要求 63 系统实现 83.1 对话框界面设计3.2 数值计算功能的实现 04 程序关键代码及运行结果 -125 总结与体会1 引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求 倒数等简单运算的工具。 要实现计算功能, 可以用 VC+ 的知识编写程序来解决 此问题。该计算器大大的降低了数字计算的难度及
2、提高了计算的准确度和精确 度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用, 也对在职人员的工作有点帮助作用 .1.2 课程设计目的 本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还 要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读 的能力。学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写 作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打 下良好、扎实的理论实践基础。2 需求分析2.1 系统功能模块1)输入的符号,数字从左向右显示 ; 点击“ =”输出结果,在输出行显 示2)支持加减乘除运算 ;3)支持“
3、 x?y”的运算;4)括号“(”“)”的使用 ;5)支持混合运算 ;6)功能键“ ANS , “ CLEAR , “ BACKSPACE勺使用;7) 计算器的输入方式:支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数 ;10)特殊情况的计算 ;11)以上所有的运算都是在 10 进制下进行 .1)输入的符号,数字从右向左显示先输入“ 8”点击“=”输出结果,在输出行显示2)支持加减乘除运算.a. 乘法计算:d.除法运算(特殊情况见10.B)9/42.252)支持求次方(x ?y)运算。求次方(x ?y)运算:“?”为次方(x ?
4、y)在输入行中的显示符号4?2164)“(”“)”的使用。(括号的使用)要使用“(” “)”的时候,先点击“(”,再输入数字或符号,内容输入完毕 以后,点击“)”,完成“(” “)”的所有功能。例如:2 X( 2+2) =?2*(2+22*(2+2)2* (2+2)85) 支持混合运算附:运算符的优先级表优先级功能键显示结合律从(、 )( 、 )自左向右高x?y、1/x?、自左向右到X、*、/自左向右低+ + 自左向右例如:(5+2)X 5=?(5+2) *5. /356) 功能键“ CLEAR及“ BACKSPACE的使用。a “CLEAR为清0键。只要按下“ CLEAR键,输入行所有字符清
5、0,输 出行回到原始状态。输入前:(5+2) *5输入后:0b. “BACKSPACES退格键。当输入任何数字或运算符,只要按下“BACKSPACE 键,字符位自右向左消去一位。(注:初始的“ 0”不能被删除)输入前:(5+2) *5输入后:(5+2)*C. “ANS为变量储存器。当一次结果被清除后,只要按下“ANS键就会显示这个结果。如:7777)计算器的输入方式:只支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a. 输入行最大显示的字符数32位,每个运算符算一位;b. “(”,“)”各占一个字符位;c. 输出行最大显
6、示的字符数为32位;d. 纯小数显示的最大字符数为小数点后 30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e. 输入行在未输入任何数字的时候,显示“ 0”,只占一个字符位;当输入任 何数字时。“0”消失,输入的的数字取代“ 0”;当输入任何运算符时。默认之 前输入数字“ 0” ;f. 点击“=”键后方可显示数字或字母或汉字10) 特殊情况的运算A.运算结果整数部分超出32位,显示Infinity (无穷大);出现运算异常!9999*InfinityB.除数为0的情况,提示用户被除数不能为零!1/0除零错误C在运算时,若结果为纯小数,小数位超过30
7、位,则超出的字符舍弃2/30.6若舍弃超出部位后,结果全为 0,则结果为01/9939 0D.在运算时,若结果的整数位不为 0a 总位数在最大字符位内,则直接显示; b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符输出界面显示“底数不能为0”11 )以上所有的运算都是在10进制下进行2.2设计要求了解Windows编程的基础知识,掌握MFC应用程序的基本知识(2) 理解需求分析过程,掌握需求分析文档编写。(3) 理解面向对象程序设计的基本思路和方法。(4) 掌握用VC+开发MFC应用程序的一般步骤和方法。(5) 掌握基于对话框的应用程序的编写,主要
8、包括文本框和按钮等。(6) 掌握后缀表达式算法。(7) 掌握VC+开发工具的使用。包括资源管理,项目创建,运行调试等。(8) 完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且 支持包括括号的表达式运算功能。3系统实现3.1对话框界面设计3.2数值计算实现例如:2 X( 2+2) =?2*(2+22*(2+2)2* (2+2)4程序关键代码及运行结果#include viostream#include #include Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double&
9、 d)switch (c)case +:d=a+b;/coutvvavv+vvbvvendl;return true;case -:d=a-b;/coutvvavv-vvbvvendl;return true;d=a*b;/coutvvavv*vvbvvendl;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 MyChe
10、ck=(int)name.at(i-1);if(MycheckcH57cocoMycheckvH48=MycheckHH4*1)breake_sefhrowcsng=盘4廿孚洪幵孑血并=)ewefhrow csfring(=圧洁目碍孚=)opDe 一 efe(mid)cafe hosf ring e)fh row CSf ring:圧洁目碍孚=) doub 一 e dasrTdasrN fry宀dasr.De_efe(dasr2)sdasrDe 一 efe(dasr*1)scafe hosf ring e)宀fh row CSf ring:&嶽蒲=)s if(uisuan(dasr*1Q.as
11、r2midQ.asr*1)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(
12、)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.Heig
13、ht() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCRect rect;CPaintDC dc(this);GetClientRect(rect);dc.FillSolidRect(rect,RGB();/ 设置背景颜色CDialog:OnPaint();CDialog:OnPaint();/ Compuetr.cpp : 定义应用程序的类行为。/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#ifdef _DEBUG#define new DEBUG_N
14、EW#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()/
15、如果一个运行在 Windows XP 上的应用程序清单指定要/ 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, /则需要 InitCommonControls() 。否则,将无法创建窗口。 InitCommonControls();CWinApp:InitInstance();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistryKey(_T( 应用程序向导生成的本地应用程序 ); CCompuetrD
16、lg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置处理何时用“确定”来关闭/对话框的代码else if (nResponse = IDCANCEL)/ TODO: 在此放置处理何时用“取消”来关闭/对话框的代码/ 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,/ 而不是启动应用程序的消息泵。return FALSE;/stack#include#include#include using namespace std; template class
17、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
18、; 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 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 20641-2025低压成套开关设备和控制设备空壳体的一般要求
- 2026年重庆商务职业学院单招职业技能考试题库带答案详解
- 2026年云南外事外语职业学院单招综合素质考试题库及参考答案详解一套
- 2026年福建省南平市单招职业倾向性考试题库及参考答案详解
- 2026年福建师范大学协和学院单招职业技能测试题库及参考答案详解1套
- 2026年河北能源职业技术学院单招职业倾向性测试题库及完整答案详解1套
- 2026年辽宁省辽阳市单招职业适应性考试题库及参考答案详解
- 2026年菏泽医学专科学校单招职业技能考试题库附答案详解
- 2026年宿州职业技术学院单招职业适应性测试题库参考答案详解
- 2026年河南经贸职业学院单招职业技能考试题库含答案详解
- 油漆作业风险和隐患辨识、评估分级与控制措施一览表
- 住家保姆照顾老年合同范本
- NB/T 11440-2023生产煤矿储量估算规范
- 洁净工厂设计合同范本
- 无人机应用技术专业申报表
- 【化学】溶解度课件-2023-2024学年九年级化学人教版下册
- PDCA提高卧床患者踝泵运动的执行率
- 蒋诗萌小品《谁杀死了周日》台词完整版
- 新版Haccp内审检查表
- 道路交通安全标志维修合同
- JB T 6527-2006组合冷库用隔热夹芯板
评论
0/150
提交评论