您的当前位置:首页正文

Java编程

2020-08-03 来源:易榕旅网


《Java编程》 计算器

班级:******

姓名:******

学号: ******* 指导老师:******

1

实验名称:JAVA计算器

1实验目的:

Java编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序

进行需求分

析、概要设计、详细设计,最后使用Java编程实现的全过程。

2实验意义:

在编程我们使用的java语言,是目前比较流行的编程语言。在当今这个时代,

java语言在编程方面的优势使得编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。

3 实训性质

本课程是计算机信息管理专业的一门实践性课程,是《Java编程》课程的实践性教学环节。

4 实训目标

⑴综合应用JAVA程序设计的知识解决实际问题。

⑵学会在应用程序的设计过程中,应用面向对象的程序设计方法。 ⑶学会应用JDBC创建数据库应用程序。

⑷学会开发基于Swing的应用程序及多文档应用程序的设计。

5 实训任务

用Java语言开发工具(例如JDK、Jcreator、NetBeans等)制作一个简单的可运行的完整的应用程序或小型系统,并编制出各阶段必要的文档。 将创建一个计算器,可以进行常用的加减乘除算术运算。本实例的知识点有:窗口布局器Gridlayout的应用,对按钮消息的监听和响应。

6实训条件

<软件:>Windows XP,NetBeans IDE 6.5

2

7开发背景:

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。

8系统部分分析:

1) Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。

2) Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定 3) Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4) Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

5) Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制.

6) Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。

7) Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的.

8) Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。 9) Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

10) Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。 11) Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。

3

目录

课程设计题目 ……………………………… p1

课程设计简介 ……………………………… p2

课程设计源代码…………………………… p5

课程设计运行结果 ……………………… p15 课程设计心得体会 ……………………… p16

4

package computerpad; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

import javax.swing.border.*; import java.util.LinkedList; import java.text.NumberFormat;

public class ComputerPad extends Frame implements ActionListener {

NumberButton numberButton[]; OperationButton oprationButton[]; Button 小数点按钮,正负号按钮,退格按钮, 求倒数按钮,等号按钮,清零按钮;

Panel panel; JTextField resultShow; String 运算符号[]={\"+\

LinkedList 链表; boolean 是否按下等号=false;

public ComputerPad() {

super(\"计算器\");

链表=new LinkedList();

numberButton=new NumberButton[10]; for(int i=0;i<=9;i++) {

numberButton[i]=new NumberButton(i); numberButton[i].addActionListener(this); }

oprationButton=new OperationButton[4]; for(int i=0;i<4;i++) {

oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this); }

小数点按钮=new Button(\".\");

5

正负号按钮 =new Button(\"+/-\"); 等号按钮=new Button(\"=\"); 求倒数按钮=new Button(\"1/x\"); 退格按钮=new Button(\"退格\"); 清零按钮=new Button(\"C\");

清零按钮.setForeground(Color.red); 退格按钮.setForeground(Color.red); 等号按钮.setForeground(Color.red); 求倒数按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 小数点按钮.setForeground(Color.blue); 退格按钮.addActionListener(this); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 小数点按钮.addActionListener(this); 正负号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); resultShow=new JTextField(10);

resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue);

resultShow.setFont(new Font(\"TimesRoman\

resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); resultShow.setBackground(Color.white); resultShow.setEditable(false);

panel=new Panel(); panel.setLayout(new GridLayout(4,5));

panel.add(numberButton[1]); panel.add(numberButton[2]); panel.add(numberButton[3]); panel.add(oprationButton[0]); panel.add(清零按钮);

panel.add(numberButton[4]); panel.add(numberButton[5]); panel.add(numberButton[6]); panel.add(oprationButton[1]); panel.add(退格按钮);

panel.add(numberButton[7]); panel.add(numberButton[8]); panel.add(numberButton[9]); panel.add(oprationButton[2]); panel.add(求倒数按钮);

6

panel.add(numberButton[0]); panel.add(正负号按钮); panel.add(小数点按钮);

panel.add(oprationButton[3]); panel.add(等号按钮);

add(panel,BorderLayout.CENTER); add(resultShow,BorderLayout.NORTH);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e) {

System.exit(0); } }); setVisible(true);

setBounds(100,50,240,180); setResizable(false); validate(); }

public void actionPerformed(ActionEvent e) {

if(e.getSource() instanceof NumberButton) {

NumberButton b=(NumberButton)e.getSource(); if(链表.size()==0) {

int number=b.getNumber(); 链表.add(\"\"+number); resultShow.setText(\"\"+number); 是否按下等号=false; }

else if(链表.size()==1&&是否按下等号==false) {

int number=b.getNumber();

String num=(String)链表.getFirst(); String s=num.concat(\"\"+number); 链表.set(0,s);

resultShow.setText(s); }

else if(链表.size()==1&&是否按下等号==true) {

7

int number=b.getNumber(); 链表.removeFirst();

链表.add(\"\"+number); 是否按下等号=false;

resultShow.setText(\"\"+number); }

else if(链表.size()==2) {

int number=b.getNumber(); 链表.add(\"\"+number); resultShow.setText(\"\"+number); }

else if(链表.size()==3) {

int number=b.getNumber();

String num=(String)链表.getLast(); String s=num.concat(\"\"+number); 链表.set(2,s);

resultShow.setText(s); } }

else if(e.getSource() instanceof OperationButton) {

OperationButton b=(OperationButton)e.getSource(); if(链表.size()==1) {

String fuhao=b.get运算符号();

链表.add(fuhao); }

else if(链表.size()==2) {

String fuhao=b.get运算符号(); 链表.set(1,fuhao); }

else if(链表.size()==3) {

String fuhao=b.get运算符号();

String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try {

8

double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0;

if(运算符号.equals(\"+\")) {

n=n1+n2; }

else if(运算符号.equals(\"-\")) {

n=n1-n2; }

else if(运算符号.equals(\"*\")) {

n=n1*n2; }

else if(运算符号.equals(\"/\")) {

n=n1/n2; }

链表.clear();

链表.add(\"\"+n); 链表.add(fuhao); resultShow.setText(\"\"+n); }

catch(Exception ee) { } } }

else if(e.getSource()==等号按钮) {

是否按下等号=true;

if(链表.size()==1||链表.size()==2) {

String num=(String)链表.getFirst(); resultShow.setText(\"\"+num); }

else if(链表.size()==3) {

String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try {

9

double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0;

if(运算符号.equals(\"+\")) {

n=n1+n2; }

else if(运算符号.equals(\"-\")) {

n=n1-n2; }

else if(运算符号.equals(\"*\")) {

n=n1*n2; }

else if(运算符号.equals(\"/\")) {

n=n1/n2; }

resultShow.setText(\"\"+n); 链表.set(0,\"\"+n); 链表.removeLast(); 链表.removeLast(); }

catch(Exception ee) { } } }

else if(e.getSource()==小数点按钮) {

if(链表.size()==0) {

是否按下等号=false; }

else if(链表.size()==1) {

String dot=小数点按钮.getLabel(); String num=(String)链表.getFirst(); String s=null;

if(num.indexOf(dot)==-1) {

s=num.concat(dot);

10

链表.set(0,s); } else {

s=num; }

链表.set(0,s);

resultShow.setText(s); }

else if(链表.size()==3) {

String dot=小数点按钮.getLabel(); String num=(String)链表.getLast(); String s=null;

if(num.indexOf(dot)==-1) {

s=num.concat(dot); 链表.set(2,s); } else {

s=num; }

resultShow.setText(s); } }

else if(e.getSource()==退格按钮) {

if(链表.size()==1) {

String num=(String)链表.getFirst(); if(num.length()>=1) {

num=num.substring(0,num.length()-1); 链表.set(0,num); resultShow.setText(num); } else {

链表.removeLast(); resultShow.setText(\"0\"); } }

11

else if(链表.size()==3) {

String num=(String)链表.getLast(); if(num.length()>=1)

{ num=num.substring(0,num.length()-1); 链表.set(2,num); resultShow.setText(num); } else {

链表.removeLast(); resultShow.setText(\"0\"); } } }

else if(e.getSource()==正负号按钮) {

if(链表.size()==1) {

String number1=(String)链表.getFirst(); try {

double d=Double.parseDouble(number1); d=-1*d;

String str=String.valueOf(d); 链表.set(0,str);

resultShow.setText(str); }

catch(Exception ee) { } }

else if(链表.size()==3) {

String number2=(String)链表.getLast(); try {

double d=Double.parseDouble(number2); d=-1*d;

String str=String.valueOf(d); 链表.set(2,str);

resultShow.setText(str); }

catch(Exception ee){

12

} } }

else if(e.getSource()==求倒数按钮) {

if(链表.size()==1||链表.size()==2) {

String number1=(String)链表.getFirst(); try {

double d=Double.parseDouble(number1); d=1.0/d;

String str=String.valueOf(d); 链表.set(0,str);

resultShow.setText(str); }

catch(Exception ee){ } }

else if(链表.size()==3) {

String number2=(String)链表.getLast(); try {

double d=Double.parseDouble(number2); d=1.0/d;

String str=String.valueOf(d); 链表.set(0,str);

resultShow.setText(str); }

catch(Exception ee){ } } }

else if(e.getSource()==清零按钮) {

是否按下等号=false; resultShow.setText(\"0\"); 链表.clear(); } }

public static void main(String args[]) {

new ComputerPad();

13

} }

package computerpad; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class NumberButton extends Button {

int number;

public NumberButton(int number) {

super(\"\"+number); this.number=number;

setForeground(Color.blue); }

public int getNumber() {

return number; } }

import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class OperationButton extends Button {

String 运算符号;

public OperationButton(String s) {

super(s); 运算符号=s;

setForeground(Color.red); }

public String get运算符号() {

return 运算符号; } }

14

15

Java实训心得:

未接触Java之前,听人说Java这门语言如何的强大和难以入门,但学习之后,给我的感觉却是语言没有所谓的难于不难,关键是自己有没有真正投入去学,有没有花时间去学。Java是一门很好的语言,经过周围人对Java的宣传,我一开始不敢去学习这门语言,因为一门高级语言总是让人想到一开始的学习会很难,但是后来在自己的努力和老师同学的帮助下,我加入了Java学习者的行列。

老师把我们带进了门,那么,以后漫长的深入学习还是要靠自己。经常性的编写一些程序,或则去看懂、研究透别人编写的程序对于我们打好基础是非常有利的。让我们怀着对Java的一腔热情,用自己的刻苦努力去把Java学好。将来,用自己的成绩去回报有恩于我们的社会、家人和朋友。

16

因篇幅问题不能全部显示,请点此查看更多更全内容