c++程序设计实践报告简单计算器模版

c++程序设计实践报告简单计算器模版
c++程序设计实践报告简单计算器模版

程序设计实践报告

题目名称:

系名称:

专业班级:

学生姓名:

2016 年10 月

目录

摘要 (2)

1 引言 (2)

1.1 课题背景 (2)

1.2课程设计目的 (2)

2 开发工具的介绍 (3)

2.1关于Visual C++ (3)

2.2可行性分析 (4)

2.3需求分析 (4)

3 功能说明 (4)

4 系统的实现 (5)

4.1窗体设计 (5)

4.2编辑资源 (6)

4.3实现高级按钮控件类 (8)

4.4实现高级编辑控件类 (12)

4.5对话框界面设计 (15)

4.6数值计算功能的实现 (20)

5 程序结果的演示 (21)

5.1测试的研究与选择 (21)

5.2测试环境 (21)

5.3实例测试结果 (22)

结束语 (23)

参考文献 (23)

用VC++制作多功能计算器

摘要本课程设计将实现一个简单计算器。其类似于Windows附件中自带的计算器。这个计算器不仅实现了简单的四则运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。在课程设计中,系统开发平台为Windows 2000XP,程序设计设计语言采用Visual C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。

关键词程序设计;计算器;MFC;按钮控件

1 引言

本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

1.1 课题背景

计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

1.2 课程设计目的

在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

2 开发工具的介绍

2.1 关于Visual C++

Visual C++6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的优秀集成开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。Visual C++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual C++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。

VC++6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软硬件没有特殊要求。就是说它对环境的要求与Windows 95/98、Windows NT要求是一致的。

硬件要求:一般在586以上的处理器、16MB以上内存、100MB以上的硬盘。

软件要求:Windows 95/98或Windows NT3.51以上版本。

VC++ 6.0系统可以在一张CD盘上,也可以在“Visual Studio( Visual C++、Visual Foxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。

在安装好VC 6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe 安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。

与一般的应用软件一样,有以下两种启动方式:

(1)通过“开始”按钮,选择“程序”菜单,然后打开“Microsoft Visual studio 6.0中文版”

子菜单中的“Microsoft Visual C++ 6.0 中文版”程序。

(2)用户也可以使用命令行启动VC。单击“开始”按钮后选择“运行”命令,在“运行”对话

框中输入c:\Program Files\Microsoft Visual Studio\VC98\VC6.exe(按默认盘符和路径安装)即可。

2.2 可行性分析

本设计是简单计算器。日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

2.3 需求分析

本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。

3 功能说明

它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直接通过键盘直接输入。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

(1)包含的功能有:加、减、乘、除运算,开方、求倒数等功能[1].

(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。

(3)给对话框添加菜单。

(4)制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色[3]。

(5)制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。

(6)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。

(7)实现对话框的扩展功能[2]。

(8)计算功能基本上是用系统内部函数。

(9)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(10)“CE”按钮可以清除所有已输入的数据从头计算

功能模块的实现:

(1)首先,添加高级按钮控件类,在这个类中实现高级的按钮控件。在此类中对于所有的对于按钮的绘制工作都是在DrawItem函数中完成的,实现按钮对鼠标不同的位置和动作改变不同的颜色,并且按钮的客户区域变成一个椭圆。

(2)其次,添加一个高级编辑控件类,在此类的基础上实现高级编辑控件。在OnDisplay函数中设置编辑框的显示文本,再调用OnDraw函数将其显示出来,并用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。

(3)最后,实现主对话框界面功能,主要是加载菜单资源和对话框扩展功能的实现。在CCalculatorDlg::OnCreate函数中设定对话框的初始大小与位置,可以在这个对话框中进行窗口风格修改,位置设置等操作,然后添加菜单项ID_EXTEND的响应函数OnExtend。

4系统的实现

4.1 窗体设计

利用MFC AppWinzard生成计算器应用程序框架具体步骤如下:

(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入Calculator 。Lacation文本框是指项目的本地路径。

(2)单击OK按钮,弹出MFC AppWinzard_Step1对话框。选中单选按钮,如图所示。

(3)单击Next按钮,弹出MFC AppWinzard_Step2 of4对话框,如图所示。

(4)单击Next按钮,弹出MFC AppWinzard_Step3 of4对话框,如图所示。

(5)单击Next按钮,弹出MFC AppWinzard_Step4 of4对话框,如图所示。单击Finish按钮,创建框架。

4.2 编辑资源

(1)编辑对话框及控件资源

利用Visual C++提供的资源编辑器对对话框资源进行编辑。删除对话框中默认的OK和Cancel按钮。添加一个Edit控件,其控件ID为IDC_DSPEDIT。添加若干按钮控件,其ID如表4-1所示。

表4-1 按钮控件资源清单

按钮名称按钮ID 用途

0 BTN_0 按键0

1 BTN_1 按键1

2 BTN_2 按键2

3 BTN_3 按键3

4 BTN_4 按键4

5 BTN_5 按键5

6 BTN_6 按键6

7 BTN_7 按键7

8 BTN_8 按键8

9 BTN_9 按键9

。BTN_10 小数点

= BTN_11 求值

+ BTN_12 加号

- BTN_13 减号

* BTN_14 乘号

/ BTN_15 除号

CE BTN_16 清屏

Sqrt BTN_17 开方

1/x BTN_18 倒数

sin BTN_19 正弦

cos BTN_20 余弦

tan BTN_21 正切

x^2 BTN_22 平方

x^3 BTN_23 立方

x^y BTN_24 以X为底的y次幂exp BTN_25 以e为底的幂

ln BTN_26 以e为底的对数

log BTN_27 对数

-/+ BTN_29 正负号

10^x BTN_30 10的x次方

n! BTN_31 N的阶层

添加2个单选按钮,按钮资源清单如下

表4-2 单选按钮控件资源清单

控件名设置ID

DEGREE BTN_DEGREE

RADIAN BTN_RAD

添加4个静态框,将编辑控件,普通计算,高级计算分别分组。其效果如图4-1所示。

图4-1编辑对话框资源

(2)编辑菜单资源

在Visual C++中的Workspace工具栏中,选中ResourceView选项卡。在其中的Menu项上右击,在弹出的快捷菜单中选择Insert命令,如图4-2所示。

图4-2添加菜单资源

将添加的菜单资源的ID更改为IDR_MENU。利用资源编辑器对菜单进行编辑,编辑后的菜单如图4-3所示。

图4-3 编辑菜单资源

4.3 实现高级按钮控件类

利用ClassWizard添加一个新类,如图4-5所示。

图4-5添加CAdvButton类

(1)添加成员变量和成员函数

为实现高级按钮控件对鼠标的移动和单击作出相应的颜色变化。首先在CAdvButton的头文件中加入几种预定义颜色,其代码如下:

#define DesiableColor RGB(192,192,192) //灰色, 按钮不可用

#define FocusColor RGB(255,0,0) //红色, 按钮拥有焦点

#define SelectColor RGB(0,255,0) //绿色, 按钮被按下

#define DefaultColor RGB(0,0,255) //蓝色, 默认

#define TextColor RGB(128,128,128) //浅灰色, 文本颜色

接下来,添加成员变量:

public:

CRect m_ClientRect; //用来保存按钮的客户的矩形区域

CRgn m_ClientRgn ; //用来保存按钮的客户区域,非矩形

UINT m_State; //按钮所处状态

CPoint m_Point; //当前鼠标位置

BOOL m_IsTimerOn; //标识计时器是否已经打开

利用ClassWizard添加消息映射和响应函数:

图4-6添加响应函数

再利用ClassWizard覆盖父类中的两个关键的虚函数:

//{{AFX_VIRTUAL(CAdvButton)

public:

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

protected:

virtual void PreSubclassWindow();

//}}AFX_VIRTUAL

其中对于所有的对于按钮的绘制工作都是在DrawItem函数中完成的。

(2)添加创建按钮控件代码

按钮的创建分两步完成。首先,调用构造函数对按钮对象进行初始化;其次,调用Create函数创建按钮。代码如附录1所示。

(3)设置按钮形状、外观、颜色、标题

PreSubclassWindow函数在窗口被创建之前就被调用,因此,在PreSubclassWindow函数中,将按钮的风格设为BS_OWNERDRAW。实现代码如下:

//修改按钮控件风格

ModifyStyle(0,BS_OWNERDRAW|BS_PUSHBUTTON);

要使按钮能对鼠标的移动与单击作出不同的变化,那么按钮就需要时刻知道鼠标的位置与动作。所以,必须在鼠标的单击、弹起及移动消息的响应函数中填加相应的代码,以获取鼠标的位置与动作。

在鼠标左键按下时,得到按钮窗口客户区域的屏幕坐标位置和鼠标的屏幕坐标位置。当鼠标坐标位落于窗口客户区域内,且当前按钮控件处于非选中状态时,将按钮状态标识设为选中状态,即将m_State设为2。接着,调用Invalidate函数,使客户区无效,框架会自动调用DrawItem函数,重绘客户区。实现代码如下://当鼠标在按钮的客户区内按下时,改变按钮状态

void CAdvButton::OnLButtonDown(UINT nFlags, CPoint point)

{

CRect rect;

GetWindowRect(&rect); //得到按钮客户区域的屏幕坐标位置

GetCursorPos(&m_Point); //得到鼠标的屏幕坐标位置

if((rect.PtInRect(m_Point))&&(m_State != 2))

{

m_State = 2; //2:select state

Invalidate(); //重绘客户区

}

CButton::OnLButtonDown(nFlags, point);

}

在鼠标左键抬起时,得到按钮窗口客户区域的屏幕坐标位置和鼠标的屏幕坐标位置。当鼠标坐标位置落于窗口客户区域内,且当前按钮控件处于选中状态时,将按钮状态标识设为非选中状态,即将m_State设为1。接着,调用Invalidate函数,使客区无效,框架会自动调用DrawItem函数,重绘客户区。其代码如附录1所示。

在用户移动鼠标时,如果计时器没有启动,则启动计时器,并将计时器启动标识m_IsTimerOn设为TRUE。其实现代码如下:

if(!m_IsTimerOn) //如果计时器没用启动

{

SetTimer(1000,100,NULL); //启动计时器

m_IsTimerOn = TRUE;

}

如果鼠标已经移出了按钮的客户区,则消毁计时器,并将计时器的起始标识

m_IsTimerOn设为FALSE。OnTimer函数的实现代码如附录1所示。

实现客户区的绘置函数DrawItem。在DrawItem函数中,首先得到窗口的有效矩形区域,在此矩形区域内创建椭圆。调用SetWindowRgn函数,设置窗口的有效区域为椭圆。从参数lpDrawItemStruct结构中得到按钮控件客户区域的设备环境变量指针。根据按钮当前状态,创建不同的画笔。调用设备环境类的成员函数,设置背景模式为透明,选择画笔,在按钮客户区内绘制椭圆及显示文本。其实现代码如附录1所示。

通过上面操作,按钮已经具有对鼠标不同的位置和动作改变不同的颜色。并且,按钮的客户区域已经是一个椭圆,而不再是一个矩形。正是下面的代码将按钮的客户区域设定为椭圆形:

GetClientRect(&m_ClientRect); //通到窗口的有效矩形区域

m_ClientRgn.DeleteObject(); //删除区域对象

m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientRect); //在矩形区域内创建椭圆

//设置窗口的有效区域为椭圆

SetWindowRgn(m_ClientRgn,FALSE);

至此,一个完整的高级按钮类全部完成。其效果如图4-7所示。

图4-7运行结果

4.4 实现高级编辑控件类

利用ClassWizard添加一个新类,如图4-8所示.

图4-8添加CAdvEdit

(1)添加成员变量和成员函数

为CAdvEdit类添加一个字符串类型的成员变量m_Caption,用来记录编辑框中的文本内容。其实现代码如下://CAdvEdit头文件

public:

CString m_Caption; //编辑框文本

利用AppWizard添加消息函数OnPaint。如图4-9所示。

图4-9添加函数

添加两个public类型的成员函数,分别用来绘制编辑控件客户区和设置编辑控件的显示文本。实现代码如下:public:

void OnDraw(); //绘制编辑控件客户区

void OnDisplay(LPCTSTR lpszStr); //设置编辑控件显示文本

protected:

//{{AFX_MSG(CAvEdit)

Afx_msg void OnPaint(); //WM_ON_PAINT消息的响应函数

//}}AFX_MSG

图4-10添加成员变量

(2)添加编辑控件代码

在OnDisplay函数中设置编辑框的显示文本。实现代码如下:

m_Caption = lpszStr;

OnDraw();

在OnPaint函数中调用自定义函数OnDraw。实现代码如下:

CPaintDC dc(this); // device context for painting

OnDraw();

在OnDraw函数中,在编辑控件客户区域内绘制文本。首先,得到编辑控件客户区的矩形域;其次,得到编辑控件客户区的设备环境变量;接着,用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。效果如图4-11所示,其代码如附录2所示。

图4-11运行结果

4.5 对话框界面设计

对主对话框添加成员变量和函数。

主要成员变量:

//CCalculatorDlg.h头文件

CButton m_DspStatic;

CAdvEdit m_DspEdit; //显示计算结果的编辑框

CMenu* m_Menu;//对话框菜单按钮

BOOL m_IsExtend; //标志对话框是否已扩展

主要成员函数:

//CCalculatorDlg.h头文件

//{{AFX_VIRTUAL(CCalculatorDlg)

Protected:

virtual void DoDataExchange(CDataExchange*pDX);//数据交换函数

//}}AFX_VIRTUAL

virtual BOOL OnInitDialog();//虚函数,可覆盖用来进行用户初始化操作

virtual void OnOK();//虚函数,覆盖用来屏蔽Enter操作

//{{AFX_MSG(CCalculatorDlg)

//响应消息ON_WM_CTLCOLOR,用以修改对话框及其控件颜色

afx_msg HBRUSH OnCtlColor(CDC*Pdc,CWnd*pWnd,UINT nCtlColor);

afx_msg void OnPaint(); //响应消息WM_ON_PAINT

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//响应消息WM_ON_CREATE

//}}AFX_MSG

除以上主要成员外,还要对每个按钮控件定义一个CAdvButton的对象与之相关联,并为每个按钮控件建军立一个成员函数来响应其EN_CLICKED消息。如图4-12所示:

图4-12为按钮控件添加消息响应

(1)加载菜单资源

在3.2节中,已经为工程新建了一个菜单资源IDR_MENU,现将其添加到计算器对话框上。利用CMenu类的LoadMenu函数,将菜单资源加载到内存中。再调用SetMenu函数,将菜单添加到对话框上,代码如附录3所示。如图4-13所示:

图4-13运行结果

(2)关联控件与对象

在CCalculatorDlg类的声明中,已经为编辑框、静态框及每一个按钮声明了相应类型的对象与之对应。但这些控件与对象的关联工作是在DoDataExchange函数中DDX_Control宏来完成的。

图4-14关联控件与对象

(3)实现对话框扩展功能

首先在CCalculatorDlg::OnCreate函数中,设定对话框的初始大小与位置。实现代码如下:

CRect rect;

GetWindowRect(&rect); //得到对话框的窗口区域矩形

//指定窗口大小与位置:宽为186像素,高度为245像素

SetWindowPos(&wndTop,0,0,186,245,SWP_NOMOVE|SWP_NOZORDER);

其次,添加菜单项ID_EXTEND的响应函数OnExtend。在OnExtend函数中,首先判断当前对话框状态,即是否已经被扩展。

如果对话框已被扩展,则收缩对话框。首先得到对话框的当前位置,将其指定为新的宽度,但高度维持不变。再将其中的编辑控件和编辑控件外的静态框收缩到合理位置。最后将菜单项ID_EXTENDR的显示文本设置为“扩展”,将表示对话框是否扩展标识变量m_IsExtend设置为FALSE。

如果对话框为非扩展,则扩展对话框。首先得到对话框的当前位置,将其指定为新的宽度,但高度不变。再将其中的编辑控件和编辑控件外的静态框收缩到合理的位置。最后将菜单项ID_EXTEND的显示文本设置为“收缩”,将表示对话框是否扩展的标识变量m_IsExtend设置为TURE,实现代码如附录3所示。效果如图4-15和4-16所示:

图4-15扩展图

图4-16收缩图

(4)屏蔽Enter键

直到现在为止,虽然计算器的界面已经完成。但是,它还有一个缺陷:当Enter键按下时,对话框应付突然关掉。这是因为对话框默认具有焦点的控件是OK键,当Enter键按下时,框架会自动执行当前拥有焦点的控件的响应函数,所以对话框自然就关闭了。要屏蔽这一功能,只要执行下面的代码就可以。

void CCalculatorDlg::OnOK()

{

//CDialog::OnOK(); //屏蔽掉此句代码

}

(5)添加背景图

为对话框添加背景图,以增加界面的美观性。首先为工程添加一幅位图资源,以作为对话框的背景。然后加入一个Static控件,将其Type属性设为Bitmap,并为Image属性选择位图资源,如图4-17所示。

图4-17添加位图

参数设置后对话框的外观如图4-18所示。

图4-18运行结果图

4.6 数值计算功能的实现

具体功能的实现首先添加成员变量。该计算器中所有的运算都是二元运算,即需要两个操作数,一个二元运算操作符。所以必须声明两个浮点数,分别用来表示初始操作数和结果操作数,同时,必须声明两个字符串类型的变量,分别用来显示初始操作数。还需要一个整形变量来记录当前运算符,以及一个整形变量来记录当前小数点按钮是否被单击过。实现代码如下:

//CCalculatorDlg.h头文件

private:

char m_buffer[100];//用来存贮需要显示的数字

CString m_StrBegin;//记录初始操作数的字符串

float DtoR; //

double m_end;//记录结果操作数

double m_begin;//记录初始操作数

int m_bit;//记录运算符

int m_IsCheckPoint;//判断是否按下了小数点符号,当其为0时,表示没有按下

当数字键0—9被单击时,则将当前所按键加到初始操作数末尾,并将初始操作数显示出来。以数字键盘被单

击为例,实现代码如下:

//以按键0的响应为例,其余0—9的响应完全类似

m_StrBegin = m_StrBegin+"0";

if (!m_IsCheckPoint) //如果小数点按下了

m_DspEdit.OnDisplay(m_StrBegin+".");

else //如果小数点没有按下

m_DspEdit.OnDisplay(m_StrBegin);

当小数点键被单击时,首先判断小数点键是否已经被单击过,以及当前初始操作数字符串是否为空。如果小数点键没有被单击过,而且当前初始操作数字符串不为空,则将小数点追加到初始操作数末尾,并且修改小数点标识m_IsCheckPoint为TRUE。实现代码如下:

if (!m_IsCheckPoint && m_StrBegin != "") //如果小数点没有按下,且字符不为空

{

m_StrBegin = m_StrBegin+".";

m_DspEdit.OnDisplay(m_StrBegin); //显示文本

m_IsCheckPoint = true; //改变标识

}

当清除键CE被单击时,则对所有的成员变量进行初始化。清除小数点标识,将保存初始操作数和结果操作数的字符串清空,将保存初始操作数和结果操作数的浮点数清0,将当前操作符清0。实现代码如下: m_IsCheckPoint = false; //消除小数点按下标记

m_StrBegin = "";

m_begin = 0.0; //清0

m_end = 0.0; //清0

m_bit = 0; //当前操作符为无效操作

当任何一个运算符键被单击时,首先根据当前运算符计算运算结果,再修改记录当前运算符的变量的值。以加号键被按下为例,实现代码如下:

//以加号为例,其余的操作符也采用类似操作

Result(); //计算运算结果

m_bit = 1; //设置当前运算类型;1代表加法运算

计算器的核心运算函数——Result。在Result中,首先将记录当前操作数的字符串中保存的字符串转化为浮点数;其次根据当前操作符的类型,选择适当的运算操作;再将记录结果操作数的浮点变量中的值转化为字符串,并显示在结果编辑框中。Result函数实现代码如附录3所示。

5 程序结果的演示

5.1测试的研究与选择

测试过程中要判断测试是否成功,要分析程序界面的变化和计算数据的结果是否正确以及各功能键是否能正常使用。

5.2 测试环境

测试环境如下:

测试系统: Windows XP

测试工具: V isual Studio C++ 6.0

5.3 实例测试结果

首先,在运行界面测试简单运算是否能正常运算,输入“34+87=”见结果图5-1所示,观察计算结果是否正确属实

图5-1“34+78=”的运行结果

其次,展开计算器,选中“度数”输入“30”单击“sin”观察结果,见图5-2所示

图5-2“sin30°”的运行结果

最后,选中“弧度”输入“15”单击“sin”观察结果,见图5-3所示

图5-3“sin15”的运行结果

结束语

经过一个月的努力,课程设计基本完成了。在课程设计的实践中,学到很多有用的知识,也积累了不少宝贵的经验。课程设计是以一个计算器的实现为基础,掌握一个基于对话框的应用程序的编程方法以及对话框常用控件的高级编程。在课程设计中我了解到到对话框应用程序的编程模式、改变按钮的客户区形状、在按钮客户区内作图及对话框的扩展等知识。在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,我从中学到了许多课堂上没学到的东西,这使得我很高兴。

经过设计的各个环节,从中学到了很多,锻炼了自己系统的设计的能力,从系统的需求到系统的功能,到系统的测试,到系统的发布,可以掌握到一个完全的过程,这样对我们以后在工作中或学习中得到很好的锻炼,为用VC++编辑软件奠定基础。

本系统适合于运行在Microsoft Windows 的各个版本下,包括Windows98、Windows Me、Windows2000、Windows XP等系统平台下。

当然,本论文所采取的解决问题的方法并不是非常完善的,在今后的学习、工作中,将继续研究并改进。

参考文献

[1] 严华峰. V isual C++课程设计案例精编. 北京:中国水利水电出版社,2002

[2] 张宏军,党留群,赵天巨.Visual C++ 6.0编程案例精解.北京:电子工业出版社,2005

[3] 郑阿奇,丁有和.Visual C++教程.北京:机械工业出版社,2006

附录1:结构化设计源程序清单

//程序名称:AdvButton.cpp

//程序功能:实现高级按钮控件类。

// 程序作者:范菊花

// 最后修改日期:2005-9-21

//构造函数

CAdvButton::CAdvButton()

{

//初始化m_ClientRect

m_ClientRect.left = 0;

m_ClientRect.top = 0;

m_ClientRect.right = 0;

m_ClientRect.bottom= 0;

m_ClientRgn.DeleteObject(); //删除区域对象

m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientR ect); //创建椭圆区域

m_State = 0;

m_Point.x = m_Point.y = 0;

m_IsTimerOn = FALSE;

}

//重载父类Create函数

BOOL CAdvButton::Create(LPCTSTR lpszCaption,DWORD dwStyle,const RECT& rect,CWnd *pParentWnd,UINT nID)

{

return CButton::Create(lpszCaption, dwStyle, rect, pParentWnd, nID);

}

//当鼠标在按钮的客户区内弹起时,改变按钮状态

void CAdvButton::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CRect rect;

GetWindowRect(&rect); //得到按钮客户区域的屏幕坐标位置

GetCursorPos(&m_Point); //得到鼠标的屏幕坐标位置

if((rect.PtInRect(m_Point))&&(m_State != 1))

{

m_State = 1; //1:focus state

Invalidate(); //重绘客户区

}

CButton::OnLButtonUp(nFlags, point);

}

//计时器消息的响应函数

编写一个计算器程序课程设计报告-范例

学号 《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 评分细则 评分项优秀良好中等差 上课出勤 上课表现 上机情况 平时作业完成情况 期末大作业: (1)书写认真程度 题目:用Python编写简易计算器程序 学号: 专业: 班级: 姓名: 指导教师: 2016-2017学年第二学期

(2)内容详实程度(3)文字表达能力(4)是否体现观点 简短教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

一、设计内容 ------------------------------------------------------------------------------------------------- - 1 - 1. 课程设计目的:-------------------------------------------------------------------------------------- - 1 - 2.课程设计任务: --------------------------------------------------------------------------------- - 1 - 3.创新要求:---------------------------------------------------------------------------------------------- - 2 - 4.设计要求: ------------------------------------------------------------------------------------------------ - 2 - 二、原理和分析 ---------------------------------------------------------------------------------------------- - 2 - 1.开发的技术及功能 ----------------------------------------------------------------------------------- - 2 - 2.设计思路------------------------------------------------------------------------------------------------ - 2 - 3.设计效果图--------------------------------------------------------------------------------------------- - 2 - 三、设计过程 ------------------------------------------------------------------------------------------------- - 3 - 1. 程序思路: -------------------------------------------------------------------------------------------- - 3 - 2.功能实现:---------------------------------------------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算----------------------------------------------------------------- - 4 - 2)其他运算 ------------------------------------------------------------------------------------------ - 4 - 3)主要方法说明------------------------------------------------------------------------------------ - 5 - 4)程序流程图 --------------------------------------------------------------------------------------- - 5 - 3.算法思路:---------------------------------------------------------------------------------------------- - 6 - 4.数据分析:---------------------------------------------------------------------------------------------- - 7 - 四、设计结果和分析------------------------------------------------------------------------------------------ - 7 - ⒈运行调试------------------------------------------------------------------------------------------------ - 7 - 1)进行加减乘除求余以及指数运算----------------------------------------------------------- - 7 - 2)求倒 ------------------------------------------------------------------------------------------------ - 9 - 3)退格 ------------------------------------------------------------------------------------------------ - 9 - 4)清零 ---------------------------------------------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算 ------------- - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------------------------------- - 11 - 7)异常处理(例:求倒时输入数为0) --------------------------------------------------- - 11 - 五、设计体会和小结 -------------------------------------------------------------------------------------- - 12 - 六、参考文献 ----------------------------------------------------------------------------------------------- - 13 - 七、源程序--------------------------------------------------------------------------------------------------- - 13 - 一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:

程序设计报告模板

北京化工大学计算机科学与技术专业2014程序设计实训报告 题目:个人记账软件 专业:计算机科学与技术 班级:计科1305 指导教师:江志英

2014程序设计实训任务书

目录 2014程序设计实训任务书...................................... 错误!未定义书签。目录..................................................... 错误!未定义书签。第一章需求分析.............................................. 错误!未定义书签。 引言............................................... 错误!未定义书签。 任务概述........................................... 错误!未定义书签。 数据描述........................................... 错误!未定义书签。 功能需求........................................... 错误!未定义书签。 运行需求........................................... 错误!未定义书签。 任务计划........................................... 错误!未定义书签。第二章概要设计.............................................. 错误!未定义书签。 总体设计........................................... 错误!未定义书签。 面向对象设计....................................... 错误!未定义书签。 运行界面设计....................................... 错误!未定义书签。第三章详细设计.............................................. 错误!未定义书签。 ........................................................ 错误!未定义书签。第四章测试分析............................................. 错误!未定义书签。第五章用户手册(可选)..................................... 错误!未定义书签。第六章课程设计总结.......................................... 错误!未定义书签。附录:程序代码(仅电子版需要、纸质版不需要)................. 错误!未定义书签。

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

Java计算器课程设计报告 - 副本

JAVA课程设计 小型计算器 学生姓名: 指导教师:李明江 系别:计算机科学系 专业:计算机科学与技术 年级:2008 应用2班 提交时间:2010年 12 月 22日学号:

目录 一概述 (3) 二总体方案设计 (4) 三详细设计 (6) 四程序的调试与运行结果说明.. 10 五课程设计总结 (19) 六附录...... 错误!未定义书签。

一设计任务书 1.程序具备的功能: (1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮; (2)完成整数、实数的四则运算(加、减、乘、除); (3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。 2.课程设计的主要设计思想 对于此计算器程序,首先要设计其GUI 界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计

完成。 布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。 在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。 二总体方案设计 1.界面设计 界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt 中的BorderLayout和GridLayout布局管理方

Java程序设计-实验报告1-模板 (1)

实验报告 课程名称Java程序设计 实验项目实验一类和对象 系别_________计算机_________ 专业/班级_______计算机类/1402______ 姓名_____李馨雪________ 实验日期______2015.10.10______ 成绩_______________________ 指导教师

一、实验题目:实验一类和对象 二、实验内容: (1)用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。 1)PC类与CPU类和HardDisk类关联的UML图如图所示。 其中,CPU类要求getSpeed()返回speed的值,setSpeed(int m)方法 将参数m的值赋值给speed。 HardDisk类要求getAmount()返回amount的值,setAmount(int m)方 法将参数m的值赋值给amount。 PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示 cpu的速度和硬盘的容量。 2)主类Test的要求 main()方法中创建一个CPU对象cpu,其speed设置为2200; main()方法中创建一个HardDisk对象disk,其amount设置为200; main()方法中创建一个PC对象pc, pc调用setCPU方法,实参是cpu;调用setHardDisk方法,实参是 disk;调用show方法。 (2)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下: 1)编写接口Animal,有2个抽象方法cry()和getAnimaName(); 2)编写模拟器类Simulator,该类有一个playSound(Animal animal)方法,其形参是Animal类型,可以调用实现Animal接口的类所重写的cry()方法播放具体动物的声音,调用重写方法显示动物种类的名称; 3)编写实现Animal接口的Dog类和Cat类。具体的UML图如下所示:4)编写主类Application,其main方法中至少包含如下代码: Simulator si=new Simulator();

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

LABVIEW计算器设计报告

虚拟仪器大作业——模拟计算器 班级:电1004 姓名: 学号:20102389

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个平方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

在后面板中通过将簇中元素按产生的顺序组成一个一维数组,这样就实现了每个键与数字(0--20)之间的对应。每次按下一个键时,通过 查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程。 2、数字的键入(0~8键入1~9数字) 由于第一个输入和第二个输入所存放的地方不同(第一个存于num1,第二个存于num2→mun3再清空num2),所以有必要对此分开处理。创建2分支(真、假)的case结构。 用change控制分支的选择:在处创建局部变量并转换为读入。由于数字的键入是数据输入,change3用来保证backspace键仅对输入的数据有

程序设计实践报告模板

面向对象程序设计实践(Project 2) 报告 题目: 专业软件工程(NIIT) 学生姓名 班级学号 指导教师杨健 指导单位计算机学院/软件学院 日期

评分细则 评分项优秀良好中等差遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简短 评语教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

Title(Here,please write the name of your Project) (题目格式:宋体,3号,加粗,居中对齐) 一、D escription and Requirement(格式:Times New Roman,4号,加粗, 两端对齐) (正文格式:宋体(中文) Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 二、Requirement Analysis(格式:Times New Roman,4号,加粗,两端对齐) 在该部分中叙述系统的功能,由此得到相应的模块,并分析需要什么的数据,由此可以指导数据库的设计。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐,1.5倍行距) 三、High level design(格式:Times New Roman,4号,加粗,两端对齐) 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明),数据库设计的说明(给出数据库的结构,包括有哪些表,每个表有什么字段,分别存储什么样的数据) (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 四、Low level design格式:Times New Roman,4号,加粗,两端对齐) 各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 注意:不要粘贴全部程序,只要把关键算法的程序粘贴过来就可以了。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 五、Tested data and result analysis(格式:Times New Roman,4号,加粗,

实验报告模板-《C程序设计实践 》

大型程序设计实验报告 课程名称C程序设计实践实验日期2011年月日至2011年月日 学生姓名所在班级学号 实验名称 实验地点同组人员 1. 问题描述 实现图书管理系统 如何让实现如下功能: 1.新进图书及基本信息输入 2.图书基本信息查询 3. 对撤销图书信息的删除 4 办理借书手续 5 办理还书手续 2. 问题分析 根据题目要求,需要建立图书管理系统结构体,分别需要建立读者结构体,图书结构体。 该程序主要涉及到C语言中的文件和链表 图书信息应该存放在文件中,所以提供文件的输入输出等操作;并且程序需具有实现图书信息浏览,查找,修改等功能,并进行借入借出服务;另外还提供接盘是选择菜单来实现功能选择 3. 系统设计 系统应该包括以下模块:信息输入,图书查找,信息删除,图书借出,图书归还 3.1 总体设计 1系统功能的文字概述: 图书管理系统主要功能是用户的设定,读者管理,数据的录入与查询,数据的修改和删除等 2 系统的总体结构图

3主要模块的控制流程图 主函数 ( 1. 系统功能的文字概述;2.系统的总体结构图;3. 主要模块的控制流程图)3.2 界面设计 3.3 系统主要流程设计 (文字描述加流程图) 3.4 主要数据结构设计 /*--------- 数据结构的定义------------*/ struct reader {

/*姓名,学生学号/教师工号,性别,所在学院,角色*/ char name[9]; char num[11]; char sex[3]; char college[21]; char role[2]; struct reader *next; } *readersHead=NULL, *readersTail=NULL, *reader_p; struct book{ /*书名,作者,出版社,价格,ISBN号和类别*/ char book_name[41]; char author_name[21]; char publish[15]; float price; char ISBN[18]; char b_type[9]; struct book *next; } *booksHead=NULL, *booksTail=NULL, *book_p; struct borrow_info{ /*借者编号,借书日期,图书ISBN号*/ char borrower_num[11]; char borrow_date[15]; char ISBN[18]; struct borrow_info *next; } *biHead=NULL, *biTail=NULL, *bi_p; /*--------- 数据结构的定义完毕------------*/ 3.4.1 系统数据结构概述 主要有读者数据结构,用以读者信息的记录 图书数据结构用以图书信息的记录 还有已借图书数据结构用以对已借图书的统计和记录(主要用了哪些数据结构,各自的用途)

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

C语言程序设计实验报告优秀范文

C语言程序设计实验报告优秀范文 实验名称计算出1000以内10个最大素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内最大的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 如果不是素数,返回0 */ return 0; return n;/* 如果是素数,返回该数*/ } void main { int i,j=0,n,m=0,a[1000],x; /*clrscr;*/ printf("please input a number form 1 to 1000:"); scanf("%d",&x); if(x==2)/* x=2时的处理*/ printf("%dn",x); else if(x printf("error!n");

简易计算器课程设计报告

《C++程序设计》(MFC)课程设计报告 设计题目:简易计算器 班级: 姓名: 学号: 指导教师: 时间:2010年6月30日

目录 1.设计目标…………………………………………………………… 2.设计内容…………………………………………………………… 3.设计思想…………………………………………………………… 4.设计说明…………………………………………………………… 5.设计步骤…………………………………………………………… 6.主要成员函数关系图……………………………………………… 7.程序主要代码……………………………………………………… 8. 难点分析…………………………………………………………… 9. 总结…………………………………………………………………

简易计算器(MFC) 1.设计目标 了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。 2.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 3. 设计思想 基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。 4.设计说明 (1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 5. 设计步骤 (1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮 (2)在生成的设计界面中加入控件,得到计算器应用界面。如图:

C++简单计算器课程设计报告

武汉理工大学《专业课程设计2》课程设计说明书 目录 1 基本功能描述 (1) 2 设计思路 (1) 3 软件设计 (4) 3.1 设计步骤 (4) 4 结论与心得体会 (12) 7 附:设计中的关键源代码 (14) 7.2 测试结果 (15)

简单计算器 1 基本功能描述 简单计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开始时m_num为零。按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。 回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。若按下的是单目运算符,则直接对其处理得出结果。若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。算出后把结果保存至num2。若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。

输入数据子函数 N 图1 输入数据子函数流程图

图2 简单计算器总流程图

3 软件设计 3.1 设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名09107xuzhujie及其所在位置,点击确定,如图3所示。 图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

测量程序设计实习报告

测量程序设计实习报告 姓名: 班级: 学号: 教师评语: 日期:二零一四年十二月

实验名称:使用C#开发环境建立测量程序框架 一、实验的目的与任务: (1)学会用C#窗体程序开发环境建立应用程序框架方法 (2)学会使用常见的Windows控件 (3)根据自身需要设计一个测量程序界面 二、实验的过程与步骤: 1.创建窗体项目 打开“新建项目”对话框,选左边“已安装模板”栏的“其他语言\Visual C#”项,再选右边“模板”栏的“Windows应用程序”模板。选择磁盘卷和父目录位置后,输入项目名称“测量程序”按“确定”按钮关闭对话框。 2.修改窗体属性 窗体的属性有很多,其中常用的有: 布局:大小Size——缺省为300*300像素,可以通过修改此属性,或直接拖动窗体的边框来改变窗体的尺寸。运行时用户也可以自己改变窗体大小。 设计:是程序设计中窗口的引用名称,名称(Name)缺省为Form1,可以改成自己喜欢的名称,如CLCX,回车确认后,系统会自动修改所有相关内容中的该标识符。 外观:文本Text——对应于窗体的标题,缺省也为Form1,可以改为自己喜欢的标题,如“导线简易平差”。 单击窗口界面,再点击菜单工具栏中“属性”工具,调出属性窗口,此时属性窗口显示的内容便是窗口的属性,找到“Name”栏,将其值改为“CLCX”;再找到“Text”栏,将其值改为“导线简易平差”。 将鼠标箭头放置于窗口边缘,拖动窗口以调整窗口大小,将窗口大小调整为合适大小。 3.添加按钮和控件 可以在窗口中添加标准控件,以实现可视化的目的,C#中常用的标准控件有:(1)按钮(Button) 是用户以交互方式控制程序运行的控件之一。 主要属性: 1)Text属性 设置显示在按钮表面上的文字,用于说明该按钮的作用。 2)Enabled属性 设置按钮是否可用; (2)Label控件 Label控件主要用于通过其Text属性显示文本信息。 主要属性: 1)Text属性 标签中显示的文本内容 2)Font

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

相关文档
最新文档