JAVA课程设计模拟科学计算器_第1页
JAVA课程设计模拟科学计算器_第2页
JAVA课程设计模拟科学计算器_第3页
JAVA课程设计模拟科学计算器_第4页
JAVA课程设计模拟科学计算器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程:模拟科学计算器 学号: 姓名: 班级: 教师: 时间:10.12.1011.01.12 计算机科学与技术系课程设计指导书姓 名学 号班 级课程名称java课程性质专业必修课设计时间2010年12 月10日2011年01月12日设计名称模拟科学计算器设计目的巩固所学理论知识,提高程序设计能力的重要实践环节。综合应用java基础知识和基本方法。设计要求界面模拟windows中的计算器程序。实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。实现要点:添加相关组件并进行按钮事件处理。要求提交application和applet两个版本的程序。设计思路与设计过程

2、设计application和applet两个版本的程序,对application运用继承jframe设计,类的设计构造方法利用等。而applet则继承applet,在浏览器上运行。application过程:1. 菜单栏设计.2. 文本域,即为计算器的屏幕显示区域3. 初始化操作4. 统一设置按钮的的使用方式5. 计算器的基础操作(+ - )6. 运算符号的事件监听7. 清除按钮的事件监听8. 数字输入的事件监听9. 小数点的事件监听10. main方法applet过程:1. init()方法:完成初始化操作;2. 事件统一监听;3. 科学计算;4. 建立calucator.html;5. 浏

3、览器运行;计划与进度12.10-12.13 复习java程序开发的相关操作,了解“计算器相关知识”;12.14-12.17 熟悉题目并理解,及找寻相关资料;12.18-12.20 根据题目要求进行需求分析设计;12.21-12.25 对application进行总体程序设计;12.26-12.30 对applet进行相关各功能的程序设计;12.31-01.05 对程序进行细节完善;01.06-01.10 进行调试运行并完成资料归档。任课教师意 见备 注设计名称:模拟科学计算器日期:2010年01月05日 设计内容:application和applet两个版本的程序,实现基本数学运算、函数等功能

4、:加、减、乘、除、阶乘、正弦、余弦和指数运算。对application运用继承jframe设计,类的设计构造方法利用等。而applet则继承applet,在浏览器上运行。设计目的与要求:界面模拟windows中的计算器程序。实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。实现要点:添加相关组件并进行按钮事件处理。要求提交application和applet两个版本的程序。设计环境或器材、原理与说明:设计环境或器材: 硬件:计算机 软件:myeclipse 集成开发环境 java jcreator pro;设计原理说明:运用application和applet两个版本的

5、程序。设计过程(步骤)或程序代码(可以加页):application程序代码:import java.awt.*;import java.awt.event.*;import java.text.decimalformat;import javax.swing.*;public class calucator extends jframe private jtextfield tf;private jpanel panel1, panel2, panel3, panel4;private jmenubar mybar;private jmenu menu1, menu2, menu3;priv

6、ate jmenuitem edititem1, edititem2, help1, help2, help3;private jradiobuttonmenuitem seeitem1, seeitem2;/单选框private jcheckboxmenuitem seeitem3;/复选框private buttongroup bgb;private string back;private boolean ifresult = true, flag = false;private string oper = =;private double result = 0;private num n

7、umactionlistener;private decimalformat df;public calucator()super(科学计算器);/设置标题栏df = new decimalformat(#.#);/保留四位小数this.setlayout(new borderlayout(10, 5);panel1 = new jpanel(new gridlayout(1, 3, 10, 10);panel2 = new jpanel(new gridlayout(5, 6, 5, 5);/5行6列panel3 = new jpanel(new gridlayout(5, 1, 5, 5)

8、;panel4 = new jpanel(new borderlayout(5, 5);/* * 菜单栏 */mybar = new jmenubar();menu1 = new jmenu(编辑(e);menu2 = new jmenu(查看(v);menu3 = new jmenu(帮助(h);menu1.setfont(new font(宋体, font.plain, 12);menu2.setfont(new font(宋体, font.plain, 12);menu3.setfont(new font(宋体, font.plain, 12);/* * 编辑栏 */edititem1

9、= new jmenuitem(复制(c) ctrl+c);edititem2 = new jmenuitem(粘贴(p) ctrl+v);edititem1.setfont(new font(宋体,font.plain,12);edititem2.setfont(new font(宋体,font.plain,12);/* * 查看栏 */seeitem1 = new jradiobuttonmenuitem(科学型(t);seeitem2 = new jradiobuttonmenuitem(标准型(s);seeitem3 = new jcheckboxmenuitem(数字分组(i);se

10、eitem1.setfont(new font(宋体,font.plain,12);seeitem2.setfont(new font(宋体,font.plain,12);seeitem3.setfont(new font(宋体,font.plain,12);/* * 帮助栏 */help1 = new jmenuitem(帮助主题(h);help2 = new jmenuitem(关于计算器(a);help1.setfont(new font(宋体,font.plain,12);help2.setfont(new font(宋体,font.plain,12);bgb = new button

11、group();/选项组menu1.add(edititem1);menu1.add(edititem2);menu2.add(seeitem1);menu2.add(seeitem2);menu2.addseparator();/添加一条分割线menu2.add(seeitem3);menu3.add(help1);menu3.addseparator();/添加一条分割线menu3.add(help2);mybar.add(menu1);mybar.add(menu2);mybar.add(menu3);this.setjmenubar(mybar);numactionlistener =

12、 new num();/实现数字监听/* * 文本域,即为计算器的屏幕显示区域 */tf = new jtextfield();tf.seteditable(false);/文本区域不可编辑tf.setbackground(color.white);/文本区域的背景色tf.sethorizontalalignment(jtextfield.right);/文字右对齐tf.settext(0);tf.setborder(borderfactory.createloweredbevelborder();init();/对计算器进行初始化/* * 初始化操作 * 添加按钮 */private voi

13、d init()addbutton(panel1, backspace, new clear(), color.red);addbutton(panel1, ce, new clear(), color.red);addbutton(panel1, c, new clear(), color.red);addbutton(panel2, 1/x, new signs(), color.magenta);addbutton(panel2, log, new signs(), color.magenta);addbutton(panel2, 7, numactionlistener, color.

14、blue);addbutton(panel2, 8, numactionlistener, color.blue);addbutton(panel2, 9, numactionlistener, color.blue);addbutton(panel2, , new signs(), color.red);addbutton(panel2, n!, new signs(), color.magenta);addbutton(panel2, sqrt, new signs(), color.magenta);addbutton(panel2, 4, numactionlistener, colo

15、r.blue);addbutton(panel2, 5, numactionlistener, color.blue);addbutton(panel2, 6, numactionlistener, color.blue);addbutton(panel2, , new signs(), color.red);addbutton(panel2, sin, new signs(), color.magenta);addbutton(panel2, x2, new signs(), color.magenta);addbutton(panel2, 1, numactionlistener, col

16、or.blue);addbutton(panel2, 2, numactionlistener, color.blue);addbutton(panel2, 3, numactionlistener, color.blue);addbutton(panel2, -, new signs(), color.red);addbutton(panel2, cos, new signs(), color.magenta);addbutton(panel2, x3, new signs(), color.magenta);addbutton(panel2, 0, numactionlistener, c

17、olor.blue);addbutton(panel2, -/+, new clear(), color.blue);addbutton(panel2, ., new dot(), color.blue);addbutton(panel2, +, new signs(), color.red);addbutton(panel2, tan, new signs(), color.magenta);addbutton(panel2, %, new signs(), color.magenta);addbutton(panel2, , numactionlistener, color.orange)

18、;addbutton(panel2, e, numactionlistener, color.orange);addbutton(panel2, , new signs(), color.orange);addbutton(panel2, =, new signs(), color.red);jbutton btns = new jbutton(计算器);btns.setborder(borderfactory.createloweredbevelborder();btns.setenabled(false);/按钮不可操作btns.setpreferredsize(new dimension

19、(20, 20);panel3.add(btns);/加入按钮addbutton(panel3, mc, null, color.red);addbutton(panel3, mr, null, color.red);addbutton(panel3, ms, null, color.red);addbutton(panel3, m+, null, color.red);panel4.add(panel1, borderlayout.north);panel4.add(panel2, borderlayout.center);this.add(tf, borderlayout.north);t

20、his.add(panel3, borderlayout.west);this.add(panel4);pack();this.setresizable(false);/窗口不可改变大小this.setlocation(300, 200);this.setdefaultcloseoperation(jframe.exit_on_close);/* * 统一设置按钮的的使用方式 * param panel * param name * param action * param color */private void addbutton(jpanel panel, string name, ac

21、tionlistener action, color color)jbutton bt = new jbutton(name);panel.add(bt);/在面板上增加按钮bt.setforeground(color);/设置前景(字体)颜色bt.addactionlistener(action);/增加监听事件/* * 计算器的基础操作(+ - ) * param x */private void getresult (double x)if(oper = +)result += x;else if(oper = -)result -= x;else if(oper = )result *

22、= x;else if(oper = )result /= x;else if(oper = =)result = x;tf.settext(df.format(result);/* * 运算符号的事件监听 */class signs implements actionlistenerpublic void actionperformed(actionevent e) /* * 用actionevent对象的getactioncommand()方法 * 取得与引发事件对象相关的字符串 */string str = e.getactioncommand();/* sqrt求平方根 */if(st

23、r.equals(sqrt)double i = double.parsedouble(tf.gettext();if(i=0)/* * string.valueof() 转换为字符串 * df.format() 按要求保留四位小数 * math.sqrt() 求算数平方根 */tf.settext(string.valueof(df.format(math.sqrt(i);elsetf.settext(负数不能开平方根);/* log求常用对数 */else if(str.equals(log)double i = double.parsedouble(tf.gettext();if(i0)

24、tf.settext(string.valueof(df.format(math.log(i);elsetf.settext(负数不能求对数);/* %求百分比 */else if(str.equals(%)tf.settext(df.format(double.parsedouble(tf.gettext() / 100);/* 1/x求倒数 */else if(str.equals(1/x)if(double.parsedouble(tf.gettext() = 0)tf.settext(除数不能为零);elsetf.settext(df.format(1 / double.parsedo

25、uble(tf.gettext();/* sin求正弦函数 */else if(str.equals(sin)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.sin(i);/* cos求余弦函数 */else if(str.equals(cos)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.cos(i);/* tan求正切函数 */else if(str.

26、equals(tan)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.tan(i);/* n!求阶乘 */else if(str.equals(n!)double i = double.parsedouble(tf.gettext();if(i%2=0)|(i%2=1)/判断为整数放进行阶乘操作int j = (int)i;/强制类型转换int result=1;for(int k=1;k 0)if(tf.gettext().length() 1)tf.settext(tf.

27、gettext().substring(0, tf.gettext().length() - 1);/使用退格删除最后一位字符elsetf.settext(0);ifresult = true;elseif(tf.gettext().length() 2)tf.settext(tf.gettext().substring(0, tf.gettext().length() - 1);elsetf.settext(0);ifresult = true;else if(str = ce)tf.settext(0);ifresult = true;/* * 数字输入的事件监听 */class num

28、implements actionlistenerpublic void actionperformed(actionevent e) string str = e.getactioncommand();if(ifresult)tf.settext();ifresult = false;if(str=)tf.settext(string.valueof(math.pi);else if(str=e)tf.settext(string.valueof(math.e);elsetf.settext(tf.gettext().trim() + str);if(tf.gettext().equals(

29、0)tf.settext(0);ifresult = true;flag = true;/* * 小数点的事件监听 */class dot implements actionlistenerpublic void actionperformed(actionevent e) ifresult = false;if(tf.gettext().trim().indexof(.) = -1)tf.settext(tf.gettext() + .);/* * main方法 */public static void main(string args) new calucator().setvisible

30、(true);applet程序代码:import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;public class calucator extends japplet implements actionlistenerboolean i=true;private jbutton num0=new jbutton(0);private jbutton num1=new jbutton(1);private jbutton num2=new jbu

31、tton(2);private jbutton num3=new jbutton(3);private jbutton num4=new jbutton(4);private jbutton num5=new jbutton(5);private jbutton num6=new jbutton(6);private jbutton num7=new jbutton(7);private jbutton num8=new jbutton(8);private jbutton num9=new jbutton(9);private jbutton zuok=new jbutton();priva

32、te jbutton youk=new jbutton();private jbutton dian=new jbutton(.);private jbutton null=new jbutton(n);private jbutton plu=new jbutton(+);private jbutton min=new jbutton(-);private jbutton mul=new jbutton(x);private jbutton div=new jbutton(/);private jbutton equ=new jbutton(=);private jbutton cle=new

33、 jbutton(c);/清除private jtextfield space=new jtextfield(30);public void init()jpanel text=new jpanel();text.setlayout(new flowlayout();text.add(space);jpanel buttons=new jpanel();buttons.setlayout(new gridlayout(5,4);buttons.add(num9);buttons.add(num8);buttons.add(num7);buttons.add(plu);buttons.add(n

34、um6);buttons.add(num5);buttons.add(num4);buttons.add(min);buttons.add(num3);buttons.add(num2);buttons.add(num1);buttons.add(mul);buttons.add(num0);buttons.add(cle);buttons.add(equ);buttons.add(div);buttons.add(zuok);buttons.add(youk);buttons.add(dian);buttons.add(null);(num9).addactionlistener(this)

35、;(num8).addactionlistener(this);(num7).addactionlistener(this);(num6).addactionlistener(this);(num5).addactionlistener(this);(num4).addactionlistener(this);(num3).addactionlistener(this);(num2).addactionlistener(this);(num1).addactionlistener(this);(num0).addactionlistener(this);(plu).addactionliste

36、ner(this);(min).addactionlistener(this);(mul).addactionlistener(this);(div).addactionlistener(this);(equ).addactionlistener(this);(cle).addactionlistener(this);(zuok).addactionlistener(this);(youk).addactionlistener(this);(dian).addactionlistener(this);setlayout(new borderlayout();add(north,text);ad

37、d(south,buttons);space.settext(0);public void actionperformed(actionevent e)if(e.getsource()=num9)if(i=true)space.settext(9);i=false;else space.settext(space.gettext()+9);if(e.getsource()=num8)if(i=true)space.settext(8);i=false;else space.settext(space.gettext()+8);if(e.getsource()=num7)if(i=true)sp

38、ace.settext(7);i=false;else space.settext(space.gettext()+7);if(e.getsource()=num6)if(i=true)space.settext(6);i=false;else space.settext(space.gettext()+6);if(e.getsource()=num5)if(i=true)space.settext(5);i=false;else space.settext(space.gettext()+5);if(e.getsource()=num4)if(i=true)space.settext(4);

39、i=false;else space.settext(space.gettext()+4);if(e.getsource()=num3)if(i=true)space.settext(3);i=false;else space.settext(space.gettext()+3);if(e.getsource()=num2)if(i=true)space.settext(2);i=false;else space.settext(space.gettext()+2);if(e.getsource()=num1)if(i=true)space.settext(1);i=false;else sp

40、ace.settext(space.gettext()+1);if(e.getsource()=num0)if(i=true)space.settext(0);i=false;else space.settext(space.gettext()+0);if(e.getsource()=zuok)if(i=true)space.settext();i=false;else space.settext(space.gettext()+(); if(e.getsource()=youk)if(i=false)space.settext(space.gettext()+);if(e.getsource

41、()=dian)if(i=false)space.settext(space.gettext()+.);if(e.getsource()=plu)space.settext(space.gettext()+);i=false;if(e.getsource()=min)space.settext(space.gettext()+-);i=false;if(e.getsource()=mul)space.settext(space.gettext()+*);i=false;if(e.getsource()=div)space.settext(space.gettext()+/);i=false;i

42、f(e.getsource()=equ)space.settext(string.valueof(calculator(space.gettext();i=true;if(e.getsource()=cle)space.settext(0);i=true;public double calculator(string f)/科学计算int i=0,j=0,k;char c;stringbuffer s=new stringbuffer();s.append(f);s.append(=);string formula=s.tostring();char anarray;anarray=new char50;stack mystack=new stack();while(formula.charat(i)!=)c=formula.charat(i);switch(c)case (: mystack.push(new character(c);i+;break;case ):while(mystack.peek().charvalue()!=()an

温馨提示

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

评论

0/150

提交评论