Java计算器课程设计---计算器模拟程序
- 格式:docx
- 大小:61.91 KB
- 文档页数:18
计算器java课程设计一简单计算器学号: 姓名: 班级: 101210109好茨4巒戊《JAVA程序设计》课程设计报告简单计算器卫口Tfp10级计科一班吕海莲___________2012-12-25一、设计内容和要求1、简单计算器模拟程序的基本要求模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算。
2、需要实现的主要功能该计算器模拟程序使用Java的awt包和Swing包的类库设计图形界面的计算器显示用户界面并且使用图形界面中的事件event委托机制来处理事件响应,以及用Java语言设计实现整数的加、减、乘、除四则运算。
(附加功能:淸零和异常处理机制)二、系统分析与概要设计1、面板JPanel txtpanel:用于放置文本框Panel btnpanel:用于放置按钮(0・9 和+,-,*/,=)2、显示部分(1)第一个面板:txtpanel位置以及排列方式BorderLayout.NORTHtxtpanel.add(txtinput):添加文本框到txtpanel 面板中(2)第二个面板:btnpanel排列方式:setLayout(gl)3、基本按钮btnpanel.add(b5);btnpanel.add(bl); btnpanel.add( multiply) btnpanel.add(b4) btnpanel.add(b6) btnpanel.add(divide)btnpaneLadd(bO) .add(bdes) btnpaneLadd(equal); btnpaneLadd(subtract)以上是在第二个面板btnpanelH中添加的0到9和+,-,*/,=的按钮。
4、附加功能(1)“清零”:用于清空文本框和下一次的运算(2)“异常处理”除数为零:当除数为零时,弹出“除数不能为零”窗体错误输入:当只单击运算符时,弹出“错误输入”窗体三、详细设计和编码1、总体功能图1、类的定义及关系Jsq类继承JFrame类创建主界面,在主界面上由文本框JTextField和JButton 组件构成,JTextField和JButton组件分别放置在两个不同的面板JPanel 上,同时利用按钮注册监听器,获取事件源。
一、设计内容和要求1、简单计算器模拟程序;2、功能要求:模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算界面提示:用图形界面实现,可参考下图。
二、系统分析与概要设计设计的计算器可以完成加法、减法、乘法、除法的简单运算。
实现一些简单的扩展运算,如:正负号、退格、清零等功能。
使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。
根据所设计出来的界面,首先要设计其GUI界面,总体界面有一个文本框,16个按钮,总体界面用BorderLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按钮放置到一个面板Panel中,完成界面设计三、详细设计和编码1、总体功能图2、类的定义及关系(1)类A的设计(数据的输入)class A implements ActionListener{public void actionPerformed(ActionEvent e){String a = Jtext.getText();String s = e.getActionCommand();if(a.equals("0.")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/")) Jtext.setText(s);else{if(flag2){ Jtext.setText(s);flag2=false;}elseJtext.setText(a+s);}}}(2)类Opertion的设计:(运算符的控制)class Opertion implements ActionListener{public void actionPerformed(ActionEvent e){cal=e.getActionCommand();if(flag1==true)x=Jtext.getText();Jtext.setText(cal);flag1=false;}}3、运行效果图4、源代码主要代码:public class jsq extends WindowAdapter{private JTextField Jtext = new JTextField("0.");private JFrame f = new JFrame("简单计算器");private String x = "";private String y = "";private String cal = "";private boolean flag1 = true;private boolean flag2 = false;public void init(){ String[] buttonValue = new String[] { "1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "0", ".", "/", "=" };Container contain = f.getContentPane();JPanel Jpan = new JPanel();JButton[] Jb = new JButton[16];contain.setLayout(new BorderLayout());Jpan.setLayout(new GridLayout(4, 4));Jtext.setHorizontalAlignment(JTextField.RIGHT);contain.add(Jtext, "North");contain.add(Jpan);A num = new A();Result re = new Result();Opertion op = new Opertion();for (int i = 0; i < Jb.length; i++){Jb[i] = new JButton(buttonValue[i]);Jpan.add(Jb[i]);if (i == 3 || i == 7 || i == 11 || i == 14)Jb[i].addActionListener(op);if (i == 0 || i == 1 || i == 2 || i == 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 10 || i == 12 || i == 14)Jb[i].addActionListener(num);Jb[i].setForeground(new Color(0, 0, 255));}四、测试结果验证:65-5=60五、小结该计算器基本运算没有问题,能完成一个计算器的基本功能,但仍有许多地方需要改进,如小数点还未实现功能。
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课程设计报告-计算器第一部分设计的内容要求1.1 Windows自带计算器版面设计1.2计算器计算功能算法实现第二部分设计思想2.1根据图形用户界面设计方法设计计算器版面。
①容器类(窗口--Window类,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。
②事件处理机制:监听器类WinClose(),actionPerformed()。
2.2计算器计算功能实现,即按钮监听器的实现自定义变量:x,y为操作数,op为操作符。
根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。
第三部分详细设计3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:第四部分运行效果图4.1运行初始图:4.2 计算功能测试图:-1+23.4 将textp中数据赋给yN Y单击”1”~”9”将单击数字插入到textp中数据后,并将textp中数据赋给y 将textp赋0,并str.stelength(0);结束4.2 数学分组功能测试图:第五部分心得与体会5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。
5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。
5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。
第六部分附录6.1计算器计算功能算法(按钮"="):if(e.getSource()==b26) // "="{str.setLength(0);switch(op){case 0 :if(flag==1)textp.setText(String.valueOf(x+y));else{str.setLength(0);str.append(x+y);fun();}break;case 1 :if(flag==1)textp.setText(String.valueOf(x-y)); else{str.setLength(0);str.append(x-y);fun();}break;case 2 :if(flag==1)textp.setText(String.valueOf(x*y)); else{str.setLength(0);str.append(x*y);fun();}break;case 3 :if(y==0){textp.setText("除数不能为零");str.setLength(0);y=0;}else{if(flag==1)textp.setText(String.valueOf(x/y)); else{str.setLength(0);str.append(x/y);fun();}}break;}}6.2 fun()函数(数学分组功能)public void fun(){flag=0;int t=0;StringBuffer temp;String sstr=str.toString();if(sstr.trim().indexOf("-")==1){temp=new StringBuffer(str.substring(1));t=1;}elsetemp=new StringBuffer(str.substring(0));if(sstr.trim().indexOf(".")==-1){int j=temp.length();for(int i=j;i>3;){temp.insert(i-3,",");i=i-3;}if(t==0)textp.setText(temp.toString());elsetextp.setText('-'+temp.toString());}else{int i=sstr.indexOf('.');StringBuffer s1=new StringBuffer(sstr.substring(0,i));StringBuffer s2=new StringBuffer(sstr.substring(i+1));for(int j=s1.length();j>3;){s1.insert(j-3,",");j=j-3;}if(t==0)textp.setText(s1.toString()+'.'+s2.toString());elsetextp.setText('-'+s1.toString()+'.'+s2.toString());}}。
java程序计算器课程设计一、课程目标知识目标:1. 让学生掌握Java基本语法和程序结构,特别是运算符、控制流程等与计算器相关的知识;2. 帮助学生理解计算器程序的功能需求,设计合理的类和方法;3. 引导学生运用所学知识实现一个具备加、减、乘、除基本运算功能的计算器程序。
技能目标:1. 培养学生运用Java语言编写、调试程序的能力;2. 提高学生分析问题、解决问题的能力,能够根据实际需求设计合适的程序结构;3. 培养学生团队协作能力,通过小组讨论和分工,共同完成计算器程序的设计与实现。
情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动探究、积极实践的精神;2. 引导学生认识到编程在解决问题中的实际应用,增强其学习责任感;3. 培养学生良好的编程习惯,注重代码规范和可读性,提高其职业素养。
本课程针对高年级学生,考虑到他们已具备一定的编程基础,课程性质为实践性、综合性。
在教学过程中,注重引导学生主动参与、动手实践,将目标分解为具体的学习成果,以便在教学设计和评估中明确方向。
通过本课程的学习,期望学生能够独立完成一个简单的计算器程序,并在实践中提高自身编程能力和团队协作能力。
二、教学内容1. Java基本语法:变量声明与赋值、数据类型、运算符、表达式;2. 控制流程:分支结构(if-else、switch)、循环结构(for、while、do-while);3. 方法定义与调用:无参方法、有参方法、返回值方法;4. 类与对象:类的定义、对象的创建与使用、构造方法;5. 计算器功能需求分析:加、减、乘、除运算,界面设计(可选);6. 编程实现:编写计算器类,实现加、减、乘、除方法,搭建主程序框架;7. 测试与调试:单元测试,集成测试,异常处理;8. 代码优化与重构:提高代码可读性,遵循编程规范,增强程序健壮性。
教学内容依据课程目标,结合教材相关章节进行组织。
具体安排如下:第一课时:Java基本语法与运算符复习;第二课时:控制流程和方法定义;第三课时:类与对象基础;第四课时:计算器功能需求分析与设计;第五课时:编写计算器类,实现基本运算方法;第六课时:搭建主程序框架,进行单元测试;第七课时:集成测试,优化代码,进行调试;第八课时:总结与反馈。
王子涛 | 计科1305|0902130510 | 2015年10月20日中南大学JAVA 课程设计实验报告一、课设内容模拟计算器:设计实现一个模拟计算器,能进行整数的加、减、乘、除等四则运算。
二、需求分析如题,要求能实现整数的加、减、乘、除等四则运算,我在这个基础上,添加了其他一些常用的功能,如实现百分号%、进行开根号运算、进行1/x运算、以及最小化到托盘。
三.总体设计要实现该计算器,主要有两个主要模块,第一个是界面模块用于设计计算器的图形界面,第二个是功能模块用于实现计算器的基本功能。
界面模块中除了设计图形界面,还需为各数字、功能按钮及显示框实现监听事物的能力。
功能模块中编写事件处理函数,用于实现计算器的功能。
因为我还实现了最小化到托盘的程序,所以我用了另一个类写最小化到托盘的程序。
四.详细设计4.1 JCALCULTOR类4.1.1成员变量:JButton[] buttons 用于实现各数字及功能模块的定义。
JButton reset用于实现“清零”功能。
JTextField display 定义显示框。
Int I 用于循环定义各按钮。
boolean isFirstDigit用于设置第一个数的输入。
double number 用于保存输入的数字。
String operator用于保存输入的按钮。
4.1.2成员函数:public JCalculator()构造函数。
publicvoid actionPerformed(ActionEvent e)事件处理函数。
Object target = e.getSource(); target为得到点击的是什么。
String label = e.getActionCommand();if (target == reset)处理各按钮的事件。
handleReset();elseif ("0123456789.".indexOf(label) > 0)handleNumber(label);elsehandleOperator(label);public void handleReset()处理点击reset按钮是索要发生的事。
模拟科学计算器一.概述1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除)以及三角函数的运算等等;(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。
实现要点:添加相关组件并进行按钮事件处理。
要求提交源程序。
2.课程设计的主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本,总体界面用布局管理器布局。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除以及三角函数等一系列的运算。
二.课程设计思路1.界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing 组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。
三.设计过程以及源代码程序流程图如下:UML图如下:附录源程序:import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;public class Calucator extends JFrame {private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;//单选框private JCheckBoxMenuItem seeItem3;//复选框private ButtonGroup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = "=";private double result = 0;private Num numActionListener;private DecimalFormat df;public Calucator(){super("科学计算器");//设置标题栏df = new DecimalFormat("#.####");//保留四位小数this.setLayout(new BorderLayout(10, 5));panel1 = new JPanel(new GridLayout(1, 3, 10, 10));panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列panel3 = new JPanel(new GridLayout(5, 1, 5, 5));panel4 = new JPanel(new BorderLayout(5, 5));/*** 菜单栏*/myBar = new JMenuBar();menu1 = new JMenu("编辑(E)");menu2 = new JMenu("查看(V)");menu3 = new JMenu("帮助(H)");menu1.setFont(new Font("宋体", Font.PLAIN, 12));menu2.setFont(new Font("宋体", Font.PLAIN, 12));menu3.setFont(new Font("宋体", Font.PLAIN, 12));/*** 编辑栏*/editItem1 = new JMenuItem("复制(C) Ctrl+C"); editItem2 = new JMenuItem("粘贴(P) Ctrl+V");editItem1.setFont(new Font("宋体",Font.PLAIN,12)); editItem2.setFont(new Font("宋体",Font.PLAIN,12));/*** 查看栏*/seeItem1 = new JRadioButtonMenuItem("科学型(T)"); seeItem2 = new JRadioButtonMenuItem("标准型(S)"); seeItem3 = new JCheckBoxMenuItem("数字分组(I)");seeItem1.setFont(new Font("宋体",Font.PLAIN,12)); seeItem2.setFont(new Font("宋体",Font.PLAIN,12)); seeItem3.setFont(new Font("宋体",Font.PLAIN,12));/*** 帮助栏*/help1 = new JMenuItem("帮助主题(H)");help2 = new JMenuItem("关于计算器(A)");help1.setFont(new Font("宋体",Font.PLAIN,12)); help2.setFont(new Font("宋体",Font.PLAIN,12));bgb = new ButtonGroup();//选项组menu1.add(editItem1);menu1.add(editItem2);menu2.add(seeItem1);menu2.add(seeItem2);menu2.addSeparator();//添加一条分割线menu2.add(seeItem3);menu3.add(help1);menu3.addSeparator();//添加一条分割线menu3.add(help2);myBar.add(menu1);myBar.add(menu2);myBar.add(menu3);this.setJMenuBar(myBar);numActionListener = new Num();//实现数字监听/*** 文本域,即为计算器的屏幕显示区域*/tf = new JTextField();tf.setEditable(false);//文本区域不可编辑tf.setBackground(Color.white);//文本区域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐tf.setText("0");tf.setBorder(BorderFactory.createLoweredBevelBorder());init();//对计算器进行初始化}/*** 初始化操作* 添加按钮*/private void init(){addButton(panel1, "Backspace", new Clear(), Color.red);addButton(panel1, "CE", new Clear(), Color.red);addButton(panel1, "C", new Clear(), Color.red);addButton(panel2, "1/x", new Signs(), Color.magenta);addButton(panel2, "log", new Signs(), Color.magenta);addButton(panel2, "7", numActionListener, Color.blue);addButton(panel2, "8", numActionListener, Color.blue);addButton(panel2, "9", numActionListener, Color.blue);addButton(panel2, "÷", new Signs(), Color.red);addButton(panel2, "n!", new Signs(), Color.magenta);addButton(panel2, "sqrt", new Signs(), Color.magenta);addButton(panel2, "4", numActionListener, Color.blue);addButton(panel2, "5", numActionListener, Color.blue);addButton(panel2, "6", numActionListener, Color.blue);addButton(panel2, "×", new Signs(), Color.red);addButton(panel2, "sin", new Signs(), Color.magenta);addButton(panel2, "x^2", new Signs(), Color.magenta);addButton(panel2, "1", numActionListener, Color.blue);addButton(panel2, "2", numActionListener, Color.blue);addButton(panel2, "3", numActionListener, Color.blue);addButton(panel2, "-", new Signs(), Color.red);addButton(panel2, "cos", new Signs(), Color.magenta);addButton(panel2, "x^3", new Signs(), Color.magenta);addButton(panel2, "0", numActionListener, Color.blue);addButton(panel2, "-/+", new Clear(), Color.blue);addButton(panel2, ".", new Dot(), Color.blue);addButton(panel2, "+", new Signs(), Color.red);addButton(panel2, "tan", new Signs(), Color.magenta);addButton(panel2, "%", new Signs(), Color.magenta);addButton(panel2, "π", numActionListener, Color.orange);addButton(panel2, "e", numActionListener, Color.orange);addButton(panel2, "′″", new Signs(), Color.orange);addButton(panel2, "=", new Signs(), Color.red);JButton btns = new JButton("计算器");btns.setBorder(BorderFactory.createLoweredBevelBorder());btns.setEnabled(false);//按钮不可操作btns.setPreferredSize(new Dimension(20, 20));panel3.add(btns);//加入按钮addButton(panel3, "MC", null, Color.red);//用于清除存储区中的数值addButton(panel3, "MR", null, Color.red);//可将存储区中的数调出到显示栏中addButton(panel3, "MS", null, Color.red);//存储当前的显示值 addButton(panel3, "M+", null, Color.red);//将当前显示的数与存储区中的数相加panel4.add(panel1, BorderLayout.NORTH);panel4.add(panel2, BorderLayout.CENTER);this.add(tf, BorderLayout.NORTH);this.add(panel3, BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false);//窗口不可改变大小this.setLocation(300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 统一设置按钮的的使用方式* @param panel* @param name* @param action* @param color*/private void addButton(JPanel panel, String name, ActionListener action, Color color){JButton bt = new JButton(name);panel.add(bt);//在面板上增加按钮bt.setForeground(color);//设置前景(字体)颜色bt.addActionListener(action);//增加监听事件}/*** 计算器的基础操作(+ - ×÷)* @param x*/private void getResult (double x){if(oper == "+"){result += x;}else if(oper == "-"){result -= x;}else if(oper == "×"){result *= x;}else if(oper == "÷"){result /= x;}else if(oper == "="){result = x;}tf.setText(df.format(result));}/*** 运算符号的事件监听*/class Signs implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();/* sqrt求平方根 */if(str.equals("sqrt")){double i = Double.parseDouble(tf.getText());if(i>=0){/** String.valueOf() 转换为字符串* df.format() 按要求保留四位小数* Math.sqrt() 求算数平方根*/tf.setText(String.valueOf(df.format(Math.sqrt(i))));}else{tf.setText("负数不能开平方根");}}/* log求常用对数 */else if(str.equals("log")){double i = Double.parseDouble(tf.getText());if(i>0){tf.setText(String.valueOf(df.format(Math.log(i))));}else{tf.setText("负数不能求对数");}}/* %求百分比 */else if(str.equals("%")){tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));}/* 1/x求倒数 */else if(str.equals("1/x")){if(Double.parseDouble(tf.getText()) == 0){tf.setText("除数不能为零");}else{tf.setText(df.format(1 / Double.parseDouble(tf.getText())));}}/* sin求正弦函数 */else if(str.equals("sin")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.sin(i))));}/* cos求余弦函数 */double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.cos(i)))); }/* tan求正切函数 */else if(str.equals("tan")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.tan(i)))); }/* n!求阶乘 */else if(str.equals("n!")){double i = Double.parseDouble(tf.getText());if((i%2==0)||(i%2==1))//判断为整数放进行阶乘操作{int j = (int)i;//强制类型转换int result=1;for(int k=1;k<=j;k++)result *= k;tf.setText(String.valueOf(result));}else{tf.setText("无法进行阶乘");}}/* x^2求平方 */else if(str.equals("x^2")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i)));}/* x^3求立方 */else if(str.equals("x^3")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i*i)));}/* ′″角度转换 *//*** 将角度值转换成弧度值,方便三角函数的计算*/double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(i/180*Math.PI));}else{if(flag){IfResult = false;}if(IfResult){oper = str;}else{getResult(Double.parseDouble(tf.getText()));oper = str;IfResult = true;}}}}/*** 清除按钮的事件监听*/class Clear implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();if(str == "C"){tf.setText("0");IfResult = true;result = 0;}else if(str == "-/+"){double i = 0 - Double.parseDouble(tf.getText().trim());tf.setText(df.format(i));}else if(str == "Backspace"){if(Double.parseDouble(tf.getText()) > 0){if(tf.getText().length() > 1){tf.setText(tf.getText().substring(0,tf.getText().length() - 1));//使用退格删除最后一位字符}else{tf.setText("0");IfResult = true;}}else{if(tf.getText().length() > 2){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));}else{tf.setText("0");IfResult = true;}}}else if(str == "CE"){tf.setText("0");IfResult = true;}}}/*** 数字输入的事件监听*/class Num implements ActionListener{public void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if(IfResult){tf.setText("");IfResult = false;}if(str=="π"){tf.setText(String.valueOf(Math.PI));}else if(str=="e"){tf.setText(String.valueOf(Math.E));}else{tf.setText(tf.getText().trim() + str);if(tf.getText().equals("0")){tf.setText("0");IfResult = true;flag = true;}}}}/*** 小数点的事件监听*/class Dot implements ActionListener{public void actionPerformed(ActionEvent e) { IfResult = false;if(tf.getText().trim().indexOf(".") == -1){tf.setText(tf.getText() + ".");}}}/*** main方法*/public static void main(String[] args) {new Calucator().setVisible(true);}}四.程序的调试与运行结果说明界面展示:实际运算结果展示:55+45当除数为0时,对应的输出:“除数不能为0”的提示:五.课程设计总结在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下一个数进行加、减、乘、除运算。
java课程设计编写计算器一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够使用Java编写一个简单的计算器程序。
具体来说,知识目标包括了解Java的基本数据类型、运算符、控制结构等;技能目标包括能够使用Java编写简单的程序,并进行调试和优化;情感态度价值观目标包括培养学生的编程兴趣,提高学生的解决问题的能力。
二、教学内容本节课的教学内容主要包括Java的基本语法和结构,以及计算器程序的设计和实现。
具体来说,将讲解Java的基本数据类型、运算符、控制结构等知识,并通过实例来说明如何使用这些知识来编写计算器程序。
此外,还将介绍如何进行程序的调试和优化,以提高程序的性能和可靠性。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法来进行教学。
首先,将采用讲授法来讲解Java的基本语法和结构,使学生能够了解和掌握这些知识。
其次,将采用案例分析法来分析计算器程序的设计和实现,使学生能够通过实际案例来加深对知识的理解和应用。
此外,还将采用实验法让学生亲自动手编写和调试计算器程序,以提高学生的实际操作能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将选择和准备一些教学资源。
教材方面,将使用《Java编程语言》作为主教材,辅以《Java编程实践》等参考书进行深入学习。
多媒体资料方面,将制作一些PPT和视频教程,以帮助学生更好地理解和掌握知识。
实验设备方面,将准备一些计算机和编程环境,以便学生进行实际操作和调试。
五、教学评估本节课的教学评估将采用多元化的方式来进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括平时表现、作业和考试等。
平时表现主要考察学生的出勤、课堂参与度和团队合作能力;作业主要包括课后练习和编程任务,以巩固和应用所学知识;考试则是对学生综合运用Java编程知识的考察,包括理论知识和编程实践。
通过这些评估方式,希望能够全面反映学生的学习成果,激发学生的学习兴趣和主动性。
课程设计课程设计目的设计一个基于Swing的计算器应用程序,完成普通的算术运算。
课程设计要求1.设计的计算器是基于Swing的,可以完成加减乘除和取余运算。
2.增加计算器的日期计算功能,能够计算两个日期之间相距的天数。
(要判断键入的日期格式是否正确,并能正确处理按钮动作事件,同时能够得到正确的计算结果)设计要点主要练习使用布局管理器设计一个计算器的界面,并使用事件监听器处理数据的输入,完成相关的计算。
在面板上可以增加一个算术/日期的转换按钮来选择是普通计算还是日期计算。
以及增加一个清零的按钮CE,用以将显示结果的单行文本域清空,同时将各个参数设置为默认值。
二、总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet 中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。
本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能。
本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域还可以将进制转换的面板与单行文本框放一块包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
四、程序的调试与运行结果说明程序功能实现:使用swing组件和awt图形用户界面以及BroadLayout布局管理器。
通过在按钮的单击事件处理方法中调用类的成员方法calculator()来进行简易计算器的各种运算,并正确实现运算功能。
JAVA课程设计说明书题目:模拟科学计算器姓名:学号:班级:网络工程11-2山东科技大学2019年11月7日目录1 课设任务及要求.............................. 错误!未定义书签。
1.1课设任务 (3)1.2设计要求 (3)2 需求分析 (2)2.1 设计背景 (2)2.2 需求获取 (3)2.3 程序功能图 (4)3 设计思路 (4)3.1 界面布局 (4)3.2 类的定义 (5)3.3变量的定义 (5)4 详细设计 (6)4.1整体概述 (6)4.2 误操作处理 (7)4.3流程图和结构图 (8)5 系统调试 (11)5.1 程序界面 (11)5.2 运行界面 (11)6 心得与体会 (15)7 参考文献 (16)8 附录 (16)1 课设任务及要求1.1课设任务:要求:界面模拟Windows中的计算器程序。
实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
实现要点:添加相关组件并进行按钮事件处理。
要求提交Application和Applet两个版本的程序。
1.2设计要求①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。
具体可参考windows附件下的计算器②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2019作为绘图工具。
③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。
提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。
2 需求分析2.1 设计背景本程序是老师提供的几个课程设计题目中比较中等的题目。
要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。
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计算器程序课程设计一、课程目标知识目标:1. 学生能理解Java基本语法,掌握计算器程序的基本结构;2. 学生能运用所学知识,编写具有加、减、乘、除基本功能的计算器程序;3. 学生了解并掌握异常处理机制,提高程序的健壮性。
技能目标:1. 学生能运用面向对象编程思想,设计计算器类和其方法;2. 学生能运用调试工具,对计算器程序进行测试和优化;3. 学生能运用Java文档规范,为计算器类编写合适的注释。
情感态度价值观目标:1. 学生通过编程实践,培养解决问题的能力和团队合作精神;2. 学生在编程过程中,体验程序设计的乐趣,激发对计算机科学的兴趣;3. 学生遵守编程规范,树立良好的编程习惯,培养认真负责的工作态度。
本课程针对高年级学生,结合学科特点和教学要求,将课程目标分解为具体的学习成果。
学生在学习过程中,将逐步掌握Java编程基础知识,培养编程技能,同时注重情感态度价值观的培养,使学生在知识、技能和情感方面得到全面发展。
二、教学内容1. Java基本语法:变量定义、数据类型、运算符、表达式;2. 面向对象编程:类与对象、方法定义、构造方法、访问修饰符;3. 异常处理:try-catch语句、异常类型、自定义异常;4. 计算器类设计:属性、方法、界面交互;5. 程序调试与优化:使用调试工具、代码优化、性能分析;6. Java文档编写:类注释、方法注释、参数注释、返回值注释;7. 编程规范与团队合作:命名规范、代码格式、版本控制、团队协作。
教学内容依据课程目标,结合教材章节进行组织。
教学大纲安排如下:第一课时:Java基本语法与数据类型;第二课时:运算符、表达式与面向对象编程基础;第三课时:类与对象、方法定义;第四课时:异常处理、计算器类设计;第五课时:程序调试与优化;第六课时:Java文档编写、编程规范与团队合作。
教学内容注重科学性和系统性,使学生能够在掌握基本知识的同时,学会运用所学解决问题,培养良好的编程习惯和团队协作能力。
面向对象程序设计课程设计报告题目:计算器模拟程序组成员信息任课教师:成绩:2010年12月30 日目录1.课程设计目的 (3)1.1 (3)1.2 (3)2.设计题目分析 (3)2.1 (3)2.2 (3)3.课程设计容 (3)3.1 (3)3.2 (4)4.设计心得与总结 (7)5、附录 (8)6、小组成员分工说明 (16)1、课程设计目的(1)复习稳固java语言的根底知识,进一步加深对java语言的理解和掌控〔2〕课程设计为大家提供了一个既动手又动脑,独立实践的时机,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
〔3〕培养我们在工程开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析2.1 题目简介利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、对数、平方、三角正/余弦、求倒数、进制转换的简单功能。
2.2 设计要求及需求分析设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI 来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比拟低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计容3.1 总体设计:系统总体设计框架Panel :5*6的数字及运算键Panel2:进制转换的单项选择按钮及倒退清空键Panel0:输入及运行结果系统功能模块图:Container//定义容器 方法参数说明:布尔型的border frame.setVisible ,设置窗口的可见性frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);设置关闭窗口的默认执行动作〔布尔型数据〕frame.setIconImage ;设置窗口最小化图标frame.setSize(int,int);设置窗口尺寸方法调用:主函数中的new Calculator()调用了前面的public Calculator()流程图:3.3 调试与测试:包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;〔列出主要问题的出错现象、出错原因、解决方法及效果等〕。
软件学院课程设计报告书课程名称 Java 6程序设计设计题目模拟科学计算器专业班级学号姓名指导教师2013 年6 月目录1设计时间 .......................................................................... 错误!未定义书签。
2设计目的 .......................................................................... 错误!未定义书签。
3设计任务 .......................................................................... 错误!未定义书签。
4设计内容 .......................................................................... 错误!未定义书签。
4.1需求分析 ...................................................................... 错误!未定义书签。
4.1.1问题描述................................................................... 错误!未定义书签。
4.1.2基本要求................................................................... 错误!未定义书签。
4.2总体设计 ...................................................................... 错误!未定义书签。
4.2.1 包的描述.................................................................. 错误!未定义书签。
*******************实践教学*******************兰州理工大学2010年春季学期JAVA语言课程设计题目:计数器模拟程序专业班级:姓名:学号:指导教师:成绩:_______________目录摘要 .................................................................................... 错误!未定义书签。
前言 .................................................................................... 错误!未定义书签。
正文 .................................................................................... 错误!未定义书签。
1.问题描述 .................................................................... 错误!未定义书签。
2.逻辑设计 .................................................................... 错误!未定义书签。
3.详细设计 .................................................................... 错误!未定义书签。
4.程序调试与测试 ........................................................ 错误!未定义书签。
5.结果分析 .................................................................... 错误!未定义书签。
Java计算器课程设计——计算器模拟程序公开计算机科学系课程设计报告课程名称:Java 2程序设计基础课题名称:《计算器模拟程序》指导教师:李XXX姓名:xxxx学号:xxxxx班级:08级应用(2)班目录一、课程设计封面 ........................................................................ .... 1 二、目录 ........................................................................ .............. 3三、设计任务书 ........................................................................ ........ 3四、设计课题及本人任务 (4)五、程序功能简介: ...................................................................... ...4六、主体内容: ...................................................................... .. (4)1(设计分析......................................................................... . (4)2(程序结构(画流程图) (5)3(各模块的功能及程序说明 (6)4.源程序......................................................................... .. (6)5(操作方法(流程) (10)6(试验结果(包括输入数据和输出结果) (10)7(设计体 (11)(1)对实验原理有更深的理解 ........................................12(2)................... 对该理论在实践中的应用有深刻的理解12(3)激发了学习的积极性 (12)(4)............... 理解了该知识点以及学科之间的融合渗透12(5)程序所要求的功能 (13)(6)程序设计过程中的不足............................................. 13七、总结........................................................................ . (13)一、课程设计封面二、目录三、设计任务书主要内容、基本要求、主要参考资料等:主要内容:了解兀耳语言的使用,Java语言的开发环境,熟练掌握JDK的环境变量的设置,JDK_API_l_6_zh_CN的使用和查找,使用JDK来查找和使用各项接口、类、对象,继承类等的功能。
和使用方法;使用继承、类、抽象等方法实现该程序。
使用import java. awt. *;创建用户界面和绘制图形图像的所有类;import java. awt. event.*;提供处理由AWT组件所激发的各类事件的接口和类等方法。
最后使该程序显示GUI用户界面,能实现整数的加、减、乘、除四则运算。
基本要求:1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、系统设计要实用,编程简练,可用,功能全面3、说明书、流程图要清楚4、记录设计情况5>要求采用模块化程序设讣方法,及锯齿型书写格式,要求上机调试通过和按设讣报告格式6、设计上交内容:设计报告一份(按格式书写);源程序文件(刻录)主要参考资料:Cava 2程序设计基础实用教程》.北京:叶核亚等,电子工业出版社,2003.Cava 2程序设计》.北京:蔡翠平等,北方交通大学出版社,2003.Cava 2面向对象程序设计教程》.北京:印雯等高等教育出版社,1999.《精彩Java程序设计》.北京:吴逸贤等科学出版社,2003.《Java 2程序设计教程》.北京:肖雯等中国电力出版社,2003.Cava 2面向对象程序设计》.北京:洪维恩等中国铁道出版社,2005.完成期限:笫十八周指导教师:李老师责任人:唐益龙日期:2010年12月15日四、设计课题及本人任务设计课题:Java 2程序设计基础计算器模拟程序本人任务:认真完成各项任务,完成所有项LI的制作开发,从设计构想到流程图的完成,完成各项功能的实现。
完成课程设计的源代码设计,编译、调试、成功运行等事项。
整个系统结束后对程序进行总结,编写小结。
撰写实验报告。
五、程序功能简介:程序功能简介:随着人们物质生活水平的日益提高,人民对高质量的计算提出了更高的要求,当今,是云计算的生活和物联网发展和使用阶段,计算性能的高低和计算的效率直接影响到人们生活与各大高校人才的培养质量。
基于此,采用面向对象的程序设计方法,UML为建模语言,JAVA为前台开发工具,ORACLE为后台数据库,开发了一个为人们生活带来便利的汁算器,主要完成对数据的高效计算。
有助于实现计算的信息化、规范化和科学化,使需要计算的人员能够及时、准确地计算所要计算的结果。
该系统的主要功能是实现正负数加、减、乘、除法的四则运算。
各程序模块均不同程度低显示了其主要功能。
六、主体内容:1 (设计分析计算器是一种很常用的计算工具,它在计算方面、日常生活中给我们提供很大的方便,在编辑此程序时,除了包括常用的加法运算算法、减法运算算法、乘法运算算法、除法运算算法等四大模块之外。
还特意添加了正负数的四则混合运算,给本系统增加了一个亮点。
其次本程序对其它算法也有很高的要求,对编程过程中所用到的接口、抽象、对象、类等方法和过程提出较高的要求,同时对编程过程中所编写的实验代码也不同程度的提出了很高的要求,所以在编程的过程中难免遇到了一些困难,所以在完成本次系统的过程中过程中充满了挑战与机遇。
2(程序结构(画流程图)计算器模拟程序流程图开始引用java, awt软件包引用javdx. swing软件包计算器类继承Frame类创建计算器类数组的对象定义计算器字符串数组String[] arr输入数字判断输入的是否位数字是否否重新输入调整数字JTextField. RIGHT居右否检验是否有输入运算符运算符输入下一个需要运算的数字for (int i = 0; i < arr. length; i++) for(int i=0;i<index2.length;i++) 异常变量数组int □ index {}设置讣算器的窗口尺寸大小switch (c)循环语句输出运算结果结束3(各模块的功能及程序说明用于创建用户界面和绘制图形图像的所有类的模块。
使用和定义importjava. awt. 来调用创建用户界面和绘制图像的函数。
import java. awt. event. *; 该语句提供处理由AWT组件所激发的各类事件的接口和类。
(class Calculator extends Frame //Calculator 类继承Frame 类)设置窗口类的模块,包括窗口的长、宽尺寸、打开、关闭等功能。
class CalculatorPanel extends Panel函数模块//CalculatorPanel类继承Panel类,实现汁算器的加、减、乘、除等的运算功能,implements函数程序模块的引用和使用。
程序启动判断模块,start,启动监视器。
最后一个模块,以public void calculator (double x) 等语句完成的函数模块的返回运算结果。
4.源程序//CalculatorFrame. java//软件包java.awt包含用于创建用户界面和绘制图形图像的所有类。
import java・ awt・ BorderLayout:import java・ awt・ GridLayout;import java・ awt・ event・ ActionEvent;〃对自身进行指派的事件的接口。
import java・ awt・ event・ ActionListener; //监听器import javax・ swing・ JButton;import javax・ swing・ JFrame:import javax・ swing・ JPanel;import javax・ swing・ JTextField;import javax.swing.UIMandger;//类javax.中的静态变量一个Swing组件,//import sun. uti1. calendar・ JulianCalendar;public class CalculatorFrame extends JFrame //Calculator Frame 类{〃创建相关的对象并定义私有变量private JTextField text = new JTextFieldO;private JButton btnEq = new JButton("=");private JButton[] btns = new JButton[16];private JPanel btnsPanel = new JPanel():private GridLayout glayout = new GridLayout(4, 4, 2, 2);private String input二"0";private double saveFirstlnput = 0;private boolean lockpoint = false;private int firstNum = 0;private char c;public CalculatorFrame(){init ();}〃定义+、-、*、,的字符串数组private void init() {StringE] arr 二[:VbtnsPane1. setLayout(glayout);text・ setHorizontalAlignment(JTextField・ RIGHT); //调整文字使文字居右for (int i = 0; i < arr・ length; i++){JButton btn = new JButton(arr[i]):btnsLil = btn;btnsPane1. add(btn);}int[] index= {0, 1, 2, 4, 5, 6, 8, 9, 10, 12};//异常变量数组for (int i=0;i<index・1ength;i++){btnsFindexEi[]・ addActionListener(new NumbtnListener());}btnsLl4]・ addActionListener(new PointbtnListener());btnsL13]・ addActionListener(new changeSybtnListener());int 匚index2={3, 7, 11, 15};for (int i=0;i<index2・1ength;i++){btns[index2[i[]・ addActionListener(new calcbtnListener ());}btnEq. addActionListener(new btnEqListener());this・ getContentPane()・ add(btnsPanel);this・ getContentPane()・ add(text, BorderLayout・ NORTH);this・ getContentPane()・ add(btnEq, BorderLayout・ SOUTH);this・ setLocation(300, 250);this. setSize(240, 250);this・ setDefaultCloseOperation(JFrame・ EXIT_ON_CLOSE);“);this. setTitle(,z计算器this・ setVisible(true);}//调整计算器的窗口和输入输出界面窗口。