java课程设计王慧.docx_第1页
java课程设计王慧.docx_第2页
java课程设计王慧.docx_第3页
java课程设计王慧.docx_第4页
java课程设计王慧.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计课程设计题 目: 保存计算过程的计算器学 院: 数学与信息管理系 专 业: 信息管理与信息系统 姓 名: 王 慧 学 号: 2 0 1 3 3 0 0 6 0 2 2 1 班 级: 1330602 指导教师: 司 红 伟 日 期: 2015年5月 一、 需求分析当下计算机技术发展迅捷,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,然而Windows自带的计算器所提供的功能已经无法满足人民日益增长的需求,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程,能够提供给用户更加好的体验感受。保存计算过程的计算器正是在、样的需求之下应运而生的,目的旨在帮助用户快速准确的得到计算结果。本次实验课题使用了JAVA语言,开发平台选用Eclipse这个开源的编译软件。二、 设计目的1、掌握JAVA语言编程的基础知识并能熟练运用。2、熟悉类声明与对象的使用。3、理解委托时间处理模型。4、了解JAVA语言的图形用户界面JAVA SWING的设计知识。5、运用Eclipse编写简单计算器程序,并实现其功能。6、掌握Windows环境下JDK的安装与配置。三、 系统总体设计四、 详细设计(1) CalculatorWindow类代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.io.*;public class CalculatorWindow extends JFrame implements ActionListenerNumberButton numberButton;OperationButton operationButton;JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin;JTextField resultShow;JTextField showComputerProcess;JTextArea saveComputerProcess;JButton saveButton,copyButton,clearButton;LinkedListlist;HandleDigit handledDigit;HandleOperation handleOperation;HandleBack handleBack;HandleClear handleClear;HandleEquality handEquality;HandleDot handleDot;HandlePOrN handlePOrN;HandleSin handleSin;public CalculatorWindow()setTitle(计算器);JPanel panelLeft,panelRight;list=new LinkedList();resultShow=new JTextField(10);resultShow.setHorizontalAlignment(JTextField.RIGHT);resultShow.setForeground(Color.pink);resultShow.setFont(new Font(TimeRoman,Font.BOLD,20);resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);resultShow.setBackground(Color.white);showComputerProcess=new JTextField();showComputerProcess.setHorizontalAlignment(JTextField.CENTER);showComputerProcess.setFont(new Font(黑体,Font.BOLD,20);showComputerProcess.setBackground(Color.cyan);showComputerProcess.setEditable(false);saveComputerProcess=new JTextArea();saveComputerProcess.setEditable(false);saveComputerProcess.setFont(new Font(宋体,Font.PLAIN,20);numberButton= new NumberButton10;handleDigit = new HandleDigit(list,resultShow,showComputerProcess);for(int i=0;i=9;i+)numberButtoni=new NumberButton(i);numberButtoni.setFont(new Font(黑体,Font.BOLD,30);numberButtoni.addActionListener(handleDigit);operationButton=new OperationButton4;handleOperation=new HandleOperation(list,resultShow,showComputerProcess,saveComputerProcess);String 运算符号=+,-,*,/;for(int i=0;i=4;i+)operationButtoni=new OperationButton(运算符号i);operationButtoni.setFont(new Font(黑体,Font.BOLD,30);operationButtoni.addActionListener(handleOperation);小数点操作=new JButton(.);handleDot=new HandleDot(list,resultShow,showComputerProcess);小数点操作.addActionListener(handleDot);正负号操作=new JButton(+/-);handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess);正负号操作.addActionListener(handlePOrN);等号操作=new JButton(=);handleEquality=new HandleEquality(list,resultShow,showComputerProcess,saveComputerProcess);等号操作.addActionListener(handleEquality);sin=new JButton(sin);handleSin=new HandleSin(list,resultShow,showComputerProcess,saveComputerProcess);sin.addActionLisener(handleSin);退格操作=new JButton(退格);handleBack=new HandleBack(list,resultShow,showComputerProcess);退格操作.addActionListener(handleBack);清零操作=new JButton(C);handleClear(list,resultShow,showComputerProcess);清零操作.addActionListener(handleClear);清零操作.setForeground(Color.red);退格操作.setForeground(Color.red);等号操作.setForeground(Color.pink);sin.setForeground(Color.pink);正负号操作.setForeground(Color.pink);小数点操作.setForeground(Color.pink);panelLeft=new Jpanel();panelRight=new Jpanel();panelLeft.setLayout(new BorderLayout();Jpanel centerInLeft=new Jpanel();panelLeft.add(resultShow,BorderLayout.NORTH);panelLeft.add(centerInLeft,BorderLayout.CENTER);centerInLeft.setLayout(new GridLayout(4,5);centerInLeft.add(numberButton1);centerInLeft.add(numberButton2);centerInLeft.add(numberButton2);centerInLeft.add(operationButton0);cebterInteft.add(清零操作);centerInLeft.add(numberButton4);centerInLeft.add(numberButton5);centerInLeft.add(numberButton6);centerInLeft.add(operationButton1);cebterInteft.add(退格操作);centerInLeft.add(numberButton7);centerInLeft.add(numberButton8);centerInLeft.add(numberButton9);centerInLeft.add(operationButton2);cebterInteft.add(sin);centerInLeft.add(numberButton0);cebterInteft.add(正负号操作);cebterInteft.add(小数点操作);cebterInteft.add(operationButton3);cebterInteft.add(等号操作);panelRight.setLayout(new BorderLayout();panelRight.add(showComputerProcess,BorderLayout.NORTH);saveButton=new JButton(保存);copyButton=new JButton(复制);clearButton=new JButton(清除);saveButton.setToolTipText(保存计算过程到文件);copyButton.setToolTipText(复制选中的计算过程);clearButton.setToolTipText(清除计算过程);saveButton.addActionListener(this);copyButton.addActionListener(this);clearButton.addActionListener(this);panelRight.add(new JScrollPane(saveComputerProcess),BorderLayout.CENTER);JPanel southInPanelRight=new JPanel();southInPanelRight.add(saveButton);southInPanelRight.add(copyButton);southInPanelRight.add(clearButton);panelRight.add(southInPanelRight,BorderLayout.SOUTH);JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelLeft,panelRight);add(split,BorderLayout.CENTER);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);setBounds(100,50,528,258);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=copyButton)saveComputerProcess.copy();if(e.getSource()=clearButton)saveComputerProcess.setText(null);if(e.getSource()=saveButton)JFileChooser chooser=new JFileChooser();int state=chooser.showSaveDialog(null);File file=chooser.getSelectedFile();if(file!=null&state=JFileChooser.APPROVE_OPTION)try String content=saveComputerProcess.getText();StringReader read=new StringReader(content);BufferedReader in=new BufferedReader(read);FileWriter outOne=new FileWriter(file);BufferedWriter out=new BufferedWriter(outOne);String str=null;while(str=in.readLine()!=null)out.write(str);out.newLine();in.close();out.close();catch(IOException e1)public static void main(String args)new CalculatorWindow();(2) NumberButton类代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class NumberButton extends JButtonint number;public NumberButton(int number)super(+ number);this.number = number;setForeground(Color.pink);public int getNumber()return number;(3) OperationButton类代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class OperationButton extends JButtonString operateSign;public OperationButton(String s)super(s);operateSign = s;setForeground(Color.red);public String getOperateSign()return operateSign;(4) HandleDigit类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleDigit implements ActionListenerLinkedListlist;JTextField resultShow;JTextField showComputerProcess;HandleDigit(LinkedListlist,JTextField t1,JTextField t2)this.list = list;resultShow = t1;showComputerProcess = t2;public void actionPerformed(ActionEvent e)NumberButton b = (NumberButton)e.getSource();if(list.size()=0)int number = b.getNumber();list.add(+number);resultShow.setText(+number);showComputerProcess.setText(+list.get(0);else if(list.size()=1)int number = b.getNumber();String num = list.getFirst();String s =num.concat(+number);list.set(0,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0);else if(list.size()=2)int number = b.getNumber();list.add(+number);resultShow.setText(+number);showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);else if(list.size()=3)int number = b.getNumber();String num = list.getLast();String s =num.concat(+number);list.set(2,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);(5) HandleOperation类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleOperation implements ActionListener LinkedListlist; JTextField resultShow,showComputerProcess; JTextArea saveComputerProcess; HandleOperation(LinkedListlist,JTextField t1,JTextField t2,JTextArea t3) this.list=list; resultShow=t1; showComputerProcess=t2; saveComputerProcess=t3; public void actionPerformed(ActionEvent e) OperationButton b=(OperationButton)e.getSource(); if(list.size()=1) String fuhao=b.getOperateSign(); list.add(fuhao); showComputerProcess.setText(+list.get(0)+list.get(1); else if(list.size()=2) String fuhao=b.getOperateSign(); list.set(1,fuhao); showComputerProcess.setText(+list.get(0)+list.get(1); else if(list.size()=3) String numOne=list.getFirst(); String numTwo=list.getLast(); String 运算符号=list.get(1); String middleProcess=numOne+运算符号+numTwo; try double n1=Double.parseDouble(numOne); double n2=Double.parseDouble(numTwo); double result=0; if(运算符号.equals(+) result=n1+n2; else if(运算符号.equals(-) result=n1-n2; else if(运算符号.equals(*) result=n1*n2; else if(运算符号.equals(/) result=n1/n2; String fuhao=b.getOperateSign(); list.clear(); list.add(+result); list.add(fuhao); String pro=middleProcess+=+result+list.get(1); showComputerProcess.setText(pro); saveComputerProcess.append(+middleProcess+=+result+n); resultShow.setText(+result); catch(Exception ee) (6) HandleDot类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleDot implements ActionListenerLinkedListlist;JTextField resultShow,showComputerProcess; HandleDot (LinkedListlist,JTextField t1,JTextField t2)this.list=list;resultShow=t1;showComputerProcess=t2;public void actionPerformed(ActionEvent e) String dot=e.getActionCommand();if(list.size()=1)String num=list.getFirst();String s=null;if(num.indexOf(dot)=-1)s=num.concat(dot);list.set(0,s);else s=num;list.set(0,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0);else if(list.size()=3)String num=list.getLast();String s=null;if(num.indexOf(dot)=-1)s=num.concat(dot);list.set(2,s);else s=num; resultShow.setText(s); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);(7) HandlePOrN类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandlePOrN implements ActionListenerLinkedListlist;JTextField resultShow,showComputerProcess;HandlePOrN(LinkedListlist,JTextField t1,JTextField t2)this.list=list;resultShow=t1;showComputerProcess=t2;public void actionPerformed(ActionEvent e)if(list.size()=1)String number1=list.getFirst();try double d=Double.parseDouble(number1); d=-1*d; String str=String.valueOf(d); list.set(0,str); resultShow.setText(str); showComputerProcess.setText(+list.get(0);catch(Exception ee)else if(list.size()=3)String number2=list.getLast();try double d=Double.parseDouble(number2); d=-1*d; String str=String.valueOf(d); list.set(2,str); resultShow.setText(str); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);catch(Exception ee)(8) HandleEquality类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleEquality implements ActionListenerLinkedListlist;JTextField resultShow,showComputerProcess;JTextArea saveComputerProcess;HandleEquality(LinkedListlist,JTextField t1,JTextField t2,JTextArea t3)this.list=list;resultShow=t1;showComputerProcess=t2;saveComputerProcess=t3;public void actionPerformed(ActionEvent e)if(list.size()=1)String num=list.getFirst();resultShow.setText(+num);showComputerProcess.setText(list.get(0);if(list.size()=2)String num=list.getFirst();String 运算符号=list.get(1);try double n1=Double.parseDouble(num); double n2=Double.parseDouble(num); double result=0; if(运算符号.equals(+) result=n1+n2; else if(运算符号.equals(-) result=n1-n2; else if(运算符号.equals(*) result=n1*n2; else if(运算符号.equals(/) result=n1/n2; resultShow.setText(+result); String process=num+运算符号+num+=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); list.set(0,+result); catch(Exception ee)else if(list.size()=3)String numOne=list.getFirst();String 运算符号=list.get(1);String numTwo=list.getLast();try double n1=Double.parseDouble(numOne); double n2=Double.parseDouble(numTwo); double result=0; if(运算符号.equals(+) result=n1+n2; else if(运算符号.equals(-) result=n1-n2; else if(运算符号.equals(*) result=n1*n2; else if(运算符号.equals(/) result=n1/n2; resultShow.setText(+result); String process=numOne+运算符号+numTwo+=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); list.set(0,+result); list.removeLast(); list.removeLast();catch(Exception ee) (9) HandleSin类import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleSin implements ActionListener LinkedListlist;JTextField resultShow,showComputerProcess;JTextArea saveComputerProcess;HandleSin(LinkedListlist,JTextField t1,JTextField t2, JTextArea t3) this.list=list; resultShow = t1; showComputerProcess=t2; saveComputerProcess=t3; public void actionPerfomed(ActionEvent e)if(list.size()=1 | list.size()=2)String numOne=list.getFirst();try double x=Double.parseDouble(numOne); double result=Math.sin(x); String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String process=sin(+numOne+)=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); if(list.size()=2) list.removeLast(); catch(Exception ee)else if(list.size()=3)String numTwo=list.getLast();try double x=Double.parseDouble(numTwo); double result=Math.sin(x); String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String process=sin(+numTwo+)=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); list.removeLast(); list.removeLast(); catch(Exception ee) (10) HandleBack类import java.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论