《Java项目实训》课程设计——计算器

合集下载

大学java课程设计实验报告--计算器

大学java课程设计实验报告--计算器

JAVA课程设计报告组员信息:第(二)组计算器的实现问题问题描述:制作一个计算器基本要求:要求实现类似Windows操作系统里面的标准计算器。

在此基础上实现部分科学性的功能。

测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测试算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用addActionListener()对各个时间进行监听。

调用系统库函数对数值进行运算。

模块划分:1、主函数main()创建一个计算器。

2、void actionPerformed(ActionEvent e)对鼠标点击的事件进行响应以及在文本框中的显示。

3、各Buuton对应的功能:“开方”:对输入数字开方“平方”:对输入数字平方“getResult()”:对四则运算进行分别运算操作“backspace”:取消上一次的操作“CE”:取消上一次运算的操作“C”:清空作用“sin”:对输入数据进行sin运算“cos”:对输入数据进行cos运算“tan”:对输入数据进行tan运算“+/-”:对输入的数据取反“+”,“-”,“*”,“/”:对数据进行四则运算源程序:package hechongwei;import ng.String;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import ng.Math;class Calculator extends JFrame implementsActionListener {JTextField tf = new JTextField(" ");String str1 = " ", str2 = " ", str3 = " "; // str1和str2存放两个输入的数Panel pn1 = new Panel();// new 一个Panel存放符号与数字String a[] = { "平方", "开方", "backspace", "CE", "C", "7", "8", "9", "/","sin", "4", "5", "6", "*", "cos", "1", "2", "3", "-", "tan", "0","+/-", ".", "+", "="};// 用于对每个Button 进行赋值boolean frist = true;// 判断是否输入的为第一个字符int operCount = 0;int i; // 统计符号的数目String Operate = null;// 存放操作数的符号boolean error = false;double num1 = 0.0, num2 = 0.0;// 两个输入的数作运算时转化为double存放double result = 0.0;// 暂时保留计算结果public Calculator() {super("简单计算机 ");tf.setHorizontalAlignment(JTextField.RIGHT) ;// 显示框中由右想左输出tf.setEditable(false);Button b[] = new Button[25];for (i = 0; i < 5; i++) { // 将符号加到对应的Button上b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);// 调用addActionListener()方法注册事件监听器}for (i = 5; i <= 7; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[8] = new Button(String.valueOf(a[8]));pn1.add(b[8]);b[8].setActionCommand("oper");b[8].addActionListener(this);b[9] = new Button(String.valueOf(a[9]));pn1.add(b[9]);b[9].setActionCommand(a[9]);b[9].addActionListener(this);for (i = 10; i <= 12; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[13] = new Button(String.valueOf(a[13])); pn1.add(b[13]);b[13].setActionCommand("oper");b[13].addActionListener(this);b[14] = new Button(String.valueOf(a[14])); pn1.add(b[14]);b[14].setActionCommand(a[14]);b[14].addActionListener(this);for (i = 15; i <= 17; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[18] = new Button(String.valueOf(a[18])); pn1.add(b[18]);b[18].setActionCommand("oper");b[18].addActionListener(this);b[19] = new Button(String.valueOf(a[19])); pn1.add(b[19]);b[19].setActionCommand(a[19]);b[19].addActionListener(this);for (i = 20; i <= 22; i++) {b[i] = new Button(a[i]);pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);}b[23] = new Button(String.valueOf(a[23])); pn1.add(b[23]);b[23].setActionCommand("oper");b[23].addActionListener(this);b[24] = new Button(String.valueOf(a[24])); pn1.add(b[24]);b[24].setActionCommand(a[24]);b[24].addActionListener(this);pn1.setLayout(new GridLayout(5, 5));add(tf, "North"); // 界面的处理add(pn1, "Center");setSize(400, 300);setVisible(true);tf.setText("0.0");addWindowListener(new WindowAdapter() { //程序结束public void windowClosing(WindowEvent e) {System.exit(1);}});}public void actionPerformed(ActionEvent e) { Button temp = (Button) e.getSource();try {if(e.getActionCommand().equals("number")) {if (frist) {str1 = str1 + temp.getLabel();tf.setText(str1); // 将输入的str1在显示框中显示} else {str2 = str2 + temp.getLabel();tf.setText(str2);// 将输入的str2在显示狂中显示}} else if(e.getActionCommand().equals("oper")) {if (str1 == " ") {operCount= 0;// 如果还没有输入数就点击运算符,执行iffrist = true;} else {operCount++;if (operCount > 1) {// 若输入的字符多余一个,则可进行运算getResult();}Operate= temp.getLabel(); // 存放加,减,乘,除等的符号frist = false;}} else if(e.getActionCommand().equals("=")) {if((str1== "") || (str2== "")) // 两个数没有输全就点击等号,执行if{operCount = 0;// 将按键计数器清零frist = true;} else {getResult();operCount = 0;}} else if(e.getActionCommand().equals("平方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.pow(Double.parseDouble(str1), 2);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("开方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.sqrt(Double.parseDouble(str1));str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("sin")) {if (str1 == " ") { // 处理sin0 ,cos0等tf.setText("0.0");str1 = "0";}else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.sin(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("cos")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.cos(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("tan")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.tan(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("C")) {operCount = 0;// 清空frist = true;str1 = " ";str2 = " ";str3 = " ";tf.setText("0.0");} else if(e.getActionCommand().equals("+/-")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);str1 = String.valueOf(-k);tf.setText(str1);}} else if(e.getActionCommand().equals("CE")) { // 取消上一步的运算tf.setText(str1);frist = true;operCount = 0;str2 = " ";} else if(e.getActionCommand().equals("backspace")) {{// 退格String s = tf.getText();tf.setText("");char b[] = new char[20];for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);b[i] = a;tf.setText(tf.getText() + a);}if (operCount == 0)str1 = tf.getText();elsestr2 = tf.getText();}}} catch (Exception f) {System.out.println(f.getMessage());}}void getResult() {num1 = Double.parseDouble(str1);num2 = Double.parseDouble(str2);if (Operate.equals("+")) {result = num1 + num2;} else if (Operate.equals("-")) { result = num1 - num2;} else if (Operate.equals("*")) { result = num1 * num2;}if (Operate.equals("/")) {if (num2 == 0.0) {error = true;} else {result = num1 / num2;}}if (error) {tf.setText("error");} else {tf.setText(String.valueOf(result));str3 = str1;str1 = String.valueOf(result);str2 = " ";}}public static void main(String args[]) {new Calculator();}}程序流程:if (e.getActionCommand().equals("number"))else if (e.getActionCommand().equals("oper"))else if (e.getActionCommand().equals("="))else if (e.getActionCommand().equals("平方"))else if (e.getActionCommand().equals("开方"))else if (e.getActionCommand().equals("C")) else if (e.getActionCommand().equals("CE"))void getResult()Main()主函数流程:测试情况:图形界面示意图:测试情况测试数据:输入4 ,平方显示结果为16输入4,开方显示结果为2输入4,+,2 显示结果为6输入4,-,2 显示结果为2输入4,*,2显示结果为8输入4,/,2显示结果为2输入1,+,2, +,4,CE,+8 显示结果为11输入1,+,22,Backspace ,= 显示结果为3 输入C 显示结果为0输入30,sin 显示结果为0.5。

java课程设计科学计算器

java课程设计科学计算器

java课程设计科学计算器。

一、课程目标知识目标:1. 理解Java编程中算术表达式的组成及运算规则;2. 掌握Java中的基本数据类型及其在算术运算中的使用;3. 学会使用Java控制结构和函数实现科学计算器的功能;4. 了解科学计算器中常见的数学函数及其在Java中的实现。

技能目标:1. 能够编写简单的Java程序,实现加、减、乘、除等基本运算;2. 能够运用循环和条件语句,实现科学计算器的逻辑功能;3. 能够利用Java类和对象,设计并实现具有图形用户界面的科学计算器;4. 能够运用调试技巧,找出并修正程序中的错误。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发其探究科学计算器原理的欲望;2. 培养学生严谨、细致的编程习惯,提高其问题解决能力和团队协作能力;3. 培养学生热爱科学、勇于创新的精神,使其认识到编程在科学计算中的重要性。

本课程针对高年级学生,结合Java编程知识,旨在帮助学生掌握科学计算器的核心功能实现。

课程注重实用性,通过设计具体的学习成果,使学生在完成课程后能够独立编写并优化科学计算器程序。

同时,关注学生的情感态度价值观培养,提高其综合素质。

二、教学内容1. Java基本语法与数据类型:回顾Java基本语法规则,重点掌握整型、浮点型等基本数据类型及其在运算中的使用。

- 教材章节:第一章 Java语言概述,第二章 基本数据类型与运算符2. 算术表达式与运算规则:讲解算术表达式的构成,介绍运算符优先级和结合性。

- 教材章节:第二章 基本数据类型与运算符3. Java控制结构:学习顺序、分支和循环结构,实现科学计算器的基本运算功能。

- 教材章节:第三章 控制结构4. 函数的定义与调用:介绍函数的概念,学会编写自定义函数,实现计算器中的特定功能。

- 教材章节:第四章 函数与数组5. 图形用户界面设计:学习Java Swing库,使用其组件设计科学计算器的界面。

- 教材章节:第七章 Java Swing图形用户界面6. 数学函数与运算:介绍科学计算器中常见的数学函数,如三角函数、指数函数等,并在Java中实现。

《Java项目实训》课程设计——计算器

《Java项目实训》课程设计——计算器

信息科学与工程学院课程设计题目:基于java计算器的设计与实现姓名:文正学号:201312310147班级:2013级升本1班课程:Java项目实训任课教师梦琳2014年12月20日课程设计任务书及成绩评定目录1、前言 (4)1.1设计目的及思路 (4)1.2功能模块设计 (4)1.3系统功能图 (6)2、计算器的设计与实现 (6)3、计算器演示 (7)4、总结与体会及讨论分析 (11)5、参考文献 (14)附件: (15)程序源代码 (15)1、前言1.1设计目的及思路通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。

给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。

除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过部较为复杂的运算将结果显示在显示屏上。

至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。

当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java 语言健壮性的体现!1.2功能模块设计以下为标准计算器的基本功能:(1)加法两个数据进行加操作,可以为小数。

(2)减法两个数据进行减操作,可以为负数相减。

(3)乘法两个数相乘操作。

(4)除法两个数相除操作。

(5)开平方对任意一个数进行开方运算,可以是小数。

(6)求余对任意一个数进行求余运算。

(7)倒数对任意一个数进行倒数运算。

java课程设计计算器

java课程设计计算器

java课程设计 计算器一、课程目标知识目标:1. 理解Java基本语法和程序结构,掌握算术表达式的编写;2. 掌握使用Java进行数值运算的方法,理解数据类型转换规则;3. 了解简单的异常处理机制,理解其与计算器程序的关系。

技能目标:1. 能够运用所学知识,独立编写一个具备基本功能的计算器程序;2. 学会使用Java控制台输入输出,实现用户与程序的交互;3. 能够通过调试和修改代码,解决计算器程序中的常见错误。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和解决问题的热情;2. 培养学生的团队协作意识,使其学会在编程过程中互相帮助和分享经验;3. 培养学生的逻辑思维能力,提高其分析问题和解决问题的能力。

本课程针对具有一定Java基础的学生设计,结合计算器项目实践,旨在巩固和拓展所学知识,提高学生的编程能力和实际应用能力。

课程注重培养学生的动手实践能力,强调理论与实践相结合,使学生能够在实践中掌握Java编程技巧,培养良好的编程习惯。

通过本课程的学习,学生将能够独立完成一个简单的计算器程序,提高其在实际编程中的问题解决能力。

二、教学内容1. Java基本语法与程序结构复习(教材第3章)- 简单的变量声明与赋值- 基本算术运算符的使用- 程序的控制流程:顺序、分支(if-else)、循环(for、while)2. Java数据类型与运算(教材第4章)- 数据类型转换规则- 运算符优先级- 算术表达式编写3. Java控制台输入输出(教材第5章)- 使用Scanner类进行输入- 使用System.out.print和System.out.println进行输出4. 简单异常处理(教材第7章)- 异常的概念与分类- try-catch语句的使用- 异常处理在计算器程序中的应用5. 计算器程序设计实践- 设计计算器功能需求- 编写计算器程序代码- 调试与优化计算器程序教学内容安排与进度:第一课时:复习Java基本语法与程序结构,明确计算器项目需求第二课时:学习Java数据类型与运算,编写计算器核心算法第三课时:掌握Java控制台输入输出,实现计算器用户交互第四课时:了解简单异常处理,优化计算器程序第五课时:计算器程序设计实践,调试与改进教学内容注重理论与实践相结合,通过逐步引导,使学生能够将所学知识应用于计算器程序设计,提高编程实践能力。

java实验报告计算器

java实验报告计算器

java实验报告计算器Java实验报告:计算器引言:计算器是我们日常生活中常用的工具之一,它能够帮助我们进行各种数学运算,提高计算的效率。

本实验旨在使用Java编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。

一、需求分析在设计计算器之前,我们首先需要明确计算器的功能需求。

一个基本的计算器应该包括加、减、乘、除四种基本运算,同时还应该具备清零、取反、百分比等附加功能。

在本实验中,我们将实现这些基本功能,并尝试添加一些额外的功能,如开根号、求平方等。

二、设计思路1. 用户界面设计我们可以使用Java的图形用户界面(GUI)库来设计计算器的界面。

可以使用按钮来表示数字和运算符,使用文本框来显示计算结果。

2. 数据结构设计为了实现计算器的功能,我们需要设计一个合适的数据结构来存储用户输入的数字和运算符。

可以使用栈(Stack)数据结构来实现这个功能。

当用户按下数字按钮时,将数字入栈;当用户按下运算符按钮时,将运算符入栈。

当用户按下等号按钮时,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

3. 运算逻辑设计计算器的运算逻辑可以使用逆波兰表达式来实现。

逆波兰表达式是一种不需要括号的数学表达式表示方法,通过后缀表达式的形式来表示运算符的优先级。

在计算器中,我们可以使用栈来实现逆波兰表达式的计算。

三、实验步骤1. 创建一个Java项目,并导入GUI库。

2. 设计计算器的用户界面,包括按钮和文本框。

3. 实现按钮的点击事件,根据用户输入的数字和运算符来更新栈的状态。

4. 实现等号按钮的点击事件,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

5. 实现清零、取反、百分比等附加功能的按钮点击事件。

6. 运行程序,测试计算器的各项功能是否正常。

四、实验结果与分析经过测试,我们的计算器能够正常地进行加、减、乘、除等基本运算,并且附加功能也能正常使用。

通过这个实验,我们不仅学习了Java语言的基本语法和面向对象编程的思想,还加深了对数据结构和逆波兰表达式的理解。

java实验报告——简单计算器的编写五篇范文

java实验报告——简单计算器的编写五篇范文

java实验报告——简单计算器的编写五篇范文第一篇:java实验报告——简单计算器的编写JAVA实验报告——简单计算器的编写班级:学号:姓名:一、实验目的1.掌握java图形用户界面(GUI)的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.掌握常用组件的事件接口4.应用awt和swing组件进行应用程序设计二、实验条件1.计算机一台2.java软件开发环境三、实验步骤1、编写代码:mport java.awt.*;import java.awt.event.*;import javax.swing.*;public class JCalculator extends JFrame implements ActionListener {private static final long serialVersionUID =-***457Lprivate class WindowCloser extends WindowAdapter {public void windowClosing(WindowEvent we){System.exit(0);}}int i;private final String[] str = { “7”, “8”, “9”, “/”, “4”, “5”, “6”, “*”, “1”,“2”, “3”, “-”, “.”, “0”, “=”, “+” };JButton[] buttons = new JButton[str.length]; JButton reset = new JButton(“CE”); JTextField display = new JTextField(“0”);public JCalculator(){super(“Calculator”);JPanel panel1 = new JPanel(new GridLayout(4, 4)); for(i = 0;i < str.length;i++){buttons[i] = new JButton(str[i]);panel1.add(buttons[i]);}JPanel panel2 = new JPanel(new BorderLayout()); panel2.add(“Center”, display);panel2.add(“East”, reset);getContentPane().setLayout(new BorderLayout()); getContentPane().add(“North”, panel2); getContentPane().add(“Center”, panel1);for(i = 0;i < str.length;i++)buttons[i].addActionListener(this);reset.addActionListener(this);display.addActionListener(this); addWindowListener(new WindowCloser()); setSize(800, 800);setVisible(true);pack();}public void actionPerformed(ActionEvent e){ Object target = e.getSource();String label = e.getActionCommand();if(target == reset)handleReset();else if(“0123456789.”.indexOf(label)> 0)handleNumber(label);elsehandleOperator(label);}boolean isFirstDigit = true;public void handleNumber(String key){if(isFirstDigit)display.setText(key);else if((key.equals(“.”))&&(display.getText().indexOf(“.”)< 0))display.setText(display.getText()+ “.”);else if(!key.equals(“.”))display.setText(display.getText()+ key);isFirstDigit = false;}public void handleReset(){display.setText(“0”);isFirstDigit = true;operator = “=”;}double number = 0.0;String operator = “=”;public void handleOperator(String key){if(operator.equals(“+”))number += Double.valueOf(display.getText());else if(operator.equals(“-”))number-= Double.valueOf(display.getText());else if(operator.equals(“*”))number *= Double.valueOf(display.getText());else if(operator.equals(“/”))number /= Double.valueOf(display.getText());else if(operator.equals(“=”))number = Double.valueOf(display.getText());display.setText(String.valueOf(number));operator = key;isFirstDigit = true;}public static void main(String[] args){new JCalculator();} }2、运行结果,见截图计算测试:123+456=579结果正确,程序无误。

java课程设计简易计算器

java课程设计简易计算器

前端:使用JavaFX进行界面设计 后端:使用Java进行逻辑处理和数据存储 数据库:使用MySQL进行数据存储 功能模块:包括加法、减法、乘法、除法、平方根等计算功能 测试:使用JUnit进行单元测试和集成测试 打包:使用Maven进行项目打包和部署
功能按钮:包括数字、运算 符、清除、等于等
易于阅读
输入框:用于输入数字和运算符号 输出框:用于显示计算结果 格式化规则:数字和运算符号之间用空格分隔 错误提示:当输入错误时,给出提示信息 计算结果:显示计算结果,并保留小数点后两位 清空按钮:用于清空输入框和输出框中的内容
输入两个数字 调用加法函数 返回结果 打印结果
输入两个数字
判断两个数字的大小关系
使用代码覆盖率工具:检查 代码覆盖率,确保所有代码 都被测试到
使用调试工具:如Eclipse、 IntelliJ IDEA等,提供丰富的 调试功能
阅读错误信息:仔细阅读错 误信息,找出问题所在,并 尝试解决
测试目的:验证程序的正确性和稳 定性
测试结果:记录测试过程中的错误 和异常
添加标题
添加标题
添加标题
编写单元测试:编写针对每个 方法的单元测试,确保每个方 法都能独立运行
调试单元测试:在测试过程中 发现错误时,使用调试工具定
位问题并修复
优化单元测试:根据测试结果 对单元测试进行优化,提高测
试覆盖率和效率
集成测试的概念:将多个模块组合起来进行测试,验证模块间的交互和协作是否正确
编写集成测试的步骤:确定测试目标、设计测试用例、编写测试代码、执行测试
添加标题
测试方法:单元测试、集成测试、 系统测试等
测试结论:对测试结果的分析和总 结,提出改进建议
收获:掌握了Java编程基础,了解了计算器的设计原理和实现方法 不足之处:项目规模较小,功能较为简单,需要进一步学习和实践 展望:未来可以尝试设计更复杂的计算器,或者将Java编程应用到其他领域

javs课程设计计算器

javs课程设计计算器

javs课程设计计算器一、课程目标知识目标:1. 学生能理解计算器程序的基本结构,掌握Java中实现计算器功能的相关语法知识。

2. 学生能运用所学知识,自主编写简单的计算器程序,实现加、减、乘、除四则运算。

3. 学生了解并掌握异常处理的基本方法,提高程序健壮性。

技能目标:1. 学生掌握使用Java编写控制台应用程序的基本步骤,培养编程实践能力。

2. 学生能够运用条件语句和循环语句实现计算器的逻辑运算。

3. 学生学会使用调试工具,分析并解决程序中出现的错误。

情感态度价值观目标:1. 学生通过编写计算器程序,体验编程解决问题的乐趣,提高学习Java的兴趣。

2. 学生在合作学习中,培养团队协作能力和沟通能力,形成良好的编程习惯。

3. 学生认识到编程在实际生活中的应用价值,增强对信息技术的认同感。

课程性质:本课程为Java语言程序设计的基础实践课程,旨在帮助学生掌握Java编程的基本知识,培养编程思维和实际操作能力。

学生特点:学生为初中生,具备一定的逻辑思维能力,对计算机编程有一定兴趣,但实践经验不足。

教学要求:注重理论与实践相结合,通过实际操作和案例分析,使学生掌握计算器程序的编写方法,提高编程实践能力。

同时,关注学生个体差异,提供个性化指导,确保每位学生都能达到课程目标。

在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 程序设计基础:回顾Java基本语法,重点掌握变量声明、数据类型、运算符、表达式等概念。

相关教材章节:第一章 Java语言概述,第二章 基本数据类型与运算符。

2. 控制台输入输出:学习使用Scanner类实现控制台输入,掌握打印输出语句的使用。

相关教材章节:第三章 输入输出流。

3. 控制结构:学习条件语句(if-else,switch)和循环语句(for,while),理解其执行逻辑。

相关教材章节:第四章 选择结构,第五章 循环结构。

4. 方法:掌握方法的定义、调用和返回值,理解方法的重载概念。

java课程设计--计算器(带源码)

java课程设计--计算器(带源码)
p2.add(b6);
b6.addActionListener(this);
p2.add(b14);
b14.addActionListener(this);
p2.add(b7);
b7.addActionListener(this);
p2.add(b8);
b8.addActionListener(this);
5.实验方法与步骤:
程序源码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.*;
publicclassCalculatorimplementsActionListener {
JButtonb1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,
sum=sum* d;
tf.setText(String.valueOf(sum));
}elseif(("/").equals((String)stElement())) {
sum=sum/ d;
tf.setText(String.valueOf(sum));
}elseif(("=").equals((String)stElement())) {
}
if(e.getActionCommand() =="x")//乘号的实现;
{
if(("+").equals((String)stElement())
|| ("-").equals((String)stElement())

java课程设计编写计算器

java课程设计编写计算器

java课程设计编写计算器一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够使用Java编写一个简单的计算器程序。

具体来说,知识目标包括了解Java的基本数据类型、运算符、控制结构等;技能目标包括能够使用Java编写简单的程序,并进行调试和优化;情感态度价值观目标包括培养学生的编程兴趣,提高学生的解决问题的能力。

二、教学内容本节课的教学内容主要包括Java的基本语法和结构,以及计算器程序的设计和实现。

具体来说,将讲解Java的基本数据类型、运算符、控制结构等知识,并通过实例来说明如何使用这些知识来编写计算器程序。

此外,还将介绍如何进行程序的调试和优化,以提高程序的性能和可靠性。

三、教学方法为了达到本节课的教学目标,将采用多种教学方法来进行教学。

首先,将采用讲授法来讲解Java的基本语法和结构,使学生能够了解和掌握这些知识。

其次,将采用案例分析法来分析计算器程序的设计和实现,使学生能够通过实际案例来加深对知识的理解和应用。

此外,还将采用实验法让学生亲自动手编写和调试计算器程序,以提高学生的实际操作能力。

四、教学资源为了支持本节课的教学内容和教学方法的实施,将选择和准备一些教学资源。

教材方面,将使用《Java编程语言》作为主教材,辅以《Java编程实践》等参考书进行深入学习。

多媒体资料方面,将制作一些PPT和视频教程,以帮助学生更好地理解和掌握知识。

实验设备方面,将准备一些计算机和编程环境,以便学生进行实际操作和调试。

五、教学评估本节课的教学评估将采用多元化的方式来进行,以全面、客观、公正地评估学生的学习成果。

评估方式包括平时表现、作业和考试等。

平时表现主要考察学生的出勤、课堂参与度和团队合作能力;作业主要包括课后练习和编程任务,以巩固和应用所学知识;考试则是对学生综合运用Java编程知识的考察,包括理论知识和编程实践。

通过这些评估方式,希望能够全面反映学生的学习成果,激发学生的学习兴趣和主动性。

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,%,)和记忆处理功能,有退格,清零, 归零等应用。

界面颜色为白色,数字字体颜色为蓝色,函数及其他功能键为红色。

JAVA实训报告--计算器

JAVA实训报告--计算器

《Java实训》设计报告计算器专业:计算机科学与技术班级:软件1231学号:1204311130姓名:王磊计算机技术与工程学院2013年7月11日项目简介项目名称计算器开发人员王磊项目简介本程序名称为计算器,主要功能是实现简单的数字,运算符号,计算,删除,复位等功能。

项目目的掌握计算器的各项基本功能掌握编写计算器程序的所用方法掌握Swing组件的应用掌握事件的应用主要技术Java编程语言、javaSwing技术开发环境 JDK1.6.0_24项目特点使用组件构建的C/S应用程序各项功能的组织合理搭配应用图标控制功能实现技术重点构建基于C/S架构的应用程序Swing组件应用事件监听的应用方法的编写技术难点Swing组件的应用事件监听器的使用异常处理方法简便的选择项目名称一、项目需求本程序的主要功能:(1)单击“计算器”上的数字按钮(0~9)可以设置参与计算的运算数。

(2)单击“计算器”上的运算符按钮(+、-、*、/、1/x、sqrt、%)可以选择运算符号。

(3)单击“计算器”上的“=”按钮显示计算结果。

(4)单击“计算器”上的“复位”按钮清空计算结果。

(5)单击“计算器”上的“删除”按钮删除输入的最后一个数字。

二、项目分析与设计在设计计算器时,编写2个Java源文件:CalculatorWindow.java、NumberButton.java 计算器除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。

下面是2个Java源文件的总体设计。

(1)CalculatorWindow.java(主类)CalculatorWindow类负责创建计算器的主窗口,该类含有main方法,计算器从该类开始执行。

CalculatorWindow类有4种类型的对象,分别是:LinkedList<String>、NumberButton、JButton、JTextField。

java课程设计---计算器

java课程设计---计算器

10信计2011-2012(二)《Java程序设计》课程设计设计题目模拟科学计算器设计时间学生姓名学生学号所在班级指导教师徐州工程学院数学与物理科学学院摘要计算器在我们的生活中常常会使用到,本次课程设计,通过界面以及其中的逻辑处理,完成了四则运算的处理。

通过awt包或者swing包中的界面设计部分对界面设计的细节可以有更多的了解。

利用面向对象的思想,将各个组件的事件响应分别用不同的类表达出来。

面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。

对于具有相同事件响;应的组件则可以调用相同的类来处理事件。

除此之外,利用栈的知识来解决运算符优先的问题也让我们对java中的栈有了更多的了解。

关键词java;计算器;四则运算;面向对象;栈目录1需求分析 (1)1.1该计算器完成的功能 (1)1.2出错处理 (1)1.3数据处理 (1)2设计方案 (1)2.1设计方法 (1)2.2界面布局 (1)3系统设计 (2)3.1界面设计 (2)3.2功能模块 (2)3.2.1功能模块的设计方案 (2)3.2.2功能模块的实现方法 (3)4系统的开发和运行环境及安装配置说明 (3)5系统测试截图 (4)5.1系统初始运行界面 (4)5.2计算器按键测试 (4)5.3运算符重复输入测试 (4)5.4被除数为0的测试 (5)5.5小数点重复性检查 (5)5.6 backspace按键越界操作 (6)5.7优先级程序计算 (6)5.8计算结果 (7)6总结与心得体会 (7)附录 (9)1需求分析1.1该计算器完成的功能用户能够完成四则混合运算+、-、*、/,并且计算器能够自动的识别运算符的优先级,根据输入的运算公式,自动计算出相应的结果。

同时完成计算器中的backspace、ce按钮,能够完成消除或者删除的功能。

1.2出错处理当用户如果按下的是除零的操作,显示框将显示“被除数不能为0”。

当用户如果连续多次按下运算符,计算器自动记忆第一次运算符,并且做防连续输入相同的运算符或者是不同的运算符。

Java课程设计(计算器)

Java课程设计(计算器)
面设计
界面布局:简洁明了,易于操作 输入框:用于输入数字和运算符号 计算按钮:用于执行计算操作
结果显示框:用于显示计算结果 历史记录框:用于查看历史计算记录 帮助按钮:用于查看帮助信息或联系客服
功能需求优先级
基本运算功能:加、 减、乘、除
科学计算功能:平方、 开方、三角函数等
错误处理:处 理用户输入错 误,如输入非
数字字符等
功能扩展:支 持更多运算符 号和功能,如 平方、开方等
代码优化:提 高代码可读性 和可维护性, 减少代码冗余
和错误
测试与调试
单元测试:对每个功能模块进行独立测试,确保其正确性 集成测试:将各个功能模块组合起来进行测试,确保整体功能的正确性 边界值测试:对输入和输出边界值进行测试,确保程序在边界条件下的稳定性
Part Five
总结与展望
项目总结
项目目标:设计并实现一个计算器 项目成果:实现了加减乘除、平方根、正弦余弦等计算功能 项目难点:处理用户输入和错误处理 项目改进:优化界面设计,增加更多计算功能,提高用户体验
项目亮点与不足
● 项目亮点: - 界面设计简洁明了,易于操作 - 代码结构清晰,易于维护和扩展 - 功能齐全,满足日常 计算需求 - 性能稳定,响应速度快
实际应用价值
提高编程能力: 通过设计计算 器,可以提升 Java编程技能
理解算法原理: 通过设计计算 器,可以深入 理解算法原理
和实现方法
提高问题解决 能力:通过设 计计算器,可 以提升解决实 际问题的能力
提升团队协作 能力:通过设 计计算器,可 以提升团队协 作和沟通能力
THANKS
汇报人:
Java课程设计(计算器)
,a click to unlimited possibilities

java课程设计--科学计算器

java课程设计--科学计算器

目录1 课设任务及要求 (1)1.1课设任务: (1)1.2创新要求: (1)1.3设计要求 (1)2 需求分析 (2)2.1 设计背景 (2)2.2 开发的技术及功能 (2)3 设计思路 (3)4 详细设计 (4)4.1功能实现: (4)4.4 程序设计过程 (6)5 系统调试 (6)5.1 运行调试 (6)6 参考文献 (7)附录 (8)1 课设任务及要求1.1课设任务:⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);⑵、有求倒数、退格和清零功能。

1.2创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。

1.3设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。

且有小数点、正负号、求倒数、退格和清零功能。

②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。

③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

2 需求分析2.1 设计背景设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。

但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。

总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。

2.2 开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。

Java课程设计----简易计算器

Java课程设计----简易计算器

面向对象课程设计(Java)题目:简易计算器专业:电子商务班级:1110025学生姓名:指导老师:2013 年 1月 6日目录一、设计内容 (1)二、设计要求 (1)三、总体设计 (1)四、具体设计 (1)五、程序设计 (6)设计体会与小结 (15)简易计算器设计一、设计内容设计一个图形界面(GUI)的应用程序,完成简单的运算。

通过计算器的编辑来检测和提升自己的java能力,并最终完成课程设计报告。

二、设计要求1、应用自己所学课程知识完成对计算器的基本任务。

2、查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。

3、通过应用java程序编写计算器来提升对简单的图形界面的了解和掌握。

三、总体设计该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能。

四、具体设计1、程序流程图:2、主要代码展示及说明:总体代码的设计:程序主窗体继承JFrame类,使用24个JBotton按钮实现数字和基本功能,并且分别注册监听,采用6行4列网格布局,完成计算器界面的基本设置,最后对按钮进行计算分析,计算并显示结果。

这段代码主要是对程序的主框架进行相应的设置super("简易计算器");setSize(300,260);this.setLayout(new BorderLayout());jPanel1=new JPanel();jPanel1.setLayout(new GridLayout(1,1)); //一行一列的布局jPanel2=new JPanel();jPanel2.setLayout(new GridLayout(6,4)); //六行四列的布局resultField=new JTextField("0");jPanel1.add(resultField);this.add(jPanel1,BorderLayout.NORTH);this.add(jPanel2,BorderLayout.CENTER);设置数字按钮1到9并添加监控以及符号等的添加监控s1=new JButton(" 1 "); s1.addActionListener(this);s2=new JButton(" 2 "); s2.addActionListener(this);s3=new JButton(" 3 "); s3.addActionListener(this);s4=new JButton(" 4 "); s4.addActionListener(this);s5=new JButton(" 5 "); s5.addActionListener(this); s6=new JButton(" 6 "); s6.addActionListener(this); s7=new JButton(" 7 "); s7.addActionListener(this); s8=new JButton(" 8 "); s8.addActionListener(this); s9=new JButton(" 9 "); s9.addActionListener(this); s0=new JButton(" 0 "); s0.addActionListener(this); b1=new JButton(" + "); b1.addActionListener(this); b2=new JButton(" - "); b2.addActionListener(this); b3=new JButton(" * "); b3.addActionListener(this); b4=new JButton(" / "); b4.addActionListener(this);b5=new JButton(" ^ "); b5.addActionListener(this); b6=new JButton(" 开方 "); b6.addActionListener(this); b7=new JButton(" % "); b7.addActionListener(this);b8=new JButton(" x! "); b8.addActionListener(this);b9=new JButton(" 1/x "); b9.addActionListener(this);f1=new JButton(" . "); f1.addActionListener(this); f2=new JButton(" = "); f2.addActionListener(this);f3=new JButton(" C "); f3.addActionListener(this);f4=new JButton(" 负 "); f4.addActionListener(this); f5=new JButton(" 退格 "); f5.addActionListener(this); jPanel2.add(f3);jPanel2.add(b4);jPanel2.add(b3);jPanel2.add(f5);jPanel2.add(s7);jPanel2.add(s8);jPanel2.add(s9);jPanel2.add(b1);jPanel2.add(s4);jPanel2.add(s5);jPanel2.add(s6);jPanel2.add(b2);jPanel2.add(s1);jPanel2.add(s2);jPanel2.add(s3);jPanel2.add(b5);jPanel2.add(s0);jPanel2.add(f1);jPanel2.add(f4);jPanel2.add(b6);jPanel2.add(b7);jPanel2.add(b8);jPanel2.add(b9);jPanel2.add(f2);(3)数据输入用方法num(int i)设计如下:public void num(int i){String s = null;s=String.valueOf(i); //返回整数i的字符串表示形式if(end){ //如果数字输入结束,则将文本框置零,重新输入resultField.setText("0");end=false;}if((resultField.getText()).equals("0")){//如果文本框的内容为零,则覆盖文本框的内容resultField.setText(s);}else{ //如果文本框的内容不为零,则在内容后面添加数字str = resultField.getText() + s;resultField.setText(str);}以及用JFrame的方法actionPerformed(ActionEvent e)来获取数据(4)符号运算及清零、退格的设计如下:if(add){ // 加法num1=num1 +num2;}else if(sub){ //减法num1=num1 - num2;}else if(mul){ //乘法num1=num1 * num2;}else if(div){ //除法if(num2==0) throw new ArithmeticException("除数不能为零");elsenum1=num1 / num2;}else if(chf){ //乘方if(num2==0) num1=1;elsenum1=Math.pow(num1, num2);}else if(evo){ //开方if(num2<0) throw new ArithmeticException("被开方数不能小于零");else num1=Math.sqrt(num2);}else if(rec){ //倒数if(num2<0) throw new ArithmeticException("分母不能小于零");else num1=1/num2;}else if(per){ //百分num1=num1/100.0;}else if(pur){ //阶乘if(num2<0) throw new ArithmeticException("负数不能求阶乘");else for(int i=1;i<num2;i++){num1=i*num1;}}resultField.setText(String.valueOf(num1));end=true;}else if(e.getSource()==f3){ //实现清零resultField.setText("0");}else if(e.getSource()==f4){ //实现负号if(resultField.getText()!="0"){resultField.setText("-"+resultField.getText());}}else if(e.getSource()==f5){ //实现退格int i;i=(resultField.getText()).length();if(i==1){resultField.setText("0");}else { str=resultField.getText();resultField.setText(str.substring(0,i-1));}}}五、程序设计import java.awt.*;import java.awt.event.*;import javax.swing.*;public class test1 extends JFrame implements ActionListener{ // JFrame jframe1;JPanel jPanel1,jPanel2;JTextField resultField;JButtons1,s2,s3,s4,s5,s6,s7,s8,s9,s0,b1,b2,b3,b4,b5,b6,b7,b8,b9,f1,f 2,f3,f4,f5; private boolean end,add,sub,mul,div,evo,chf,per,rec,pur;private String str;private double num1,num2;public test1(){super("简易计算器");setSize(300,260);this.setLayout(new BorderLayout());jPanel1=new JPanel();jPanel1.setLayout(new GridLayout(1,1)); //一行一列的布局jPanel2=new JPanel();jPanel2.setLayout(new GridLayout(6,4)); //四行五列的布局resultField=new JTextField("0");jPanel1.add(resultField);this.add(jPanel1,BorderLayout.NORTH);s1=new JButton(" 1 "); s1.addActionListener(this);s2=new JButton(" 2 "); s2.addActionListener(this); s3=new JButton(" 3 "); s3.addActionListener(this); s4=new JButton(" 4 "); s4.addActionListener(this); s5=new JButton(" 5 "); s5.addActionListener(this); s6=new JButton(" 6 "); s6.addActionListener(this); s7=new JButton(" 7 "); s7.addActionListener(this); s8=new JButton(" 8 "); s8.addActionListener(this); s9=new JButton(" 9 "); s9.addActionListener(this); s0=new JButton(" 0 "); s0.addActionListener(this); b1=new JButton(" + "); b1.addActionListener(this); b2=new JButton(" - "); b2.addActionListener(this); b3=new JButton(" * "); b3.addActionListener(this); b4=new JButton(" / "); b4.addActionListener(this);b5=new JButton(" ^ "); b5.addActionListener(this); b6=new JButton(" 开方 "); b6.addActionListener(this); b7=new JButton(" % "); b7.addActionListener(this);b8=new JButton(" x! "); b8.addActionListener(this);b9=new JButton(" 1/x "); b9.addActionListener(this);f1=new JButton(" . "); f1.addActionListener(this); f2=new JButton(" = "); f2.addActionListener(this);f3=new JButton(" C "); f3.addActionListener(this);f4=new JButton(" 负 "); f4.addActionListener(this); f5=new JButton(" 退格 "); f5.addActionListener(this); jPanel2.add(f3);jPanel2.add(b4);jPanel2.add(b3);jPanel2.add(f5);jPanel2.add(s7);jPanel2.add(s8);jPanel2.add(s9);jPanel2.add(b1);jPanel2.add(s4);jPanel2.add(s5);jPanel2.add(s6);jPanel2.add(b2);jPanel2.add(s1);jPanel2.add(s2);jPanel2.add(s3);jPanel2.add(b5);jPanel2.add(s0);jPanel2.add(f1);jPanel2.add(f4);jPanel2.add(b6);jPanel2.add(b7);jPanel2.add(b8);jPanel2.add(b9);jPanel2.add(f2);this.add(jPanel2,BorderLayout.CENTER);}public void num(int i){String s = null;s=String.valueOf(i); //返回整数i的字符串表示形式if(end){ //如果数字输入结束,则将文本框置零,重新输入resultField.setText("0");end=false;}if((resultField.getText()).equals("0")){//如果文本框的内容为零,则覆盖文本框的内容resultField.setText(s);}else{ //如果文本框的内容不为零,则在内容后面添加数字str = resultField.getText() + s;resultField.setText(str);}}public void actionPerformed(ActionEvent e)throws ArithmeticException {//数字事件if(e.getSource()==s1)num(1);else if(e.getSource()==s2)num(2);else if(e.getSource()==s3)num(3);else if(e.getSource()==s4)num(4);else if(e.getSource()==s5)num(5);else if(e.getSource()==s6)num(6);else if(e.getSource()==s7)num(7);else if(e.getSource()==s8)num(8);else if(e.getSource()==s9)num(9);else if(e.getSource()==s0)num(0);//符号事件else if(e.getSource()==b1)sign(1);else if(e.getSource()==b2)sign(2);else if(e.getSource()==b3)sign(3);else if(e.getSource()==b4)sign(4);else if(e.getSource()==b5)sign(5);else if(e.getSource()==b6)sign(6);else if(e.getSource()==b7)sign(7);else if(e.getSource()==b8)sign(8);else if(e.getSource()==b9)sign(9);else if(e.getSource()==f1){ //实现"."str=resultField.getText();if(str.indexOf(".")<=1){str+=".";resultField.setText(str);}}else if(e.getSource()==f2){ //实现"=" num2=Double.parseDouble(resultField.getText());if(add){ // 加法num1=num1 +num2;}else if(sub){ //减法num1=num1 - num2;}else if(mul){ //乘法num1=num1 * num2;}else if(div){ //除法if (num2==0) throw new ArithmeticException("除数不能为零");elsenum1=num1 / num2;}else if(chf){ //乘方if(num2==0) num1=1;elsenum1=Math.pow(num1, num2);}else if(evo){ //开方if(num2<0) throw new ArithmeticException("被开方数不能小于零");else num1=Math.sqrt(num2);}else if(rec){ //倒数if(num2<0) throw new ArithmeticException("分母不能小于零");else num1=1/num2;}else if(per){ //百分num1=num1/100.0;}else if(pur){ //阶乘if(num2<0) throw new ArithmeticException("负数不能求阶乘");else for(int i=1;i<num2;i++){num1=i*num1;}}resultField.setText(String.valueOf(num1));end=true;}else if(e.getSource()==f3){ //实现清零resultField.setText("0");}else if(e.getSource()==f4){ //实现负号if(resultField.getText()!="0"){resultField.setText("-"+resultField.getText());}}else if(e.getSource()==f5){ //实现退格int i;i=(resultField.getText()).length();if(i==1){resultField.setText("0");}else { str=resultField.getText();resultField.setText(str.substring(0,i-1));}}}public void sign(int s){if(s==1){add=true;sub=false;mul=false;div=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==2){add=false;sub=true;mul=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==3){add=false;sub=false;mul=true;div=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==4){add=false;sub=false;mul=false;div=true;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==5){add=false;sub=false;mul=false;div=false;evo=false;chf=true;per=false;pur=false;}else if(s==6){ add=false;sub=false;mul=false;div=false;evo=true;chf=false;per=false;pur=false;rec=false;}else if(s==7){ add=false;sub=false;mul=false;div=false;evo=false;chf=false;per=true;pur=false;rec=false;}else if(s==8){ add=false;sub=false;mul=false;div=false;evo=false;chf=false;per=false;pur=true;rec=false;}else if(s==9){ add=false;sub=false;mul=false;evo=false;chf=false;per=false;pur=false;rec=true;}num1=Double.parseDouble(resultField.getText());end=true;}}public class mainclass {public static void main(String[] args){try{test1 th1=new test1();th1.show();}catch (Exception e){System.out.println(e);}}}设计体会与小结经过一周的实习,本学期的java课程设计到此也算告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java基本知识及软件开发的了解。

Java课程设计报告----计算器软件设计

Java课程设计报告----计算器软件设计

Java课程设计报告计算器软件设计学生姓名:学号:年级专业:指导老师:学院:目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 计算器功能 (3)2.3 界面设计 (3)2.4 类UML图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 处理按了运算符后的计算 (5)3.2.2 处理输入字符 (6)3.2.3 进制的转换 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 程序异常处理 (9)6. 源程序 (9)参考文献 (27)致谢 (27)摘要:该程序是一个图形界面的简单的java计算器,具有良好的界面,使用人员能快捷简单地进行操作。

即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

可以进行简单的四则运算(加、减、乘、除,以及开平方)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear 表示初始化,sqrt表示开平方,界面为灰白对称。

关键字:java、计算器类、方法、事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称《Java项目实训》课程设计设计名称基于java计算器得设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓名指导教师吕淑芳考核成绩信息工程系二〇一七年六月目录1、前言 ...................................................................................................... 错误!未定义书签。

1、1设计目得及思路ﻩ错误!未定义书签。

1、2功能模块设计.............................................................................. 错误!未定义书签。

1、3系统功能图ﻩ错误!未定义书签。

2、计算器得设计与实现ﻩ错误!未定义书签。

3、计算器演示ﻩ错误!未定义书签。

4、总结与体会及讨论分析 .............................................................. 错误!未定义书签。

5、参考文献 .............................................................................................. 错误!未定义书签。

附件:ﻩ错误!未定义书签。

程序源代码................................................................................................ 错误!未定义书签。

ﻬ1、前言1、1设计目得及思路通过本课程设计使学生能够较全面得掌握面向对象程序设计得有关概念与开发方法,以便能较全面地理解、掌握与综合运用所学得知识,提高自身得编程能力。

利用Java Applet图形界面首先开始设计一个计算器得界面,定义计算器所需要得按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松.给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义得算法,生成数据并显示。

除数字得输入为直接进行输入外,其她运算例如+、—、*、/、开平方等算法要求计算时通过内部较为复杂得运算将结果显示在显示屏上。

至于其中得进制转换功能得实现则就是直接调用Java中进制转换得函数,例如要将十进制转换成二进制则可直接调用函数Integer、toBinaryString(int i)来实现,充分显示了Java语言得简洁性与Java语言功能得强大性.当然了在输入数据时还要进行异常捕捉,防止越界得现象得发生,这也就是Java语言健壮性得体现!1、2功能模块设计以下为标准计算器得基本功能:(1)加法两个数据进行加操作,可以为小数。

(2)减法两个数据进行减操作,可以为负数相减.(3)乘法ﻫ两个数相乘操作。

(4)除法两个数相除操作。

(5)开平方对任意一个数进行开方运算,可以就是小数。

(6)求余对任意一个数进行求余运算。

(7)倒数对任意一个数进行倒数运算。

(8)转换将十进制数转换为二进制以及将二进制转换为十进制.1、3系统功能图2、计算器得设计与实现2、1总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧得计算器,可以让用户得操作也更方便与快捷。

本项目需要实现一个具有四则运算得计算器,能够实现基本得加、减、乘、除运算,以及其它得辅助功能;界面简洁适用;要提供主要得设计思路、类得设计,本次设计添加转进制等功能。

本应用程序继承自框架(frame),此程序使用frame布局管理器bordela yout,将单行文本加入相应区域,包含各种按纽得面板buttonpanel加入相应区域还可以将进制转换得面板与单行文本框放一块包含各种按纽得面板buttonpanel采用N行N列得网格布局,然后将数字按钮与运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。

布局设计好后再添加按钮事件。

对于此程序要考虑到点击加、减、乘、除按钮时就是否有点击数字按钮,如果就是第一次点击数字按钮或者就是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮得数值设置到文本框中,否则则应把文本框中得内容加上您所点击按钮得数值设置到文本框中。

2、2程序得调试与运行结果说明程序功能实现:使用swing组件与awt图形用户界面以及BroadLayout布局管理器。

通过在按钮得单击事件处理方法中调用类得成员方法calculator()来进行简易计算器得各种运算,并正确实现运算功能.程序可以实现加、减、乘、除、取余等运算,并且可进行负数得运算,设置CE清零按钮可进行清零运算。

添加菜单条,列出‘标准计算’、‘日期计算’菜单选项,并别实现‘标准计算’且整个程序对话框可实现最小化、最大化、关闭。

3、计算器演示加法减法乘法除法倒数平方二进制转换为十进制十进制转换为二进制4、总结与体会及讨论分析将代码写好之后检查代码得正确性,检查代码无误后将代码进行调试与运行将会出现一个JavaApplet计算器界面。

在调试过程中可能会出现有界面但就是不能运行小程序,那就是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!在调试与运行完全正确后,我们就可以按照自己得医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确得。

有时候我们还要输入不同范围得值进行测试,可能会发现更多得错误,因为有时候我们定义数据得范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大得运算。

有时候我们会不自觉得选择一种最优函数方法尽量将自己得代码简单规范而又不缺少题目所要求得功能,那就要求我们翻阅很多参考书与查阅很多资料。

其实javaApplet图形界面得布局也就是我们要讨论得范围,如何使得界面更加美观就是我们要探讨得!有时候我们可能会到书上或网上找到一些满足我们要求得程序代码,在此我们应该取其优秀得简单易理解代码作为我们设计程序得代码,作为初学者参考与借用部分外部程序就是不可避免,但就是我认为前提我们应该瞧懂那些程序代码,要知其所以然,那样才达到我们学程序得目得,但不主张完全照搬,否则就会没意义了!总结:(1)通过编写这个相对复杂得程序,让我认识解决实际问题前应现建立模型,再通过建立得模型使问题简单化,从而解决问题。

(2)这次编写得程序大部分就是通过调用各包中得方法来实现得,这也让我充分理解了包与类调用得关系.(3)并且通过实训我了解到String类就是字符串常量类,初始化后不能更改;StringBuffer类就是字符串缓冲区,可以被修改。

布尔型不能转化成其她任何类型等等。

在做本项目就是时候,会遇到很多小问题,比如说:如何保存输入得数字与下一个数进行加、减、乘、除运算。

还有如何判断它就是第几个输入得数字。

后来进行多次研究与查询才知道可以通过设运算符标志位来判断就是输入得第几个数值.还有在安装日期计算按钮时会遇到日期对象与标准计算得类不再同一个包中,这时需要重新定义一个类来实现日期计算,这一功能我在编程时遇到了一些问题,所以最后运行时只有按钮事件但在按钮上没有添加实现功能得方法.并且编写程序时需要声明多个对象,给不同得对象分配不同得空间。

程序中对布局管理器与事件、按钮监听器得应用十分广泛。

并且运用了java、awt、*;与java、sw ing中得很多组件.通过编程我对这些内容有了更深层次得理解,为以后得编程打下了良好得基础.设计体会:在此次得课程设计实践中,我学到了教科书上没有得东西。

这次课程设计,我按照课程设计得要求,分块实现程序得功能。

在实践中我遇到许多得问题,但我都克服,最终我成功得完成了这次课程设计。

从中我充分理解了Java面对对象得特性,并体会到Java与C语言得不同之处在实践得同时,我又从中成长了许多,特别就是在对程序得编译与调试中掌握了许多得技巧与方法,为今后得其她计算机语言得学习奠定了一定得基础.此次课程设计让我更了解熟悉了Java中得图形用户界面与它得编程方式。

在完成课题得过程中也不断充实了自己,学习到了很多以前没有学习到得知识,收获很大。

在做项目时必然会遇到困难,会有不会得东西,重要得不就是现在会不会,而就是遇到问题知道如何找到解决得途径。

还使我对所学知识能够融会贯通,又不断丰富了新知识.Java计算器设计使得我们对所学得专业课有了更为深刻得认识,使得知识得到了巩固与提高此次得课程设计使我复习、巩固Java语言得基础知识,进一步加深Java 语言得理解与掌握;课程设计为我们提供了一个既动手又动脑,独立实践得机会,将课本上得理论知识与实际有机得结合起来,锻炼了我们分析解决实际问题得能力.提高我们适应实际,实践编程得能力;并且培养了我们在项目开发中团队合作精神、创新意识及能力。

在实践得同时,我又从中成长了许多,特别就是在对程序得编译与调试中掌握了许多得技巧与方法,为今后得其她计算机语言得学习奠定了一定得基础。

5、参考文献[1]朱福喜、《Java语言程序设计》(第二版)、科学出版社[2]陈国君等、《Java程序设计基础》(第二版)、清华大学出版社[3]Deitel、《Java大学基础教程》(第六版)、电子工业出版社[4] MaryCampione、《Java语言导学》(第四版)、机械工业出版社[5] Y、Daniel Liang、《Java语言程序设计基础篇》(第六版)、机械工业出版社程序源代码importjavax、swing、*;import javax、swing、text、JTextponent;import java、util、StringTokenizer;import java、awt、*;importjava、awt、event、*;import java、math、*;public class Calculator implements ActionListener{JFrame jf=new JFrame("计算器");JTextField tf=new JTextField();JPanel pnl;JButton jButtonDENG;JButtonjButtonJIAN;JButton jButtonCHENG;JButton jButton1;JButton jButton2;JButton jButton3;JButton jButton4;JButton jButton5;JButton jButton6;JButton jButton7;JButton jButton8;JButtonjButton9;JButton jButton0;JButton jButtonCHU;JButton jButtonQINGKONG;JButton jButtonJIA;JButton jButtonQUYU;JButton jButtonPINGFANG;JButton jButtonXIAOSHUDIAN;JButtonjButtonBACKSPACE;JButton jButtonDAOSHU;JButton jButtonKAIPINGFANG;JButton jButtonERJINZHI;JButton jButtonSHIJINZHI;public Calculator (){ //初始化界面得方法Container c=jf、getContentPane();tf、setHorizontalAlignment(JTextField、RIGHT);c、add(tf,"North”);JPanel pnl=new JPanel();c、add(pnl,"Center”);pnl、setLayout(new GridLayout(6,5));jButton1=new JButton("1”);jButton1、addActionListener(this);pnl、add(jButton1);jButton2=new JButton(”2”);jButton2、addActionListener(this);pnl、add(jButton2);jButton3=new JButton(”3”);jButton3、addActionListener(this);pnl、add(jButton3);jButtonBACKSPACE=new JButton("backspace”);jButtonBACKSPACE、addActionListener(this);pnl、add(jButtonBACKSPACE);jButton4=new JButton(”4");jButton4、addActionListener(this);pnl、add(jButton4);jButton5=new JButton(”5”);jButton5、addActionListener(this);pnl、add(jButton5);jButton6=new JButton("6");jButton6、addActionListener(this);pnl、add(jButton6);jButtonJIA=new JButton("+");jButtonJIA、addActionListener(this);pnl、add(jButtonJIA);jButton7=newJButton("7");jButton7、addActionListener(this);pnl、add(jButton7);jButton8=new JButton("8");jButton8、addActionListener(this);pnl、add(jButton8);jButton9=newJButton("9");jButton9、addActionListener(this);pnl、add(jButton9);jButtonJIAN=new JButton(”—");jButtonJIAN、addActionListener(this);pnl、add(jButtonJIAN);jButton0=new JButton(”0");jButton0、addActionListener(this);pnl、add(jButton0);jButtonQINGKONG=new JButton("清空”);jButtonQINGKONG、addActionListener(this); pnl、add(jButtonQINGKONG);jButtonCHENG=new JButton(”*”);jButtonCHENG、addActionListener(this);pnl、add(jButtonCHENG);jButtonCHU=new JButton(”/");jButtonCHU、addActionListener(this);pnl、add(jButtonCHU);jButtonQUYU=new JButton("%");jButtonQUYU、addActionListener(this);pnl、add(jButtonQUYU);jButtonPINGFANG=new JButton("平方”);jButtonPINGFANG、addActionListener(this);pnl、add(jButtonPINGFANG);jButtonXIAOSHUDIAN=new JButton(”、");jButtonXIAOSHUDIAN、addActionListener(this);pnl、add(jButtonXIAOSHUDIAN);jButtonDENG=new JButton("=”);jButtonDENG、addActionListener(this);pnl、add(jButtonDENG);jButtonDAOSHU=new JButton(”倒数");jButtonDAOSHU、addActionListener(this);pnl、add(jButtonDAOSHU);jButtonKAIPINGFANG=new JButton(”开平方");jButtonKAIPINGFANG、addActionListener(this);pnl、add(jButtonKAIPINGFANG);jButtonERJINZHI=newJButton("二进制");jButtonERJINZHI、addActionListener(this);pnl、add(jButtonERJINZHI);jButtonSHIJINZHI=new JButton(”十进制”);jButtonSHIJINZHI、addActionListener(this);pnl、add(jButtonSHIJINZHI);jf、setSize(600,400);jf、setVisible(true);}publicvoid actionPerformed(ActionEvent event){ //检测运算符得方法try{ﻩdouble wen=0;String toknizer="+”;String ben;String wenben=tf、getText()+event、getActionmand();tf、setText(wenben); //各运算符得判断运行代码if(wenben、indexOf(”*")!=-1) {toknizer="*";}if(wenben、indexOf("+")!=-1) {toknizer="+";}if(wenben、indexOf(”-")!=-1) {toknizer=”—";}if(wenben、indexOf(”/”)!=-1) {toknizer="/”;}if(wenben、indexOf(”%”)!=—1) {toknizer="%";}if(wenben、indexOf(”平方")!=-1){toknizer=”平方";}if(wenben、indexOf("倒数")!=-1){toknizer="倒数";}if(wenben、indexOf("开平方")!=—1){toknizer="开平方";}if(wenben、indexOf("二进制”)!=-1) {toknizer="二进制";}if(wenben、indexOf("十进制”)!=-1){toknizer="十进制”;}//各个运算符得运算方法代码if(event、getSource()==jButtonQINGKONG){ //清空算法wenben="";tf、setText(wenben);}if(event、getSource()==jButtonBACKSPACE){ //清除算法wenben=wenben、substring(0,wenben、length()—10);tf、setText(wenben);}if(event、getSource()==jButtonDENG){ //"="算法wenben=wenben、substring(0,wenben、length()-1);double b[]=new double[10];String a[]=newString[15];StringTokenizer sun=new StringTokenizer(wenben,toknizer); int i=0;while(sun、hasMoreTokens()){a[i++]=sun、nextToken();}for(int j=0;j<10;j++){String s=a[j];String k=a[j+1];if(s==null){break;}else{if(toknizer=="*”){//"*"算法if(j==0){wen=1;}b[j]=Double、parseDouble(s);wen=wen*b[j];ben=Double、toString(wen);tf、setText(wenben+"="+ben);}if(toknizer==”+”){ //"+" 算法if(j==0){wen=0;}b[j]=Double、parseDouble(s);wen=wen+b[j];ben=Double、toString(wen);tf、setText(wenben+"=”+ben);}if(toknizer==”-"){//"-"算法b[j]=Double、parseDouble(s);if(j==0){wen=2*b[j];}wen=wen-b[j];ben=Double、toString(wen);tf、setText(wenben+"="+ben);}if(toknizer==”/”){ // ”/”算法b[j]=Double、parseDouble(s);if(j==0){wen=b[j]*b[j];}wen=wen/b[j];ben=Double、toString(wen);tf、setText(wenben+”="+ben);}if(toknizer==”平方"){ //平方算法if(j==0){wen=1;}b[j]=Double、parseDouble(s);wen=wen*b[j]*b[j];ben=Double、toString(wen);tf、setText(wenben+"="+ben);}if(toknizer==”倒数"){ //倒数算法b[j]=Double、parseDouble(s);wen=1/b[j];ben=Double、toString(wen);tf、setText(wenben+"=”+ben);}if(toknizer=="开平方"){ //开平方算法if(j==0){wen=0;}b[j]=Double、parseDouble(s);double wen1=sqrt(b[j]);ben=Double、toString(wen1);tf、setText(wenben+"="+ben);}JTextponent textAnswer = null;if (toknizer=="十进制") { //二进制转为十进制代码ﻩ//b[j]=Integer、parseInt(s);wen =Integer、parseInt(s,2);ben=Double、toString(wen);tf、setText(wenben+”=”+ben);}if (toknizer=="二进制”) { //十进制转换为二进制代码ﻩ int den =Integer、parseInt(s);String daen = Integer、toBinaryString(den); tf、setText(wenben+”="+daen);}if(toknizer=="%”){ //"%"算法if(j==0){b[j]=Double、parseDouble(s);b[j+1]=Double、parseDouble(k);if(b[j]〈b[j+1]){wen=b[j];} if(b[j]==b[j+1]) {wen=0;}if(b[j]>b[j+1]) {wen=b[j]%b[j+1];}} if(j〉1){b[j]=Double、parseDouble(a[j]);wen=wen%b[j];}ben=Double、toString(wen);tf、setText(wenben+"="+ben);}}}}}catch(Exception e){e、getMessage();}}private int sqrt(double d) {//TODOAuto-generated method stubreturn 0;}//主函数public static void main(String[]args) {newCalculator();//对小程序进行初始化}}。

相关文档
最新文档