Java计算器课程设计报告 - 副本

时间:2024.5.2

Java计算器课程设计报告副本

JAVA课程设计

小型计算器

学 生 姓 名:

指 导 教 师:李明江 系别:计算机科学系 专业:计算机科学与技术 年级:2008 应用2班

提交时间:20xx年 12 月 22日 学号:

目录

一 概述 ....................... 3

二 总体方案设计 ............... 4

三详细设计 .................... 6

四 程序的调试与运行结果说明 .. 10

五 课程设计总结 .............. 19

六 附录 ...... 错误!未定义书签。

2

一 设计任务书

1.程序具备的功能:

(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;

(2)完成整数、实数的四则运算(加、减、乘、除);

(3)通过按钮点击实现数据的复位(清零);

(4)实数运算中小数位的精度一致。

2.课程设计的主要设计思想

对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。

文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计 3

完成。

布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。

二 总体方案设计

1.界面设计

界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方 4

式,其图形界面如下:

Java计算器课程设计报告副本

2.功能介绍

这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:

点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 ;

还能通过用户自己在文本框中输入数字,进行简单运算 ;

5

如果输入有误时可以按Clear撤销后重新输入新数据

三详细设计主题任务

程序流程图如下:

Java计算器课程设计报告副本

部分代码展示及说明:

这段代码主要是对程序的主框架进行相应的设置。

Frame f=new Frame("计算器");

f.setBackground(Color.lightGray); f.setForeground(Color.blue); f.add(p1,BorderLayout.NORTH); 6

f.add(p2,BorderLayout.CENTER); f.add(p3,BorderLayout.SOUTH); f.setSize(350,300);//设置大小 f.setVisible(true);//设置为可视

这段代码是对程序如何进行运算的设计

if(y==0&&command!="*"&&command!="/"

&&command!="+"&&command!="-"

&&command!="=")//判断输入是否为数字

{

s1=s1.concat(command);

tf.setText(s1); }

if(command=="*"||command=="/"

||command=="+"||command=="-")//判断是否 7

输入运算符

{

y=1;

s2=command;

}

if(y==1&&command!="*"&&command!="/"

&&command!="+"&&command!="-"

&&command!="=")

{

s3=s3.concat(command);

tf.setText(s3);

}

if(command=="=")

{

Double ob1=Double.valueOf(s1);

Double ob3=Double.valueOf(s3);

d1=ob1.doubleValue();

d3=ob3.doubleValue();

if(s2=="+") d4=d1+d3;

if(s2=="-") d4=d1-d3;

8

if(s2=="*") d4=d1*d3;

Double ob4=new Double(d4); tf.setText(ob4.toString()); if(s2=="/")

{ if(d3==0)

tf.setText("除数不能为零"); else{ d4=d1/d3;

ob4=new Double(d4); tf.setText(ob4.toString());} }

y=0;

}

这段代码主要为窗口关闭按钮编写程序

class closeWin extends WindowAdapter //为关闭按钮编写程序

{

public void windowClosing(WindowEvent e)

{ System.exit(0);

9

}

}

四 程序的调试与运行结果说明

事例1 当除数为0时,程序运行结果如下:

Java计算器课程设计报告副本

事例2:4561+8715 预计结果 13276 实际结果

10

事例3: 189/2 预计结果94.5 实际结果:

Java计算器课程设计报告副本

事例4: 29-87 预计结果-58 实际结果:

Java计算器课程设计报告副本

11

五 设计源代码

import java.awt.*;

import java.awt.event.*;

public class Calculator implements ActionListener

{ Panel p1=new Panel();

Panel p2=new Panel();

Panel p3=new Panel();

TextField tf=new TextField(30);

String

a[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};

Button B[];

Java计算器课程设计报告副本

12

Button b1=new Button("CE");

Button b2=new Button("退出"); String s1=new String();

String s2=new String();

String s3=new String();//s1记录第一个数;s2记录运算符;s3记录第二个数;

double d1,d3,d4;

int y=0; // y用于控制运算符 public void init()

{

Frame f=new Frame("计算器"); f.setBackground(Color.lightGray); f.setForeground(Color.blue); p1.add(tf);

p3.setLayout(new

GridLayout(1,2));

p3.add(b1);

p3.add(b2);

p2.setLayout(new

GridLayout(4,4));

B=new Button[a.length]; for(int i=0;i<a.length;i++)

13

{

B[i]=new Button(a[i]);

p2.add(B[i]);

}

f.add(p1,BorderLayout.NORTH);

f.add(p2,BorderLayout.CENTER); f.add(p3,BorderLayout.SOUTH); f.setSize(350,300);//设置大小 f.setVisible(true);//设置为可视

B[0].addActionListener(this);//7

B[1].addActionListener(this); //8

B[2].addActionListener(this); //9

B[3].addActionListener(this); //除

B[4].addActionListener(this); //4

B[5].addActionListener(this); //5

B[6].addActionListener(this); //6

B[7].addActionListener(this); //*

B[8].addActionListener(this); //1

B[9].addActionListener(this); //2

B[10].addActionListener(this);

//3

14

B[11].addActionListener(this); // - B[12].addActionListener(this); //0 B[13].addActionListener(this); //. B[14].addActionListener(this); //= B[15].addActionListener(this); //+ b1.addActionListener(this); b2.addActionListener(this); f.addWindowListener(new

closeWin());

}

public void actionPerformed(ActionEvent e)

{

String command = e.getActionCommand();

if(command=="CE") //清零键 按下时返回初始状态

{

y=0;

tf.setText("0.");

s1="";s2="";s3="";//记录输入值的变量清空

15

}

else if(command=="退出") System.exit(0);//退出键 关闭应用程序

else

if(y==0&&command!="*"&&command!="/"

&&command!="+"&&command!="-"

&&command!="=")//判断输入是否为数字

{

s1=s1.concat(command);

tf.setText(s1);

}

if(command=="*"||command=="/"

||command=="+"||command=="-")//判断是否输入运算符

{

y=1;

s2=command;

16

}

if(y==1&&command!="*"&&command!="/"

&&command!="+"&&command!="-"

&&command!="=")

{

s3=s3.concat(command);

tf.setText(s3);

}

if(command=="=")

{

Double ob1=Double.valueOf(s1);

Double ob3=Double.valueOf(s3);

d1=ob1.doubleValue();

d3=ob3.doubleValue();

if(s2=="+") d4=d1+d3;

if(s2=="-") d4=d1-d3;

if(s2=="*") d4=d1*d3;

Double ob4=new Double(d4);

tf.setText(ob4.toString());

if(s2=="/")

17

{ if(d3==0)

tf.setText("除数不能为零"); else{ d4=d1/d3;

ob4=new Double(d4); tf.setText(ob4.toString());} }

y=0;

}

}

public static void main(String

[] args)

{

new Calculator().init(); }

}

class closeWin extends WindowAdapter //为关闭按钮编写程序

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

18

}

}

六 课程设计总结

在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下一个数进行加、减、乘、除运算。还有如何判断它是第几个输入的数字。后来进行多次研究和查询才知道可以通过设运算符标志位来判断是输入的第几个数值。

此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。

19

20


第二篇:Java_计算器课程设计


实验目的

熟悉JAVA GUI程序开发的一般步骤,掌握事件驱动,并能掌握一定的Java编程能力,在实践中能感受Java的奥秘!同时检验学生的学生的学习成果。

实验目标

具有加减乘除的计算器,可以延伸到开方等其他的一些计算。 开发工具与平台

jdk1.5+Eclipse 3.2

设计思路:

1.界面设计

Java计算器课程设计

2.逻辑设计

首先明确该实验设计的要求实现的基本功能,其次设计布局,按照GridLayout的布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。

1

3.软件调试与测试

经过调试之后,能实现基本的四则运算,并能实现开方和消除错误的数。

4.软件设计优化

该软件的界面应该更加流畅,同时我相信随着自己只是的日益丰富,开发软件的速度更快,效率更高,功能更加全面!

5.总结不足

没有实现Mc,MR,MS,M+四个功能, 有待进一步完善。这样才能够完成自己的第一个应用软件设计!

源程序如下:

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calculator extends JFrame implements ActionListener { boolean init = true;

boolean isMath = false;

boolean clear = true;

boolean clickable = true;

double qian;

String fuhao;

int all = 0;

JTextField text = new JTextField(25);

2

JButton bM = new JButton(); JButton bMC = new JButton("MC"); JButton bMR = new JButton("MR"); JButton bMS = new JButton("MS"); JButton bMADD = new JButton("M+"); JButton b0 = new JButton("0"); JButton b1 = new JButton("1"); JButton b2 = new JButton("2"); JButton b3 = new JButton("3"); JButton b4 = new JButton("4"); JButton b5 = new JButton("5"); JButton b6 = new JButton("6"); JButton b7 = new JButton("7"); JButton b8 = new JButton("8"); JButton b9 = new JButton("9"); JButton bNOP = new JButton("+/-"); JButton bDot = new JButton("."); JButton bDiv = new JButton("/"); JButton bMul = new JButton("*"); JButton bSub = new JButton("-"); JButton bAdd = new JButton("+"); JButton bSprt = new JButton("sprt"); JButton bMod = new JButton("%"); JButton bDao = new JButton("1/x"); JButton bEqual = new JButton("="); JButton bBackspace = new JButton("Backspace"); JButton bCE = new JButton("CE"); JButton bC = new JButton("C"); public Calculator() { this.setTitle("计算器"); JMenuBar mainMenu = new JMenuBar(); setJMenuBar(mainMenu); JMenu editMenu = new JMenu("编辑"); JMenu viewMenu = new JMenu("查看"); JMenu helpMenu = new JMenu("帮助"); mainMenu.add(editMenu); mainMenu.add(viewMenu); mainMenu.add(helpMenu); JPanel jpDisplay = new JPanel(); JPanel jpInput = new JPanel(); JPanel jpLeft = new JPanel(); JPanel jpRight = new JPanel(); text.setText("0."); text.setHorizontalAlignment(JTextField.RIGHT); jpDisplay.add(text); 3

bM.addActionListener(this); bMC.addActionListener(this); bMS.addActionListener(this); bMR.addActionListener(this); bMADD.addActionListener(this); jpLeft.setLayout(new GridLayout(5, 1));

jpLeft.add(bM);

jpLeft.add(bMC);

jpLeft.add(bMR);

jpLeft.add(bMS);

jpLeft.add(bMADD);

JPanel jpInnerN = new JPanel();

JPanel jpInnerS = new JPanel();

bBackspace.addActionListener(this);

bCE.addActionListener(this);

bC.addActionListener(this);

jpInnerN.setLayout(new GridLayout(1, 3)); jpInnerN.add(bBackspace);

jpInnerN.add(bCE);

jpInnerN.add(bC);

b0.addActionListener(this);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

bNOP.addActionListener(this);

bDot.addActionListener(this);

bDiv.addActionListener(this);

bMul.addActionListener(this);

bSub.addActionListener(this);

bAdd.addActionListener(this);

bSprt.addActionListener(this);

bMod.addActionListener(this);

bDao.addActionListener(this);

bEqual.addActionListener(this);

jpInnerS.setLayout(new GridLayout(4, 5)); jpInnerS.add(b7);

jpInnerS.add(b8);

4

jpInnerS.add(b9); jpInnerS.add(bDiv); jpInnerS.add(bSprt); jpInnerS.add(b4); jpInnerS.add(b5); jpInnerS.add(b6); jpInnerS.add(bMul); jpInnerS.add(bMod); jpInnerS.add(b1); jpInnerS.add(b2); jpInnerS.add(b3); jpInnerS.add(bSub); jpInnerS.add(bDao); jpInnerS.add(b0); jpInnerS.add(bNOP); jpInnerS.add(bDot); jpInnerS.add(bAdd); jpInnerS.add(bEqual); jpRight.setLayout(new BorderLayout()); jpRight.add(jpInnerN, BorderLayout.NORTH); jpRight.add(jpInnerS, BorderLayout.CENTER); jpInput.setLayout(new BorderLayout()); jpInput.add(jpLeft, BorderLayout.WEST); jpInput.add(jpRight, BorderLayout.CENTER); Container pane = this.getContentPane(); pane.setSize(333, 208); this.setLocation(300, 200); this.setLayout(new BorderLayout()); pane.add(jpDisplay, BorderLayout.CENTER); pane.add(jpInput, BorderLayout.SOUTH); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.pack(); this.setVisible(true); } public void actionPerformed(ActionEvent e) { if (init) this.text.setText("0."); init = false; Object source = e.getSource(); if (source == bBackspace) { String s = text.getText(); 5

text.setText(""); for (int i = 0; i < s.length() - 1; i++) { char a = s.charAt(i); text.setText(text.getText() + a); } System.out.println("backspace"); } if (source == bCE) { text.setText("0."); clear = true; init = true; System.out.println("CE"); } if (source == bC) { text.setText("0."); clear = true; init = true; System.out.println("C"); } if (source == bM) { System.out.println("M"); } if (source == bMC) { System.out.println("MC,功能末实现"); } if (source == bMR) { System.out.println("MR,功能末实现"); } if (source == bMS) { System.out.println("MS,功能末实现"); } if (source == bMADD) { System.out.println("M+,功能末实现"); } if (source == b0) { System.out.println("0"); if (clear == false)// 判断是否点击了符号位 text.setText(""); text.setText(text.getText() + "0"); } if (source == b1) { if (clear == false) text.setText(""); text.setText(text.getText() + "1"); clear = true;// 第二次不在清空(前二句) } if (source == b2) { 6

System.out.println("2"); if (clear == false) text.setText(""); text.setText(text.getText() + "2"); clear = true; } if (source == b3) { System.out.println("3"); if (clear == false) text.setText(""); text.setText(text.getText() + "3"); clear = true; } if (source == b4) { System.out.println("4"); if (clear == false) text.setText(""); text.setText(text.getText() + "4"); clear = true; } if (source == b5) { System.out.println("5"); if (clear == false) text.setText(""); text.setText(text.getText() + "5"); clear = true; } if (source == b6) { System.out.println("6"); if (clear == false) text.setText(""); text.setText(text.getText() + "6"); clear = true; } if (source == b7) { System.out.println("7"); if (clear == false) text.setText(""); text.setText(text.getText() + "7"); clear = true; } if (source == b8) { System.out.println("8"); if (clear == false) text.setText(""); text.setText(text.getText() + "8"); clear = true; } if (source == b9) { 7

System.out.println("9");

if (clear == false)

text.setText("");

text.setText(text.getText() + "9");

clear = true;

}

try{

if (source == bNOP) {

System.out.println("+/-");

boolean isNumber = true;

String s = text.getText();

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

if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'|| s.charAt(i) == '.' || s.charAt(i) == '-')) {

isNumber = false;

break;

}

if (isNumber == true) {

// 如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉

if (s.charAt(0) == '-') {

text.setText("");

for (int i = 1; i < s.length(); i++) { char a = s.charAt(i);

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

}

// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处

else

text.setText('-' + s);

}

}

if (source == bDot) {

System.out.println(".");

clickable = true;

for (int i = 0; i < text.getText().length(); i++) if ('.' == text.getText().charAt(i)) {

clickable = false;

break;

} // 第一层判断是否里面含有小数点;

if (clickable == true)// 第二层判断

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

}

if (source == bDiv) {

System.out.println("/");

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

8

fuhao = "/"; clear = false; } if (source == bMul) { System.out.println("*"); qian = Double.parseDouble(text.getText()); fuhao = "*"; clear = false; } if (source == bSub) { System.out.println("-"); qian = Double.parseDouble(text.getText()); fuhao = "-"; clear = false; } if (source == bAdd) { System.out.println("+"); qian = Double.parseDouble(text.getText()); fuhao = "+"; clear = false; } if (source == bSprt) { System.out.println("sprt"); String s = text.getText(); if (s.charAt(0) == '-') { text.setText("负数不能开根号"); } else text.setText(Double.toString(java.lang.Math.sqrt(Double

.parseDouble(text.getText())))); clear = false;

}

if (source == bMod) {

System.out.println("%,功能末实现");

}

if (source == bDao) {

System.out.println("1/x");

if (text.getText().charAt(0) == '0'

&& text.getText().length() == 1) {

text.setText("除数不能为零");

} else {

boolean isDec = true;

int i, j, k;

String s= Double.toString(1 / Double.parseDouble(text.getText())); for (i = 0; i < s.length(); i++)

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

break;

9

} for (j = i + 1; j < s.length(); j++) if (s.charAt(j) != '0') { isDec = false; break; } if (isDec == true) { String stemp = ""; for (k = 0; k < i; k++) stemp += s.charAt(k); text.setText(stemp); } else text.setText(s); } clear = false; } if (source == bEqual) { System.out.println("="); Double ss=Double.parseDouble(text.getText()); text.setText(""); if (fuhao == "+") text.setText(qian + ss + ""); if (fuhao == "-") text.setText(qian - ss + ""); if (fuhao == "*") text.setText(qian * ss + ""); if (fuhao == "/") text.setText(qian / ss + ""); clear = false;// 要清空前一次的数据 ; } }catch (Exception ee) { System.out.println("请正确输入"); text.setText("运算出错,给您带来不便,sorry"); clear = false; } } public static void main(String[] args) { new Calculator(); }

10

更多相关推荐:
计算器设计的java课程设计报告

华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交通大学课程设计课程设计论文任务书基础学院信息与计算科学专业20xx1班一课程设计...

java课程设计计算器

中文摘要该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运…

Java计算器课程设计报告

Java计算器Java计算器Java课程设计报告姓名学号专业0Java计算器一程序要实现的功能基础功能类似windows计算器普通计算器所具有的数的输入加减乘除开根号求倒数退格清空以及数字储存器中的MR显示MC...

计算器java课程设计(完整版)

目录一课设任务及要求1二需求分析2三设计思路3四详细设计4五运行调试与分析讨论14六设计体会与小结18七参考文献19一课设任务及要求1课设任务设计的计算器应用程序可以完成加法减法乘法除法以及取余运算可以进行浮点...

java计算器设计报告

摘要本计算器是由java语言所编程设计的标准计算器可以进行十进制下的四则运算加减乘除开平方求余求倒数还可以实现二进制与十进制之间的转换通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法以便...

Java计算器课程设计报告

石家庄职业技术学院课程设计报告计算器应用程序学生姓名指导教师系别专业年级论文提交时间年月日目录一概述3二总体方案设计4三详细设计5四程序的调试与运行结果说明7五课程设计总结9六附录102一概述1程序具备的功能1...

Java课程设计报告-计算器

Java课程设计报告计算器第一部分设计的内容要求11Windows自带计算器版面设计12计算器计算功能算法实现第二部分设计思想21根据图形用户界面设计方法设计计算器版面容器类窗口Window类面板Panel类框...

zvopjq课程设计报告(java版的计算器源代码)

懒惰是很奇怪的东西它使你以为那是安逸是休息是福气但实际上它所给你的是无聊是倦怠是消沉它剥夺你对前途的希望割断你和别人之间的友情使你心胸日渐狭窄对人生也越来越怀疑罗兰程序功能简介从最基本的加减乘除到基本数学函数处...

JAVA课程设计----计算器小程序报告

学院JAVA语言课程设计报告小程序计算器系统管理班级姓名指导老师时间20xx年6月25日至6月29日目录1课程设计概述311利用java编写计算器使之具备一定的功能312课程设计的主要思想313该项目设计的目的...

java课程设计—计算器

Java计算器课程设计学科专业指导老师廖振宇班级政务姓名学号121第1页目录一课程设计任务及要求3二需求分析4三设计思路5四详细设计8五运行调试与分析讨论13六设计体会与小结15七参考文献16八附录17第2页一...

JAVA保存计算过程的计算器课程设计报告

保存计算过程的java计算器目录1概述111课程设计目的112课程设计内容12系统需求分析121系统目标122主体功能123开发环境13系统概要设计131系统的功能模块划分132系统流程图14系统详细设计25测...

java课程设计报告_简单图形界面计算器的设计

Java课程设计简单图形界面计算器的设计课程名称Java程序设计选题名称简单图形界面计算器的设计专业班级姓名学号指导教师简单图形界面计算器的设计1一设计任务与目标本次java程序设计我的设计任务是设计一个图形界...

java计算器课程设计报告(43篇)