Java课程设计计算器.docx

上传人:b****6 文档编号:8494641 上传时间:2023-01-31 格式:DOCX 页数:18 大小:241.23KB
下载 相关 举报
Java课程设计计算器.docx_第1页
第1页 / 共18页
Java课程设计计算器.docx_第2页
第2页 / 共18页
Java课程设计计算器.docx_第3页
第3页 / 共18页
Java课程设计计算器.docx_第4页
第4页 / 共18页
Java课程设计计算器.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Java课程设计计算器.docx

《Java课程设计计算器.docx》由会员分享,可在线阅读,更多相关《Java课程设计计算器.docx(18页珍藏版)》请在冰豆网上搜索。

Java课程设计计算器.docx

Java课程设计计算器

 

软件学院

课程设计报告书

 

课程名称面向对象程序设计

设计题目模拟科学计算器

专业班级

学号

姓名

指导教师

 

2014年06月

目录

1设计时间.....................................................1

2设计目的.....................................................1

3设计题目.....................................................1

4设计内容.....................................................1

4.1设计任务....................................................1

4.2总体设计....................................................1

4.2.1包的描述..................................................1

4.2.2类的描述..................................................1

4.3详细设计....................................................1

4.3.1页面设计..................................................2

4.4程序代码....................................................2

5功能模块实现..................................................9

6运行与测试....................................................9

7总结与展望...................................................11

参考文献......................................................12

成绩评定......................................................12

1设计时间

2014年6月16日—2014年6月20日

2设计目的

《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。

其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

3设计题目

模拟科学计算器

4设计内容

4.1设计任务

界面模拟Windows中的计算器程序。

实现基本数学运算、函数等功能:

加、减、乘、除、阶乘、正弦、余弦和指数运算。

实现要点:

添加相关组件并进行按钮事件处理。

4.2总体设计

4.2.1包的描述

importjava.awt.*;

importjava.awt.event.*;

importjava.text.DecimalFormat;

importjavax.swing.*;

4.2.2类的描述

publicCalculator()

privatevoidinit()

privatevoidaddButton()

privatevoidgetResult()

4.3详细设计

4.3.1页面设计

图1计算器界面

4.4程序代码

importjava.awt.*;

importjava.awt.event.*;

importjava.text.DecimalFormat;

importjavax.swing.*;

publicclassCalculatorextendsJFrame

{

privateJTextFieldtf;

privateJPanelpanel1,panel2,panel3;

privateStringback;

privatebooleanIfResult=true,flag=false;

privateStringoper="=";

privatedoubleresult=0;

privateNumnumActionListener;

privateDecimalFormatdf;

publicCalculator()

{

super("科学计算器");//设置标题栏

df=newDecimalFormat("#.####");//保留四位小数

this.setLayout(newBorderLayout(10,5));

panel1=newJPanel(newGridLayout(1,4,10,10));

panel2=newJPanel(newGridLayout(4,6,5,5));//4行6列

panel3=newJPanel(newBorderLayout(5,5));

numActionListener=newNum();//实现数字监听

tf=newJTextField();

tf.setEditable(false);//文本区域不可编辑

tf.setBackground(Color.white);//文本区域的背景色

tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐

tf.setText("0");

tf.setBorder(BorderFactory.createLoweredBevelBorder());

init();//对计算器进行初始化

}

privatevoidinit()

{

JButtonbtns=newJButton("计算器");

btns.setBorder(BorderFactory.createLoweredBevelBorder());

btns.setEnabled(false);//按钮不可操作

btns.setPreferredSize(newDimension(20,20));

panel1.add(btns);//加入按钮

addButton(panel1,"Backspace",newClear(),Color.black);

addButton(panel1,"CE",newClear(),Color.black);

addButton(panel1,"C",newClear(),Color.black);

addButton(panel2,"sin",newSigns(),Color.magenta);

addButton(panel2,"7",numActionListener,Color.blue);

addButton(panel2,"8",numActionListener,Color.blue);

addButton(panel2,"9",numActionListener,Color.blue);

addButton(panel2,"÷",newSigns(),Color.red);

addButton(panel2,"sqrt",newSigns(),Color.magenta);

addButton(panel2,"cos",newSigns(),Color.magenta);

addButton(panel2,"4",numActionListener,Color.blue);

addButton(panel2,"5",numActionListener,Color.blue);

addButton(panel2,"6",numActionListener,Color.blue);

addButton(panel2,"×",newSigns(),Color.red);

addButton(panel2,"1/x",newSigns(),Color.magenta);

addButton(panel2,"x^2",newSigns(),Color.magenta);

addButton(panel2,"1",numActionListener,Color.blue);

addButton(panel2,"2",numActionListener,Color.blue);

addButton(panel2,"3",numActionListener,Color.blue);

addButton(panel2,"-",newSigns(),Color.red);

addButton(panel2,"%",newSigns(),Color.magenta);

addButton(panel2,"n!

",newSigns(),Color.magenta);

addButton(panel2,"+/-",newClear(),Color.blue);

addButton(panel2,"0",numActionListener,Color.blue);

addButton(panel2,".",newDot(),Color.blue);

addButton(panel2,"+",newSigns(),Color.red);

addButton(panel2,"=",newSigns(),Color.magenta);

panel3.add(panel1,BorderLayout.NORTH);

panel3.add(panel2,BorderLayout.CENTER);

this.add(tf,BorderLayout.NORTH);

this.add(panel3);

pack();

this.setResizable(false);//窗口不可改变大小

this.setLocation(300,200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privatevoidaddButton(JPanelpanel,Stringname,ActionListeneraction,Colorcolor){

JButtonbt=newJButton(name);

panel.add(bt);//在面板上增加按钮

bt.setForeground(color);//设置前景(字体)颜色

bt.addActionListener(action);//增加监听事件

}

privatevoidgetResult(doublex)

{

if(oper=="+"){result+=x;}

elseif(oper=="-"){result-=x;}

elseif(oper=="×"){result*=x;}

elseif(oper=="÷"){result/=x;}

elseif(oper=="="){result=x;}

tf.setText(df.format(result));

}

classSignsimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

Stringstr=e.getActionCommand();

/*sqrt求平方根*/

if(str.equals("sqrt"))

{

doublei=Double.parseDouble(tf.getText());

if(i>=0)

{

tf.setText(String.valueOf(df.format(Math.sqrt(i))));

}

else

{

tf.setText("负数不能开平方根");

}

}

/*%求百分比*/

elseif(str.equals("%"))

{

tf.setText(df.format(Double.parseDouble(tf.getText())/100));

}

/*1/x求倒数*/

elseif(str.equals("1/x"))

{

if(Double.parseDouble(tf.getText())==0)

{

tf.setText("除数不能为零");

}

else

{

tf.setText(df.format(1/Double.parseDouble(tf.getText())));

}

}

/*sin求正弦函数*/

elseif(str.equals("sin"))

{

doublei=Double.parseDouble(tf.getText());

tf.setText(String.valueOf(df.format(Math.sin(i))));

}

/*cos求余弦函数*/

elseif(str.equals("cos"))

{

doublei=Double.parseDouble(tf.getText());

tf.setText(String.valueOf(df.format(Math.cos(i))));

}

/*n!

求阶乘*/

elseif(str.equals("n!

"))

{

doublei=Double.parseDouble(tf.getText());

if((i%2==0)||(i%2==1))//判断为整数放进行阶乘操作

{

intj=(int)i;//强制类型转换

intresult=1;

for(intk=1;k<=j;k++)

result*=k;

tf.setText(String.valueOf(result));

}

else

{

tf.setText("无法进行阶乘");

}

}

/*x^2求平方*/

elseif(str.equals("x^2"))

{

doublei=Double.parseDouble(tf.getText());

tf.setText(String.valueOf(df.format(i*i)));

}

else

{

if(flag)

{

IfResult=false;

}

if(IfResult)

{

oper=str;

}

else

{

getResult(Double.parseDouble(tf.getText()));

oper=str;

IfResult=true;

}

}

}

}

classClearimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

Stringstr=e.getActionCommand();

if(str=="C")

{

tf.setText("0");

IfResult=true;

result=0;

}

elseif(str=="+/-")

{

doublei=0-Double.parseDouble(tf.getText().trim());

tf.setText(df.format(i));

}

elseif(str=="Backspace")

{

if(Double.parseDouble(tf.getText())>0)

{

if(tf.getText().length()>1)

{

tf.setText(tf.getText().substring(0,tf.getText().length()-1));

//使用退格删除最后一位字符

}

else

{

tf.setText("0");

IfResult=true;

}

}

else

{

if(tf.getText().length()>2)

{

tf.setText(tf.getText().substring(0,tf.getText().length()-1));

}else{

tf.setText("0");

IfResult=true;

}

}

}

elseif(str=="CE")

{

tf.setText("0");

IfResult=true;

}

}

}

classNumimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

Stringstr=e.getActionCommand();

if(IfResult){

tf.setText("");

IfResult=false;

}

if(str=="π")

{

tf.setText(String.valueOf(Math.PI));

}

elseif(str=="e")

{

tf.setText(String.valueOf(Math.E));

}

else

{

tf.setText(tf.getText().trim()+str);

if(tf.getText().equals("0"))

{

tf.setText("0");

IfResult=true;

flag=true;

}

}

}

}

classDotimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

IfResult=false;

if(tf.getText().trim().indexOf(".")==-1)

{

tf.setText(tf.getText()+".");

}

}

}

publicstaticvoidmain(String[]args)

{

newCalculator().setVisible(true);

}

}

 

5类图

(3)Clear类图

(2)Signs类图

(1)Calculator类图

Calculator类

tf

panel1

Panel2

Panel3

IfResult

oper

result

df

calculator()

init()

addButton()

getResult()

main()

Signs类

actionPerformed()

Clear类

actionPerformed()

 

(5)Dot类

(4)Num类

Num类

actionPerformed()

Dot类

actionPerformed()

 

图4Clear类

图3Signs类

图6Dot类

图5Num类

图2Calculator类

 

6运行与测试

1、输入“3”

图7测试图——输入

2、输出结果:

求x^2

图8测试图——结果

3、输出结果:

求cosx

图9测试图——结果

4.输出结果:

Backspace

图10测试图——结果

7总结与展望

一周的课程设计紧张而忙碌的度过了,通过本次课程设计我学到了好多,也发现了自己的好多不足!

也真正体会了java的特点,非常的形象,真正的懂得了面向对象的含义。

在此次课设中通过查阅很多资料和同学的互相帮助,程序设计时在阶乘函数的处理中遇到不少麻烦,以后有时间也要继续思考,不过还是完成了此次任务。

另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。

通过这次课设我又学会了好多函数。

课程设计的部分程序是通过外部资料得到的,这使得我认识到查阅资料和开外多看书籍的重要性。

但不主张照搬,因为那不是我们自己成果,要自己通过得到的知识点去消化理解,真正的弄懂这个内容,当我真正的投入到课程设计的制作当中后,发觉课程设计并不枯燥乏味,相反充满了乐趣。

 

参考文献

[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:

北京希望电子出版社,2005

[2]白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4):

100~130.

[3]VB数据库管理范例:

[4]刘万军,郑少京,王松波,梁清华Java6程序设计,清华大学出版社

成绩评定

成绩教师签字

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

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1