科学计算器课程设计.doc

上传人:文库蛋蛋多 文档编号:2386045 上传时间:2023-02-17 格式:DOC 页数:32 大小:280.50KB
返回 下载 相关 举报
科学计算器课程设计.doc_第1页
第1页 / 共32页
科学计算器课程设计.doc_第2页
第2页 / 共32页
科学计算器课程设计.doc_第3页
第3页 / 共32页
科学计算器课程设计.doc_第4页
第4页 / 共32页
科学计算器课程设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《科学计算器课程设计.doc》由会员分享,可在线阅读,更多相关《科学计算器课程设计.doc(32页珍藏版)》请在三一办公上搜索。

1、*课 程 设 计设计题目: 面向对象程序设计课程设计 -科学计算器 系 别 信息工程系 班级 * 学生姓名 * 学 号 * 指导教师 * 职称 * 起止日期: *课程设计任务书课程设计题目: 面向对象程序设计课程设计 -科学计算器 系 别 信息工程系 班级 * 学生姓名 * 学 号 * 指导教师 * 职称* 课程设计进行地点: * 任 务 下 达 时 间: *起止日期:*教研室主任 * 20*日批准1.设计的原始资料及依据通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,提高学生用程序的思想来解决实际问题的能力。2设计的主要内容及要求

2、设计题目:科学计算器需要完成的功能: 定义组件:09,+、-、*、/、sqrt()、1/x、%、C=按钮;显示屏文本行; 具有进制转换功能; 要求能关闭窗口;点击按钮,或键盘数字会在显示屏上输出结果。3.对设计说明书撰写内容、格式、字数的要求 学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计说明书(论文)的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 装订格式封面、任务书、成绩评审意见表、摘要和关键词、目录、正文、结论、致谢、参考文献。 课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应

3、少于3000字。打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,三级节标题采用黑体小四号字,表题与图题采用宋体五号字。4. 设计完成后应提交成果的种类、数量、质量等方面的要求 课程设计任务书 课程设计报告 设计成品(光盘)5.时间进度安排顺序阶段日期计 划 完 成 内 容备注1第1周第1天查阅资料,充分解读题目内容,小组分工,确定每个人的具体任务。1天2第1周第2天数据库设计及登陆界面的实现。1天3第1周第3,4,5天,第2周第1天编制程序,单元测试。4天4第2周第2,3天程序整合,综合

4、调试。2天5第2周第4天答辩。1天6第2周第5天撰写课程设计报告。1天6.主要参考资料(文献)1 耿祥义.JAVA2 实用教程.北京:清华大学出版社,20062 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,20063 张思民.JAVA程序设计实践教程.北京:清华大学出版社,20064 汤一平.Java 语言程序设计.北京:科学出版社,20065 刘艺.Java 程序设计大学教程.北京:机械工业出版社,2006*面向对象程序设计课程设计成绩评定表系(部):信息工程系 班级: * 学生姓名: *指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收

5、集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作。0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55

6、432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名:

7、 年 月 日课 程 设 计 总 评 成 绩分摘 要本文重点阐述了如何利用Java语言的特性和语法规则编写了一个科学计算器,实现对数据的简单运算和数据间进制转换的求解。并且对运算时各数据之间的具体关联等方面做出了详细说明,并且具体讲述了系统各个功能模块的设计以及实现过程。根据设计中的需求,科学计算器采用模块化的设计思想,在Windows XP操作系统环境下,采用myeclipse7作为开发工具,实现计算器基本运算操作的主要功能,主要包括加减乘除运算,求模运算,求倒数运算以及求一个正数平方根的运算等功能。在设计计算器功能的时候首先考虑了各种数据的输入情况,考虑到对异常数据的处理和特殊情况的求解显示

8、问题。另外,为了实现计算器对数据的进制转换的功能的实现,需要在对计算器程序编程的时候引入强制转换数据类型的思想,方便其他进制与十进制互相转换的实现。由于此计算器功能的不需要考虑到数据的保留存储问题,所以实现其功能比较简单。剩下的工作就是利用Java语言逐步实现计算器的各种运算功能的实现了。经过从网络上和书本上查阅资料,了解了实现计算器功能的Java内部的方法,还有组员的齐心努力,完成了对计算器的Java语言的编程工作。目前系统已通过测试,具有功能完备,使用简捷,操作方便的特性。关键词 Java,程序语言,面向对象,科学计算器,运算目 录摘 要I第一章 绪论1第二章 系统功能介绍及组内分工22.

9、1 系统功能总框图22.2 组内分工3第三章 系统功能介绍及实现代码43.1 Calculator类的功能介绍及代码43.2 实现基本运算方法的各个事件监听的功能介绍及代码63.2.1 A类数字按钮事件监听的功能介绍63.2.2 E类监听小数点的功能介绍73.2.3 D类1/x的监听的功能介绍83.2.4 I类sqrt的监听的功能介绍83.2.5 F类运算监听的功能介绍93.2.6 H类正负号监听的功能介绍103.2.7 G类运算结果的功能介绍103.3 实现计算器编辑功能的各个事件监听的功能介绍及代码123.3.1 B类清零按键事件监听的功能介绍123.3.2 C类Bakespace键事件监

10、听的功能介绍133.3.3 F类运算监听的功能介绍133.4 实现进制转换的各个事件监听的功能介绍及代码153.4.1 J类按二进制按钮后的事件处理的功能介绍153.4.2 K类按八进制按钮后的事件处理的功能介绍163.4.3 L类按十六进制按钮后的事件处理的功能介绍173.4.4 M类按十进制按钮后的事件处理的功能介绍193.5 Calculator类的主函数的功能介绍203.6 系统运行过程213.6.1系统初始运行界面213.6.2 系统计算结果21结 论23致 谢24参考文献25第一章 绪论Java起源于80年代的中末期,当时西方有一种很时髦的产品:ActiveTV,Java就是Sun

11、公饲喂这种产品开发的一种语言,其目标是在小型嵌入式系统上运行。但是由于动态图像压缩标准MPEG却始终未能出台,因而这个时期的Java也就中途夭折了。到了1990年,Sun公司副总裁JamesGosling再次提出Java的设计,其目标是希望仿效C和C+那样设计出一种更简单、更有效、更容易使用的跨多种计算机平台(硬件、操作系统等),可移植的通用语言。到了90年代中期,互联网迅速崛起,短短几年得到了巨速的发展,成千上万的计算机,其中有个人的、企业的、政府的,公司加入到了互联网上,致使互联网深入到了生活、社会、经济、政治、军事的每一个角落,因此急需开发一种跨平台软件开发工具,这给Java得到了一个极

12、好的发展机遇,1995年Sun公司首次推出Java语言。短短的几年中Java得到了极大的发展,成立互联网开发和应用发展的一个重要工具。Java既是一种程序设计语言,也是一个完整的平台。作为一种程序语言,它简洁、面向对象、安全、健壮,以及适用于Internet技术;而作为一个平台(JRE,Java Runtime Environment,Java运行环境或者说是Java虚拟机),对于符合Sun公司Java标准的应用程序,都可以在Java平台上正确运行,与程序运行的操作系统无关。Java发展到今天,已从编程语言发展成为全球第一大通用开发平台。Java技术已被计算机行业主要公司所采纳。1999年,S

13、un公司推出了以Java2平台为核心的J2EE、J2SE和J2ME三大平台。随着三大平台的迅速推进,全球形成了一股巨大的Java应用浪潮。第二章 系统功能介绍及组内分工2.1 系统功能总框图系统功能总框图,如图2.1所示。图2.1 系统功能总框图该计算器的计算过程为:当用户启动科学计算器后,可在用户界面中,按相应的数字键,输入相应数字。当用户输入完第一个数字后,再按下决定进行何种运算的运算按键,当用户按下“+”、“-”、“*”、“/”按键时,系统进入基本运算模式,等待参与第二个运算的数据,然后进行相应的运算;当用户按下“%”、“1/x”按键时,系统进入高级运算模式,等待第二个参与运算的数据,然

14、后进行相应运算;当用户点击“二进制”、“八进制”、“十六进制”按键时,系统进入进制转换模式,并对当前数字进行相应处理。2.2 组内分工对于每一项工作而言,团队小组的合作和配合,合理的科学的分工是必不可少的工作,正确的分工可以增加我们的工作效率,优化我们的工作成果,具体组内分工如表2.1所示。表2.1 组内分工组内成分姓名(学号)分工组长张博(21)主要负责主类和方法的声明和实现、数字按钮事件监听、按十六进制转换按的事件监听、运算结果的输出过程以及各个动作事件的相关联系组织,报告的排版、校正,结论。组员裴莹莹(03)主要负责数字按钮事件监听、1/x监听、运算结果的输出过程、正负号的监听、总功能图

15、,致谢。侯金龙(12)主要负责清零按键事件监听、小数点事件监听、求平方根事件的监听、按十六进制转换按的事件监听。李熙坤(27)主要负责Backspace键事件监听、运算监听事件、二进制事件监听、十进制事件监听。第三章 系统功能介绍及实现代码3.1 Calculator类的功能介绍及代码首先在主类中定义逻辑型的first变量,用它来辨别第一次输入的值是否为0,如果为0,把first值变为true。然后定义整型变量DBHO,它代表当前实行的是几进制运算,默认值为十进制。接着定义两个双精度浮点型变量number1,number2。Number1用来存放输入的第一个数字,Number2用来存放输入的第

16、二个数字。整型变量yunsuan是用来定义加、减、乘、除、求余的运算方法,双精度浮点型变量result用来存放运算结果。接着定义JTextField类的文本框,并将其框的长度初始化为23,再定义JButton类按键,个数为26个,定义一个JLabel类的信息提示栏,初始提示信息为“计本081”。定义按钮数组,将各个按钮的信息加入到按钮数组中。由于继承了Apple类,所以要实现init()方法。再定义的init的方法中,首先再顶部加入一个JTextField类的文本框,然后设置文本框的格式,将其定义为数字在右边,背景色为白,字体色为黑,文本框初始显示为“0.0”。其次定义窗体布局方式为流式布局,

17、按照左对齐方式,按键之间间隔为10。接着通过循环语句将按钮数组的每一个元素,添加到按键中,并设置按键颜色。然后建立各个按键的事件监听,与后面的各个动作事件监听类建立联系。其相应代码为:public class Calculator extends Applet boolean first=true; int DBHO=10;/当前文本框内数字为几进制的标识符,默认为10进制 double number1;/定义第一个按的数字,输入的第一个数字保存在这 double number2;/定义第二个按的数字,输入的第二个数字保存在这 int yunsuan;/定义加减乘除求余的运算方法 double

18、 result;/定义结果,结果就保存在这 int t=0;/循环用boolean IsOper=false;/这个是和当数据框里有数据时,再按下一个数据后,清除原来数据有关的一个东西JTextField field=new JTextField(23);/定义最上面那个框,括号里的数字是框的长度,你可以改变看看,就知道用处了 JButton button=new JButton26;/定义26个按键 JLabel dec=new JLabel(计本081 );/提示信息拦 public String anniu= Backspace , C ,7,8,9,/,sqrt,4,5,6,*, %

19、,1,2,3,-, 1/x ,0,?, .,+, = ,十进制,二进制,八进制,十六进制;/把22个按键存放在anniu这个数组里 public void init() add(field);/增加一个field框 field.setHorizontalAlignment(JTextField.RIGHT);field.setForeground(Color.black);field.setBackground(Color.white);field.setText(0);/以上这4个是对field的设置,设置成数字在右边,颜色,初始化状态为0this.setLayout(new FlowLay

20、out(FlowLayout.LEFT,10,10);/流式布局的定义,按照左对齐方式,按键之间间隔10for(int i=0;i26;i+)buttoni=new JButton(anniui);this.add(buttoni);buttoni.setForeground(Color.blue);/定义这26个按键,并增加他们,同时给他们都赋上蓝色 add(dec); button0.setForeground(Color.red); button1.setForeground(Color.red); button5.setForeground(Color.red); button10.s

21、etForeground(Color.red); button15.setForeground(Color.red); button20.setForeground(Color.red); button21.setForeground(Color.red);/以上这几句是吧+,-,*,/,开根号,%,X分之一等号那些按键设置成红色 button22.setForeground(Color.magenta); button23.setForeground(Color.magenta); button24.setForeground(Color.magenta); button25.setFore

22、ground(Color.magenta);/以上的这4个按键是进制按键,单独给它们赋色 A a=new A();/数字按钮事件监听B b=new B();/清零按键事件监听C c=new C();/BS键的事件监听D d=new D();/1/x事件监听E e=new E();/小数点事件监听F f=new F();/运算事件监听G g=new G();/运算结果监听H h=new H();/正负号监听 I i=new I();/sqrt的监听 J j=new J();/2进制转换事件的处理 K k=new K();/8进制转换事件的处理 L l=new L();/16进制转换事件的处理 M

23、 m=new M();/10进制转换事件的处理 /以上是把一些事件,分类,并且把+-*/%都放到了F运算事件监听里button0.addActionListener(c);button1.addActionListener(b);button2.addActionListener(a);button3.addActionListener(a);button4.addActionListener(a);button5.addActionListener(f);button6.addActionListener(i);button7.addActionListener(a);button8.add

24、ActionListener(a);button9.addActionListener(a);button10.addActionListener(f);button11.addActionListener(f);button12.addActionListener(a);button13.addActionListener(a);button14.addActionListener(a);button15.addActionListener(f);button16.addActionListener(d);button17.addActionListener(a);button18.addA

25、ctionListener(h);button19.addActionListener(e);button20.addActionListener(f);button21.addActionListener(g);button22.addActionListener(m);button23.addActionListener(j);button24.addActionListener(k);button25.addActionListener(l); /以上的是把每个按键定义到相应的事件里去3.2 实现基本运算方法的各个事件监听的功能介绍及代码3.2.1 A类数字按钮事件监听的功能介绍首先定义

26、了Input来接收显示在文本框里的输入的数字并存放,Input类型为String。然后进行判断,如果当前文本框里有上次运算的结果,再次输入下一个数据的时候,清除原来文本框里的数据。IsOper代表了是否有上次运算的结果,初始值为false代表着没有上次运算的结果。如果在计算器初始状态的时候输入数字零,系统不会产生响应,一直显示一个零。如果第一个输入的数字不是零,那么文本框就会相应的输出和保存你所输入的数据。数字按钮事件监听主要的功能就是判断运算过程中是否输入了等号,当文本框里已经有运算的结果时,下次再进行输入数字的时候,会进行清零再输出数字。其相应代码为:class A implements

27、ActionListener/数字按钮事件监听public void actionPerformed(ActionEvent e) String input = e.getActionCommand();/定义input来接收你按的数字并存放 if(IsOper) field.setText(); IsOper=false; if (first) if(input=0)/当你一开始按零的时候,系统不应该有响应,应该一直显示一个0 field.setText(); first=true; else field.setText(); first = false;/如果不是按的第一个不是0,那么就相

28、应的输出和保存你按了哪些数字 field.setText(field.getText() + input);/以上是判断是否已经按了=号,数据框里是否已经有结果 /这样在已经有数据的情况下,再按数字会清零 3.2.2 E类监听小数点的功能介绍在这个模块,实现了对数字中需要运用小数点事件的监听任务。因为在数字运算的时候,难免会用到小数点,这就需要考虑小数点的使用问题。当有人按“.”键后,监听器就会监听到此事件的发生,然后就会执行E类里的程序。在执行时,首先需要判断数字里是否已经有小数点,如果有了再按小数点就不应该有响应。另外还要考虑,所输入的数字的第一位是否为零,即整数部分是否为零。如果为零,那

29、么数据的输入的形式就该为“0.XXX”。最后一种情况就是最普通的“XXX.XXXXX”型的数据了。通过调用Java内部的方法,可以实现上述的显示功能。另外,在此模块,还要将first的值赋值为false,实现对输入数据不是零的控制和掌握。其相应代码为:class E implements ActionListener/监听小数点public void actionPerformed(ActionEvent e)/这个就是你按下小数点之后的处理if(field.getText().trim().indexOf(.)!=-1);/判断数字里是否已经有小数点 /如果有了再按小数点就不应该有响应els

30、e if(field.getText().trim().equals(0)field.setText(0+e.getActionCommand();/如果没有小数点,而第一个数是零else /那就直接是0.XXXfield.setText(field.getText()+e.getActionCommand();first=false;/如果前面是数字,那么就直接显示XXX.XXXX3.2.3 D类1/x的监听的功能介绍当用户按下1/x键后,该1/x类的事件监听被执行。用户向文本框输入一个数据,通过赋值x的方式把它强制转换为double型。如果输入的数据x是零,判断零没有倒数,输出出错信息“除

31、数不能为零”。如果输入的数据x不为零,按下1/x键后,即可直接可求出1/x。通过以上的方法,用户便可求出想要的数据1/x。其相应代码为:class D implements ActionListener/1/x的监听public void actionPerformed(ActionEvent e)double x=Double.parseDouble(field.getText();/把从文本框输入的数字赋值给X,切X为double型if(x=0)field.setText(除数不能为零);/如果输入的是0,那么当然就没有倒数了,显示出错信息elsefield.setText(+1/x);/

32、如果输入的不是0,那么直接求X分之一3.2.4 I类sqrt的监听的功能介绍在此模块,实现了对一个数的求平方根运算。当操作人员向文本框内输入一个数据后,当再按下“sqrt”键之后,由于设置了对此事件的监听器,捕捉到事件后,计算器就会调用此类的程序,从而实现求一个数的平方根。在运算时,首先要从文本框中取到这个要运算的数,并判断其是否大于零。因为,负数没有有理的平方根,当输入的数小于零,计算机将无法实现求平方根的功能,因此会在相应的提示框内输出“负数不能开平方”。当只有输入的数为正数是,才会调用Math.sqrt()函数进行求解。其相应代码为:class I implements ActionLi

33、stener/sqrt的监听public void actionPerformed(ActionEvent e)/求根号的运算double x=Double.parseDouble(field.getText();/把输入的数字存放在X中并定义为double型if(xDouble.MAX_VALUE&number1Double.MAX_VALUE&number2Double.MIN_VALUE)field.setText(数据超过界限);/这是一个防止数据溢出处理,不过基本用不上,因为数据根本益处不了,就那些运算elseswitch(yunsuan)/如果数据不益处,那么开始处理运算case 1:/对1号运算,也就是+法怎么运算给出,看看上面定义的1号,联系起来看result=number1+number2;/把结果保存在result里field.setText(+result);/在文本框里输出result即输出运算+号后的结果break;case 2:/对于2号运算,也就是-法运算应该怎么做,result=number1-number2;/用result保存结果field.setText(+result);/输出结果break;case 3:result=number1*number

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号