二级课题二级实践课题计算器设计及开发.docx

上传人:b****5 文档编号:29950749 上传时间:2023-08-03 格式:DOCX 页数:53 大小:210.25KB
下载 相关 举报
二级课题二级实践课题计算器设计及开发.docx_第1页
第1页 / 共53页
二级课题二级实践课题计算器设计及开发.docx_第2页
第2页 / 共53页
二级课题二级实践课题计算器设计及开发.docx_第3页
第3页 / 共53页
二级课题二级实践课题计算器设计及开发.docx_第4页
第4页 / 共53页
二级课题二级实践课题计算器设计及开发.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

二级课题二级实践课题计算器设计及开发.docx

《二级课题二级实践课题计算器设计及开发.docx》由会员分享,可在线阅读,更多相关《二级课题二级实践课题计算器设计及开发.docx(53页珍藏版)》请在冰豆网上搜索。

二级课题二级实践课题计算器设计及开发.docx

二级课题二级实践课题计算器设计及开发

中原工学院

二级课题实训任务书

2011年6月13日

学生姓名

司伟奇

学号

2

专业

计算机应用(软件测试及维护方向)

班级

测试102

课题名称

计算器设计及开发

课题来源

二级实训模拟课题

指导教师

郭彦宾

专业

计算机科学及技术

职称

集成项目经理

课题说明:

本次课题主要完成了计算器的标准型和科学型。

标准型实现了基本的加减乘除以及开方,求倒数等功能。

科学型在标准型的基础上又进一步增加了一些函数和进制之间转换的功能。

其中函数有正弦函数,余弦函数,正切函数,对数函数和指数函数。

进制主要有十进制,十六进制,八进制,二进制。

又增加了x的y次方功能,x的平方和x的三次方的功能,还有常量PI和e。

承担的任务:

1.标准型和科学型的界面设计

2.科学型部分运算功能的实现

3.测试部分功能的实现

中原工学院

二级课题实训任务书

2011年6月14日

工作进度安排:

任务名称

时间轴2011-6-13至2011-6-28(除周日)

负责人

审核人

1

2

3

4

5

6

7

8

9

10

11

12

 

郭彦宾

总体进度

30%

62%

8%

整理资料

司伟奇,陈梦龙,张海林

编写代码

张海林,司伟奇,陈梦龙

代码测试

司伟奇,张海林

整理文档

司伟奇

指导教师签字:

2011年6月28日

实训单位意见

签章:

年月日

学院意见

签章:

年月日

中原工学院

二级课题实训评审表

学号

2

姓名

司伟奇

专业

计算机应用(软件测试及维护方向)

班级

测试102

题目

计算器设计及开发

成绩(百分制):

指导教师签名:

2011年6月28日

软件学院

二级课题报告

 

课题名称:

计算器设计及开发

专业:

计算机应用(软件测试及维护方向)

班级:

测试102

学号:

2

学生姓名:

司伟奇

指导教师:

郭彦斌

 

2011年6月28日

 

摘要

随着科学技术的不断发展,很多复杂的计算都可以通过计算机轻松的解决,本次课题开发主要让用户摆脱了手动计算复杂数据,使用户快速,方便的得到结果,大大减少了用户所花费的时间,提高了用户的效率。

第一章对项目的问题描述、技术分析及工程进度计划做整体的概述。

第二章深入分析了系统的各种功能需求。

第三章概要阐述系统整体各功能模块的实现以及测试各功能。

本次二级级实践课题主要用到所学java语言针对题目的要求进行编写相应的程序,所用的语言是java语言,所用的工具是eclipse。

本次课题是计算器的开发及设计,主要实现了计算器的标准和科学两个类型,标准型主要实现了加减乘除基本运算功能,科学型在标准型的基础上增加了函数、阶乘和x的平方和立方以及x的y次方。

关键词:

计算器设计及开发、eclipse、J2SE

 

 

第1章项目分析

计算器应用程序是基于操作系统平台之上运行的,它所实现的功能主要是进行简单的和复杂的数学运算,其目的主要是提高运算效率和准确性,方便用户更好地运用计算机进行准确高效的科学运算。

经过一段时间的分析,我们小组觉得整个计算器系统应该划分为两个功能模块,其一就是“标准型功能模块”,这个模块的主要的功能是实现简单的数学运算,包括加、减、乘、除最基本的数学运算和开方、求倒、求相反数等方面的功能的实现;其二就是“科学型功能模块”,这个模块的主要的功能是实现一些比较复杂的有关函数方面的运算,当然同时也包含了一些“标准型功能模块”上的一些功能,更加方便用户的计算,提高计算器的使用范围,是计算机得到更加广泛的推广。

1.1问题描述

我们小组经过项目分析之后就确立了自己系统的实现思路,以及功能的实现,目标已经很明确,但是在编写代码的时候遇到了很多的问题,如下所示:

1:

在界面的布局的时候所选用什么样的组件,使得系统的界面更加的美观;

2:

一些有关简单的加、减、乘、除计算方面的功能是如何实现的;

3:

如何实现在文本域中只有一个小数点和负号的存在;

4:

怎么实现二进制、十进制、十六进制、八进制之间的相互转换;

5:

如何实现有关函数方面的科学运算;

6:

怎么编写更加简洁的代码,以便于代码的执行效率达到高效的目的,提高代码的执行效率,从而也提高了运算的速率;

1.2技术分析

一个计算器的最最核心的部分也就是那些参及数学运算、科学运算的代码的实现,小组在编写程序的过程中也遇到了许多的障碍,也感觉到无助和迷惑,经过一段时间的思考和跟别人的探讨,找到了解决问题的办法,也从中收获了许多,在整个计算器的程序开发中的有关技术开发上的能力也得到了提高,在这次课题中我就针对上述的“问题描述”进行简单的技术上的分析:

在经过需求分析之后第一步要做的是系统的界面的设计,这是第一步要做的工作,只有先确立了系统的界面,才能进行下一步功能代码的编写,最终达到功能的实现,对于计算器的界面的设计,在相关的网站上也参考了许多的有关计算器的界面的布局,最终我们小组成员达成共识,以数字键和功能键进行分区设置,进行布局的管理和控制,在不断的修改中,最终实现了当前的布局;

界面布局好之后进入功能模块的设计时期,在进行功能代码的实现时主要运用了if……else……语句,判断在文本域中的字符是否包含有小数点和正负号也运用了if……else……语句,调用字符类中的相关的方法,以及Math类的相关方法就可以解决相关的问题。

其中的核心部分就是相关的数学运算的功能的实现,在用户进行第一次数字输入的之后,一定要按下相关的运算字符按钮,这时,第一次输入的数字就存储在一个变量中,在按下运算按钮之后文本域将清空然后进行第二个要参及的数字,然后将第二次输入的数字存储在第二个变量中,然后用户必将按下等号的按钮,此时将实现相关的监听,将对运算字符按钮进行判断,之后再将两个先后存储的变量及参及运算的按钮进行运算,并将所得得结果显示在文本域中,以便于用户的需求。

1.3工程进度计划

任务名称

时间轴2011-6-13至2011-6-28(除周日)

负责人

审核人

1

2

3

4

5

6

7

8

9

10

11

12

 

郭彦宾

总体进度

30%

62%

8%

整理资料

司伟奇,张海林,陈梦龙

编写代码

张海林,陈梦龙,司伟奇

代码测试

司伟奇,张海林

整理文档

司伟奇

 

第2章实现及测试

主要任务是计算器标准型和科学型的界面实现以及测试科学型的部分功能。

2.1标准型模块的设计

2.1.1界面的设计

界面上有一个菜单用于编辑,查看和帮助。

下面是一个文本框用来显示输入数值和得到运算结果。

对象

按钮按键的名称

按钮按键的说明

对象

按钮按键的名称

按钮按键的说明

文本框

text

显示结果

按钮

dao

1/x

按钮

mc

MC

按钮

backspace

Backspace

按钮

mr

MR

按钮

ce

CE

按钮

ms

MS

按钮

c

C

按钮

m

M+

按钮

num0

0

按钮

jia

+

按钮

num1

1

按钮

jian

-

按钮

num2

2

按钮

cheng

*

按钮

num3

3

按钮

chu

/

按钮

num4

4

按钮

qiuyu

%

按钮

num5

5

按钮

deng

=

按钮

num6

6

按钮

Ffu

+/-

按钮

num7

7

按钮

dian

.

按钮

num8

8

按钮

kai

sqrt

按钮

num9

9

标准型计算器整体界面(图2.1.1)复制粘贴功能(图2.1.2)

学型标准型之间的转换(图2.1.3)进行帮助选项(图2.1.4)

2.1.2界面代码的实现

importjavax.swing.*;

importjavax.swing.event.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassCalculator1extendsJFrameimplementsActionListener{

JFrameframe=newJFrame();

privateJMenueditMenu=newJMenu("编辑");

privateJMenuviewMenu=newJMenu("查看");

privateJMenuhelpMenu=newJMenu("帮助");

privateJButtonmc=newJButton("MC");

privateJButtonmr=newJButton("MR");

privateJButtonms=newJButton("MS");

privateJButtonm=newJButton("M+");

privateJButtonbutton=newJButton("");

 

privateJButtonjia=newJButton("+");

privateJButtonjian=newJButton("-");

privateJButtoncheng=newJButton("*");

privateJButtonchu=newJButton("/");

privateJButtonqiuyu=newJButton("%");

privateJButtondeng=newJButton("=");

privateJButtonfu=newJButton("+/-");

privateJButtondian=newJButton(".");

privateJButtonkai=newJButton("sqrt");

privateJButtondao=newJButton("1/x");

 

JMenuItemcopy,paste,s,t,help,about,author;

JButtonbackspace,ce,c,num0,num1,num2,num3;

JButtonnum4,num5,num6,num7,num8,num9;

Containercp;

JTextFieldtext;

Stringcopycontent="";

booleanclickable=true,clear=true;

intall=0;

doubleqian;

Stringfuhao;

intfirst=1;

publicCalculator1()

{

setLayout(newBorderLayout(5,5));

text=newJTextField(25);

text.setText("0.");

text.setHorizontalAlignment(JTextField.RIGHT);//从右到左

JPanelpanel1=newJPanel();

panel1.add(text);

text.setEditable(false);

text.setBackground(Color.white);

backspace=newJButton("Backspace");

ce=newJButton("CE");

c=newJButton("C");

JPanelpanel2=newJPanel(newBorderLayout(5,5));

panel2.add(backspace,BorderLayout.WEST);

panel2.add(ce,BorderLayout.CENTER);

panel2.add(c,BorderLayout.EAST);

num0=newJButton("0");

num1=newJButton("1");

num2=newJButton("2");

num3=newJButton("3");

num4=newJButton("4");

num5=newJButton("5");

num6=newJButton("6");

num7=newJButton("7");

num8=newJButton("8");

num9=newJButton("9");

 

JPanelpanel3=newJPanel(newGridLayout(4,5,5,5));

panel3.add(num7);

panel3.add(num8);

panel3.add(num9);

panel3.add(chu);

panel3.add(kai);

panel3.add(num4);

panel3.add(num5);

panel3.add(num6);

panel3.add(cheng);

panel3.add(qiuyu);

panel3.add(num1);

panel3.add(num2);

panel3.add(num3);

panel3.add(jian);

panel3.add(dao);

panel3.add(num0);

panel3.add(fu);

panel3.add(dian);

panel3.add(jia);

panel3.add(deng);

 

JPanelpanel4=newJPanel(newGridLayout(5,1,5,5));

panel4.add(button);

button.setEnabled(false);

button.setBorder(BorderFactory.createLoweredBevelBorder());

button.setPreferredSize(newDimension(20,20));

panel4.add(mc);

panel4.add(mr);

panel4.add(ms);

panel4.add(m);

JPanelpanel5=newJPanel(newBorderLayout(5,5));

panel5.add(panel2,BorderLayout.NORTH);

panel5.add(panel3,BorderLayout.CENTER);

JPanelpanel6=newJPanel(newBorderLayout(5,5));

panel6.add(panel4,BorderLayout.WEST);

panel6.add(panel5,BorderLayout.CENTER);

JPanelpanel7=newJPanel(newBorderLayout(5,5));

panel7.add(panel1,BorderLayout.NORTH);

panel7.add(panel6,BorderLayout.CENTER);

add(panel7);

JMenuBarmainMenu=newJMenuBar();

setJMenuBar(mainMenu);

mainMenu.add(editMenu);

mainMenu.add(viewMenu);

mainMenu.add(helpMenu);

copy=newJMenuItem("复制");

paste=newJMenuItem("粘贴");

KeyStrokecopyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);

copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键

KeyStrokeasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);

paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键

editMenu.add(copy);

editMenu.add(paste);

copy.addActionListener(this);

paste.addActionListener(this);

t=newJMenuItem("●标准型");

s=newJMenuItem("科学型");

viewMenu.add(t);

viewMenu.add(s);

t.addActionListener(this);

s.addActionListener(this);

help=newJMenuItem("帮助主题");

about=newJMenuItem("关于计算器");

author=newJMenuItem("作者主页");

helpMenu.add(help);

helpMenu.add(about);

helpMenu.add(author);

help.addActionListener(this);

about.addActionListener(this);

author.addActionListener(this);

 

//按钮颜色

backspace.setForeground(Color.red);

mc.setForeground(Color.red);

mr.setForeground(Color.red);

ms.setForeground(Color.red);

m.setForeground(Color.red);

ce.setForeground(Color.red);

c.setForeground(Color.red);

chu.setForeground(Color.red);

cheng.setForeground(Color.red);

jian.setForeground(Color.red);

jia.setForeground(Color.red);

deng.setForeground(Color.red);

num0.setForeground(Color.blue);

num1.setForeground(Color.blue);

num2.setForeground(Color.blue);

num3.setForeground(Color.blue);

num4.setForeground(Color.blue);

num5.setForeground(Color.blue);

num6.setForeground(Color.blue);

num7.setForeground(Color.blue);

num8.setForeground(Color.blue);

num9.setForeground(Color.blue);

fu.setForeground(Color.blue);

dian.setForeground(Color.blue);

kai.setForeground(Color.blue);

qiuyu.setForeground(Color.blue);

dao.setForeground(Color.blue);

2.2科学型模块的设计

2.2.1界面的设计

界面上有一个菜单用于编辑,查看和帮助。

下面是一个文本框用来显示输入数值和得到运算结果,文本框下有用于进制之间进行转换的单选按钮。

对象

按钮按键的名称

按钮按键的说明

对象

按钮按键的名称

按钮按键的说明

文本框

text

显示结果

按钮

fu

+/-

按钮

backspace

Backspace

按钮

dian

.

按钮

ce

CE

按钮

dao

1/x

按钮

c

C

按钮

aa

A

按钮

pi

pi

按钮

bb

B

按钮

sin

Sin

按钮

cc

C

按钮

com

Cos

按钮

dd

D

按钮

tan

Tan

按钮

ee

E

按钮

exp

Exp

按钮

ff

F

按钮

xy

X^y

按钮

num0

0

按钮

x3

X^3

按钮

num1

1

按钮

x2

x^2

按钮

num2

2

按钮

ln

ln

按钮

num3

3

按钮

log

log

按钮

num4

4

按钮

nj

n!

按钮

num5

5

按钮

e1

e

按钮

num6

6

按钮

jia

+

按钮

num7

7

按钮

jian

-

按钮

num8

8

按钮

cheng

*

按钮

num9

9

按钮

chu

/

按钮

Int

Int

按钮

deng

=

图(2.2.1)科学型计算器整体界面

 

十进制界面(图2.2.2)

八进制界面(图2.2.3)

十六进制界面(图2.2.4)

二进制界面(图2.2.5)

2.2.2界面代码的实现

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.border.*;

publicclassCalculatorextendsJFrameimplementsActionListener{

JFrameframe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1