C++课程设计简易计算器

上传人:1888****888 文档编号:37572128 上传时间:2021-11-03 格式:DOC 页数:18 大小:187KB
收藏 版权申诉 举报 下载
C++课程设计简易计算器_第1页
第1页 / 共18页
C++课程设计简易计算器_第2页
第2页 / 共18页
C++课程设计简易计算器_第3页
第3页 / 共18页
资源描述:

《C++课程设计简易计算器》由会员分享,可在线阅读,更多相关《C++课程设计简易计算器(18页珍藏版)》请在装配图网上搜索。

1、仰恩大学C+课程设计课程设计题目设计简易计算器班 级 090901专 业 计算机科学与技术学 号 110920090120学生姓名 指导教师 完成日期 2011 年 01 月 13 日摘 要课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。其实认真学习一门语言并不难,关键是所追求的学习方法和途径。通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。我认

2、为遇到难题并不可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序的编写基础是MFC汉化版,它在MFC的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,

3、求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。第1章 选题的意义1.1自我介绍我的名字是涂国祥,就读于仰恩大学,计算机090901班,计算机与信息学院。1.2选题1. 我选的题目是:简单计算器的设计2. 我选这道题的原因如下: 计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运

4、行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!3. 运用的数据结构和知识点MFC 绘图知识 数学函数 选择结构 循环结构 数组 指针 顺序结构 进制间的转换 时间学生任务地点教师任务备注12月17日课程设计任务的认识,初步选题;对所选题目用到的知识点上机实验。泽钏楼讲述课程设计要求,使用的知识点;登记考勤。学生查找资料、确定选题。12月24日1.初步完成课程设计报告中“选题意义”部分的内容,并上传服务器;2.根据课程设计任务书要求,进行系统功能需求分析和设计;3.设计初始代码框架。泽钏楼整理学生选

5、题;课程设计指导;登记考勤。12月29日系统功能需求分析,系统设计;初步完成课程设计报告“系统功能需求分析”,“系统设计”部分的内容,并上传服务器。泽钏楼批阅选题报告;课程设计指导;登记考勤。12月31日完善课程设计报告“系统功能需求分析”,“系统设计”部分的内容,并上传服务器;设计初始代码,部分功能实现。泽钏楼评阅系统功能需求分析、系统设计;课程设计指导;登记考勤。第2章 系统功能需求分析2.1系统的基本要求1. 算术运算功能。能够实现+、-、*、/、mod、int运算。2. 函数运算功能。能够实现exp、ln、sin、xy、log、cos、x3、n!、tan、x2、1/x等运算。3. 进制

6、之间的转换功能。能够实现十六、十、二、八进制数据之间的转换。4.通过键盘控制字符和数字的输入。2.2数据结构设计及用法说明此程序调用的函数主要有 /*数学函数的定义*/ /*屏幕操作函数*/ /*I/O函数*/ /*库函数*/ / /*字符操作函数*/。基本使用:用控制鼠标图形移动,当*变量长度参数表*/ /*图形函数*/ /*字符串函数*移动到相应得按钮时按回车键输入当前数字或执行对应的函数。加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求余:

7、输入一个数,按“mod”,按“=”,输出结果。取整:输入一个数,按“int”,按“=”,输出结果。八进制转十进制:输入一个八进制数,按“10-8”,按“=”,输出十进制结果。十六进制转十进制:输入一个十六进制数,按下“jz”+“16- 10” 按“=”,输出十进制结果2.3 功能模块键盘控制模块:通过int specialkey(void)和键盘来实现输入数据,操作方式的控制。计算模块:通过调用math.h中的数学函数,如:+、-、*、/、sin、cos、mod等来实现对result的赋值。输出模块:在指定位置输出计算模块中result的值,在指定位置输出键盘控制模块中对参量所赋的值以及在指定

8、位置输出键盘控制模块中得到的运算符。第3章 系统设计3.1流程图流程图开始输入第一个数x输入第二个数y+、-、*、/、xy、log、等显示结果结束mod、x3、ln、exp、tan、cos、x2、1/x、n!、sin、以及进制转换按“Esc”退出按“CE”清零3.2数据结构用到了if判断语句,for循环语句,while语句,且主要通过while语句实现对键盘、光标的操作和数据、运算符的输入,还用到了switch语句,switch语句的主要作用是实现对所输入的数据的运算操作,然后将运算结果赋值给result,最后输出。第4章 系统实现本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,

9、具有很好的数据处理能力和稳定性。并且使用MFC汉化版。生成的程序可移植性强、兼容性好。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。运行画面本程序通过调用int specialkey(void) 和#include 来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void) 和#include 来实现对光标的操作。计算器图形采用Turbo C 2.0绘图程序制作,大致运行画面如下。光标起始位置在“A”上,通过键盘来控制光标的运动,如进行双目运算1+2时,移动光标,将其指在“1”上,按“Enter”,在屏幕上会输出“1”,再移动

10、光标,将其指在“2”上,按“Enter”,在屏幕上会在指定位置输出“2”,再移动光标,将其指在“=”上,按“Enter”,结果便会在指定位置输出。按下“CE”可以清零,重新进行下一组运算。按“Esc”可以退出系统。第5章 总结经过了三个星期的课程设计,在设计中我们遇到了很多编程问题,最后我努力攻克一个个难关,我做得是计算器的设计。测试阶段中发现了几处错误导致程序不能编译,去上网查找相关的资料, 又同学一起讨论。通过耐心的分析源代码终于编好了一个完整无误的程序。在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的

11、不足,加深了对c语言的理解。在学习之余体验到收获的感觉.善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过

12、的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相我们把前面所学过的知识又重新温故了一遍。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运

13、用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增

14、设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。课程设计达到了专业学习的预期目的。在一个星期的课程设计之后,我感到不仅实际动手能力有所提高,更重要的是通过对C语言的了解,进一步激发了我对C语言的兴趣。5.1致谢词致谢词感谢张老师三周来的辛勤指导,每当我们遇到难题时您都能随时帮我们很好的解决,并且告诉我们为什么这样改,指导得很详细,很认真。您使我们知道了C语言程序设计 的趣味性。5.2主要参考文献:C+语言程序设计与实践张思民5.3中心算法;设计一个类CCALDLG,类里包含主要数据成员number1和number2,主要成员函数cal,在该函数内利用case语句实现各种基

15、本计算。利用MFC实现人机交互。增加了清零求导,开根号等功能。5.4程序代码;/ jsqDlg.cpp : 实现文件#include stdafx.h#include jsq.h#include jsqDlg.h#include cmath#ifdef _DEBUG#define new DEBUG_NEW#endifdouble a1; /保存计算中的第一个数double a2; /保存计算中的第二个数double a3;int m_sign; /用来表示运算符号,为“+”,为“-”,为“*”,为“/”int add=0; /用来判断是否已经存在别的数,若没有,则令add=0;若有,则令ad

16、d=1int point=0; /表示小数点,初始化无小数点为int num=0; /表示小数点后的位数double i=0;int m=0;/ 用于应用程序“关于”菜单项的CAboutDlg 对话框class CAboutDlg : public CDialogpublic:CAboutDlg();/ 对话框数据enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:DECLARE_MESSAGE_MAP();CAboutDlg:

17、CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ CjsqDlg 对话框CjsqDlg:CjsqDlg(CWnd* pParent /*=NULL*/): CDialog(CjsqDlg:IDD, pParent), m_edit(0)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAI

18、NFRAME);void CjsqDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_edit);BEGIN_MESSAGE_MAP(CjsqDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()/AFX_MSG_MAPON_BN_CLICKED(IDC_BUTTON10, &CjsqDlg:OnBnClickedButton10)ON_BN_CLICKED(IDC_BUTTON1, &

19、CjsqDlg:OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CjsqDlg:OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CjsqDlg:OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON4, &CjsqDlg:OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON5, &CjsqDlg:OnBnClickedButton5)ON_BN_CLICKED(IDC_BUTTON6, &CjsqDlg:OnBnClickedButton

20、6)ON_BN_CLICKED(IDC_BUTTON7, &CjsqDlg:OnBnClickedButton7)ON_BN_CLICKED(IDC_BUTTON8, &CjsqDlg:OnBnClickedButton8)ON_BN_CLICKED(IDC_BUTTON9, &CjsqDlg:OnBnClickedButton9)ON_BN_CLICKED(IDC_BUTTON11, &CjsqDlg:OnBnClickedButton11)ON_BN_CLICKED(IDC_BUTTON12, &CjsqDlg:OnBnClickedButton12)ON_BN_CLICKED(IDC_B

21、UTTON13, &CjsqDlg:OnBnClickedButton13)ON_BN_CLICKED(IDC_BUTTON14, &CjsqDlg:OnBnClickedButton14)ON_BN_CLICKED(IDC_BUTTON15, &CjsqDlg:OnBnClickedButton15)ON_BN_CLICKED(IDC_BUTTON16, &CjsqDlg:OnBnClickedButton16)ON_BN_CLICKED(IDC_BUTTON18, &CjsqDlg:OnBnClickedButton18)ON_BN_CLICKED(IDC_BUTTON17, &CjsqD

22、lg:OnBnClickedButton17)ON_BN_CLICKED(IDC_BUTTON19, &CjsqDlg:OnBnClickedButton19)ON_BN_CLICKED(IDC_BUTTON20, &CjsqDlg:OnBnClickedButton20)ON_BN_CLICKED(IDC_BUTTON22, &CjsqDlg:OnBnClickedButton22)ON_BN_CLICKED(IDC_BUTTON21, &CjsqDlg:OnBnClickedButton21)ON_BN_CLICKED(IDC_BUTTON26, &CjsqDlg:OnBnClickedB

23、utton26)ON_BN_CLICKED(IDC_BUTTON23, &CjsqDlg:OnBnClickedButton23)END_MESSAGE_MAP()/ CjsqDlg 消息处理程序BOOL CjsqDlg:OnInitDialog()CDialog:OnInitDialog();/ 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-Append

24、Menu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码return TRUE; / 除非将焦点设置到控件,否则返回TRUEvoid CjsqDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;

25、dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。对于使用文档/视图模型的MFC 应用程序,/ 这将由框架自动完成。void CjsqDlg:OnPaint()/当用户拖动最小化窗口时系统调用此函数取得光标显示。/HCURSOR CjsqDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CjsqDlg:OnBnClickedButton10()/按钮0/ TODO: 在此添加控件通知处理程序代码if(poin

26、t=0)if(add=0)m_edit=0;elsem_edit=m_edit*10;elsenum+;add=1;UpdateData(false);UpdateData(false);void CjsqDlg:OnBnClickedButton1()/按钮1/ TODO: 在此添加控件通知处理程序代码if(point=0)if(add=0)m_edit=1;elseif(m_edit=0) /判断所输入的是几位数;m_edit=m_edit*10+1;elsem_edit=m_edit*10-1;elsenum+;if(m_edit=0) /判断所输入的是否是小数;即整数+小数;m_edi

27、t=m_edit+(double)1/pow(double)10,num);elsem_edit=m_edit-(double)1/pow(double)10,num);add=1;UpdateData(false);按钮2,3,4,5,6,7,8,9与此相同;void CjsqDlg:OnBnClickedButton11()/按钮2x号 / 所输入的数的两倍;/ TODO: 在此添加控件通知处理程序代码UpdateData(true);i=m_edit;a1=i+a1;m_edit=a1;/UpdateData(false); / 即加上了与输入的数相同;m_sign=0; point=0

28、; add=0; num=0;OnBnClickedButton15();void CjsqDlg:OnBnClickedButton12()/按钮-号/ TODO: 在此添加控件通知处理程序代码UpdateData(true);if(m=0)a1=m_edit;m_edit=a1;m=1;elsei=m_edit;a1=a1-i;m_edit=a1;m=1;UpdateData(false);m_sign=1;point=0;add=0;num=0;void CjsqDlg:OnBnClickedButton13()/按钮*号/ TODO: 在此添加控件通知处理程序代码UpdateData(

29、true);if(m=0)a1=m_edit;m_edit=a1;m=1;elsei=m_edit;a1=a1*i;m_edit=a1;m=1;UpdateData(false);m_sign=2;point=0;add=0;num=0;void CjsqDlg:OnBnClickedButton14()/按钮/号/ TODO: 在此添加控件通知处理程序代码if(m=0)UpdateData(true);a1=m_edit;m_edit=a1;UpdateData(false);m=1;elsei=m_edit;if(i=0)MessageBox(_T(除数不能为!);OnBnClickedB

30、utton16();elsea1=a1/i;m_edit=a1;UpdateData(false);m=1;m_sign=3;point=0;add=0;num=0;void CjsqDlg:OnBnClickedButton15()/按钮=号/ TODO: 在此添加控件通知处理程序代码UpdateData(true);a2=m_edit;switch(m_sign)case 0:a3=a1+a2;m_edit=a3;UpdateData(false);break;case 1:a3=a1-a2;m_edit=a3;UpdateData(false);break;case 2:a3=a1*a2

31、;m_edit=a3;UpdateData(false);break;case 3:if(a2=0)OnBnClickedButton16();/当除数为时清零MessageBox(_T(除数不能为!);elsea3=a1/a2;m_edit=a3;UpdateData(false);break;add=0;a1=0;a2=0;i=0;m=0;void CjsqDlg:OnBnClickedButton16()/清零/ TODO: 在此添加控件通知处理程序代码m_edit=0;UpdateData(false);a1=0;a2=0;a3=0;add=0;num=0;point=0;m=0;vo

32、id CjsqDlg:OnBnClickedButton17()/按钮+/-/ TODO: 在此添加控件通知处理程序代码m_edit=0-m_edit;UpdateData(false);void CjsqDlg:OnBnClickedButton19()/按钮ex/ TODO: 在此添加控件通知处理程序代码m_edit=sqrt(m_edit);UpdateData(false);void CjsqDlg:OnBnClickedButton20()/按钮x2/ TODO: 在此添加控件通知处理程序代码m_edit=m_edit*m_edit;UpdateData(false);void Cj

33、sqDlg:OnBnClickedButton22()/按钮3.14/ TODO: 在此添加控件通知处理程序代码m_edit=exp(m_edit);UpdateData(false);void CjsqDlg:OnBnClickedButton21()/按钮1/x;/ TODO: 在此添加控件通知处理程序代码m_edit=1/m_edit;UpdateData(false);void CjsqDlg:OnBnClickedButton26()/按钮CE;/ TODO: 在此添加控件通知处理程序代码m_edit=0;UpdateData(false);void CjsqDlg:OnBnClickedButton23()/按钮log;/ TODO: 在此添加控件通知处理程序代码m_edit=log(m_edit);UpdateData(false);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!