vc++课程设计《算术表达式》

上传人:aa****6 文档编号:38366252 上传时间:2018-05-01 格式:DOCX 页数:14 大小:3.50MB
返回 下载 相关 举报
vc++课程设计《算术表达式》_第1页
第1页 / 共14页
vc++课程设计《算术表达式》_第2页
第2页 / 共14页
vc++课程设计《算术表达式》_第3页
第3页 / 共14页
vc++课程设计《算术表达式》_第4页
第4页 / 共14页
vc++课程设计《算术表达式》_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《vc++课程设计《算术表达式》》由会员分享,可在线阅读,更多相关《vc++课程设计《算术表达式》(14页珍藏版)》请在金锄头文库上搜索。

1、2015-12-27Visual C+课程设计算术表达式算术表达式摘摘 要:要: 本课程设计实现算术表达式的计算。在课程设计中,系统开发平台为 Windows 7,程序设计语言采用 MFC,程序运行平台为 Windows 2000/XP 及以 上。在程序设计中,对于输入的算术表达式,对其进行运算并输出结果。 关键词:关键词:MFC;算术表达式1 1 绪绪论论1.1 Visual C+ Visual C+为用户提供了一个可视化、通用的应用程序集成开发环境Visual Studio。Visual Studio 包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接 器、源代码浏览器、集成调试

2、工具以及一套联机文档(MSDN) 。通过 Visual Studio,开发 人员可以完成项目工程的创建、程序的编辑、修改、运行和调试等各种操作。Visual Studio 采用标准的多窗口用户界面,提供了大量实用工具以支持可视化编程的特性,包括项目工 作区、AppWizard(应用程序向导) 、ClassWizard(类向导) 、WizardBar(向导工具条) 、Component Gallery(组件画廊)等。1.2 算术表达式算术表达式在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而

3、在程序设计时,借助栈实现。为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。2 2 需求分析需求分析本课程设计实现算术表达式的运算。2.12.1 功能概述功能概述整个程序的主界面如图 1 所示。图 1对于用户输入的算术表达式,输出合适的运算结果。2.22.2 功能需求分析功能需求分析程序属于设立栈,并且用数组来接受用户的输入。3 3 总体设计总体设计3.13.1 程序框架的搭建程序框架的搭建(1) 工程项目的创建工程项目的创建 利用应用程序向导创建一个名称为 Walk1 的工程项目。由于不需要工具栏 功能,所以在向导的第四步里面把“隐藏工具栏”的选项置空,其他均使用默 认设置

4、。 (2) 主界面的设计主界面的设计 在位图资源中插入一副位图(IDB_BITMAP1)来作为背景,然后需要一个对话 框来与用户交互,所以在 CGView 类的 OnDraw 函数中调用该位图以及对话框资 源。 然后,修改主窗口的名字以及取消默认菜单栏的调用,在 CMainFrame 类 中的 OnCreate()函数和 PreCreateWindow()函数实现。 voidvoid CGView:OnDraw()CGView:OnDraw() CGDoc*CGDoc* pDocpDoc = = GetDocument();GetDocument();ASSERT_VALID(pDoc);AS

5、SERT_VALID(pDoc);CRectCRect rctClient;rctClient;GetClientRect(rctClient);GetClientRect(rctClient);CDCCDC dcMem;dcMem;dcMem.CreateCompatibleDC(pDC);dcMem.CreateCompatibleDC(pDC);CBitmapCBitmap m_bmp;m_bmp;m_bmp.LoadBitmap(IDB_BITMAP1);m_bmp.LoadBitmap(IDB_BITMAP1);BITMAPBITMAP bitmap;bitmap;m_bmp.Get

6、Bitmap(m_bmp.GetBitmap(CBitmapCBitmap *pbmpOld=dcMem.SelectObject(*pbmpOld=dcMem.SelectObject( CtestlogCtestlog a;a;a.DoModal();a.DoModal();pDC-pDC- StretchBlt(0,0,rctClient.Width(),rctClient.Height(),bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); intint CMainFrame:OnCreate(LPCREATESTRUCTCMainFrame:OnCrea

7、te(LPCREATESTRUCT lpCreateStruct)lpCreateStruct) ifif (CFrameWnd:OnCreate(lpCreateStruct)(CFrameWnd:OnCreate(lpCreateStruct) = -1)-1) returnreturn -1;-1;ifif (!m_wndStatusBar.Create(this)(!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators,!m_wndStatusBar.SetIndicators(indicators

8、,sizeof(indicators)/sizeof(UINT)sizeof(indicators)/sizeof(UINT) TRACE0(“FailedTRACE0(“Failed toto createcreate statusstatus barn“);barn“); returnreturn -1;-1; / failfail toto createcreate SetMenu(NULL);SetMenu(NULL); /取消默认菜单栏的调用取消默认菜单栏的调用/ CG:CG: TheThe followingfollowing lineline waswas addedadded

9、byby thethe SplashSplash ScreenScreen ponent. CSplashWnd:ShowSplashScreen(this);CSplashWnd:ShowSplashScreen(this); returnreturn 0;0; BOOLBOOL CMainFrame:PreCreateWindow(CREATESTRUCTFALSE; / TODO:TODO: ModifyModify thethe WindowWindow classclass oror stylesstyles herehere byby modifyingmodifying / th

10、ethe CREATESTRUCTCREATESTRUCT cscscs.stylecs.style FWS_ADDTOTITLE; cs.lpszNamecs.lpszName = = “ “算术表达式算术表达式.org“;.org“; /修改主窗口的名字修改主窗口的名字 returnreturn TRUE;TRUE; (3) 对话框的创建对话框的创建 新建一个对话框,绑定 CtestDlg 类。然后添加成员变量 char a100,用 GetDlgItem(IDC_EDIT7)-GetWindowText(a,100)来读入用户的输入。以方便下一 步运算。对话框的效果图如图 2 所示。图

11、23.23.2 算术表达式算术表达式(1) 栈的创建栈的创建 新建一个类,命名为 CStack。然后添加成员变量int top,char data100。 用来实现栈的功能。 (2) 算术表达式的核心算法算术表达式的核心算法 首先添加三个 CStack *类型的成员变量 Stack1,Stack2,Stack3。对于用户输入 的算式表达式,先将其转化为后缀表达式,然后利用后缀表达式的特性进行运 算。中缀表达式转化后缀表达式的算法思路如下:遇到数字:直接输出遇到符 号杂判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则 出栈并输出,直到优先级相等或栈为空,如果栈顶符号的运算优先级低

12、于或等 于当前符 号的运算优先级,则将当前符号压站,代码实现如下。最终结果存入 int 类型 变量 jieguo 中,用 MessageBox()输出。如图 3 所示。 voidvoid Ctestlog:Change()Ctestlog:Change() / CStringCString str1,str2;str1,str2;intint flag=1,i=0;flag=1,i=0; charchar c;c; while(flag)while(flag) if(ai=0stack1.Push(ai); /stack1/stack1 / str1.Format(“%d“,ai);str1.

13、Format(“%d“,ai); / MessageBox(str1);MessageBox(str1); elseelse if(ai=#)if(ai=#) while(stack2.Empty()!=0)while(stack2.Empty()!=0) c=stack2.Pop(c);c=stack2.Pop(c); /str1.Format(“%d“,c);str1.Format(“%d“,c); /MessageBox(str1);MessageBox(str1);stack1.Push(c);stack1.Push(c); flag=0;flag=0; elseelse if(ai=

14、/|ai=*)if(ai=/|ai=*) if(stack2.Empty()=0)if(stack2.Empty()=0) stack2.Push(ai);stack2.Push(ai); gotogoto loop1;loop1; c=stack2.Pop(c);c=stack2.Pop(c); if(c=/|c=*)if(c=/|c=*) stack1.Push(c);stack1.Push(c); stack2.Push(ai);stack2.Push(ai); elseelse if(c=+|c=-)if(c=+|c=-) stack2.Push(c);stack2.Push(c);

15、stack2.Push(ai);stack2.Push(ai); elseelse if(=c)if(=c) stack2.Push(ai);stack2.Push(ai); elseelse if(ai=+|ai=-)if(ai=+|ai=-) if(stack2.Empty()=0)if(stack2.Empty()=0) stack2.Push(ai);stack2.Push(ai); gotogoto loop1;loop1; c=stack2.Pop(c);c=stack2.Pop(c);if(c=/|c=*)if(c=/|c=*) stack1.Push(c);stack1.Push(c); stack2.Push(ai);stack

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号