免费预览已结束,剩余28页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计一个图形界面的计算器,完成简单的算术运算-JAVA课程设计 课程设计论文任务书软件学院 学院 网络工程专业 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世纪初,西方国家的计算工具才有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,进而成为了现代社会应用广泛的计算工具。关键词:javaJava平台 计算器课设任务及要求 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,再按键“素数”,得到的结果如下图六、设计体会与小结 这次课程设计总体上来说难度不大,但是个别细节遇到很多的问题。在课设过程中,我自己学习了swing的使用以及数据结构中的链表用java的实现。在这次课程设计中,我学习到了很多布局方面的知识,还有就是链表的实现。数据结构已经很久没有用过了,刚上手时感觉有些生疏,但是随着时间的推移,用java实现链表也渐渐的变得顺手了。 这次课程设计的程序构架很简单,没有用到很困难的算法,但是这样编写出来的程序也有优点,就是修改的时候一目了然。总的来说,时间虽紧,这次课程设计学习的东西很是挺多的。最后感谢在课程设计中帮助过我的同学和老师。七、参考文献1 耿祥义.Java 2 实用教程(第三版)北京 清华大学出版社 2006.82 朱福喜.Java语言程序设计.北京 清华大学出版社.20053 朱福喜,尹为民,余振坤.Java语言与面向对象程序设计.武汉 武汉大学出版社.2002附录程序代码package TZB;import java.awt.*;import /.nt.*;import javax.swing.*;import /.der.*;import /.kedList;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 NumberButtoni;numberButtoni.addActionListenerthis;oprationButton new OperationButton4;for int i 0; i 4; i+ oprationButtoni new OperationButton运算符号i;oprationButtoni.addActionListenerthis;小数点按钮 new JButton.;正负号按钮 new JButton+/-;等号按钮 new JButton;平方按钮 new JButton平方;立方按钮 new JButton立方;倒数按钮 new JButton1/x;退格按钮 new JButton退格;清零按钮 new JButtonC;sqrt new JButtonsqrt;log new JButtonlog;素数 new JButton素数;清零按钮.setForegroundColor.blue;退格按钮.setForegroundColor.blue;等号按钮.setForegroundColor.blue;平方按钮.setForegroundColor.blue;立方按钮.setForegroundColor.blue;倒数按钮.setForegroundColor.blue;正负号按钮.setForegroundColor.blue;小数点按钮.setForegroundColor.blue;/.e;/.e;素数.setForegroundColor.blue;退格按钮.addActionListenerthis;清零按钮.addActionListenerthis;等号按钮.addActionListenerthis;小数点按钮.addActionListenerthis;正负号按钮.addActionListenerthis;平方按钮.addActionListenerthis;立方按钮.addActionListenerthis;倒数按钮.addActionListenerthis;sqrt.addActionListenerthis;log.addActionListenerthis;素数.addActionListenerthis;resultShow new JTextField10;/.HT;/.e;resultShow.setFontnew FontTimesRoman, Font.PLAIN, 24;resultShow.setBordernew SoftBevelBorderBevelBorder.LOWERED;/.te;resultShow.setEditablefalse;panel new JPanel;panel.setLayoutnew GridLayout5, 5; / GridLayout布局 5*5panel.addnumberButton1;panel.addnumberButton2;panel.addnumberButton3;panel.addoprationButton0;panel.add清零按钮;panel.addnumberButton4;panel.addnumberButton5;panel.addnumberButton6;panel.addoprationButton1;panel.add退格按钮;panel.addnumberButton7;panel.addnumberButton8;panel.addnumberButton9;panel.addoprationButton2;panel.add倒数按钮;panel.addnumberButton0;panel.add正负号按钮;panel.add小数点按钮;panel.addoprationButton3;panel.add等号按钮;panel.addsqrt;panel.add立方按钮;panel.add素数;panel.addlog;panel.add平方按钮;addpanel, BorderLayout.CENTER;addresultShow, BorderLayout.NORTH;addWindowListenernew WindowAdapter public void windowClosingWindowEvent e System.exit0;setVisibletrue;setBounds400, 240, 400, 300;setResizabletrue;validate;public void actionPerformedActionEvent 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+ /.ntmylist.geti + ;/.ntln;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.set0, s;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;resultShow.setTexts;else if mylist.size 1 & 等号 true int number b.getNumber;mylist.removeFirst;mylist.add + number;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;等号 false;resultShow.setText + number;else if mylist.size 2 int number b.getNumber;mylist.add + number;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;resultShow.setText + number;else if mylist.size 3 int number b.getNumber;String num String mylist.getLast;String s num.concat + number;mylist.set2, s;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;resultShow.setTexts;else if e.getSource instanceof OperationButton / 触发运算符OperationButton b OperationButton e.getSource;if mylist.size 1 String fuhao b.get运算符号;mylist.addfuhao;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;else if mylist.size 2 String fuhao b.get运算符号;mylist.set1, fuhao;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;else if mylist.size 3 String fuhao b.get运算符号;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;String number1 String mylist.getFirst;String number2 String mylist.getLast;String 运算符号 String mylist.get1;try double n1 Double.parseDoublenumber1;double n2 Double.parseDoublenumber2;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 运算符号.equalssqrt double g Math.sqrtn2;String s String.valueOfg;mylist.clear;mylist.add + n;mylist.addfuhao;/ 查看链表动态变化for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;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+ /.ntmylist.geti + ;/.ntln;resultShow.setText + num;else if mylist.size 3 String number1 String mylist.getFirst;String number2 String mylist.getLast;String 运算符号 String mylist.get1;try double n1 Double.parseDoublenumber1;double n2 Double.parseDoublenumber2;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.set0, + n;mylist.removeLast;mylist.removeLast;for int i 0; i mylist.size; i+ /.ntmylist.geti + ;/.ntln;catch Exception ee else if e.getSource 小数点按钮 / 小数点按钮操作的处理if mylist.size 0 等号 false;else if mylist.size 1 String dot 小数点按钮.getText;String num String mylist.getFirst;String s null;if num.indexOfdot -1 s num.concatdot;mylist.set0, s;else s num;mylist.set0, s;resultShow.setTexts;else if mylist.size 3 String dot 小数点按钮.getText;String num String mylist.getLast;String s null;if num.indexOfdot -1 s num.concatdot;mylist.set2, s;else s num;resultShow.setTexts;else if e.getSource 退格按钮/ 退格按钮操作的处理if mylist.size 1 String num String mylist.getFirst;if num.length 1 num num.substring0, num.length - 1;mylist.set0, num;resultShow.setTextnum;else mylist.removeLast;resultShow.setText0;else if mylist.size 3 String num String mylist.getLast;if num.length 1 num num.substring0, num.length - 1;mylist.set2, num;resultShow.setTextnum;else mylist.removeLast;resultShow.setText0;else if e.getSource sqrt/ sqrt按钮操作的处理if mylist.size 1 | mylist.size 2 String number1 String mylist.getFirst;try double d Double.parseDoublenumber1;d Math.sqrtd;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;catch Exception ee else if mylist.size 3 String number2 String mylist.getLast;try double d Double.parseDoublenumber2;d Math.sqrtd;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;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.parseIntnumber1;catch /.berFormatException nfe flag 3;d 0;for int i 2; i d / 2; i+ if d % i 0flag 2;break;if flag 1resultShow.setText输入的数为素数;else if flag 2resultShow.setText输入的数不是素数;elseresultShow.setText请输入正整数;catch Exception ee else if mylist.size 3 String number2 String mylist.getLast;d Integer.parseIntnumber2;try try d Integer.parseIntnumber2;catch /.berFormatException nfe flag 3;d 0;for int i 2; i d / 2; i+ if d % i 0;flag 2;break;if flag 1resultShow.setText输入的数为素数;else if flag 2resultShow.setText输入的数不是素数;elseresultShow.setText请输入整数;catch Exception ee else if e.getSource 正负号按钮 / 正负号按钮操作的处理if mylist.size 1 String number1 String mylist.getFirst;try double d Double.parseDoublenumber1;d -1 * d;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;catch Exception ee else if mylist.size 3 String number2 String mylist.getLast;try double d Double.parseDoublenumber2;d -1 * d;String str String.valueOfd;mylist.set2, str;resultShow.setTextstr;catch Exception ee else if e.getSource 平方按钮 / 平方按钮操作的处理if mylist.size 1 | mylist.size 2 String number1 String mylist.getFirst;try double d Double.parseDoublenumber1;d d * d;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;catch Exception ee else if mylist.size 3 String number2 String mylist.getLast;try double d Double.parseDoublenumber2;d d * d;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;catch Exception ee else if e.getSource 立方按钮 / 立方按钮操作的处理if mylist.size 1 | mylist.size 2 String number1 String mylist.getFirst;try double d Double.parseDoublenumber1;d d * d * d;String str String.valueOfd;mylist.set0, str;resultShow.setTextstr;catch Exception ee else if mylist.size 3 String number2 String mylist.getLast;try double
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公室布局课件
- 全球南方绿色发展展望2026-携手共筑气候韧性未来
- 白沟泥塑课件
- 2026年高校生物学实验教学模拟试题(含答案)
- 2026年视觉障碍考试题库及参考答案
- 学年八年级上学期期末考试道德与法制模拟试卷及参考答案
- 2026年护士模拟试卷目(含答案)
- 2026年潜艇驾驶模拟试卷带答案
- 2026年授权人考试题库及答案
- 2026年外企普工考试模拟试卷带答案
- 2023年锅炉辅机检修初级第二版理论题库
- 骨科患者围手术期的疼痛管理
- 项目七婴幼儿道路交通伤害预防与处理姚丽娇课件
- 《非手术面部年轻化》课件
- 江苏省苏州市六区联考2024-2025学年八年级上学期期末考试物理试题(含答案)
- DL∕T 1687-2017 六氟化硫高压断路器状态评价导则
- 首件检查记录表
- 邢台市信都区事业单位考试试题真题及答案
- GRR-计数型(范例填写)
- 香兰素提取技术-南宁环保局
- 数字经济学导论-完整全套课件
评论
0/150
提交评论