(论文)java课程设计设计一个图形界面的计算器完成简单的算术运算最新优秀毕业论文资料搜集呕血奉献_第1页
(论文)java课程设计设计一个图形界面的计算器完成简单的算术运算最新优秀毕业论文资料搜集呕血奉献_第2页
(论文)java课程设计设计一个图形界面的计算器完成简单的算术运算最新优秀毕业论文资料搜集呕血奉献_第3页
(论文)java课程设计设计一个图形界面的计算器完成简单的算术运算最新优秀毕业论文资料搜集呕血奉献_第4页
(论文)java课程设计设计一个图形界面的计算器完成简单的算术运算最新优秀毕业论文资料搜集呕血奉献_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告课程设计(论文)任务书 软件学院 学 院 网络工程 专 业 2006-2 班 一、课程设计(论文)题目 设计一个图形界面的计算器,完成简单的算术运算 二、课程设计(论文)工作自 09 年 1 月 5 日起至 09 年 1 月 9 日止。三、课程设计(论文) 地点: 信息工程学院中心机房 四、课程设计(论文)内容要求:1本课程设计的目的(1)使学生巩固和提高Java编程技术(2)培养学生掌握程序设计的基本思路和方法; (3)加强学生研发、调试程序的能力;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。2课程设计的任务及要求1)任务:(1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算(2)计算器要有小数点、正负号、求倒数、退格和清零功能2)创新要求: 计算器附加有开平方根,平方,立方,判断素数,求log的功能3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路-工作原理、功能规划(3)详细设计-数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。(4)运行调试与分析讨论-给出运行屏幕截图,分析运行结果,有何改进想法等。(5)设计体会与小结-设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7) 报告按规定排版打印,要求装订平整,否则要求返工;(8) 课设报告的装订顺序如下:封面-任务书-中文摘要-目录-正文-附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。4)答辩与评分标准: (1)考勤:10分; (2)程序检查:30分; (3)答辩回答问题:20分(3)课程设计报告:40分;5)参考文献:1 耿祥义.Java 2 实用教程(第三版)北京 清华大学出版社 2006.82 朱福喜Java语言程序设计北京 清华大学出版社20053 朱福喜,尹为民,余振坤Java语言与面向对象程序设计武汉 武汉大学出版社20026)课程设计进度安排内容 天数地点构思及收集资料 7图书馆编码与调试 5实验室撰写论文 3图书馆、实验室学生签名: 09 年 01月 05日课程设计(论文)评审意见(1)考勤(10分):优()、良()、中()、一般()、差(); (2)程序检查(30分):优()、良()、中()、一般()、差(); (3)答辩回答问题(20分):优()、良()、中()、一般()、差(); (4)设计报告(40分):优()、良()、中()、一般()、差();评阅人: 职称: 讲师 年 月 日目录一、课设任务及要求1二、需求分析2三、设计思路3四、详细设计5五、运行调试与分析讨论9六、设计体会与小结14七、参考文献15附录16中文摘要 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器,显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机和Java 应用编程接口构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。 Java分为三个体系J2SE,J2EE,J2ME。说起计算器,值得我们骄傲的是,最早的计算工具的诞生地是中国。在17世纪初,西方国家的计算工具才有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,进而成为了现代社会应用广泛的计算工具。关键词:java Java平台 计算器一、 课设任务及要求1.课设任务这次课程设计选择的题目为设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。这次课程设计的基本要求为设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算,且有小数点、正负号、求倒数、退格和清零功能。拓展功能根据自己的能力添加。这次课程设计的我选择添加的拓展功能为开平方根,平方,立方,判断素数,求log的功能。本程序主要练习使用布局管理器设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关的计算。数据和运算符号的存储采用动态链表这种数据结构实现。这次课程设计选择的Java运行环境为:Windows XP sp3 +Eclipse+JDK 1.6二、需求分析1.系统功能需求分析 计算器是现在一个普遍应用的工具,能够解决许多人所无法计算的数据,节省大量宝贵的时间。2.系统功能分析为了实现计算器系统的功能主要有二个功能模块:输入、输出。3.系统设计原则基于计算器系统要具有适用性广、操作简便等特点本系统预计要达到以下几个目标:(1)、满足以上的功能要求;(2)、能够运行在常见的计算机及其配置上;三、设计思路1.关于布局问题 本次课程设计程序继承来自框架类(Frame),总体布局上选用布局管理器BorderLayout:(1)将单行文本框加入到“North”区域(2)将面板panel加入到“Center”区域,同时panel包含了各种数字按钮和符号按钮。面板panel采用Girdlayout布局,选用5行*5列,将各种按钮添加到面板panel,并增加按钮监听事件。布局完成后的效果图如下:2.关于数据存储问题计算器完成的是一个数学表达式,本次课程设计我选用的是使用链表(Linkedlist类)来存储数字和运算符号。程序运行后,输入的所有数字及运算符号都全部存储在链表中,待最后运算时,再一一求出来进行计算。3.关于事件监听的处理问题计算器的各种按钮都需要一个对象来进行监视,以便对发生的事件做出处理。计算器的各种按钮通过调用相应的方法将某个对象作为自己的监视器。例如计算器中的数字按钮,其方法为: AddActionListener(监视器);对于获取了监视器的数字按钮,通过相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。四、详细设计1.计算器系统主要功能模块(1)、系统主要模块实现的功能系统输入模块实现数字以及计算符号输入的功能,输出模块的结果在文本框中实现显示。(2)、系统输入窗体实现的效果系统输入窗体设计效果如图所示:上图为按数字键1234567890后,在文本框中的显示(3)、系统主要模块功能描述功能描述:菜单项“计算器”主要服务于使用者它包含了“输入”、“输出”、两个功能。输入功能:当使用者将数字输入后,会出现数字的显示;当使用者将计算符号输入时候会有计算符号的录入。输出功能:点击“输出”选项后可实现计算的结果。2.系统的实现 (1)系统源文件类之间的关系 计算器系统共有3个java源文件:Calculator,NumberButton,OperationButton。主要类之间的主要关系如图下图所示计算器系统的类关系图2、系统源文件类实现的功能Calculator.java文件生成的类该JAVA文件生成的类负责创建计算器的主窗口及各种运算的实现。该类含有main方法,整个程序从此类开始执行NumberButton.java该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字OperationButton.java该文件生成的类负责为主类创建运算符号按钮对象。使用鼠标单击运算符号可选择所要进行的运算下表为表格形式序号文件名主要功能1Calculator.java该JAVA文件生成的类负责创建计算器的主窗口。该类含有main方法,整个程序从此类开始执行2NumberButton.java该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字3OperationButton.java该文件生成的类负责为主类创建运算符号按钮对象。使用鼠标单击运算符号可选择所要进行的运算.3. 系统类的成员变量及方法描述(1) 主类Calculator 成员变量Calculator类成员变量表成员变量描述变量类型名称数字按钮数组NumberButtonNumberButton运算符号按钮数组OperationButtonOperationButton小数点按钮JButton小数点按钮正负号按钮JButton正负号按钮退格按钮JButton退格按钮平方按钮JButton平方按钮清零按钮JButton清零按钮等号按钮JButton等号按钮显示计算结果JTextFieldresultShow储存数据的链表LinkedListmylist求平方根JButtonsqrt判断素数JButton素数logJButtonlog立方按钮JButton立方按钮倒数按钮JButton倒数按钮方法Calculator类方法名称功能备注Calculator创建窗口构造方法ActionPerfomed处理ActionPerfomed事件接口方法Main程序开始运行(2)NumberButton类 成员变量NumberButton类变量成员变量描述变量类型名称按钮代表的数字Intnumber方法NumberButton类方法方法名功能备注NumberButton创建数字按钮构造方法getNumber获取按钮代表的数字(3)OperationButton类成员变量OperationButton类成员变量成员变量描述变量类型名称按钮代表的符号StringOperator方法OperationButton类方法方法名功能备注OperationButton创建符号按钮构造方法getOperator获取按钮代表的符号五、运行调试与分析讨论1.测试加法运算 按键12+20 得出的结果如下图2. 测试减法运算 按键12-20 得出的结果如下图3. 测试乘法运算 按键12*20 得出的结果如下图4. 测试除法运算 按键12/20 得出的结果如下图5测试退格运算,按键123456789,按退格键3次,得到的结果如下图6.测试倒数运算,按键5,再按倒数键“1/X”,得到的结果如下图7.测试平方键,按键4,再按平方键,得到的结果如下图8. 测试立方键,按键4,再按立方键,得到的结果如下图9.测试开平方键,按键4,再按键“sqrt”,得到的结果如下图10. .测试素数键,按键29,再按键“素数”,得到的结果如下图第 13 页 六、设计体会与小结这次课程设计总体上来说难度不大,但是个别细节遇到很多的问题。在课设过程中,我自己学习了swing的使用以及数据结构中的链表用java的实现。在这次课程设计中,我学习到了很多布局方面的知识,还有就是链表的实现。数据结构已经很久没有用过了,刚上手时感觉有些生疏,但是随着时间的推移,用java实现链表也渐渐的变得顺手了。这次课程设计的程序构架很简单,没有用到很困难的算法,但是这样编写出来的程序也有优点,就是修改的时候一目了然。总的来说,时间虽紧,这次课程设计学习的东西很是挺多的。最后感谢在课程设计中帮助过我的同学和老师。第 33 页 七、参考文献1 耿祥义.Java 2 实用教程(第三版)北京 清华大学出版社 2006.82 朱福喜Java语言程序设计北京 清华大学出版社20053 朱福喜,尹为民,余振坤Java语言与面向对象程序设计武汉 武汉大学出版社2002附录 程序代码package TZB;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;public class Calculator extends JFrame implements ActionListener NumberButton numberButton;OperationButton oprationButton;JButton 小数点按钮, 正负号按钮, 退格按钮, 平方按钮, 等号按钮, 清零按钮, sqrt, 素数, log, 立方按钮, 倒数按钮;JPanel panel;JTextField resultShow;String 运算符号 = +, -, *, / ;LinkedList mylist;boolean 等号 = false;JTextArea blank;/ GUI的设计 及监视器的添加public Calculator() super(计算器);mylist = new LinkedList();numberButton = new NumberButton10;for (int i = 0; i = 9; i+) numberButtoni = new NumberButton(i);numberButtoni.addActionListener(this);oprationButton = new OperationButton4;for (int i = 0; i 4; i+) oprationButtoni = new OperationButton(运算符号i);oprationButtoni.addActionListener(this);小数点按钮 = new JButton(.);正负号按钮 = new JButton(+/-);等号按钮 = new JButton(=);平方按钮 = new JButton(平方);立方按钮 = new JButton(立方);倒数按钮 = new JButton(1/x);退格按钮 = new JButton(退格);清零按钮 = new JButton(C);sqrt = new JButton(sqrt);log = new JButton(log);素数 = new JButton(素数);清零按钮.setForeground(Color.blue);退格按钮.setForeground(Color.blue);等号按钮.setForeground(Color.blue);平方按钮.setForeground(Color.blue);立方按钮.setForeground(Color.blue);倒数按钮.setForeground(Color.blue);正负号按钮.setForeground(Color.blue);小数点按钮.setForeground(Color.blue);sqrt.setForeground(Color.blue);log.setForeground(Color.blue);素数.setForeground(Color.blue);退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);平方按钮.addActionListener(this);立方按钮.addActionListener(this);倒数按钮.addActionListener(this);sqrt.addActionListener(this);log.addActionListener(this);素数.addActionListener(this);resultShow = new JTextField(10);resultShow.setHorizontalAlignment(JTextField.RIGHT);resultShow.setForeground(Color.blue);resultShow.setFont(new Font(TimesRoman, Font.PLAIN, 24);resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);resultShow.setBackground(Color.white);resultShow.setEditable(false);panel = new JPanel();panel.setLayout(new GridLayout(5, 5); / GridLayout布局 5*5panel.add(numberButton1);panel.add(numberButton2);panel.add(numberButton3);panel.add(oprationButton0);panel.add(清零按钮);panel.add(numberButton4);panel.add(numberButton5);panel.add(numberButton6);panel.add(oprationButton1);panel.add(退格按钮);panel.add(numberButton7);panel.add(numberButton8);panel.add(numberButton9);panel.add(oprationButton2);panel.add(倒数按钮);panel.add(numberButton0);panel.add(正负号按钮);panel.add(小数点按钮);panel.add(oprationButton3);panel.add(等号按钮);panel.add(sqrt);panel.add(立方按钮);panel.add(素数);panel.add(log);panel.add(平方按钮);add(panel, BorderLayout.CENTER);add(resultShow, BorderLayout.NORTH);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););setVisible(true);setBounds(400, 240, 400, 300);setResizable(true);validate();public void actionPerformed(ActionEvent e) if (e.getSource() instanceof NumberButton) / 触发数字NumberButton b = (NumberButton) e.getSource();if (mylist.size() = 0) int number = b.getNumber();mylist.add( + number);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText( + number);等号 = false;else if (mylist.size() = 1 & 等号 = false) int number = b.getNumber();String num = (String) mylist.getFirst();String s = num.concat( + number);mylist.set(0, s);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText(s); else if (mylist.size() = 1 & 等号 = true) int number = b.getNumber();mylist.removeFirst();mylist.add( + number);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();等号 = false;resultShow.setText( + number); else if (mylist.size() = 2) int number = b.getNumber();mylist.add( + number);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText( + number); else if (mylist.size() = 3) int number = b.getNumber();String num = (String) mylist.getLast();String s = num.concat( + number);mylist.set(2, s);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText(s); else if (e.getSource() instanceof OperationButton) / 触发运算符OperationButton b = (OperationButton) e.getSource();if (mylist.size() = 1) String fuhao = b.get运算符号();mylist.add(fuhao);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println(); else if (mylist.size() = 2) String fuhao = b.get运算符号();mylist.set(1, fuhao);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println(); else if (mylist.size() = 3) String fuhao = b.get运算符号();/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();String number1 = (String) mylist.getFirst();String number2 = (String) mylist.getLast();String 运算符号 = (String) mylist.get(1);try double n1 = Double.parseDouble(number1);double n2 = Double.parseDouble(number2);double n = 0;if (运算符号.equals(+) n = n1 + n2; else if (运算符号.equals(-) n = n1 - n2; else if (运算符号.equals(*) n = n1 * n2; else if (运算符号.equals(/) n = n1 / n2; else if (运算符号.equals(sqrt) double g = Math.sqrt(n2);String s = String.valueOf(g);mylist.clear();mylist.add( + n);mylist.add(fuhao);/ 查看链表动态变化for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText( + n); catch (Exception ee) else if (e.getSource() = 等号按钮) / 等号操作的处理等号 = true;if (mylist.size() = 1 | mylist.size() = 2) String num = (String) mylist.getFirst();for (int i = 0; i mylist.size(); i+) System.out.print(mylist.get(i) + );System.out.println();resultShow.setText( + num); else if (mylist.size() = 3) String number1 = (String) mylist.getFirst();String number2 = (String) mylist.getLast();String 运算符号 = (String) mylist.get(1);try double n1 = Double.parseDouble(number1);double n2 = Double.parseDouble(number2);double n = 0;if (运算符号.equals(+) n = n1 + n2; else if (运算符号.equals(-) n = n1 - n2; else if (运算符号.equals(*) n = n1 * n2; else if (运算符号.equals(/) n = n1 / n2;resultShow.setText( + n);mylist.set(0, + n);mylist.removeLast();mylist.removeLast();for (int i = 0; i = 1) num = num.substring(0, num.length() - 1);mylist.set(0, num);resultShow.setText(num); else mylist.removeLast();resultShow.setText(0); else if (mylist.size() = 3) String num = (String) mylist.getLast();if (num.length() = 1) num = num.substring(0, num.length() - 1);mylist.set(2, num);resultShow.setText(num); else mylist.removeLast();resultShow.setText(0);else if (e.getSource() = sqrt)/ sqrt按钮操作的处理if (mylist.size() = 1 | mylist.size() = 2) String number1 = (String) mylist.getFirst();try double d = Double.parseDouble(number1);d = Math.sqrt(d);String str = String.valueOf(d);mylist.set(0, str);resultShow.setText(str); catch (Exception ee) else if (mylist.size() = 3) String number2 = (String) mylist.getLast();try double d = Double.parseDouble(number2);d = Math.sqrt(d);String str = String.valueOf(d);mylist.set(0, str);resultShow.setText(str); catch (Exception ee) else if (e.getSource() = 素数)/ 素数按钮操作的处理int d;int flag = 1;if (mylist.size() = 1 | mylist.size() = 2) String number1 = (String) mylist.getFirst();try try d = Integer.parseInt(number1); catch (java.lang.NumberFormatException nfe) flag = 3;d = 0;for (int i = 2; i d / 2; i+) if (d % i = 0)flag = 2;break;if (flag = 1)resultShow.setText(输入的数为素数);else if (flag = 2)resultShow.setText(输入的数不是素数);elseresultShow.setText(请输入正整数); catch (Exception ee) else if (mylist.size() = 3) String number2 = (String) mylist.getLast();d = Integer.parseInt(number2);try try d = Integer.parseInt(number2); catch (java.lang.NumberFormatException nfe) flag = 3;d = 0;for (int i = 2; i d / 2; i+) if (d % i = 0);flag = 2;break;if (flag = 1)resultShow.setText(输入的数为素数);else if (flag = 2)resultShow.setText(输入的数不是素数);elseresultShow.setText(请输入整数); catch (Exception ee) else if (e.getSource() = 正负号按钮) / 正负号按钮操作的处理if (mylist.size() = 1) String number1 = (String) mylist.getFirst();try double d = Double.parseDouble(number1);d = -1 * d;String str = String.valueOf(d);mylist.set(0, str);resultShow.setText(str); catch (Exception ee) else if (mylist.size() = 3) String number2 = (String) mylist.getLast();try double d = Double.parseDouble(number2);d = -1 * d;String str = String.valueOf(d);mylist.set(2, str);resultShow.setText(str); catch (Exception ee) e

温馨提示

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

评论

0/150

提交评论