当前位置:文档之家› Java语言程序设计实训【计算器】

Java语言程序设计实训【计算器】

目录

一、课程设计的目的与要求 (2)

1.1 课程设计目的 (2)

1.2 课程设计要求 (2)

二、题目说明 (2)

2.1 题目说明 (2)

2.2 开发工具介绍 (2)

三、总体设计 (3)

3.1 系统开发平台 (3)

3.2 系统结构图 (3)

四、详细说明 (3)

4.1 计算器主界面 (3)

4.2 系统实施 (4)

五、遇到的问题和解决方法 (9)

六、总结 (10)

七、参考文献 (10)

附录(源程序代码) (11)

八、教师评语 (20)

一、课程设计的目的与要求

1.1 课程设计目的

1) 复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握。

2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实

际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。

3) 培养学生在项目开发中团队合作精神,创新意识及能力。

1.2 课程设计要求

◆功能要求:该程序显示GUI用户界面,至少能实现整数的加,减,乘,除四则运算.

◆界面要示:用图形界面实现

◆实训条件:计算机房

◆硬件要求:装有Winxp等操作系统的机器

◆软件要求: JDK、JCreator等开发工具

二、题目说明

2.1 题目说明

随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。

该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。可以进行简单的四则运算(加、减、乘、除,以及求倒数,求相反数),以及常用的数学函数(sin,cos,log,1/x,pow,sqrt,%,)和记忆处理功能,有退格,清零, 归零等应用。界面颜色为白色,数字字体颜色为蓝色,函数及其他功能键为红色。该程序支持键盘操作。

2.2 开发工具介绍

此次实训采用JCreator这一Java程序设计的集成开发环境。它具有编辑、调试、运行Java程序的功能。当前最新版本是Jcreator5.00。这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。特点:

1.可无限撤销、代码缩进、自动类库方法提示、按所选智能定位查阅JavaAPI文档等功能。

2.新版采用仿VS2005界面设计,体验感觉更快更好更易用。

3.支持JSP、Ant、CVS。

4.小巧、易用、美观,是Java初级程序员的理想IDE。

三、总体设计

3.1系统开发平台

本系统使用Java语言设计,开发平台为JDK1.5。

3.2 系统结构图

四、详细说明

4.1计算器的主界面

图2 计算器的主界面

4.2系统实施

1、实现简单的加法、减法、乘法、除法

功能解释:当进行数值运算时,先单击计算器面板数字键,按纽响应由方法e.getSource()完成,再单击符号按钮,然后再单击面板上数值,最后单击等于号,计算器输出运算结果。例如当计算一个简单的加法时35+55 ;如下图:图4-1-2 图4-1-3 图4-1-4

图4-1-2(先输入35)

图4-1-3(输入“+”后再输入55)

图4-1-4(显示结果)

当进行减、乘、除的简单运行,其方法和数值的加法运算过程相似,但是当进行除法的时候,在计算器界面上弹出一个消息框。

实现简单的加、减、乘、除功能的关键代码如下:

if(ee.getSource()==cs[0]){

qian=Double.parseDouble(text.getText());

fuhao="+";

jsd=false;}

if(e.egetSource()==cs[4]){

qian=Double.parseDouble(text.getText());

fuhao="-";

jsd=false; }

if(e.egetSource()==cs[8]){

qian=Double.parseDouble(text.getText());

fuhao="*";

jsd=false; }

if(e.egetSource()==cs[11]){

qian=Double.parseDouble(text.getText());

fuhao="/";

jsd=false; }

//公共的用于计算的方法

public void jisuan(){

switch (jianshi)

{

case 1:

result=result+some;break;

case 2:

result=result-some;break;

case 3:

result=Math.pow(result,some);break;

case 4:

result=result*some;break;

case 5:

result=result/some;break;

}

secendNumjanshi=false;text.setText(""+result);formart();

}

当单击等于时,进行数值之间的符号选择并输出计算的值

else if(ee.getSource()==cs[15]) //如果按钮"="被按下

{

this.jisuan();

jsd=false;

jianshi0=0;

jianshiBackspase=true;

jianshi2=false;jianshi3=true;

}text.requestFocus();

2.常用的数学函数(sin,cos,log,1/x,pow,sqrt,%,)功能。

功能解释:这几个方法都是从Maths类中调用,sqrt()的方法功能是将数值开平方;pow()的方法是输出x的y次幂的值;sin,cos是正,余弦函数。当计算数值的进行这几个方法应用时,先单击计算器面板上的数值,按钮响应即用e.getSource()方法实现,再单击想要计算数值的方法,按钮响应,最后单击等于,计算器上输出结果。

例如:sqart(a) 当a=16 ;如图图4-1-5 图4-1-6

图4-1-5(先输入16)

图4-1-6(键入sqrt,最后结果显示)

A:如果按钮"pow"被按下

else if(ee.getSource()==cs[5]) { jianshi0++;jsd=false;

if(secendNumjanshi==false){jianshiBackspase=true;}

B:如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();}

jianshi=3;jianshi2=true;jianshi3=false; }

C:如果按钮"sin"被按下,其他例如cos,log,函数原理相同,此处不作详细解释。

else if(ee.getSource()==cs[6]) {

jsd=false;jianshiBackspase=true;jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{b=text.getText();some=Double.parseDouble(b);

result=Math.sin(some); text.setText(""+result);formart();

jianshi2=false;jianshi3=true;

} else{text.setText("0");}

D:实现开平方的功能:通过 sqrt(Double.parseDouble(text.getText()))从计算器上获得数值然后用sqrt()方法实现

else if(ee.getSource()==cs[7]) {

jsd=false;jianshiBackspase=true;

jianshi0++;if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{ b=text.getText(); some=Double.parseDouble(b);

result=Math.sqrt(some);text.setText(""+result);

formart();jianshi2=false; jianshi3=true;}

3、实现正负数的使用,以及计算器的记忆功能

功能解释:当数据出现正负号时,也能提供有力支持。摒弃普通计算器只能计算正数的弊端。而且所添加的记忆功能能在我们处理多数据时,应付自如。不用害怕,忘记结果;也不用害怕重新计算结果。减少了工作生活中的许多麻烦。

例如:(-3)+(-12);如图图4-1-7 图4-1-8 图4-1-9

图4-1-7(先输入-3)

图4-1-8(键入“+”,输入-12)

图4-1-9(显示结果)

A:正负号的使用

class Panel3 extends JPanel implements ActionListener

{

JTextField text;

JButton zhuanhuan,BackSpase; //按钮"+/-"和"退格" String backSpase;Panel1 p1;Panel2 p2;

Panel3(JTextField text,Panel1 p1,Panel2 p2)

{setLayout(null);

this.p1=p1;this.text=text;this.p2=p2;

zhuanhuan=new JButton("+/-");

zhuanhuan.setForeground(Color.red);

zhuanhuan.setMargin(new Insets(0,0,0,0));

zhuanhuan.addActionListener(this);

add(zhuanhuan);

zhuanhuan.setBounds(0,0,30,30);

BackSpase=new JButton("BackSpase");

BackSpase.setForeground(Color.red);

BackSpase.setMargin(new Insets(0,0,0,0));

BackSpase.addActionListener(this);

backSpase=new String(); add(BackSpase);

BackSpase.setBounds(35,0,65,30);

}

B:记忆功能按钮

if(e4.getSource()==mr[0]) //“清除记忆”按钮被按下

{memory=0;mr[2].setForeground(Color.blue);}

else if(e4.getSource()==mr[1]) //“显示记忆”按钮被按下

{

text.setText(Double.toString(memory));

p2.formart();

p2.tokenizerPoint();

}

else if(e4.getSource()==mr[2]) //“记忆”按钮被按下

{mr[2].setForeground(Color.red);

memory=Double.parseDouble(text.getText());

}

else if(e4.getSource()==mr[3]) //"记忆加"按钮被按下

{ if(mr[2].getForeground()==Color.blue)

{mr[2].setForeground(Color.red);

memory=Double.parseDouble(text.getText());

}

memory=memory+Double.parseDouble(text.getText());

}text.requestFocus();

}

五、遇到的问题和解决方法

问题:

1、给各个控件用网格布局的时候,出了点错,计算器的界面没有调整好.

2、在异常操作处理时,代码不够完整.

解决方法:

1、从新把课本布局的那一段复习了一遍,又向同学和老师请教,最后经过老师指导,弄懂了布局的方法,调整好布局.

2、请老师指导,并请了同学帮助,并且在网上和课本上参考相关的知识,最后在老师指导下,进行了异常处理.

3、请同学和老师帮忙,编程时时刻不能心浮气躁,要细心,

六、总结

回顾该应用程序从选题收集材料到需求分析、设计、编码实现、测试等,文档的撰写,这系列连贯的过程,感想颇多,收获也很多。大致的总结几点,如下:1.设计开发一个软件,首先要了解所涉及到使用人群,一定要想办法进行规划,从不同途径获取材料。合理安排系统设计开发时间,进行实际开发会发现需求分析与系统设计占主要的时间,如果前面的工作做好了,编码实现占用的时间很短。所以我们要借助软件工程的思想对软件开发过程进行控制。

2. 在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响代码可读性。

3.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试程序带来很大的方便。

4. 独立思考的同时,要虚心向别人请教,可以达到事半功倍的效果。在具体编程实现系统功能的过程中,我遇到了不少的问题,我曾通过不同渠道向老师、同学、上相关网站寻求答案,收到了很好的效果。

5. 懂得充分利用网络资源,因为实验的内容有些不太理解,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。

通过独立完成学生信息管理系统的分析设计开发后,发现自己在进行软件开发方面提高不少,同时积极利用所学到的新技术用于自己的设计开发过程。由于本人是初次开发系统,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。

通过对此课题的开发,使我对用JCreator开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。当程序运行结束看到弹出的计算器的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA的学习有了一定的兴趣。

七、参考文献

1.赵景辉,迟勇.《Java语言程序设计》.大连理工大学出版社.2008。

2.於东军[等]著.《Java程序设计与应用开发》. 清华大学出版社.2005。

附录(源程序代码)

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.StringTokenizer;

class Panel1 extends JPanel implements ActionListener{

JButton base[]=new JButton[9]; //数组型按钮

JTextField text;

int i;

String n[]={"1","2","3","4","5","6","7","8","9"};//按钮的名字

Panel2 p2;String getE;

Panel1(JTextField text,Panel1 p1,Panel2 p2)

{

this.text=text;this.p2=p2;

FlowLayout flow=new FlowLayout();setLayout(flow);

for( i=0;i<9;i++){

base[i]=new JButton(n[i]);add(base[i]);

base[i].setForeground(Color.blue); //设置按钮前景色

base[i].setMargin(new Insets(0,0,0,0)); //设置按钮标签与边框间的空白base[i].addActionListener(this);

base[i].setPreferredSize(new Dimension(30,30)); }

}

public void actionPerformed(ActionEvent e) //监视数字按钮

{ getE=e.getActionCommand();

if(text.getText().equals("0")==false){ this.shuru(); }

else{ text.setText(null);this.shuru(); }

}

public void shuru() //公共的用于数字输入的方法

{

p2.jianshiBackspase=false;

try {if(p2.jianshi2==false)

{ if(p2.jianshi3==true){text.setText(null);p2.jianshi3=false;}

if((text.getText()+getE).length()<=30){

text.setText(text.getText()+getE);}

else{text.setText(text.getText());}

p2.b=text.getText();p2.result=Double.parseDouble(p2.b) p2.some=Double.parseDouble(p2.b);}

else

{ if(p2.jianshi3==false){text.setText(null);p2.jianshi3=true;}

if((text.getText()+getE).length()<=30){

text.setText(text.getText()+getE); }

else{ text.setText(text.getText()); }

p2.b=text.getText();p2.some=Double.parseDouble(p2.b);

p2.secendNumjanshi=true;}

}

catch(NumberFormatException e){}

text.requestFocus(); }

}

class Panel2 extends JPanel implements ActionListener

{int i;JButton cs[]=new JButton[16]; JTextField text;

String

name[]={"+","0","CE","C","-","pow","sin","sqrt","*","log","cos","%","/",".","1/x" ,"="};//按钮名字

double result,some;/*用于存储所输入的两个double型变量*/

int jianshi=0,/*用于监视"+","-","*","/","pow"*/jianshi0=0;//用于监视按钮被按次数的int型变量

boolean jsd=false,/*用于监视"."*/jianshi2=false,jianshi3=false,/*用于判断应该往哪一个变量里赋值*/

secendNumjanshi=false,/*用于监视第二个数是否被输入

*/jianshiBackspase=false;//监视“退格”键

String b;

Panel2(JTextField text)

{this.text=text;

FlowLayout flow=new FlowLayout();flow.setHgap(5);flow.setVgap(5);

setLayout(flow);

for( i=0;i<16;i++)

{cs[i]=new JButton(name[i]);

add(cs[i]);cs[i].setForeground(Color.red);

cs[i].setMargin(new Insets(0,0,0,0));cs[i].addActionListener(this);

cs[i].setPreferredSize(new Dimension(30,30));

}

cs[1].setForeground(Color.blue);cs[2].setForeground(Color.blue);

cs[13].setForeground(Color.blue);cs[3].setForeground(Color.blue);

cs[15].setForeground(Color.blue);

}

public void actionPerformed(ActionEvent ee) //监视Panel2的所有按钮

{ jianshiBackspase=false;

if(ee.getSource()==cs[0]) //如果按钮"+"被按下

{

if(secendNumjanshi==false){jianshiBackspase=true;}

//如果第二个数没被输入值,设置“退格”键无效

jianshi0++;if(secendNumjanshi==true){this.jisuan();}

jianshi=1;jianshi2=true;jianshi3=false;jsd=false;

}

else if(ee.getSource()==cs[1]) //如果按钮"0"被按下

{

if(jianshi2==false)

{ if(text.getText().equals("0")==false)

{ if(jianshi3==true){text.setText(null);jianshi3=false;}

text.setText(text.getText()+ee.getActionCommand());

b=text.getText();

result=Double.parseDouble(b);

}

else{text.setText("0");jsd=false;}

}

else{ if(text.getText().equals("0")==false)

{ if(jianshi3==false){text.setText(null);jianshi3=true;} text.setText(text.getText()+ee.getActionCommand());

b=text.getText(); some=Double.parseDouble(b);

}

else{text.setText("0");jsd=false; } } }

else if(ee.getSource()==cs[2]) //如果按钮"CE"被按下

{jsd=false;jianshi2=true;jianshi3=false;text.setText("0");jianshi0=0;} else if(ee.getSource()==cs[3]) //如果按钮"C"被按下

{jsd=false;jianshi2=false;jianshi3=false;

text.setText("0");jianshi=0;jianshi0=0;result=0;

}

else if(ee.getSource()==cs[4]) //如果按钮"-"被按下

{ jianshi0++;jsd=false;

if(secendNumjanshi==false){jianshiBackspase=true;}

//如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();}

if(text.getText().equals("-")==false)

{ jianshi=2;jianshi2=true;jianshi3=false;}

else{text.setText("-");}

}

else if(ee.getSource()==cs[5]) //如果按钮"pow"被按下

{ jianshi0++;jsd=false;

if(secendNumjanshi==false){jianshiBackspase=true;}

//如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();}

jianshi=3;jianshi2=true;jianshi3=false;

}

else if(ee.getSource()==cs[6]) //如果按钮"sin"被按下

{

jsd=false; jianshiBackspase=true;jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{

b=text.getText();some=Double.parseDouble(b);result=Math.sin(some); text.setText(""+result);formart(); jianshi2=false;jianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[7]) //如果按钮"sqrt"被按下

{

jsd=false;jianshiBackspase=true;jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{

b=text.getText();some=Double.parseDouble(b);result=Math.sqrt(some);

text.setText(""+result);formart();jianshi2=false;jianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[8]) //如果按钮"*"被按下

{

jianshi0++;jsd=false;

if(secendNumjanshi==false){jianshiBackspase=true;}

//如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();}jianshi=4;jianshi2=true;

jianshi3=false;

}

else if(ee.getSource()==cs[9]) //如果按钮"log"被按下

{

jsd=false;jianshiBackspase=true;jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("0")==false&&text.getText().equals("-")==false) {

b=text.getText(); some=Double.parseDouble(b); result=Math.log(some);

text.setText(""+result);formart();jianshi2=false;jianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[10]) //如果按钮"cos"被按下

{

jsd=false;jianshiBackspase=true; jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{b=text.getText(); some=Double.parseDouble(b);

result=Math.asin(some); text.setText(""+result);

formart();jianshi2=false;jianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[11]) //如果按钮"%"被按下

{

jsd=false;jianshiBackspase=true;

jianshi0++;

if(text.getText().equals("-")==false)

{b=text.getText();some=Double.parseDouble(b);

some=result*some/100;text.setText(""+some);

formart();jianshi2=false;jianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[12]) //如果按钮"/"被按下

{

jianshi0++;jsd=false;

if(secendNumjanshi==false){jianshiBackspase=true;}

//如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();}

jianshi=5;jianshi2=true;jianshi3=false;

}

else if(ee.getSource()==cs[13]) //如果按钮"."被按下

{

if(jsd==false)

{if(jianshi2==false)

{if(jianshi3==true){text.setText("0.");jianshi3=false;}

if(text.getText().equals("0.")==true||text.getText().equals("-")==true) {

text.setText("0."); b=text.getText(); result=Double.parseDouble(b);

}

else

{text.setText(text.getText()+".");}

}

else

{ if(jianshi3==false){text.setText("0.");jianshi3=true;}

if(text.getText().equals("0.")==true)

{

{text.setText("0.");b=text.getText();some=Double.parseDouble(b); }} else

{text.setText(text.getText()+".");}}

}

jsd=true;

}

else if(ee.getSource()==cs[14]) //如果按钮"1/x"被按下

{jsd=false;jianshiBackspase=true;

jianshi0++;

if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{b=text.getText();some=Double.parseDouble(b);

result=1/some;text.setText(""+result);formart();

jianshi2=false;ianshi3=true;

}

else{text.setText("0");}

}

else if(ee.getSource()==cs[15]) //如果按钮"="被按下

{

this.jisuan();jsd=false;jianshi0=0;

jianshiBackspase=true;jianshi2=false;jianshi3=true;

}text.requestFocus();

}

public void jisuan() //公共的用于计算的方法

{

switch (jianshi)

{

case 1:

result=result+some;break;

case 2:

result=result-some;break;

case 3:

result=Math.pow(result,some);break;

case 4:

result=result*some;break;

case 5:

result=result/some;break;

}

secendNumjanshi=false;text.setText(""+result);formart();

}

public void formart() //公共的用来格式化答案的方法

{

if(text.getText().endsWith(".0"))

{text.setText(text.getText().substring(0,text.getText().length()-2));} if(text.getText().equals("-0")){text.setText("0");}

if(text.getText().equals("-")){text.setText("0");}

if(text.getText().endsWith("."))

{text.setText(text.getText().substring(0,text.getText().length()-1));} }

public void tokenizerPoint() //用来管理各种计算情况下点的输入

{

StringTokenizer point=new StringTokenizer(text.getText(),".");

while(point.hasMoreTokens())

{ if(point.countTokens()>1)

{jsd=true;break;}

else{jsd=false;break;} } } }

class Panel3 extends JPanel implements ActionListener

{

JTextField text;

JButton zhuanhuan,BackSpase; //按钮"+/-"和"退格"

String backSpase;

Panel1 p1;

Panel2 p2;

Panel3(JTextField text,Panel1 p1,Panel2 p2)

{setLayout(null);

this.p1=p1;this.text=text;

this.p2=p2;

zhuanhuan=new JButton("+/-");

zhuanhuan.setForeground(Color.red);

zhuanhuan.setMargin(new Insets(0,0,0,0));

zhuanhuan.addActionListener(this);

add(zhuanhuan);

zhuanhuan.setBounds(0,0,30,30);

BackSpase=new JButton("BackSpase");

BackSpase.setForeground(Color.red);

BackSpase.setMargin(new Insets(0,0,0,0));

BackSpase.addActionListener(this);

backSpase=new String();

add(BackSpase);

BackSpase.setBounds(35,0,65,30);

}

public void actionPerformed(ActionEvent es)

{

if(es.getSource()==BackSpase) //如果按钮"退格"被按下

{

try

{

if(p2.jianshiBackspase==false)

{backSpase=text.getText();

if(text.getText().length()!=1)

{

text.setText(backSpase.substring(0,text.getText().length()-1));

p2.formart();

}

else{text.setText("0");}

p2.tokenizerPoint();p1.getE="";p1.shuru();

}

else{}

}

catch(StringIndexOutOfBoundsException ee){}

}

else //或者按钮"+/-"被按下

{ try

{text.setText(String.valueOf(Double.parseDouble(text.getText())*(-1)));

p2.formart(); p2.tokenizerPoint();

if(p2.jianshi2==false)

{

if(text.getText().equals("0")){text.setText("0");}

else{p2.jianshi3=false;p1.getE="";p1.shuru();}

}

else if(p2.jianshi!=0&&p2.secendNumjanshi==false){text.setText("0");} //如果计算按钮被按下但第二个数没有被赋值设置文本框为“0”

else

{

p1.getE="";p1.shuru();

} //以免影响本次调用方法“shuru()”

catch(NumberFormatException e){text.setText("0");}

}text.requestFocus(); } }

class Panel4 extends JPanel implements ActionListener

{

JButton mr[]=new JButton[4];//定义有记忆功能的按钮

String mrName[]={"MC","MR","MS","M+"};//按钮的名字

JTextField text;

double memory;Panel2 p2;

Panel4(JTextField text,Panel2 p2){

this.text=text;this.p2=p2;

FlowLayout flow=new FlowLayout();

flow.setHgap(5);flow.setVgap(5);

setLayout(flow);

for( int i=0;i<4;i++)

{

mr[i]=new JButton(mrName[i]);

add(mr[i]);

mr[i].setForeground(Color.red);

mr[i].setMargin(new Insets(0,0,0,0));

mr[i].addActionListener(this);

mr[i].setPreferredSize(new Dimension(30,30));

mr[i].setForeground(Color.blue);

} }

public void actionPerformed(ActionEvent e4) //监视Panel4的所有按钮if(e4.getSource()==mr[0]) //“清除记忆”按钮被按下

{memory=0;mr[2].setForeground(Color.blue);}

else if(e4.getSource()==mr[1]) //“显示记忆”按钮被按下

{

text.setText(Double.toString(memory));

p2.formart();p2.tokenizerPoint();

}

else if(e4.getSource()==mr[2]) //“记忆”按钮被按下

{

mr[2].setForeground(Color.red);

memory=Double.parseDouble(text.getText());

}

else if(e4.getSource()==mr[3]) //"记忆加"按钮被按下

{ if(mr[2].getForeground()==Color.blue)

{ mr[2].setForeground(Color.red);

memory=Double.parseDouble(text.getText());

}

memory=memory+Double.parseDouble(text.getText());

}text.requestFocus(); }

}

class WindowFrame extends JFrame implements KeyListener

{JTextField text;

Panel2 p2;Panel1 p1;Panel3 p3;Panel4 p4;

WindowFrame(String ss){super(ss);setVisible(true);

setLayout(null);text=new JTextField("0");

text.addKeyListener(this); //文本框被加上键盘监听

text.setEditable(false);text.setBackground(Color.WHITE);

text.setHorizontalAlignment(JTextField.RIGHT);

p2=new Panel2(text);p1=new Panel1(text,p1,p2);p3=new Panel3(text,p1,p2);

p4=new Panel4(text,p2);add(text);add(p2);add(p1);add(p3);add(p4);

text.setBounds(15,10,292,25);

p1.setBounds(45,75,110,110);

p2.setBounds(155,40,170,170);

p3.setBounds(50, 45, 130, 40);

p4.setBounds(15,40,30,140);

setBounds(100,100,325,220);text.requestFocus();

setResizable(false); validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void keyPressed(KeyEvent e) //用于监听键盘事件

{ if(Character.isDigit(e.getKeyChar())==true)

{if(Double.parseDouble(text.getText()+String.valueOf(e.getKeyChar()))!=0) if(text.getText().length()<=30)

{ if(text.getText().equals("0"))

{text.setText(String.valueOf(e.getKeyChar()));}

else{text.setText(text.getText()+String.valueOf(e.getKeyChar()));} }

else{text.setText(text.getText());}

p1.getE="";p1.shuru();}

else if(e.getKeyCode()==KeyEvent.VK_ENTER){p2.jisuan();}

}

public void keyTyped(KeyEvent e){}

public void keyReleased(KeyEvent e){}

}

public class JiSQ {

public static void main(String[] args) {

WindowFrame win=new WindowFrame("**天子牌计算器**"); }

}

java简易计算器实训报告

java简易计算器实训报告 Java简易计算器实训报告 随着人们对数学和计算机的需求不断增长,计算器也成为了必备的工具之一。而在计算机领域,Java语言因其跨平台和易于学习的特点而备受青睐。因此,我选择了利用Java语言来编写一款简易计算器的实训项目。 一、需求分析 在编写计算器之前,我们需要对其功能进行需求分析。一般来说,计算器的功能包括加、减、乘、除等基本数学运算符,以及括号、百分号、小数点等其他计算功能。在此基础上,我们可以考虑增加科学计算、历史记录、单位转换等功能。 二、设计思路及实现 在需求分析的基础上,我们设计了一款基于Java语言的简易计算器。其基本功能包括加、减、乘、除、括号、百分号、小数点等。在实现过程中,我们采用了以下设计思路: 1. 利用Java Swing构建GUI界面,让用户可以通过鼠标点击输入数字和运算符。 2. 通过Java的逻辑运算符实现基本的数学运算,包括加、减、乘、除等。

3. 利用Java的正则表达式判断用户输入的数字是否合法,并进行相应的处理。 4. 通过栈的数据结构实现括号运算,使得程序能够正确处理带有括号的数学表达式。 5. 实现百分号功能,使得用户可以快速进行百分比运算。 6. 通过Java的异常处理机制,处理用户输入不合法的情况,避免程序崩溃。 三、代码实现 在代码实现过程中,我们主要采用了Java Swing和Java核心库中的一些类和方法。以下是代码的核心部分: 1. GUI界面代码 在Java Swing中,我们可以通过JFrame、JPanel、JButton等组件构建出一个GUI界面,使得用户可以通过鼠标点击输入数字和运算符。以下是界面代码的核心部分: JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4,4)); //数字按钮 panel.add(new JButton("7")); panel.add(new JButton("8"));

java计算器实验报告

课程设计论文 设计题目:java计算器学生姓名: 指导教师: 专业名称: 所在院系:

秦皇岛职业技术学院信息工程系 摘要 在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。该程序是一个图形界面的java 计算器,其界面主要采用了swing包,程序实现了: (1)实现简单加、减、乘、除的运算。 (2)实现除了加、减、乘、除按钮外其他按钮功能。 (3)给软件添加一个编辑、查看、帮助的主菜单。 (4)在数据输入方面,提高程序代码的健壮性,增强其对非法输入数据的识别能力。 (5)科学型计算器与标准计算器之间的菜单切换。 Java的早期版本以来,抽象窗口工具包为用户界面组件提供了平台独立的API。在AWT中,每个组件都由一个原生的等同组件生成和控制,这个原生组件是由当前的图形窗口系统决定的。 与此相对,Swing 组件经常被描述为轻量级的,因为它们不需要操作系统本身所带窗口工具包的原生资源来生成。 I

秦皇岛职业技术学院信息工程系 目录 第1章概要设计 (1) 1.1查找资料 (1) 1.2选题 (1) 1.3标准型计算器界面设计 (1) 1.4本章小节 (3) 第2章程序整体设计说明 (4) 2.1程序中所用到的变量 (4) 2.2程序部分源代码及注释 (4) 2.3本章小节 (15) 第3章程序运行效果 (16) 3.1程序运行主界面 (16) 3.2程序中各按钮运行界面 (16) 3.3本章小节 (20) 第4章设计中遇到的重点及难点 (21) 4.1设计中遇到的重点 (21) 4.2设计中的遇到的难点 (21) 4.3本章小节 (23) 第5章本次设计中存在不足与改良方案 (24) 5.1本次设计中存在的不足 (24) 5.2本次设计的改良方案 (24) 5.3本章小节 (24) 结论 (25) 参考文献 (26) 致谢 (27) 指导教师评语 (28) 答辩委员会评语 (29) II

java简易计算器设计思路

java简易计算器设计思路 Java简易计算器设计思路 一、引言 计算器是我们日常生活中常用的工具之一,可以帮助我们进行各种简单的数学计算。本文将介绍如何使用Java编程语言设计一个简易的计算器。 二、功能需求 我们的计算器需要具备以下基本功能: 1. 实现加、减、乘、除四则运算; 2. 能够处理小数、整数和负数的运算; 3. 具备清除操作,清零当前计算结果; 4. 能够处理连续计算,即进行多次连续的运算。 三、设计思路 在设计简易计算器时,我们可以考虑以下步骤: 1. 用户界面设计 首先,我们需要设计一个用户界面,让用户能够输入数字和选择运算符号。可以使用Java的Swing或JavaFX进行界面设计。

2. 输入数字和运算符 在用户界面中,我们可以使用文本框和按钮来实现数字的输入和 运算符的选择。用户在文本框中输入数字,然后点击相应的按钮选择 运算符号。 3. 运算处理 根据用户的选择,我们可以利用Java中的if或switch语句来进 行相应的运算处理。比如用户选择加法运算,则获取用户输入的两个 数字并相加。同样,对于减法、乘法和除法运算,我们也可以使用相 应的语句进行处理。 4. 显示结果 最后,我们需要将计算结果显示在用户界面的文本框中。将处理 后的结果显示在界面上,让用户直观地看到计算结果。 5. 清除操作 我们还可以添加一个清除按钮,使用户能够清除当前的计算结果,重新进行新的计算。 四、扩展功能 除了基本的计算功能外,我们还可以考虑增加以下扩展功能: 1. 添加括号功能,使计算器能够处理复杂的表达式; 2. 添加开平方、取余、求幂等高级运算;

简易计算器(Android应用使用Java开发)

简易计算器(Android应用使用Java开发)随着智能手机的普及,手机应用程序也变得越来越多样化和智能化。其中,计算器应用无疑是人们生活中最常用的一种应用之一。本文将 介绍如何使用Java开发一个简易计算器的Android应用程序。 1. 概述 简易计算器是一款可以进行基本的数学计算的应用程序。用户可 以在界面上输入数字和操作符,计算器会自动根据用户的操作给出计 算结果。本应用程序采用Java语言进行开发,运行于Android操作系统。 2. 开发环境 在开始开发前,我们需要搭建好Android开发环境。首先,下载 并安装Java Development Kit(JDK),确保版本为最新稳定版。然后,下载并安装Android Studio,这是一款为Android开发而设计的集成开 发环境(IDE)。 3. 创建项目 打开Android Studio,并点击"Start a new Android Studio project"来 创建一个新的项目。在弹出的窗口中,填写项目名称、包名等基本信息,并选择适当的设备和目标SDK版本。 4. 设计界面

在项目创建完成后,我们需要设计计算器的界面。可以使用Android Studio自带的可视化UI设计器来拖拽和放置UI元素,也可以手动在XML布局文件中编写界面代码。界面的核心组件包括输入框、按钮和显示区域。 5. 添加逻辑功能 界面设计完成后,我们需要为计算器添加逻辑功能。创建一个Java类作为计算器的主活动(Activity),在其中实现输入和操作的处理逻辑。可以使用Android提供的计算相关API,例如使用eval()方法进行表达式计算。 6. 编译和调试 在开发过程中,我们可以随时进行编译和调试来检查应用程序的运行情况。点击Android Studio的运行按钮,选择目标设备并运行应用程序。在模拟器或真机上进行调试,查看是否符合我们的预期效果。 7. 测试和发布 在功能开发和调试完毕后,我们需要进行应用的测试阶段。通过多种测试用例来验证计算器的正确性和稳定性。测试通过后,可以通过Android Studio将应用程序打包为APK文件,并发布到应用商店或其他渠道供用户下载使用。 8. 总结 本文介绍了使用Java开发一个简易计算器的Android应用程序的步骤和注意事项。从环境搭建到界面设计、逻辑实现,再到测试和发

java实训代码

java实训代码 Java实训代码 Java作为一门广泛应用于软件开发领域的编程语言,其实践性非常强,因此在学习Java时,实践是非常重要的。在学习Java时,很多学生 都会参加Java实训课程,下面将介绍一些Java实训代码的例子。 一、Hello World Hello World是最简单的程序,也是最基础的程序。在Java中,Hello World代码如下: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 这段代码中,“public class HelloWorld”表示定义一个公共类

HelloWorld,“public static void main(String[] args)”表示定义一个公共静态方法main,并且该方法不返回任何值。 “System.out.println()”表示输出内容到控制台。 二、计算器 计算器是一个非常基础的应用程序,在Java中可以通过Swing来实现。下面是一个简单的计算器代码: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame implements ActionListener { private JTextField textField; private JButton[] buttons; private String[] buttonLabels = { "7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", ".", "0", "=", "+" }; private double result = 0; private String operator = "="; private boolean calculating = true;

java程序设计 实训题目

java程序设计实训题目 以下是一些Java程序设计实训题目,供您参考: 1. 编写一个Java程序,实现一个简单的计算器,可以进行加、减、乘、除 运算。要求使用面向对象的思想,将计算器的功能封装在一个类中,并提供一个主函数用于测试。 2. 编写一个Java程序,实现一个简单的文本编辑器,可以打开、保存、编 辑和打印文本文件。要求使用Java的I/O流和文件操作类库,以及图形用 户界面库(如Swing或JavaFX)。 3. 编写一个Java程序,实现一个简单的聊天室,支持多人同时在线聊天。 要求使用Java的多线程机制和网络编程技术(如Socket编程),并实现基本的用户注册、登录和消息发送功能。 4. 编写一个Java程序,实现一个简单的数据库管理系统,可以创建、删除、查询和更新数据库中的记录。要求使用Java的JDBC API连接数据库,并 使用SQL语句进行操作。 5. 编写一个Java程序,实现一个简单的图像处理软件,可以对图像进行缩放、旋转、裁剪和滤镜处理。要求使用Java的图像处理库(如Java Advanced Imaging API)和图形用户界面库(如Swing或JavaFX)。

6. 编写一个Java程序,实现一个简单的邮件发送系统,可以发送HTML格式的邮件。要求使用Java的邮件发送库(如JavaMail API),并支持SMTP协议和附件上传功能。 7. 编写一个Java程序,实现一个简单的在线考试系统,可以随机生成试题、计时考试时间并自动评分。要求使用Java的多线程机制和网络编程技术(如Socket编程),并实现基本的用户登录、答题和提交功能。

java计算器实训

简易计算器 一、基本功能 基本运算:加、减、乘、除等,根据个人能力适当增加更加丰富的功能 二、具体要求 1、源程序中至少包含一个类,主类名为Computer; 2、加、减、乘、除的方法名分别为getAdd(), getSub(), getMul(), getDiv(),分别实现相 应功能; 3、利用setDim()方法实现给两个成员变量赋值,其值使用输入输出流通过键盘输入; 4、基本功能只需实现求两个数的运算即可; 5、按要求做完,上传FTP 三、运行效果 1、启动效果 2、求和 3、求差

4、求乘 5、求除 6、退出 四、系统提示 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Computer { double x,y; double getAdd() { //求和 } //减乘除略 void setDim() { //为成员变量赋值,要求利用输入输出流,从键盘输入 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

int []a=new int[2]; for(int i=0;i<2;i++) { try { System.out.print("请输入第"+(i+1)+"个数:"); a[i]=Integer.parseInt(br.readLine()); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String args[]) { // } }

Java计算器课程设计报告

《Java计算器》Java课程设计报告 姓名:******** 学号:******** 专业:************

一.程序要实现的功能: 基础功能:类似windows计算器-普通计算器所具有的,数的输入、加、减、乘、除、开根号、求倒数、退格、清空,以及数字储存器中的MR(显示)、MC (清空)、M+(相加)、MS(储存) 扩展功能: 类似windows计算器-科学计算器所具有的,各种函数(包括正三角反三角函数)计算,不同进制转换,逻辑与或非等操作。 二.程序算法&功能实现(大概) 以下为运算功能简易示意图: 不同进制转换: 此功能独立于计算器其他功能,计算器运行过程中设定一个变量carry储存当前进制转态,每次运算时先将屏幕显示的数字转化成十进制然后带入运算,对于要显示在计算器屏幕的结果也要先进行十进制转换为当前进制然后显示。

三.遇到问题及解决方案 1.普通计算器到科学计算器的界面转换: 科学计算器的界面显然比普通计算器界面要复杂,按钮要多,而无论怎样修改布局都无法完整得在科学计算器和普通计算器之间切换。 解决方案: 将计算器的界面布局的类设为扩展JPanel的类CreateButton,该类中设置两个方法,一个方法进行科学计算器的界面布局,一个方法进行普通计算器的界面布局,两个方法依靠CreateButton类构造函数种的参数决定调用哪个方法,在主的类里面若要在科学计算器和普通计算器之间切换,只要为当前面板new一个CreateButton,并设置好参数,就可以换一个界面。 2.不同进制输入输出与运算问题: 由于科学型计算器涉及不同进制的输入输出与运算,而不同的进制运算规则稍有不同,因此不同进制输入输出与运算就成了一个问题。 解决方案: 设置一个全局变量表示当前进制状态,而程序运行过程处理数据都以十进制形式,也就是仅在显示时,按照当前进制状态,将十进制转化为相应进制。 3.JAVA已有的函数计算精度不够: 例如sin函数计算,java对sin函数计算的参数是弧度制,但是如果用Math.sin ()计算Pi/6(即sin30度),那么结果是0.4999999999999999而不是0.5。同样,cos,tan也都出现这种情况。 查出原因:Java中对PI的计算只是估算,精度不够。 解决方案: 如果要计算 sin x ,(x是角度),那么先用Math.sin(x/180*Math.PI) 得到不精确的值sinx,再将用Math.rint(sinx*100000000)/100000000.0进行舍入处理。便得到想要的结果。 4.运算符重复输入:

java计算器设计总结

java 计算器设计总结 java 计算器设计总结,怎么编写设计计算机呢?怎么写总结呢? 下边是分享的 java 计算器设计总结,欢迎阅读! java 计算器设计总结【 1 】终于搞定了这份实训报告,得益匪浅啊一开始想做计算器那个课题,原由很简单,就是由于我感觉那个课题很简单,在百度里一搜就搜到了如出一辙的源程序。 不过感觉没什么意思,那个界面也不是很漂亮,又不好玩。因此就做了此刻这个猜数游戏。 向来想编个游戏程序,于是就到网上去搜代码,一下子就搜到了,并且代码极少,简单易懂。 程序是弄好了,那么简洁的程序写起报告就犯难了! 不得不把程序再添加些模块,充分充分。 这也让我感觉实训远比想像的难度大,不是网上随意搜一下就能够交差 的 ! 不单需要自己看懂代码,还需要依据自己的需要增添模块,充分代码。从网上搜的代码都是字符界面的,老师说既然字符界面的没挑战性,那 就做图形界面的好了。

做图形界面就有点犯难了,第一没有什么程序能够参照了,必须自己充分理解字符界面的源代码,而后逐渐改正完美

我依照课本上的GUI 章节设计了此次的java 简单程序,基本实现了课 题的要求,还增添了图片以增添视觉成效,以及确立按钮方便用户确立输入数字。 经过此次实训我的领会概括为以下 4 点: 1.态度第一摆正自己的心态,不要认为何东西上网搜搜便可以了,必定要有自己的东西。 只有自己付出过,当程序运转成功时的那种愉悦才会令自己有一种莫名的骄傲感。 态度决定全部! 2.兴趣是重点我的学习完整部是兴趣导向的,因此压力其实不大。由于有兴趣,因此我会很想充分理解全部细节。又由于理解,因此很多本来片片断断的知识都能够逐渐相互融会贯穿,积累技术能量,理论和实务之间的藩篱被打破了,学习效率倍增。 学习并快乐着 ! 3.敢于挑战不安于现成的程序,要敢于用多种方法实现一个目的。此刻的 网络科技很发达,想要一个源程序确实很简单,因此很多人都是

Java计算器实验报告

Java计算器实验报告 一、目标: 通过Java程序开发实训使学生掌握《面向对象程序设计(Java)》课堂讲授的内容,灵活运用到Java程序的开发与设计中。二、要求:按时参加Java程序开发实训训练,不得迟到和早退;独立完成程序设计;按要求撰写实践报告。三、详细内容: 使用《面向对象程序设计(Java)》课程讲授内容,编写一个简单的计算器,要求实现如下功能:1. 进行图形界面设计 通过图形界面设计,掌握Frame类、Panel类、5种布局管理器、文本框、标签及按钮的使用方法。2. 实现计算器的基本功能包括加减乘除四则运算、清除结果等功能。3. 实现计算器的存储计算功能 包括清空、使用清零、退格。和基本运算4.类的属性及所用到的方法布局 布局: 整个界面(Frame)采用BorderLayout布局P1组件添加到Frame 的南部 P1采用默认的流式布局添加文本框 P2组件添加到Frame的中部P2采用网格布局四行五列放各种按钮用到的类:mycal KeyAdapter WindowAdapter MyCal类:mycal类的属性: b[];按钮数组保存各种按键以后放到Panel2中tf;文本匡显示输入及运算结果num1,num2,jieguo运算数 char c,ch;运算符号,ch为输入的运算符号,c保存ch输入的“+-*/” Panel p1,p2;//两个组件p1放文本匡p2放按钮P2的布局为网格布局5行4列

mycal类的方法:1.构造方法: 设置标题;设置文本框; 文本框中添加匿名内置类(KeyAdapter)实现键盘 2 的输入和运算; 将各种组件添加到容器,设置各种按键的颜色;添加WindowListenr监听器设置关闭按钮; 2.Main方法: 新建一个mycal类;4. actionPerformed 方法: 设置按钮的输入和运算, 当按下运算数将其显示在文本匡中如果之前清零则 将零去除 当按下运算符将其保存在c中并将文本匡内容清空当按下等号判断字符c的符号进行相应的运算并将结果显示在文本框中。 当按下清空按钮将文本框清空,当按下退格按钮取文本框中字符串的字串删除一个符号。KeyAdapter类: KeyAdapter类的属性:mycal类中的属性 KeyAdapter类的方法: keyPressed()方法当键盘按下时, 判断键盘的输入当为“+-*/”时记录下num1及c; 当为”=”或“Enter”时记录下num2并将结果计算出来keyReleased()方法 3 当键盘松开时, 如果是按下“+-*/”后松开将文本框清空 如果是按下“=”或“Enter”后松开将计算结果显示在文本框中WindowAdapter类: WindowAdapter类的属性:WindowEvent e WindowAdapter类的方法: windowClosing();设置关闭按钮

java实训计算器报告总结

java实训计算器报告总结 java实训计算器报告总结 java实训计算器报告总结,JAVA是软件技术,在进展实训时,我们要认真学习,实训完毕后写一篇实训报告总结收获!以下是文书帮为大家准备的:java实训计算器报告总结,大家可以参考! 经过五天的Java实训,感触很深,收获也很大,对自己的缺点也有了很多的认识,回首本学期JAVA学习,重点还是在学习概念等一些常识性的东西,关于类型、变量、接口、输入输出流、分析异常、抛出异常,后期主要是小程序运用,Gui界面设计和事件。 在我学习的语言中,我自己认为Java是一门比较强大的面向对象的编程语言,不仅仅是因为它的跨平台型还有它的较强的实用性,强悍的嵌入性。 本次实训主要是针对我们对工程流程不熟悉和对整体工程的把握不清楚,学习数据库的设计和表的建立以及表与表之间的联系,还有一些代码的编写,这些都是我们所不熟悉的也是我们最薄弱的部分。 通过这一周的实训,虽然实训的时间不长,但是总体上收获挺大的,当我们正式准备学习实训java编程技术时,让我感到非常快乐,因为java一直学的是课本知识,所以实训对于我来说是必须要学会熟练操作的。 当然开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时后也难免会失去耐心,但是,通过老师的指导,自己的努力的练习,我顺利的化解了一道道的障碍。

克服了Java学习上的一道道难关,现在自己已经根本掌握了java的根底知识。 有些知识点以前没有学过,但我也没有去研究,实训时突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但要浪费许多时间,这一点是我必须在以后的学习中加以改进的地方,同时也要催促自己在学习的过程中不断的完善自我。 另外一点,也是在实训中必不可少的部分,就是同学之间的互相帮助。 所谓当局者迷,旁观者清,有些东西感觉自己做的是时候明明没什么错误,偏偏程序运行时就是有错误,让其他同学帮助看了一下,发现其实是个很小的错误。 所以说,相互帮助是很重要的一点,这在以后的工作或生活中也是很关键的。 俗话说:要想为事业多添一把火,自己就得多添一捆材。 此次实训,我深深体会到了积累知识的重要性。 在实训当中我们遇到了不少难题,但是经过我们大家的讨论和老师细心的一一指导,问题得到了解决。 两个月的实训完毕了,收获颇丰,同时也更深刻的认识到要做一个合格的程序员并非我以前想像的那么容易,最重要的还是细致严谨。 社会是不会要一个一无是处的人的,所以我们要更多更快地从一个学生向工作者转变,总的来说我对这次实习还是比较满意的,它使我学到了很多东西,为我以后的学习做了引导,点明了方向。 这次实训,我们更多学到的是不懂就要问和自己应该尽自己的全力去尝试,哪怕失败,也要尽自己的全力,和身边的同学一起探

java课程设计报告计算器

目录 一、课程设计目的 (2) 二、课程设计任务 (2) 2.1、设计任务 (2) 2.2、课程设计要求: (2) 2.3、需求分析 (2) 三、开发工具与平台 (3) 3.1、开发工具 (3) 3.2、开发平台 (3) 四、设计思路 (4) 4.1、界面设计 (4) 4.2.1、逻辑设计 (4) 4.2.2、程序流程图 (5) 4.2.3、主要代码展示及说明 (5) 4.3、程序测试 (10) 五、实验小结 (11) 六、附录(程序代码) (12)

一、课程设计目的 1、熟练掌握java面向对象编程。 2、选择合适的数据结构实现需求。 3、熟练使用各种控制结构。 4、GUI组件、事件处理技术。 二、课程设计任务 2.1、设计任务 设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下) 程序要求: (1)应具有相应的界面,可参考Windows操作系统自带的计算器界面。 (2)操作符号定为:“+”,“-”,“*”,“/”,“+/-”等。(按国际惯例设计)(3)用户通过点击程序界面上按钮,实现数字、运算符的输入操作。 (4)以上部分为必须完成的内容。 选作部分: (1)具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。 2.2、课程设计要求: (1)应用自己所学课程知识完成对计算器的基本任务。 (2)查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。 (3)通过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。 2.3、需求分析 1.设计的计算器可以完成加法、减法、乘法、除法的简单运算。 2.实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。

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