java课程设计-计算器_第1页
java课程设计-计算器_第2页
java课程设计-计算器_第3页
java课程设计-计算器_第4页
java课程设计-计算器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计课程设计报告(2021--2021年度第1学期)计算器专业计算机科学与技术〔网络工程〕学生姓名赵宝文班级B计算机102学号1010704227指导教师徐森完成日期2021年1月8日目录目录 21概述 11.1课程设计目的 11.2课程设计内容 12系统需求分析 12.1系统目标 12.2主体功能 12.3开发环境 13系统概要设计 13.1系统的功能模块划分 13.2系统流程图 24系统详细设计 24.1ComputerPad(主类) 24.2NumberButton 24.3OperationButton 35测试 35.1测试方案 35.2测试结果 46小结 4参考文献 5附录 6附录Ⅰ源程序清单 6附录Ⅱ源程序清单 14附录Ⅲ源程序清单 14题目1概述1.1课程设计目的1.熟悉Java的运行环境及其使用;2.掌握Java图形界面的使用;3.加强Java程序的分析能力;4.加强使用Java知识解决实际问题的能力。1.2课程设计内容设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。2系统需求分析2.1系统目标要求所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等混合运算。2.2主体功能用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。2.3开发环境Eclipse集成开发环境3系统概要设计3.1系统的功能模块划分本计算机文件共有3个java源文件。类之间的主要关系如下列图所示ComputerPadComputerPad(主类)NumberButtonOperationButtonComputerPad.java该java源文件生成的类负责创立计算器的“主窗口〞。该类含有main方法,整个程序从该类开始执行。NumberButton.java该文件生成的类负责为主类创立数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字。OperationButton.java该文件生成的类负责为主类创立运算符号按钮对象。使用鼠标单击运算符号按钮可选择所要进行的运算。3.2系统流程图开始开始初始化变量按键选项。是否为0。当前是否有运算符。当前是否有运算符。退格当前编辑的数据。初始化所有变量。计算当前运算符,并显示。显示当前编辑的数据。计算当前运算符,并显示。根据当前运算符计算结果。当前编辑数据是否为0。当前编辑数据是否为0。当前编辑的数字后加0继续?当前数据后加一位。当前数据用键值代替数字键运算符键符号键去除键退格键是否是否是否是否是否是结束否4系统详细设计4.1ComputerPad(主类)①成员变量成员变量描述变量类型名称数字按钮数组NumberButton[]numberButton运算符号按钮数组OperationButton[]operationButton小数点按钮Button小数点按钮正负号按钮Button正负号按钮退格按钮Button退格按钮求倒数按钮Button求倒数按钮等号按钮Button等号按钮清零按钮Button清零按钮显示计算结果JTextFieldresultShow存储数据的链表LinkedList链表②方法名称功能备注ComputerPad创立窗口构造方法ActionPerformed处理ActionEvent事件接口方法Main程序运行入口③代码见附录Ⅰ。4.2NumberButton①成员变量成员变量描述变量类型名称按钮代表的数字Intnumber②方法名称功能备注NumberButton创立数字按钮构造方法getNumber获取按钮代表的数字③代码见附录Ⅱ。4.3OperationButton①成员变量成员变量描述变量类型名称按钮代表的数字StringOperator②方法名称功能备注OperationButton创立符号按钮构造方法getOperator获取按钮代表的符号③代码见附录Ⅲ。5测试5.1测试方案图5-1加法测试:1+2=?图5-1-1乘法测试:2*3=?图5-1-25.2测试结果加法测试结果:1+2=图5-2-1乘法测试结果:2*3=图5-2-26小结本文利用Java语言编写了一个计算器程序,其中涉及到很多的根底内容,如类、构造方法、继承、接口、GUI等。通过对这些内容的综合运用,加深了对Java的理解,为进一步学习打下根底。参考文献[1]耿祥义,张跃平.

Java2实用教程(第三版)[M].北京:清华大学出版社,2006

[2]耿祥义.

Java课程设计(第三版)[M].北京:清华大学出版社,2004[3]张跃平.Java2实用教程实验指导与习题解答〔第三版〕[M].北京:清华大学出版社,2004[4]JacquieBarker,Java面向对象编程指南,电子工业出版社,2001

附录附录Ⅰ源程序清单importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;er.*;importjava.util.LinkedList;publicclassComputerPadextendsFrameimplementsActionListener{ NumberButtonnumberButton[];//数字按钮数组。 OperationButtonoperationButton[];//运算符号按钮数组。 Button小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮; Panelpanel;//添加各种按钮的面板。 JTextFieldresultShow;//显示计算结果的文本条。 String运算符号[]={"+","-","*","/"}; LinkedList链表;//负责存储数据的链表。 boolean是否按下等号=false; publicComputerPad() { super("计算器"); 链表=newLinkedList(); numberButton=newNumberButton[10];//共有10个数字按钮。 for(inti=0;i<=9;i++) { numberButton[i]=newNumberButton(i); numberButton[i].addActionListener(this); } operationButton=newOperationButton[4];//共有4个运算符号。 for(inti=0;i<4;i++) { operationButton[i]=newOperationButton(运算符号[i]); operationButton[i].addActionListener(this); } 小数点按钮=newButton("."); 正负号按钮=newButton("+/-"); 等号按钮=newButton("="); 求倒数按钮=newButton("1/x"); 退格按钮=newButton("退格"); 清零按钮=newButton("C"); 清零按钮.setForeground(Color.red); 退格按钮.setForeground(Color.red); 等号按钮.setForeground(Color.red); 求倒数按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 小数点按钮.setForeground(Color.blue); 退格按钮.addActionListener(this); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); 正负号按钮.addActionListener(this); 小数点按钮.addActionListener(this); resultShow=newJTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(newFont("TimesRoman",Font.PLAIN,14)); resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED)); resultShow.setBackground(Color.white); resultShow.setEditable(false); panel=newPanel();//放置按钮的面板容器。 panel.setLayout(newGridLayout(4,5)); //面板中的第一行: panel.add(numberButton[1]); panel.add(numberButton[2]); panel.add(numberButton[3]); panel.add(operationButton[0]); panel.add(清零按钮); //面板中的第二行: panel.add(numberButton[4]); panel.add(numberButton[5]); panel.add(numberButton[6]); panel.add(operationButton[1]); panel.add(退格按钮); //面板中的第三行: panel.add(numberButton[7]); panel.add(numberButton[8]); panel.add(numberButton[9]); panel.add(operationButton[2]); panel.add(求倒数按钮); //面板中的第四行: panel.add(numberButton[0]); panel.add(正负号按钮); panel.add(小数点按钮); panel.add(operationButton[3]); panel.add(等号按钮); add(panel,BorderLayout.CENTER); add(resultShow,BorderLayout.NORTH); addWindowListener(newWindowAdapter() {publicvoidwindowClosing(WindowEvente) { System.exit(0); } }); setVisible(true); setBounds(100,50,240,180); setResizable(false); validate(); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()instanceofNumberButton)//如果鼠标单击数字按钮。 { NumberButtonb=(NumberButton)e.getSource(); if(链表.size()==0) { intnumber=b.getNumber();//获取按钮上的数字。 链表.add(""+number);//将数据添加到链表。 resultShow.setText(""+number); 是否按下等号=false; } elseif(链表.size()==1&&是否按下等号==false) { intnumber=b.getNumber(); Stringnum=(String)链表.getFirst(); Strings=num.concat(""+number);//将两个数字首尾相接。 链表.set(0,s); resultShow.setText(s); } elseif(链表.size()==1&&是否按下等号==true) { intnumber=b.getNumber(); 链表.removeFirst(); 链表.add(""+number);//将数据添加到链表。 是否按下等号=false; resultShow.setText(""+number); } elseif(链表.size()==2)//链表中已有2个节点。 { intnumber=b.getNumber();//获取按钮上的数字。 链表.add(""+number);//链表添加第三个节点,注意:第2个节点是运算符号。 resultShow.setText(""+number); } elseif(链表.size()==3)//链表中已有3个节点。 { intnumber=b.getNumber(); Stringnum=(String)链表.getLast(); Strings=num.concat(""+number);//与链表第3个节点中的数字首尾相接。 链表.set(2,s); resultShow.setText(s); } } elseif(e.getSource()instanceofOperationButton)//如果单击运算符号按钮。 { OperationButtonb=(OperationButton)e.getSource(); if(链表.size()==1) { Stringfuhao=b.getOperator(); 链表.add(fuhao);//链表添加第2个节点:运算符号。 } elseif(链表.size()==2) { Stringfuhao=b.getOperator(); 链表.set(1,fuhao);//改变运算符号。 } elseif(链表.size()==3) { Stringfuhao=b.getOperator(); Stringnumber1=(String)链表.getFirst(); Stringnumber2=(String)链表.getLast(); String运算符号=(String)链表.get(1); try { doublen1=Double.parseDouble(number1); doublen2=Double.parseDouble(number2); doublen=0; if(运算符号.equals("+")) { n=n1+n2; } elseif(运算符号.equals("-")) { n=n1-n2; } elseif(运算符号.equals("*")) { n=n1*n2; } elseif(运算符号.equals("/")) { n=n1/n2; } 链表.clear();//根据链表内已有的数进行运算,其结果作为新的运算数值。 链表.add(""+n); 链表.add(fuhao);//添加下一次计算的运算符。 resultShow.setText(""+n); } catch(Exceptionee) { } } } elseif(e.getSource()==等号按钮) { 是否按下等号=true; if(链表.size()==1||链表.size()==2) { Stringnum=(String)链表.getFirst(); resultShow.setText(""+num); } elseif(链表.size()==3) { Stringnumber1=(String)链表.getFirst(); Stringnumber2=(String)链表.getLast(); String运算符号=(String)链表.get(1); try { doublen1=Double.parseDouble(number1); doublen2=Double.parseDouble(number2); doublen=0; if(运算符号.equals("+")) { n=n1+n2; } elseif(运算符号.equals("-")) { n=n1-n2; } elseif(运算符号.equals("*")) { n=n1*n2; } elseif(运算符号.equals("/")) { n=n1/n2; } resultShow.setText(""+n); 链表.set(0,""+n); 链表.removeLast();//将链表中第二个运算数删除。 链表.removeLast();//再将运算符号删除。 } catch(Exceptionee) { } } } elseif(e.getSource()==小数点按钮) { if(链表.size()==0)//链表中还没有节点。 { 是否按下等号=false; } elseif(链表.size()==1) { Stringdot=小数点按钮.getLabel();//获取按钮上的小数点。 Stringnum=(String)链表.getFirst(); Strings=null; if(num.indexOf(dot)==-1)//参加数字中不含有小数点。 { s=num.concat(dot); 链表.set(0,s); } else//如果数字中已含有小数点。 { s=num; } 链表.set(0,s); resultShow.setText(s); } elseif(链表.size()==3) { Stringdot=小数点按钮.getLabel();//获取按钮上的小数点。 Stringnum=(String)链表.getFirst(); Strings=null; if(num.indexOf(dot)==-1) { s=num.concat(dot); 链表.set(2,s); } else { s=num; } resultShow.setText(s); } } elseif(e.getSource()==退格按钮) { if(链表.size()==1) { Stringnum=(String)链表.getFirst(); if(num.length()>=1) { num=num.substring(0,num.length()-1); 链表.set(0,num); resultShow.setText(num); } else { 链表.removeLast(); resultShow.setText("0"); } } elseif(链表.size()==3) { Stringnum=(String)链表.getLast(); if(num.length()>=1) { num=num.substring(0,num.length()-1); 链表.set(2,num); resultShow.setText(num); } else { 链表.removeLast(); resultShow.setText("0"); } } } elseif(e.getSource()==正负号按钮) { if(链表.size()==1) { Stringnumber1=(String)链表.getFirst(); try { doubled=Double.parseDouble(number1); d=-1*d; Stringstr=String.valueOf(d); 链表.set(0,str); resultShow.setText(str); } catch(Exceptionee) { } } elseif(链表.size()==3) { Stringnumber2=(String)链表.getFirst(); try { doubled=Double.parseDouble(number2); d=-1*d; Stringstr=String.valueOf(d); 链表.set(2,str); resultShow.setText(str); } catch(Exceptionee) { } } } elseif(e.ge

温馨提示

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

评论

0/150

提交评论