可视化编程课程设计含源码_第1页
可视化编程课程设计含源码_第2页
可视化编程课程设计含源码_第3页
可视化编程课程设计含源码_第4页
可视化编程课程设计含源码_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1设计题目:计算器系统实现1. 分别用 API 与 MFC 编程来实现计算器的以下功能。2. 实现计算器的基本功能:连续数据的无优先级混合运算(加减乘除)3. 可以实现其他附加功能:优先级运算,加入括号,加入其他函数运算功能等。 (不在要求范围之内)4. 要求界面良好,功能完整。一基于 MFC 的简单计算器1设计思路打开 MFC 应用操作界面,布局计算器界面,利用组框将计算器界面分为三个部分,一个是编辑输入,一个是数字界面,一个是功能键部分。利用布局参考线对齐按钮,使界面美观。然后就是对各个按钮进行属性设置,关联类设置,接着对各个按钮进行源代码编程。最后,调试找出问题,解决问题,运行 MFC成品计算器。2简单操作以及功能说明由于本人技术有限,所以本程序只能按照正确的计算运算顺序进行,该简单计算器能进行四则混合运算,除了加减乘除外,添加了一个括号,对于有些未知的错误,由于时间有限,并未来得及全面测试使用。该简单计算器能实现四则运算,退格运算,清零运算,并且支持输出的结果保留给直接的下一个运算。3系统实现的各个模块1)编辑框模块由于编辑框模块需要连续输入字符串,所以在给编辑框建立类向导时,给编辑框定义的成员变量应该是字符串(String)变量。编辑框模块用于运算算式的输入,以及结果的输出。2)数字键模块数字键模块比较简单,该简单计算器数字键模块设置有 09 数字,还设置有小数点,以及正负数转换实现按钮。数字键模块按钮在建立类向导时无需定义成员变量,但是需要定义按钮响应链接,用于实现点击按钮,在编辑框上显示点击按钮信息。3)功能键模块功能键模块包括加减乘除基本按钮,以及一个输入错误是后能用于退格功能的退格键按钮,还有一个用于区别优先级运算的括号功能,当然有最重要的计算结果输入按钮,等于号按钮。在编辑框附近还有一个功能键,就是清除功能键,用于清除编辑框,以便实现下一轮输入。4设计过程1) 设计总流程图22) 界面的设计33) 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION MessageHandlerIDD_JISUANQI_DIALOG 简易计算器 N/AIDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_OPER_ADD + OnOperAddIDC_OPER_SUB - OnOperSubIDC_OPER_MULTI * OnOperMultiIDC_OPER_DIV / OnOperDivIDC_ADD_SUB +/- OnAddSubIDC_POINT . OnPointIDC_EQUAL = OnEqualIDC_LBRACKET ( OnLbracket4IDC_RBRACKET ) OnRbracketIDC_BACKSPEACE OnBackspaceIDC_CLEAR C OnClear5各模块源程序1) 数字键模块void CJiSuanQiDlg:OnNum0() if(calculated = TRUE) /已经按了等号,不让其再接受字符return;UpdateData(TRUE);/刷新编辑框界面calcutateString += “0“;/存储输入的数字m_data += “0“;/显示输入的数字UpdateData(FALSE);2) 功能键模块 加法功能键源程序void CJiSuanQiDlg:OnOperAdd() if(calculated = TRUE)/其前一步按了 = 号calculated = FALSE;m_data = oldResult;double temp = atof(oldResult);/定义临时变量存储上一步结果if(temp = 1)/判断是否能执行退格操作m_data = m_data.Left(count -1);count = calcutateString.GetLength();calcutateString = calcutateString.Left(count -1);UpdateData(FALSE); 清除功能键源程序void CJiSuanQiDlg:OnClear() / TODO: Add your control notification handler code herem_data = “;oldResult = “;calcutateString = “;calculated = FALSE;UpdateData(FALSE); 括号功能键源程序void CJiSuanQiDlg:OnLbracket() / TODO: Add your control notification handler code hereif(calculated = TRUE) /已经按了等号,不让其再接受字符return;UpdateData(TRUE);calcutateString += “(“;m_data += “(“;UpdateData(FALSE); 正负转换功能键源程序void CJiSuanQiDlg:OnAddSub() / TODO: Add your control notification handler code hereif(calculated = FALSE)6UpdateData(TRUE);calcutateString = calcutateString + “0“ + “-“;m_data += “-“;UpdateData(FALSE);6 运行结果界面截图7 制作过程中所遇问题以及解决方法过程1) 源代码编写错误通过查阅资料,请教同学,逐步一一解决。2) 成员变量定义错误例如,编辑框成员变量应该定义为 String,应为编辑框输入的是一串字符,一开始定义为 Float,以为只是简单的数字输入计算,发现错误后,经查阅资料,请教同学,顺利解决。3) 出现部分成员函数、堆栈函数未定义通过编译发现部分成员变量未定义,通过在源代码中添加相应代码依然不能解决,仔细查阅,发现是此项成员未在工程中定义,也就是说头文件中没有此类成员函数,故而出现错误,找到问题,又经过多次的编译、改码、编译、改码,最终终于调试成功。此过程比较艰辛。74) 工程设置错误对于工程的设置,这是一个比较难以发现问题的地方,我不清楚其他同学是否出现此类问题,对于我来说,印象最深刻的是就是常规设置项中输出路径不能是 Debug,而应该是 Release。5) 个人能力问题这方面的问题,应该可以提高,不过暂时性的在这项工程中暴露了很多,比如,不能实现计算器的其他更为复杂的科学计算,该简单计算器必须按照正确的输入顺序进行输入,出现错误时,计算器直接不能运行,相信以后会有提高。8 小结经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功能。正所谓“纸上谈兵终觉浅,觉知此事要躬行。”所以在本学期课程设计是很及时、很必要的。这样不仅能加深我们对 MFC 程序设计的掌握,而且还及时、真正的做到了学以致用。主要是以下几点。基本功要过硬。不能马虎经常犯犯小错误。提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的头脑来完成它了。要善于思考。程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。只有这样才能纠正程序的不足并使其更加人性化。8二、基于 API 的简单计算器1设计思路打开 VC6.0,创建一个计数器工程,进入源码编写,设计计算器界面,考虑数字键与功能键按下的实现函数,进行编程,调试,运行程序。2简单操作以及功能说明该 API 计算器可以实现四则混合运算,并且支持运算结果继续用于下次运算,还支持一个单目运算符开方,运算结果被 gcvt 函数将双精度结果转换成字符串,实现了精度的要求,通过工程还添加了简单的功能菜单。由于本人技术水平有限,该 API 计算器不能实现输入窗口显示完整的输入字符串,相信通过以后的努力,能够实现改进。3系统实现的各个模块1)头文件以及主函数模块头文件模块定义各种程序中需要使用的头文件,定义程序中需要使用的数字键、功能键处理函数,申明程序中需要使用的各种变量。主函数模块主要用于初始化窗口函数,布局窗口界面大小。2)数字键以及功能键定义模块该模块定义数字键以及功能键的消息处理,包括创建数字键以及功能键,建立数字键以及功能键对于鼠标的响应,并且将响应结果输出显示于文本编辑框中。3)数字键以及功能键处理模块该模块定义两个函数 EquResult 和 NumResut,前者用于处理功能键对于消息的运算处理,后者用于处理数字键的响应并用于存储进行计算。4设计过程1)设计总流程92)界面布局105各模块源程序1)数字键以及功能键定义模块数字键源程序数字键“0”键(其余参考“0”键)hButtonOptSum0=CreateWindow(“BUTTON“, /建立按钮 0“0“,WS_CHILD | WS_VISIBLE,12,185, /按钮位置78,36, /按钮大小hwnd,(HMENU) IDB_NUM0, /按钮句柄hInst,NULL);功能键源程序功能键“+”键(其余参考“+ ”键)hButtonOptAdd=CreateWindow(“BUTTON“, /建立按钮+“+“,WS_CHILD | WS_VISIBLE,156,50,36,36,hwnd,(HMENU)IDB_OPTADD,hInst,NULL);2)数字键以及功能键处理模块数字键处理源程序void NumResult(char *NumData)if (nOptF=0)SetWindowText(hEditResult,“);nMax=GetWindowTextLength(hEditResult)+1;/定义中间缓存nMAXGet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论