当前位置:文档之家› Android计算器设计报告

Android计算器设计报告

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

《Android课程实践》报告

课设题目Android计算器程序设计

学院

班级

学生姓名

学号

序号

指导教师

时间2019.11.21

一、设计分析

1.1 实现功能

本次实验进行设计可保存计算过程的计算器,实现功能如下:

1.仿照真实的计算器实现其功能。

2.在左上方的文本框中显示当前的计算过程,在右边的文本区中显示以往的计算过程。

3.单击“保存”按钮可以将文本区中的全部计算过程保存到文件;单击“复制”按钮可以将文本区中选中的文本复制到剪贴本;单击“清除”按钮可以清除文本区的全部内容。

1.2 设计思路

考虑到计算器的美观和易用性,可以把计算器做在 Android 端,Android 系统的 App 的底层功能由 Java 实现,所有工作主要分为两部分:

1.设计计算器界面 (activity_main.xml)

计算器界面用xml文件编写,包括手机竖屏和横屏两个布局文件:

竖屏:activity_main.xml 布局为 portrait

横屏:activity_main_land.xml 布局为 landscape

竖屏模式可以完成基本的四则运算,不涉及科学计算

横屏模式除了完成基本的四则运算,还添加了科学运算

2.编写计算接口 (ScienceCalculator.java)

ScienceCalculator 可以完成包含科学运算函数的 math,先实现可以完成基本四则运算的 BaseCalculator,在此基础上,实现

ScienceCalculator。

运算的思路是先通过 ScienceCalculator 完成math中需要科学计算函

数的部分,再用这些部分计算的结果替换原 math 中的这些部分,使包含科学计算函数的 math 转变成可用 BaseCalculator 计算的 math。

二、程序结构

图2.2 横屏程序界面

三、各模块的功能及程序说明

3.1 计算器界面设计

3.1.1 竖屏界面

包含控件

1.文本框 TextView:tvNowt,vPast 分别显示当前和过去的运算过程;

2.功能 Buttion:btn_save,btn_copy,btn_clear 用于保存,复制,清空

tvPast中的运算过程;

3.数字 Button:0-9,小数点

4.运算符 Button:+ - × / ( ) =

5.运算器基本 Button:btn_del 退格,btn_clc 清空当前math

成员变量

1.String mathPast,用于存储过去的运算过程

2.String mathNow,用于存储当前的运算过程,即用户正在输入的部分

3.int precision,设置默认精度为6位小数

4.int equal_flag,设置flag值判断是否需要清空mathNow进行新的运算

5.ScienceCalculator scienceCalculator,实例化一个科学计算器

图3.1 竖屏界面

3.1.2 横屏界面

包含控件

1.文本框 TextView:tvNow, tvPast 分别显示当前和过去的运算过程;

2.功能 Buttion:btn_save,btn_copy,btn_clear 用于保存,复制,清空

tvPast中的运算过程;

3.数字Button:0-9,小数点

4.基本运算符Button:+ - × / ( ) =

5.科学运算符Button:(12个)

sin,cos,tan,√x,e,π,1/x,ln,log,x2,e x,x y

6.运算器基本Button:btn_del退格,btn_clc清空当前math

7.文本框切换按钮 tvRad,tvDeg 实现弧度制和角度值的切换

8.精度选择器 NumberPicker

成员常量

1.final int DEG = 0,DEG 表示角度制

2.final int RAD = 1,RAD 表示弧度制

成员变量

1.String mathPast,用于存储过去的运算过程

2.String mathNow,用于存储当前的运算过程,即用户正在输入的部分

3.int precision,设置默认精度为6位小数,通过NumberPicker返回用户

设置的精度值

4.int equal_flag,设置flag值判断是否需要清空mathNow进行新的运算

5.ScienceCalculator scienceCalculator,实例化一个科学计算器

6.int angle_metric,角度制参数,默认为DEG

图3.2 横屏界面

3.2 界面各模块功能

由于横屏界面包括了竖屏界面所有的模块,下文代码功能描述按照LandActivity.java 文件,即横评界面对应的 Activity。

3.2.1 初始化 tvPast

tvPast 用于存储过去的运算过程

public void initTvPast() {

//设置tvPast一些属性

tvPast.setMovementMethod(ScrollingMovementMethod.getInstance()); //内容自动滚动到最新的一行

tvPast.setTextIsSelectable(true); //长按复制

//获取界面切换的tvPast的内容

Intent intent = this.getIntent();

String tvPastContent = intent.getStringExtra("main");

//如果当前的界面是启动界面,不是从MainActivity切换来的,上面的mathPast 就为null了,要处理这种异常

if (tvPastContent == null) {

tvPast.setText("");

} else {

String[] maths = tvPastContent.split("\n");

int i;

for (i = 0; i < maths.length - 1; i++) {

tvPast.append(maths[i] + "\n");

}

tvPast.append(maths[i]); //最后一个math不用加换行

}

}

响应场景设置:

1.因为tvPast文本框高度有限,为了使用户每次都可以看到最新的运算过

程,设置setMovementMethod(ScrollingMovementMethod.getInstance())方法使内容自动滚动到最新的一行;

tvPast.setMovementMethod(ScrollingMovementMethod.getInstance

());

2.Android系统集成了很好的文本框内容复制功能,设

置setTextIsSelectable(true)即可实现文本框的长按复制功能;

tvPast.setTextIsSelectable(true);

3.由于计算器具有2个界面,当前的界面可能是从竖屏界面切换来(如果当

前界面是竖屏,界面也有可能是从横屏界面切换而来),通过Intent类在两个Activity间传递tvPast的内容,至于用for循环逐行添加过去的运算过程是为了满足(1)使内容自动滚动到最新的一行。

//获取界面切换的tvPast的内容

Intent intent = this.getIntent();

String tvPastContent = intent.getStringExtra("main");

//如果当前的界面是启动界面,不是从MainActivity切换来的,上面的mathPast就为null了,要处理这种异常

if (tvPastContent == null) {

tvPast.setText("");

} else {

String[] maths = tvPastContent.split("\n");

int i;

for (i = 0; i < maths.length - 1; i++) {

tvPast.append(maths[i] + "\n");

}

tvPast.append(maths[i]); //最后一个math不用加换行

}

3.2.2 初始化 NumButtons:0-9,小数点

按钮需要设置监听事件的应用场景,是为了避免一些错误的math格式。因为不同的数字有不同的处理方式。主要归为以下几类:

1. btn_0

btn_0 根据响应事件场景在当前 math 表达式中添加 0

btn0.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//如果flag=1,表示要输入新的运算式,清空mathNow并设置flag=0

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0) { //1.mathNow为空,+0

mathNow += "0";

} else if (mathNow.length() == 1) { //2.mathNow 长度为1

if (mathNow.charAt(0) == '0') { //2.1 如果该字符为0,不加

mathNow += "";

} else if (isNum(mathNow.charAt(0))) { //2.2 如果该字符为1-9,+0

mathNow += "0";

}

} else if (!isNum(mathNow.charAt(mathNow.length() - 2)) && mathNow.charAt(mathNow.length() - 1) == '0') {

mathNow += ""; //3.属于2.1的一般情况,在math中间出现比如:×0 +0

} else { //4.除此之外,+0

mathNow += "0";

}

tvNow.setText(mathNow);

}

});

响应场景设置:

?设置 flag 值判断是否需要清空 mathNow 进行新的运算,该功能是为了方便用户的输入,用户在完成一次计算之后,不需要点击清空按钮就可以直接输入新的运算过程,当 equal_flag 为1时表示刚刚完成一次运算,可以直接输入新的运算式了,此时完成 mathNow 清空操作,并重置

equal_flag 为 0;

?是否添加0的场景设置:

o mathNow 长度为0,添加0

o mathNow 长度为1,当前输入1个char了

如果当前 char 为0,不添加0

如果当前 char 为1-9,添加0

o mathNow 长度 >1,if中的条件是2.1的一般情况,即在 math 中间出现了,mathNow 的倒数第2个 char 不是 Num 并且 mathNow

的最后一个 char 是0,

如 2 + 3 ×0 ,此时也不添加0

o除此之外,添加0

2. btn_[1-9]

btn_1 ~ btn_9 的响应场景相同,根据响应事件场景在当前 math 表达式添加[1-9]

btn1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0) {

mathNow += "1";

} else {

//math的最后一个字符是:1-9, oper, (, .

char ch = mathNow.charAt(mathNow.length() - 1);

if (isNum(ch) && ch != '0' || isOper(ch) || ch == '(' || ch == '.')

mathNow += "1";

}

tvNow.setText(mathNow);

}

});

响应场景设置:

?equal_flag 同 btn_0;

?mathNow 长度为0,添加[1-9];

?mathNow 最后一个 char 是[0-9],oper,(,小数点这4种情况时,+[1-9];

?除此之外,不 +[1-9]

3. btn_dot 小数点

小数点操作要比普通数字要多一点,有时点击添加的是“0.”

btn_dot 根据响应事件场景在当前math表达式中添加“.”或者“0.”

btnDot.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0)

{ //1.mathNow为空,+0.

mathNow += "0.";

} else if (isOper(mathNow.charAt(mathNow.length() - 1))) { //2.mathNow的最后一个字符为oper,+0.

mathNow += "0.";

} else if (isNum(mathNow.charAt(mathNow.length() - 1))) { //3.mathNow的最后一个字符为num,+.

mathNow += ".";

} else { //4.除此之外,不加

mathNow += "";

}

tvNow.setText(mathNow);

}

});

响应场景设置:

?equal_flag 同 btn_0;

?mathNow 长度为0,添加“0.”

?mathNow 的最后一个 char 为 oper,添加“0.”

?mathNow 的最后一个字符为 num,添加“.”

?除此之外,不添加

3.2.3 初始化 BaseOperButtons

包括 + - × / ( ) =

1. btn_add +

btnAdd.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mathNow.length() == 0) {

mathNow += "+";

} else {

if (isNum(mathNow.charAt(mathNow.length() - 1))

|| mathNow.charAt(mathNow.length() - 1) == ')' || mathNow.charAt(mathNow.length() - 1) == '(' || mathNow.charAt(mathNow.length() - 1) == 'π'

|| mathNow.charAt(mathNow.length() - 1) == 'e') mathNow += "+";

}

tvNow.setText(mathNow);

equal_flag = 0; //可能用运算结果直接运算,flag直接设0

}

});

响应场景设置:

1.mathNow长度为0,添加“+”,表示正数

2.以下5种场景都可以添加“+”,设char是mathNow的最后一个char:

o char是Num

o char是“)”

o char是“(”

o char是“π”

o char是“e”,自然指数

2. btn_sub -

btnSub.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mathNow.length() == 0) {

mathNow += "-";

} else {

if (isNum(mathNow.charAt(mathNow.length() - 1))

|| mathNow.charAt(mathNow.length() - 1) == ')' || mathNow.charAt(mathNow.length() - 1) == '(' || mathNow.charAt(mathNow.length() - 1) == 'π'

|| mathNow.charAt(mathNow.length() - 1) == 'e')

mathNow += "-";

}

tvNow.setText(mathNow);

equal_flag = 0;

}

});

响应场景设置:

1.mathNow 长度为0,添加“-”,表示正数

2.同 btn_add

3. btn_mul ×

btnMul.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mathNow.length() != 0) {

if (isNum(mathNow.charAt(mathNow.length() - 1))

|| mathNow.charAt(mathNow.length() - 1) == ')'

|| mathNow.charAt(mathNow.length() - 1) == 'π'

|| mathNow.charAt(mathNow.length() - 1) == 'e')

mathNow += "×";

}

tvNow.setText(mathNow);

equal_flag = 0;

}

});

响应场景设置:

1.× 不能出现在math表达式的首位,所以场景限制在mathNow长度不为0

2.以下4种场景都可以添加“×”,设 char 是 mathNow 的最后一个

char:

o char是Num

o char是“)”

o char是“π”

o char是“e”,自然指数

4. btn_div /

响应场景设置同 btn_mul

btnDiv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mathNow.length() != 0) {

if (isNum(mathNow.charAt(mathNow.length() - 1))

|| mathNow.charAt(mathNow.length() - 1) == ')'

|| mathNow.charAt(mathNow.length() - 1) == 'π'

|| mathNow.charAt(mathNow.length() - 1) == 'e')

mathNow += "/";

}

tvNow.setText(mathNow);

equal_flag = 0;

}

});

5. btn_bracket ( )

btnBracket.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0)

{ //1.mathNow为空,+(

mathNow += "(";

} else if (isOper(mathNow.charAt(mathNow.length() - 1))) { //2.mathNow最后一个字符是oper,+(

mathNow += "(";

} else if (isNum(mathNow.charAt(mathNow.length() - 1)) //3.mathNow最后一个字符是num, π, e

|| mathNow.charAt(mathNow.length() - 1) == 'π'

|| mathNow.charAt(mathNow.length() - 1) == 'e') {

if (!hasLeftBracket(mathNow)) //3.1 没有(, 加 ×(

mathNow += "×(";

else //3.2 已有(, 加 )

mathNow += ")";

} else if (mathNow.charAt(mathNow.length() - 1) == ')')

{ //4.mathNow最后一个字符是),说明用户是在补全右括号,+)

mathNow += ')';

}

tvNow.setText(mathNow);

}

});

响应场景设置

1.equal_flag同btn_0;

2.mathNow长度为0,+“(”

3.mathNow最后一个字符是oper,+“(”

4.mathNow最后一个字符是num, π, e

o如果mathNow没有“(”,加“×(”

o如果mathNow已有“(”,加“(”

5.mathNow最后一个字符是“)”,说明用户是在补全右括号,+“)”

6. btn_equal =

btnEqual.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//右括号自动补全

int leftNum = 0;

int rightNum = 0;

for (int i = 0; i < mathNow.length(); i++) {

if (mathNow.charAt(i) == '(')

leftNum++;

if (mathNow.charAt(i) == ')')

rightNum++;

}

int missingNum = leftNum - rightNum; //缺失的 ) 数量

while (missingNum > 0) {

mathNow += ')';

missingNum--;

}

tvNow.setText(mathNow);

mathPast = "\n" + mathNow; //使得呈现的mathPast自动换行

double result = scienceCalculator.cal(mathNow, precision, angle_metric); //调用科学计算器

if (result == Double.MAX_VALUE)

mathNow = "Math Error";

else {

mathNow = String.valueOf(result);

System.out.println(mathNow);

if (mathNow.charAt(mathNow.length() - 2) == '.' && mathNow.charAt(mathNow.length() - 1) == '0') {

mathNow = mathNow.substring(0, mathNow.length() - 2); }

}

mathPast = mathPast + "=" + mathNow;

//用tvPast.set(mathPast)不能实现自动滚动到最新运算过程

tvPast.append(mathPast); //添加新的运算过程

//tvPast滚动到最新的运算过程

int offset = tvPast.getLineCount() * tvPast.getLineHeight(); if (offset > tvPast.getHeight()) {

tvPast.scrollTo(0, offset - tvPast.getHeight());

}

tvNow.setText(mathNow);

equal_flag = 1; //设置flag=1

}

});

1.右括号自动补全,通过计算 mathNow 中“(” 和“)” 个数的差值,添加右括号,补全当前的 mathNow

//右括号自动补全

int leftNum = 0;

int rightNum = 0;

for (int i = 0; i < mathNow.length(); i++) {

if (mathNow.charAt(i) == '(')

leftNum++;

if (mathNow.charAt(i) == ')')

rightNum++;

}

int missingNum = leftNum - rightNum; //缺失的 ) 数量

while (missingNum > 0) {

mathNow += ')';

missingNum--;

}

tvNow.setText(mathNow);

mathPast = "\n" + mathNow; //使得呈现的mathPast自动换行

2.mathNow 预处理后进行计算,调用 ScienceCalculator 的 cal 方法计算,并根据返回值情况设定 mathNow 的结果显示为 Math Error 或者正常结果。

double result = scienceCalculator.cal(mathNow, precision,

angle_metric); //调用科学计算器

if (result == Double.MAX_VALUE)

mathNow = "Math Error";

else {

mathNow = String.valueOf(result);

System.out.println(mathNow);

if (mathNow.charAt(mathNow.length() - 2) == '.' &&

mathNow.charAt(mathNow.length() - 1) == '0') {

mathNow = mathNow.substring(0, mathNow.length() - 2);

}

}

https://www.doczj.com/doc/208335086.html,Past 添加新的 mathPast 到文本框

mathPast = mathPast + "=" + mathNow;

//用tvPast.set(mathPast)不能实现自动滚动到最新运算过程

tvPast.append(mathPast); //添加新的运算过程

4.获取 tvPast 文本框属性并滚动到最新的一行

//tvPast滚动到最新的运算过程

int offset = tvPast.getLineCount() * tvPast.getLineHeight();

if (offset > tvPast.getHeight()) {

tvPast.scrollTo(0, offset - tvPast.getHeight());

}

tvNow.setText(mathNow);

5.equal_flag设为1

equal_flag = 1; //设置flag=1

3.2.4 初始化 ScienceOperButtons

除了x2,x y,其他 ScienceOpers 都要设置 equal_flag,同btn_0。

1. btn_sin

btnSin.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0) {

mathNow += "sin(";

} else {

//oper, (, 加 sin(

char ch = mathNow.charAt(mathNow.length() - 1); if (isOper(ch) || ch == '(')

mathNow += "sin(";

}

tvNow.setText(mathNow);

}

});

响应场景设置:

1.mathNow 长度为0,添加“sin(”

2.mathNow 最后一个 char 是 base opers,(,添加“sin(”

2. btn_cos

btnCos.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (equal_flag == 1) {

mathNow = "";

equal_flag = 0;

}

if (mathNow.length() == 0) {

mathNow += "cos(";

} else {

char ch = mathNow.charAt(mathNow.length() - 1); if (isOper(ch) || ch == '(')

mathNow += "cos(";

}

tvNow.setText(mathNow);

}

除了 x2,x y,其他 ScienceOper 的场景都和 btn_sin 相同

3. btnX2

btnX2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//要求mathNow不为空并且最后一个字符:num, ), e, π

if (mathNow.length() > 0) {

char ch = mathNow.charAt(mathNow.length() - 1);

if (isNum(ch) || ch == ')' || ch == 'e' || ch == 'π') mathNow += "^2";

}

tvNow.setText(mathNow);

}

});

响应场景设置:

1.mathNow 不为空,并且最后一个字符是:Num,),e,π

5. btnX y

btnXy.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//条件同btnX2

if (mathNow.length() > 0) {

char ch = mathNow.charAt(mathNow.length() - 1);

if (isNum(ch) || ch == ')' || ch == 'e' || ch == 'π') mathNow += "^(";

}

tvNow.setText(mathNow);

}

});

响应事件场景同 btnX2。

3.2.5 初始化 tvDeg,tvRad

用法:点击 Deg 之后,angle_metric 设置为 DEG,角度制,界面上 DEG 变为蓝色,RAD 变为灰色,RAD 同样是这样

public void initDegRad() {

tvDeg.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

tvDeg.setTextColor(Color.parseColor("#3FA2F0"));

tvRad.setTextColor(Color.parseColor("#AAAAAA"));

angle_metric = DEG;

}

});

tvRad.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

tvRad.setTextColor(Color.parseColor("#3FA2F0"));

tvDeg.setTextColor(Color.parseColor("#AAAAAA"));

angle_metric = RAD;

}

});

}

3.2.6初始化精度选择器

属性设置:

1.设置精度最大为12位,最小为0位,默认设置值为6

2.NumberPicker 监听事件将用户选择的精度值传给成员变量 precision

//初始化精度选择器

public void initPrecisionPicker() {

precisionPicker.setMaxValue(12); //最多保留12位

precisionPicker.setMinValue(0);

precisionPicker.setValue(6);

precisionPicker.setOnValueChangedListener(new

NumberPicker.OnValueChangeListener() {

@Override

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

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

android开发计算器设计开发报告

《安卓开发》程序设计报告 题目简单计算器开发 专业(班级)网工111班 姓名张波波 学号5(qq) 指导教师赵(老师) 日期 目录 一、设计说明:2 1.设计内容:Android简单应用程序开发,简单计算器。2 2程序说明:2 二、开发环境:3 三、概要设计:3 系统的总体3 四、程序流程和系统功能设计3 程序流程设计3 .系统功能设计4 基于Android平台系统具体设计4 总体模块详细设计5 输入模块详细设计 5

显示模块详细设计6 计算模块详细设计 6 五、计算器系统实现7 Android应用程序构成7 六、截图说明 8 1、图标8 2界面8 3运算界面9 4错误输入9 5设计平台界面10 6签名导出apk 10 七、总结 11 课程设计任务书 一、设计说明: 1.设计内容:Android简单应用程序开发,简单计算器。 2程序说明: 1、计算器界面友好,方便使用。 2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。能够判断用户输入运算数是否正确。4、 支持小数运算。 具有退格功能,能够删除最后一个输入,ce。 具有清除功能,删除所有,c。 具有结果存储功能,能够显示存储器状态,支持触屏手机。 支持最低版本,最高版本。开发时为

二、开发环境: 开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。 三、概要设计: 系统的总体 整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其她的功能。 总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其她的信息。 计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。 四、程序流程和系统功能设计 程序流程设计 知道了系统的功能以后,我们通过来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。 系统流程图如图4-1所示:

android开发计算器课程设计

Android应用程序开发 实验报告 学号:131006105 学生姓名: 冯会会 指导教师:齐兵辉 提交时间:2015.11.10

目录 第一章系统分析与设计 (3) 1.1系统的可行性分析 (3) 1.2系统的需求分析 (3) 第二章系统详细设计 (3) 2.1 ACTIVITY的详细设计 (3) 2.2 XML文件的详细设计 (14) 第三章测试运行及总结 (20) 3.1界面截图 (20) 3.2运行界面截图 (21) 3.3运行结果截图 (22) 3.4总结 (22)

第一章系统分析与设计 1.1系统的可行性分析 可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的实时调查得出以下四点的可行性分析: (1)技术可行性:Eclipse + Android ADT的技术已经较为成熟,通过SUN 公司(现被ORCEL公司收购)推出的跨平台、动态的JAVA语言进行开发。 (2)运行可行性:该系统需要Android虚拟机环境,Eclipse中安装ADT,DDMS等Google Android相关插件。其运行环境已经相当稳定,它功能丰富,包括了完备的Android程序的编码、调试、测试和发布功能,其中支持所有Android应用开发相关技术,包括SQLite,Skia,3D制作,Android XML,能够很好的发布Android的应用程序APK包。 (3)法律可行性:因为是自主开发设计,所以不会构成侵权,在法律上是可行的。 通过以上的可行性分析,将采用Eclipse+Android ADT + DDMS技术,运用JAVA语言进行系统的开发。 1.2 系统的需求分析 根据分析需求,这个系统必须实现以下的功能:

简单计算器设计报告

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

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布局管理方

android开发计算器设计开发报告

Xx大学计算机与电子 信息学院《移动编程 技术》安卓程序开发 设计报告---简单计算 器 《安卓开发》程序设计报告 题目简单计算器开发 专业(班级) 网工111班 姓名张波波 学号952937885(qq) 指导教师赵(老师) 日期2014.5.7

目录 一、设计说明: (3) 1.设计内容:Android简单应用程序开发,简单计算器。 (3) 2程序说明: (3) 二、开发环境: (3) 三、概要设计: (3) 3.1 系统的总体 (3) 四、程序流程和系统功能设计 (4) 4.1程序流程设计 (4) 4.2.系统功能设计 (5) 4.3基于Android平台系统具体设计 (6) 4.3.1 总体模块详细设计 (6) 4.3.2 输入模块详细设计 (6) 4.3.3 显示模块详细设计 (7) 4.3.4 计算模块详细设计 (7) 五、计算器系统实现 (8) 5.1 Android应用程序构成 (8) 六、截图说明 (9) 1、图标 (9) 2界面 (10) 3运算界面 (11) 4错误输入 (11) 5设计平台界面 (12) 6签名导出apk (12) 七、总结 (13)

课程设计任务书 一、设计说明: 1.设计内容:Android简单应用程序开发,简单计算器。 2程序说明: 1、计算器界面友好,方便使用。 2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。 3、能够判断用户输入运算数是否正确。 4、 4、支持小数运算。 5、具有退格功能,能够删除最后一个输入,ce。 6、具有清除功能,删除所有,c。 7、具有结果存储功能,能够显示存储器状态,支持触屏手机。 8、支持最低版本2.0,最高版本4.4。开发时为4.2 二、开发环境: 开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。 三、概要设计: 3.1 系统的总体 整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最

第02讲 简易计算器的设计

第02讲计算器 2.1 计算器简介 大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。 图2-1 Windows XP下的标准型计算器 图2-2 Windows XP下的科学型计算器 Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。 接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置 用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。 2.2.1 界面设计 打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。 图2-1 计算器用户界面 2.2.2 属性设置 窗体和各控件的属性设置如表2-1所示。 表2-1 窗体和各控件的属性

2.3 编写代码 本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量: //****************************************************************** double num1, num2, result; // 操作数及运算结果 bool decimalFlag = false; // 判断输入的是否为小数 string myOperator; // 操作类型 //******************************************************************

简易计算器的设计与实现

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

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

android开发——简易计算器的设计报告

简易计算机的设计 摘要:Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行。 一、实训目的 1、了解Android系统,学会Android开发环境的搭建。 2、了解E clipse,学会用E clipse和Java 开发一个Android程序。 3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。 4、巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。 二、实训任务 1、Activity的相关知识 简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。 (1)Activity的相关方法及相关函数:void onCreate(Bundle)首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息);void onStart() 说明了将要显示给用户的活动;void onRestart()将处于停止状态的活动重新显示给用户;void onResume()用户可以开始与活动进行交互时

android简单计算器课程设计

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

基于AT89C51的简单计算器设计

设计题目:基于单片机的简易计算器设计与仿真 一、设计实验条件: 地点: 实验设备:PC机(装有Keil;Protues;Word ;Visio ) 二、设计任务: 本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。 设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 三、设计时间与设计时间安排: 1、设计时间:6月27日~7月8日 2、设计时间安排: 熟悉课题、收集资料:3天(6月27日~6月29日)

具体设计(含上机实验):6天(6月30日~7月5日) 编写课程设计说明书:2天(7月6日~7月7日) 答辩:1天(7月8日) 四、设计说明书的内容: 1、前言:(自己写,组员之间不能相同,写完后将红字删除,排版时注意对齐) 本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。 2、设计题目与设计任务: 现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减、乘、除四则运算;(4)对错误的控制及提示。 针对上述功能,计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块;(4)错误处理及提示模块。3、主体设计部分: (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键仅对输入的数据有

基于51单片机的简易计算器设计

基于单片机的简易计算器设计 摘要 (2) 关键字:80C51 LCD1602 4*4矩阵键盘计算器 (2) 第一章绪论 (3) 1.1系统开发背景 (3) 1.2系统开发意义 (3) 1.3设计目的 (3) 1.4设计任务 (3) 第二章单片机发展现状 (4) 2.1目前单片机的发展状况 (4) 2.1.1单片机的应用场合 (4) 2.2计算器系统现状 (5) 2.3简易计算器系统介绍 (5) 第三章系统硬件设计及说明 (6) 3.1系统组成及总体框图 (7) 3.2AT89S52单片机介绍 (7) 3.3其它器件介绍及说明 (10) 3.3.1 LCD1602液晶显示 (10) 3.3.2 4*4矩阵扫描按键 (13) 第四章 PROTEUS模拟仿真 (14) 第五章系统硬件设计及说明 (16) 第六章软件设计 (17) 6.1汇编语言和C语言的特点及选择 (17) 6.2源程序代码 (17)

摘要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。 计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。 关键字:80C51 LCD1602 4*4矩阵键盘计算器

Android计算器设计报告

《Android课程实践》报告 课设题目Android计算器程序设计 学院 班级 学生姓名 学号 序号 指导教师 时间2019.11.21

一、设计分析 1.1 实现功能 本次实验进行设计可保存计算过程的计算器,实现功能如下: 1.仿照真实的计算器实现其功能。 2.在左上方的文本框中显示当前的计算过程,在右边的文本区中显示以往的计算过程。 3.单击“保存”按钮可以将文本区中的全部计算过程保存到文件;单击“复制”按钮可以将文本区中选中的文本复制到剪贴本;单击“清除”按钮可以清除文本区的全部内容。 1.2 设计思路 考虑到计算器的美观和易用性,可以把计算器做在 Android 端,Android 系统的 App 的底层功能由 Java 实现,所有工作主要分为两部分: 1.设计计算器界面 (activity_main.xml) 计算器界面用xml文件编写,包括手机竖屏和横屏两个布局文件: 竖屏:activity_main.xml 布局为 portrait 横屏:activity_main_land.xml 布局为 landscape 竖屏模式可以完成基本的四则运算,不涉及科学计算 横屏模式除了完成基本的四则运算,还添加了科学运算 2.编写计算接口 (ScienceCalculator.java) ScienceCalculator 可以完成包含科学运算函数的 math,先实现可以完成基本四则运算的 BaseCalculator,在此基础上,实现 ScienceCalculator。 运算的思路是先通过 ScienceCalculator 完成math中需要科学计算函 数的部分,再用这些部分计算的结果替换原 math 中的这些部分,使包含科学计算函数的 math 转变成可用 BaseCalculator 计算的 math。

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 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,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

基于安卓的计算器的设计与实现

安卓应用程序设计 ——简易计算器的实现院(系)名称 专业名称 学生姓名 学生学号 课程名称 2016年6月日

1.系统需求分析 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android 的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。基于android的计算器的设计,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。 2.系统概要设计 2.1计算器功能概要设计 根据需求,符合用户的实际要求,系统应实现以下功能:计算器界面友好,方便使用,,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有清除功能。 图2.1系统功能图 整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。 输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及 响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结

单片机简易计算器课程设计

单片机简易计算器课程设计 课程设计 题目名称________________ 简易计算器设计____________ 课程名称_____________ 单片机原理及应用____________ 学生姓名________________

班级学号________________ 2018年6月20日

目录 一设计目的 (2) 二总体设计及功能介绍 (2) 三硬件仿真图 (3) 四主程序流程图 (4) 五程序源代码 (5) 六课程设计体会 (28)

设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUE仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51 系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0?9)、符号键(+、-、x、十)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘;

执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

相关主题
文本预览
相关文档 最新文档