【vc++精品源码栏目提醒】:网学会员在vc++精品源码频道为大家收集整理了“VC++科学计算器设计源代码及流程图-课程设计 - 行政公文“提供大家参考,希望对大家有所帮助!
VC科学计算器设计源代码及流程图 一、课程设计的目的与要求 (一)课程设计目的与任务 1、熟悉掌握基于对话框的程序编写。
2、熟练掌握放置控件及Controls工具条的使用。
3、掌握控件摆放的基本方法,熟练掌握Dialog工具条的使用。
4、熟悉建立对话框步骤。
(二)题目要求 所编写的科学计算器是程基于对话框的程序,能够进行加减乘除运算,开方,立方,三角函数,反三角函数等功能,仿照Windows自带的计算器进行编写 。
二、设计正文 1 系统分析 ①系统可行性分析:伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作用。
我们在学习生活中,常会遇到一些繁杂的数值运算,我们须要用到科学计算器,所以便着手开发了这个科学计算器程序,既紧随科技发展的前沿,又方便了我们的生活,具有一定的现实意义。
②系统功能分析:此程序采用VC编写,是一个基于对话框的应用程序,当用户在对话框上点击相应按钮时先执行输出按钮对应字符串,用户可以在对话框上选择相应的科学计算操作按钮,通过程序内相关代码完成相应的科学计算功能。
2 功能详细描述及框图 本科学计算器可以进行加、减、乘、除、乘方、立方、开方等简单四则运算,能进行连加连等计算,科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切,指数等函数运行,以及角度、弧度、梯度三种方式实现上述部分函数,并建有一个具备记忆功能的列表框,可对列表内添加的数字进行求和以及平均值计算,但仅限于十进制下,还可以进行二进制,八进制,十进制,十六进制之间的相互转换,从二进制最多可以输入24位数,从八进制最多可以输入8位数,十进制最多可以输入30位数,十六进制最多可以输入6位数,在Window下直接运行即可,不支持键盘输入,对不正确表达式能指出错误原因。
3、数据结构设计 Int datakind 存放正在计算的数字的进制类型 Bool flagjs 连加时用做标记 Bool flagjs1 连等时用做标记 Int jiaodu 角度,弧度,梯度的类型存放 M_list 存放数字的列表框 M_radio 进制选择的单选按扭 M_radio2 角度选择的单选按扭 CString m_vfront 存放正在输入的数字 Char method 存放计算符号 Bool newinput 是否输入新数字的标志 Float number1 number2 number3 number4 存放第一,第二操作数和计算结果。
4、主要功能逻辑过程和实现算法 数字键的实现: 双目运算符的实现: void CJSQDlg::OnJia ifflagjs jisuan flagjsfalse flagjs1true method newinputTRUE UpdateData m_vbackm_vfront ifdatakind10 number1atofm_vfront else number1coverttofloatm_vfrontdatakind 669 VC科学计算器设计源代码及流程图 单目运算符的实现void CJSQDlg::On_Xpingfang newinputTRUE UpdateDatatrue if m_vfront.GetLength30 MessageBox为了保证数据能显示完整及数据不溢出请你不要计算这么大的数据n现在数据位数已经超过30位了 float tempatofm_vfrontatofm_vfront m_vfront.Formatftemp m_vfront.TrimRight0 m_vfront.TrimRight. UpdateDataFALSE 进制转换的实现: void CJSQDlg::On_Erjinzhi int tmp float m char datacoverttemp100 newinputTRUE ifdatakind10 mcoverttofloatm_vfrontdatakind else matofm_vfront tmpintm datakind2 _itoatmpdatacoverttemp2 m_vfront.Formatsdatacoverttemp UpdateDataFALSE void CJSQDlg::On_shijinzhi int tmp float m char datacoverttemp100 newinputTRUE ifdatakind10 mcoverttofloatm_vfrontdatakind else matofm_vfront tmpintm datakind10 m_vfront.Formatfm m_vfront.TrimRight0 m_vfront.TrimRight. UpdateDataFALSE 三角函数计算的实现: void CJSQDlg::On_sin newinputTRUE ifjiaodu1 UpdateDatatrue float tempsinatofm_vfront m_vfront.Formatftemp m_vfront.TrimRight0 m_vfront.TrimRight. else ifjiaodu0 float tempsinatofm