文档视界 最新最全的文档下载
当前位置:文档视界 › 计算器设计报告

计算器设计报告

计算器设计报告
计算器设计报告

程序设计与课题设计

计算器设计报告

电信1302

何倩雯林然然

索引

概要 (3)

一.设计任务与目标 (3)

1.基本功能 (3)

2.附加功能 (3)

二.方案设计与功能说明 (3)

1.程序界面总体规划 (3)

2.程序功能实现 (4)

三.程序类图 (5)

四.主要程序清单 (6)

https://www.docsj.com/doc/d916079802.html,alculationDlg类 (6)

2.CSquare类 (11)

3.XBitmapButton类 (13)

五.程序运行的测试与分析 (14)

1.测试基础加减乘除功能运算 (14)

2.测试连加,连乘,连减,连除功能 (14)

3.连等以及等号后直接进行运算的测试 (14)

4.测试退格,清0,全清 (14)

5.寄存器功能测试 (14)

6.16进制、8进制、2进制功能测试 (14)

六.负责完成内容 (14)

七.结论与心得 (15)

概要

在《程序设计课程设计》课程中,我们选择Visual C++6.0作为开发平台,两人一组,设计开发一个模拟计算器。尽量向windows自带计算器靠近。完成了普通计算器以及科学计算器,能够满足一般计算要求,也提供了二进制、八进制、十六进制的四则运算。在计算器外观上也做了改进。

一.设计任务与目标

1、完成基本功能:

1)计算器窗口界面的绘制以及基本加减乘除运算及其连续运算的实现

2)寄存器的存储,读取及清空,显示寄存器内容

3)运算过程的显示

5)按等号重复最后一次运算

6)退格,清空及全部清空

7)取反,开根号及倒数运算

2、附加功能

1)增加科学型计算功能

2)增加十六进制, 二进制,八进制数据计算功能;

3)美化模拟计算器界面,如按钮被选中后自动改变颜色,增加菜单栏根据需要选择不同类型的计算器等。

二.方案设计与功能说明

1.程序界面总体规划

创建CALCULATION_DIALOG和SCIENCE_DIALOG两个对话框界面分别用于显示普通型计算器与科学型计算器。为两个对话框添加菜单,供用户选择所需计算器类型(即相应的对话框窗口)。

(1)普通型计算器

数字0-9,小数点,+,-,x,÷,倒数,取负,根号,百分号,=,清零,全部清零,退格,读寄存器,存寄存器,清寄存器共26个按钮,用于用户的运算操作。运算过程编辑框、寄存器编辑框、结果读取编辑框3个编辑框,用于对用户返回信息。

(2)科学型计算器

基本功能界面同普通型计算器。除此之外,添加了开3次方,开y次方,sin(),cos(),tan(),x的y次幂,x的平方,x的立方,ln(),n!,exp,10^x,log(),π14个功能按钮,可供用户计算更复杂的算式。

在科学型计算器上我们添加进制选择按钮,初始默认10进制计算。设置有16进制、2

进制、8进制按钮可供切换进制,并且在选择进制的同时有相应的按钮自动设置无效(例如选择2进制,则2-9按钮自动无效)。

(3)除了基本的界面设置,添加按钮变色效果,按钮通常为灰色,是弹起视觉效果,但当鼠标移动到按钮之上,按钮自动变黄色,并有按住的视觉效果。当鼠标移动到无效的按钮之上按钮不会变色。以此变色效果可以提醒用户是否选中该按钮,按钮是否有效。

2.程序功能实现

为两个对话框界面添加两个类,并在其中为按钮添加消息响应函数。添加字符串和数字数组、操作数数组来保存操作数、操作符、运算结果。并用UpdateData()来接受和显示。

(1)操作数的输入

在用户持续输入数字时,将数字插入到字符串中。只有当碰到用户输入操作符时,该字符串被转化成double型数据保存到数字数组中。

(2)操作符的输入

在用户输入操作符后,将操作符保存到操作符数组。可以对操作符进行编号,代替char型操作符保存的是的操作符对应int型编号。

(3)进制的确定与转换

为每一个进制设置标记符m_xflag,来确定当前的进制数。并添加进制转换函数(二进制转十进制,十进制转二进制,八进制转十进制,十进制转八进制,十六进制转十进制,十进制转十六进制),计算时无论输入几进制数,将其转为十进制进行计算,计算后转回相应进制。

(4)计算功能

在等号的消息映射函数中调用计算函数。函数中多用if-else语句来判断当前计算进制,并根据进制要求进行进制转换。同用if-else语句实现判断此时是否连等,并在连等时执行重复上一次运算的相应语句,不需连等时按优先级依次计算×,÷,-,+。

(5)进程的显示

为进程编辑框添加字符串保存进程。输入时在字符串中插入字符,退格或清空时删除相应长度的字符。

(6)按钮变色功能

手动制作每一个按钮平常的外观和变色后的外观位图。将按钮属性改为所有者绘制。手动添加一个基于CBitmapButton的XBitmapButton类,设置bool变量表示鼠标是否在

按钮上。添加MouseOFF(),MouseOn()函数来执行相应的按钮位图加载。通过加载不同的位图可以改变按钮的外观。为按钮添加XBitmapButton类的变量,初始化调用加载位图函数。

三.程序框图或类图

类图

四.主要程序清单,函数功能与调用关系

(1)CCalculationDlg类

全局变量:

int m_v; //用于判断操作符的,若为"=","sqrt"等等的操作符,直接输入数据将原数据覆盖

BOOL m_enable; //用于判断菜单项有效性

CMenu m_Menu; //菜单的变量

CString m_re; //用于临时存放操作数

CString s; //用于临时存放操作符

int lastoperation; //用于存放计算式的最后一个操作符代码

double lastnumber; //用于存放计算式的最后一个操作数

double m_number[15]; //用于存放操作数

int m_operation[15]; //用于存放操作符代码

int m_NumberCount; //操作数的顺序号代码

int m_OperationCount; //操作符的顺序号代码

XBitmapButton m_sub;//按钮IDC_SUBTRACT的成员变量,用于加载位图,重绘按钮

XBitmapButton m_spot;//按钮IDC_SPOT的成员变量,用于加载位图

XBitmapButton m_reci; //按钮IDC_RECIPROCAL的成员变量,用于加载位图

XBitmapButton m_quyu; //按钮IDC_QUYU的成员变量,用于加载位图

XBitmapButton m_muti; //按钮IDC_MULTIPL Y的成员变量,用于加载位图

XBitmapButton m_divide; //按钮IDC_DIVIDE的成员变量,用于加载位图

XBitmapButton m_add; //按钮IDC_ADD的成员变量,用于加载位图

XBitmapButton m_res; //按钮IDC_RESULT的成员变量,用于加载位图

XBitmapButton m_sqrt; //按钮IDC_SQRT的成员变量,用于加载位图

XBitmapButton m_minus; //按钮IDC_MINUS的成员变量,用于加载位图

XBitmapButton m_ms; //按钮IDC_MEMORYSAVE的成员变量,用于加载位图

XBitmapButton m_mr; //按钮IDC_MEMORYREAD的成员变量,用于加载位图

XBitmapButton m_mc; //按钮IDC_MEMORYCLEAR的成员变量,用于加载位图

XBitmapButton m_ce; //按钮IDC_CE的成员变量,用于加载位图

XBitmapButton m_c; //按钮IDC_C的成员变量,用于加载位图

XBitmapButton m_back; //按钮IDC_BACK的成员变量,用于加载位图

XBitmapButton m_n0; //按钮IDC_NUMBER0的成员变量,用于加载位图XBitmapButton m_n9; //按钮IDC_NUMBER9的成员变量,用于加载位图XBitmapButton m_n8; //按钮IDC_NUMBER8的成员变量,用于加载位图XBitmapButton m_n7; //按钮IDC_NUMBER7的成员变量,用于加载位图XBitmapButton m_n6; //按钮IDC_NUMBER6的成员变量,用于加载位图XBitmapButton m_n5; //按钮IDC_NUMBER5的成员变量,用于加载位图XBitmapButton m_n3; //按钮IDC_NUMBER3的成员变量,用于加载位图XBitmapButton m_n2; //按钮IDC_NUMBER2的成员变量,用于加载位图XBitmapButton m_n1; //按钮IDC_NUMBER1的成员变量,用于加载位图XBitmapButton m_n4; //按钮IDC_NUMBER4的成员变量,用于加载位图CString m_result;//存放运算结果

CString m_process;//存放运算过程

CString m_memory;//存放寄存器内容

m_counts;//用于保存开根号的次数(为了再连续开根号时过程的正确显示,第一次要在进程中加入开根号字符串sqrt(n1),而之后就要将字符串先删除再重新加入新的sqrt(n2),因此需要记录是否第一次操作。

m_count;//用于保存倒数的次数,为了避免连续倒数时,或者倒数结果非整时,会有精度的丢失。当m_count=1时正常计算倒数,m_count=2时回到上一次计算结果。如6取倒数1/6得到0.167,未加判断时,再取倒数得到5.99。加入m_count,再取倒数仍旧得到6,防止了精度丢失。

成员函数:

①void CCalculationDlg::Insert(char s)

调用关系:调用系统函数Insert(int i,char s),Getlength()

功能:为结果字符串m_result插入新输入的数字。

②void CCalculationDlg::InsertProcess(char s)

调用关系:调用系统函数.Insert(int i,char s),.Getlength()

功能:为进程字符串m_process插入新输入的数字或操作符

③void CCalculationDlg::DeleteProcess(int a)

调用关系:调用系统函数.Left(int)

功能:当按倒退或者清零或者全部清零时,能够删除部分或全部进程。

④void CCalculationDlg::OnNumber1()

调用关系:调用Insert()和InsertProcess();

功能:为结果字符串m_result插入数字1,为进程字符串m_process插入数字1。

void CCalculationDlg::OnNumber9()

调用关系:调用Insert()和InsertProcess();

功能:为结果字符串m_result插入数字9,为进程字符串m_process插入数字9。

⑤void CCalculationDlg::OnAdd() //加操作函数

调用关系:调用系统函数atof(char)(将字符型m_result转为double型)

功能:将按下add键以前的m_result作为一个新的操作数保存到n_number[m_NumberCount++]中;将add键用数字1代表,作为一个新的操作符保存到n_operation[m_OperationCount++]中;将m_result清空,为接受下一操作数作准备。

void CCalculationDlg::OnSubtract() //减操作函数

调用关系:调用系统函数atof(char)(将字符型m_result转为double型)

功能:将按下subtract键以前的m_result作为一个新的操作数保存到n_number[m_NumberCount++]中;将“-”键用数字2代表,作为一个新的操作符保存到n_operation[m_OperationCount++]中;将m_result清空,为接受下一操作数作准备。

void CCalculationDlg::OnDivide() //除操作函数

调用关系:调用系统函数atof(char)(将字符型m_result转为double型)

功能:将按下divide键以前的m_result作为一个新的操作数保存到n_number[m_NumberCount++]中;将“÷”键用数字4代表,作为一个新的操作符保存到n_operation[m_OperationCount++]中;将m_result清空,为接受下一操作数作准备。

void CCalculationDlg::OnMultiply() //乘操作函数

调用关系:调用系统函数atof(char)(将字符型m_result转为double型)

功能:将按下multiply键以前的m_result作为一个新的操作数保存到n_number[m_NumberCount++]中;将“x”键用数字3代表,作为一个新的操作符保存到n_operation[m_OperationCount++]中;将m_result清空,为接受下一操作数作准备。

⑦void CCalculationDlg::OnMinus() //取正负函数

调用关系:调用InsertProcess()

功能:将当前结果取负数,并根据原数据的正负判断在进程中插入‘-’号或删去‘-’号。

⑧void CCalculationDlg::OnQuyu() //取百分号函数

调用关系:调用InsertProcess()

功能:将当前结果取百分比,并在进程中插入‘%’。

⑨void CCalculationDlg::OnReciprocal() //取倒数函数

调用关系:调用InsertProcess()

功能:将当前结果取倒数,并在进程中插入‘reciprocal()’。

⑩void CCalculationDlg::OnSqrt() //求平方根函数

调用关系:调用InsertProcess()

功能:将当前结果取平方根,并在进程中插入‘sqrt()’。

⑾void CCalculationDlg::OnCe() //删除最后一个操作数

调用关系:调用DeleteProcess(int)系统函数.GetLength(),

功能:删除最后一个操作数,并且在进程中也删除相应字符串。

⑿void CCalculationDlg::OnC() //恢复初始化状态

调用关系:无

功能:将所有数据区域都情况,回到初始状态。

⒀void CCalculationDlg::OnBack() //退格函数

调用关系:调用DeleteProcess(int)系统函数.GetLength(),

功能:将当前输入往前退一格,即删除最新输入的一个字符。

⒁void CCalculationDlg::OnButton2() //调用计算函数

调用关系:调用cal();

功能:按下“=”号键后调用计算函数,执行计算结果。

⒂void CCalculationDlg::cal() //计算函数

调用关系:被OnButton2()调用。

功能:函数中多用if-else语句来判断当前计算进制,并根据进制要求进行进制转换。同用if-else语句实现判断此时是否连等,并在连等时执行重复上一次运算的相应语句,不需连等时按优先级依次计算×,÷,-,+。具体过程为:1.

判断是否m_NumberCount=1并且m_OperationCount=1,若成立,则此时按等号为连等,则如果最后一个操作符为1,则将等号后的结果加上最后一个操作数,如果最后一个操作符为2,则将等号后的结果减去最后一个操作数,依次类推。

2.不连等,将最后操作数存到lastnumber,将最后一个操作符存储到

lastoperation,如果此操作符为*,则将下一个操作数存为两数相乘后的结果,即连乘以后,将所有乘号变为前一操作符符号,除乘后结果以外的乘数都变为0(如1+3*4*5=0+0+60,1-3*4*5=1-0-0-60)。若为÷,也类似操作。3. 将result 函数赋值为第一个操作数,再循环进行与下一操作符的加法或减法运算。4.

除了计算结果、最后操作数、最后操作符以外的数据清除。

⒃void CCalculationDlg::OnMemorysave() //寄存器存储

调用:无

功能:将m_result赋值给m_memory,存起来。

⒄void CCalculationDlg::OnMemoryread() //寄存器读取

调用:无

功能:将m_memory存入m_number[],即读取。

⒅void CCalculationDlg::OnMemoryclear() //寄存器清除

调用:无

功能:将m_memory清空。

⒆void CCalculationDlg::OnMenuitem32772() //打开科学型对话框调用:CDialog::EndDialog(IDOK); dlg.DoModal();

功能:将菜单科学型设为有效,将原对话框关闭,打开科学型对话框。

⒇void CCalculationDlg::OnUpdateMenuitem32771(CCmdUI* pCmdUI)

调用:pCmdUI->Enable(m_enable);

功能:将菜单普通型设为无效

(2)CSquare类。

在科学型计算器中,有大量代码重复普通型,与普通型功能相同。因此这里只说明科学型与普通型不同的函数与变量。

全局变量:

bool m_slflag; //用于判断是否为16进制

bool m_bflag; //用于判断是否为8进制

bool m_eflag;//二进制标志

成员函数:

①double CSquare::TransBjzToSjz(int a) //将八进制转化为十进制函数

调用关系:调用库函数pow();

功能:将输入八进制数a转为十进制返回。

CString CSquare::TransSjzToBjz(double result, CString m_result)

调用关系:Insert()

功能:将十进制转化为八进制函数并逐位插入到m_result字符串,返回m_result

②double CSquare::TransEjzToSjz(int a) //将二进制转化为十进制函数

调用关系:调用库函数pow();

功能:将输入二进制数a转为十进制返回。

CString CSquare::TransSjzToEjz(double result,CString m_result)

调用关系:Insert()

功能:将十进制转化为二进制函数并逐位插入到m_result字符串,返回m_result

③double CSquare::TransSljzToSjz(CString a)

调用关系:调用库函数pow();

功能:将输入二进制数a转为十进制返回。

CString CSquare::TransSjzToSljz(double result, CString m_result)

调用关系:调用Insert()

功能:将十进制转化为二进制函数并逐位插入到m_result字符串,返回m_result

④void CSquare::On10x() //10^x的函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数pow();

功能:10^x的响应,将当前结果换算为10^x保存到m_result,并写入过程中。

⑤void CSquare::OnCos() //cos函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数cos();

功能:cos(x)的响应,将当前结果换算为cos(x)保存到m_result,并写入过程中。

⑥void CSquare::OnSin() //sin函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数sin();

功能:sin(x)的响应,将当前结果换算为sin(x)保存到m_result,并写入过程中。

⑦void CSquare::OnTan() //tan函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数tan();

功能:tan(x)的响应,将当前结果换算为tan(x)保存到m_result,并写入过程中。

⑧void CSquare::OnEjz() //二进制函数

调用关系:GetDlgItem(IDC_)->EnableWindow(bool);

功能:二进制按键的响应,将二进制标志置1,其他进制标志置0,进制字符串m_jz改为“2进制”。同时,使在二进制条件下不可用按钮失效。

void CSquare::OnSjz()

调用关系:GetDlgItem(IDC_)->EnableWindow(bool);

功能:十进制按键的响应,将十进制标志置1,其他进制标志置0,进制字符串m_jz改为“10进制”。同时,使失效按钮恢复使用。

void CSquare::OnSljz() //十六进制函数

调用关系:GetDlgItem(IDC_)->EnableWindow(bool);

功能:16进制按键的响应,将16进制标志置1,其他进制标志置0,进制字符串m_jz改为“16进制”。同时,使失效按钮恢复使用,使能A,B,C,D,E,F。

void CSquare::OnBjz() //八进制函数

调用关系:GetDlgItem(IDC_)->EnableWindow(bool);

功能:8进制按键的响应,将8进制标志置1,其他进制标志置0,进制字符串m_jz改为“8进制”。同时,使失效按钮恢复使用,使8进制条件下不可用按钮失效。

⑨void CSquare::OnExp() //e的幂函数

调用关系:调用关系:调用DeleteProcess(),InsertProcess(),库函数exp();

功能:exp(x)的响应,将当前结果换算为exp(x)保存到m_result,并写入过程中。

⑩void CSquare::OnLn() //ln()函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数ln();

功能:ln(x)的响应,将当前结果换算为ln(x)保存到m_result,并写入过程中。

⑾void CSquare::OnLog() //log10的函数

调用关系:调用DeleteProcess(),InsertProcess(),库函数log();

功能:log(x)的响应,将当前结果换算为log(x)保存到m_result,并写入过程中。

⑿void CSquare::OnN() //n阶乘

调用关系:调用DeleteProcess(),InsertProcess()

功能:n!的响应,将当前结果换算为n!保存到m_result,并写入过程中。

⒀void CSquare::OnXk3g() //x开3次跟函数

调用关系:调用DeleteProcess(),InsertProcess(),pow()

功能:x^1/3的响应,将当前结果换算为x^1/3保存到m_result,并写入过程中。

⒁void CSquare::OnXkyg() //x开y次方

调用关系:调用DeleteProcess(),InsertProcess(),pow()

功能:x^1/y的响应,将当前结果换算为x^1/y保存到m_result,并写入过程中。

⒂void CSquare::OnXy() //x的y次方的函数

调用关系:调用DeleteProcess(),InsertProcess(),pow()

功能:x^y的响应,将当前结果换算为x^y保存到m_result,并写入过程中。(3)XBitmapButton类

全局变量:

UINT m_O; //鼠标滑过时显示的位图。ONMOUSEOVER

UINT m_U; //平常状态显示的位图。NORMAL

BOOL m_over; //鼠标位于按钮之上时该值为TRUE,反之为FALSE

BOOL m_track;//按钮按下后释放前为TRUE,反之为FALSE

成员函数:

①void XBitmapButton::OnMouseMove(UINT nFlags, CPoint point)

调用关系:调用_TrackMouseEvent()

功能:追踪鼠标的移动

②LRESULT XBitmapButton::OnMouseON(WPARAM wParam, LPARAM lParam)

调用关系:调用LoadBitmaps()

功能:鼠标移动到按钮之上时,加载位图。

③LRESULT XBitmapButton::OnMouseOFF(WPARAM wParam, LPARAM lParam)//

调用关系:调用LoadBitmaps()

功能:鼠标离开按钮时,加载位图。

五.程序运行的测试与分析

1.测试基础加减乘除功能运算(例如测试1+2,2*3,6/2,6-2计算式):

分析:若操作符为加则m_operation[m_OperationCount]=1,减为m_operation[m_OperationCount]=2,乘为m_operation[m_OperationCount]=3,除为m_operation[m_OperationCount]=4,通过循环调用,if(m_operation[i]==1),则将m_number[i]与m_number[i+1]相加,依次类推。

2.测试连加,连乘,连减,连除功能(测试计算式5*2-1*2*3+3*4-25/5):

分析:例如连乘以后,将所有乘号变为前一操作符符号,除乘后结果以外的乘数都变为0,而将最后的结果保存在乘法运算最后一个操作数上,其余操作符类似连乘过程。

3.连等以及等号后直接进行运算的测试(运算结束后计算点击等号):

分析:通过将前一个运算式最后一个操作数和操作符的保存,然后判断是否m_NumberCount=1并且m_OperationCount=1,若成立,则此时按等号为连等,则如果最后一个操作符为1,则将等号后的结果加上最后一个操作数,如果最后一个操作符为2,则将等号后的结果减去最后一个操作数,依次类推。

4.测试退格,清0,全清:

分析:利用字符串长度减1功能,完成退格功能;利用将屏幕输入字符清除m_result=_T(“”);语句,完成清0功能;利用初始化语句,将所有操作数操作符初始化,实现全清功能。5.寄存器功能测试:

分析:通过保存语句(m_memory=m_result),读取(m_number[]=m_memory),删除(m_memory=_T(“”);)功能,测试寄存器功能的可行性。

6.16进制、8进制、2进制功能测试(通过普通二进制数相加相减进行测试二进制功能,以此类推):

分析:通过TransSljzToSjz(CString a) 、TransEjzToSjz(int a)、TransSjzToEjz(double

result,CString m_result) 等等函数,进行进制间的转化,以实现进制功能。

程序界面如下:

六.负责完成内容

对话框界面设计,对话框按钮附加功能(鼠标靠近时按钮变黄):何倩雯

添加按钮函数,加减乘除基本功能的实现:林然然

添加进程编辑框,以及完成进程插入功能:何倩雯

完成连加、连等功能,退格,请0,全清功能:林然然

完成寄存器储存、读取、清除功能:何倩雯

菜单栏的添加:林然然

完成16进制、8进制、2进制等等按钮的实现:何倩雯

完成x^y,x^2,y√x,n!等等基本操作按钮的实现:林然然

完成报告:何倩雯(1、2、3、4)、林然然(5、6、7)

完成PPT:林然然

公开答辩人:何倩雯、林然然

七.结论与心得

计算器功能已完全实现,并且完成了各项附加功能,测试通过。预期目标完成!!!

通过计算机编写程序,我们对MFC有了更深的认识,从最简单的添加变量,添加按钮函数,添加菜单栏,到后来的添加位图变量以实现拓展功能(按键变黄),从只能两两相加,相乘到实现连加连乘,从实现基础功能到引申到很多的拓展功能,每一步我们都在进步,程序也在这一天天中完善。

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

学号 《金融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.课程设计任务:

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 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语言程序设计课程计算器设计报告

课程设计说明书 题目计算器程序设计 起讫日期2006 年7月3日至2006 年8月6日 所在院系软件学院 专业机械+软件班级04-2 学生姓名偶偶哦学号 指导教师 2006年8 月日

摘要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。 关键词:C语言T ubro c 2.0汉化版计算器时钟

目录 第一章综述 (1) 1.1 课题的现实意义 (1) 1.2 软件环境 (1) 1.3 硬件环境 (1) 第二章系统设计流程图 (2) 2.1 系统流程图 (2) 2.2 主要功能表 (2) 第三章系统分析和设计 (3) 3.1 图形的绘制和输出 (3) 3.2 文本的输出显示 (3) 3.3 计算函数的调用 (4) 3.4 程序的运行和退出 (5) 第四章系统测试 (6) 4.1 系统测试 (6) 4.2 调试 (6) 4.3 错误原因分析一 (6) 4.4 错误原因分析二 (6) 第五章用户使用说明书 (8) 5.1 运行Turbo C程序进入计算器界面 (8) 5.2 计算器的使用 (9) 5.3 退出程序 (9) 第六章工作总结 (10) 参考文献 (11) 附录: 源代码

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带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

计算器程序设计报告

题目一计算器 1.1 题目简介 用Java语言、MyEclipse工具、设计一个GUI简易计算器,编写计算器的基本运算的程序,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除等混合运算,基本实现计算器的四则运算和三角函数运算功能以及开方和求对数的基本运算。本计算器只适用十进制的运算,不限制十进制的大小。编写本计算器运用java的类得调用和直接在程序中定义类,实现计算器的基本功能,在这个计算器中对于执行的操作可以进行复制和保存以便以后能直接查看运行结果本计算器保存没不得运行结果,只有点清除键是才可以清除每步的结果。 1.2 设计的内容、要求和目标 设计内容:设计一个GUI简易计算器,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除等混合运算。 设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件来处理等实现具体功能。 (1)、应具有相应的界面,可参考下图进行设计:

(2)、操作符号定为:“+”“-”,“*”,“/”等。 (3)、用户通过点击面板中的各种组件输入的表达式,应在上方文本框。 (4)、党用户点击“=”时,文本框中之前的内容应清空,直接显示表达式运算结果。例如:输入表达式“7*8”之后按“=”,显示结果“56”。 (5)、具有菜单栏,内有相应的编辑“复制”、“粘贴”等菜单,提供相应的功能。 设计目标:利用Java语言设计一个简单的计算器,以实现基本的加减乘除功能,还有sin、|cos、tan、log等算术运算;同时实现退格、清零等运算。 1.3总体设计 1)、对计算器面板的整体布局 首先是对计算器的整体面板进行一个简单的设计,整体布局是采用layout (边框布局)布局,对计算器中的一些数字按钮和运算符按钮采用gridlayout 布局(网格布局)。 2)、创建实现程序所需的类 整理思路,确定一个主类CalculatorWindow,然后对Dialog、HandleBack、HandleClear、HandleCos、HandleCot、HandleSin、HandleTan、HandleDigit、HandleDot、HandleDownNumber、HandleEquality、HandleLog、HandleOperation、HandlePOrN、HandlePositiveOrNegative、NumberButton、OperationButton、SelectJTree等类的创建。 3)、对所创建类算法的分析和实现 确定了主类CalculatorWindow,其他类为其所调用。编写各类的实现算法,增加面板所需的按钮,并对程序进行调试运行及分析。

简易计算器的设计与实现

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

沈阳航空航天大学课程设计报告 目录 第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再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

单片机计算器的课程设计报告

目录 一、设计任务和性能指标 (1) 1.1设计任务 (2) 1.2性能指标 (2) 二、设计方案 (2) 3 3 4 5 5 6 6 7 7 20 20 20 20 21 参考文献 (21) 附录1、系统硬件电路图 (22) 附录2、硬件实物图 (23) 附录3、器件清单 (24)

一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要 显 位 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入);

三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图

《计算器程序设计》课程设计

成都理工大学 C#计算器 课程设计报告(计算机科学与技术学院) 题目:计算器 班级:XX 姓名:XXX 指导教师:XXX 2013-2014学年度第二学期

目录 1.需求分析 (1) 1.1计算器应用软件的功能分析(二级标题,四号黑体) (1) 1.2计算器软件的功能图 (1) 2.界面设计 (1) 3.功能实现 (2) 3.1计算数字现实的功能代码 (2) 3.2小数点设置的功能代码 (3) 3.3连续运算的功能代码 (3) 3.4实现键盘控制的功能代码 (4) 3.5删除的功能代码 (5) 4.设计总结 (5) 参考文献 (6)

计算器的开发与应用 摘要:计算器的产生和发展是建立在电子计算机基础之上的,现代社会很需要一个健全、高效率的计算器。为了提高自己的实践能力和将来开发一个更实用更全能更智能的计算器,以设计与实现计算器为课题。此次设计的计算器应用软件从visual studio 2012编程环境中开发,是一个简单的窗体应用程序,实现简单的计算器功能。以微软自带的计算器为模板,设计了简单易懂的计算器。这款计算器不仅实现了简单的四则运算的功能,还能连续运算,实现小键盘的操作,光标的转移。虽然这个简单的计算器只能实现这些功能,但是具有简洁的图文外观,即时准确的获得所需要要计算的结果,充分降低了数字计算器的难度和所需要的时间,对人们生活和学习具有有很大的帮助。 关键词:计算器;功能;界面;窗口;事件。 1.需求分析 通过对微软附件计算器软件进行调研、分析,研究,使用。我们了解到了作为一个计算器所应该有的一些简单功能和界面的排版,我们知道了怎样使编写的计算器程序向微软附件计算器靠拢。 1.1计算器应用软件的功能分析 计算器软件的主要功能是: 1)可以显示计算数字 2)可以进行加减乘除四则运算 3)可以实现键盘操控的功能 4)可以进行清零运算 5)可以进行退格键运算 6)可以进行连续计算 1.2计算器软件的功能图 根据以上需求分析,计算器软件功能如图1-1所示。 2.界面设计计算器主界面 显示 计算 数字 连 续 计 算 功 能图1-1计算器功能图 进 行 四 则 运 算 键 盘 操 控 清 零 运 算 退 格 键 功 能

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键仅对输入的数据有

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

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. 程序流程图:

my计算器程序设计报告

计算器程序设计报告 计算器是一种在日常生活中很常用的计算工具,它在计算方面给了我们提供很大的方便。本程序的功能包括:(1)加,减,乘,除运算,正弦,余弦,正切,余切,反正切,反余切,反正弦,反余弦,自然对数,以10为底的对数还有阶乘等函数功能。(2)还包括存储清,存储显示,存储相加。 “计算器”是一个关于多种控件,以及控件数组应用的程序,它包含许对字符串的处理,多模块程序设计,数学函数的使用。它所需知识点较多,必须对各个方面都有所了解. 数学模型:主界面 界面:进制转化界面 数学函数代码 代码:存储清代码 进制转化代码 第一步,要编辑计算器界面,如右图, 对于界面上的按钮较多,我们可以分成四组,这就是控件数组的使用,而且每个按钮的属性都一一设置,而且要调入图片.第二个界面如右图 比较简单,只是一些普通的控件. 计算器是一个输入原始数据,运算中间数据和结果数据都显示在窗口顶部的同一个文本框的工具,这就要求我们可以把文本框的内容付给两个不同的变量,对于这一点我们就可以用一个逻辑变量来实现.比如, If not boolean str1=str Else str2=str 计算器的主要功能就是运算,但是任何一个数值的输入都是以字符串的形式进行的,而字符串是无法参与运算的,所以必须用CInt()转换成整形变量,而输出时必须用CStr()转化成字符串的形式输出,更为麻烦的是,在进行进制转换时,两种变量之间的转换更为频繁。在编程过程中要时刻注意!就拿一个简单的程序中的一部分来说吧:

If not boolean then str=str1 Else str=str2 Str=text1.text n=CInt(str) ‘“将其转换成整形变量" ……. t4 =str( ) ‘“ 将返回值转换成字符串" 计算器的功能程序简单易懂,但编制过程极为烦琐,我在编程的过程中,体会最深的就是其过程有重复,但又不得再编,在这里尤其要注意,有些过程虽然相似,但它们却存在着质的区别,就拿删除按扭来说吧, "C","0->M","CE","->"按扭都有删除的功能,在这里我就它们的区别作一下详细介绍: 将"C","CE","->"作为一个控件数组,其程序如下: If not boolean str1=str else str2=str Select Case Index Case 0 str1=" ",str2=" ", Text1.text=" " "C"键 Case1 str=" " "CE"键 Case2 str=Left(str,len(str)-1) "->"键 而"0->M"在另一个数组控件中,其程序的一部分如下: Case0 n4=0: Text1.text="0" 可见它们的代码是存在区别的,这就要求在编程时弄清楚它们的区别,不可想当然把同一种代码复制过来. 这里我再介绍一下小数点的使用 Private Sub Command2_Click(Index As Integer) If Index<10 Then str=str+CStr(Index) "输入数字" Else If InStr(str,".")=0 Then str=str+"." "输入小数点" End If If Len(str)>1 And Left(str,1)="0" And Mid(str,2,1)<>"."Then str=Right(str,Len(str)-1) "删除前面多余的0" End If Text1.text=str "显示输入的数据 " If not boolean Then str1=str Else str2=str "用两个字符串变量存放" End Sub 计算器虽复杂,但大部分还是比较简单的,最难的地方就是进制转换器的编码了,要编好这一部分必须对各进制之间的转换关系了如指掌.其中各个进制都和二进制有着直接的转换关系.而其他三个之间都不可直接进行转换.对于不能直接转化的,可以间接转化,例如,可以将十六进制先转化成十进制然后再转化成八进制. ElseIf Option4 = True Then t4 = "" str = Text1.Text

简单计算器设计报告

简单计算器设计报告 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

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年6月27日止。 三、课程设计(论文) 地点: 计算机中心 · 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握系统各功能模块的基本工作原理; (2)掌握Java的基本编程原理和基本的编程方法; (3)使学生学会系统调试; (4)培养学生分析、解决问题的能力; (5)提高学生的软件文档写作能力和团队合作精神。 2.课程设计的任务及要求 ' 1)基本要求: (1)分析系统各功能模块的工作原理; (2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写设计论文; > (2)论文包括目录、摘要、正文、总结等; (3)毕业论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分; (2)能正确回答老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加10分; (4)心得体会认真总结,可增加10分; (5)程序有创新性,可增加10分; [ 成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。 5)参考文献:

相关文档
相关文档 最新文档