JAVA语言课程设计报告.docx
- 文档编号:6089566
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:16
- 大小:138.21KB
JAVA语言课程设计报告.docx
《JAVA语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA语言课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
JAVA语言课程设计报告
课程设计报告
程序设计语言-JAVA
开课院系:
经济管理学院
班级:
学生姓名:
学号:
2011.12
一、课设任务及要求----------------------------------------------------------------------------3
二、系统分析--------------------------------------------------------------------------------------3
三、系统总体设计或详细设计------------------------------------------------------------------4
四、程序代码---------------------------------------------------------------------------------------5
五、调试和测试记录以及运行结果展示------------------------------------------------------10
六、收获体会----------------------------------------------------------------------------------------15
JAVA语言课程设计报告
一、设计任务
/*将下列程序,改造成算器,要求
1增加乘、除、减法运算
2改正现行的近似计算,即现在用7.6+7.8=15.39999999这个问题
3(选作)进行乘方、开方、取模运算
4(选作)进行统计功能开发,功能自定义。
比如多个数的平均值求法等
5(选作)实现二进制运算
二、系统分析
第一步:
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,15个按钮,总体界面用BorderLayout布局。
第二步:
本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮加入到“Center”区域,
包含各种按钮的面板采用n行n列的网格布局,然后将数字按钮和运算符按钮添加到面板中。
同时注册按钮事件监听器。
如:
b=newJButton("1");//addbutten1
b.addActionListener(this);
pn1.add(b);
事件监听器中的事件处理方法voidactionPerformed(ActionEvente)完成主要按钮事件的处理。
事件处理分一下几种情况:
数字按钮事件(’’1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,“9”,”0”)、运算符按钮(”+”,”-“,”*”,”/”、”%”,)、小数点按钮(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、求平方根按钮(”sqr”)、清除键按钮(’’clear’’)、退出键按钮(”off”)等。
第三步:
布局和监听事件完成后,要考虑具体的计算思路以及如何去合理的布局代码编排方式,完成大致的代码雏形。
第四步:
对于所完成的代码,要进行实地的测试,修改编写过程中所出现的问题,使其更加完善。
例如:
7.6+7.8=15.39999999这个问题,该如何去解决。
第五步:
在完成实验报告的期间,对系统进行进一步的完善。
三、系统总体设计或详细设计(简单写出即可)
1.界面设计
界面设计要求用GUI,界面设计有用到swing组件的textField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:
2.功能介绍
这是计算器中的一种:
简单计算器,本实验用到了java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个功能:
点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除、求模、开方等运算
输入有误时可以按Clear撤消后可以重新输入新数据
点击off键可以直接退出该界面
3.程序流程图如下
四、程序代码
*/
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.math.BigDecimal;
publicclassCalculatorimplementsActionListener
{
Strings="",s1;
doubled1,d2;
JFramejf=newJFrame("计算器--王旭丽");
JTextFieldtf=newJTextField();
//实现计算器界面
publicvoidinit()
{
Containerc=jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT);//文本框
c.add(tf,"North");
JPanelpn3=newJPanel(newBorderLayout());
c.add(pn3,"Center");
JPanelpn2=newJPanel();//功能键界面(清除键和关闭键)
pn2.setLayout(newBorderLayout());
JPanelpn1=newJPanel();//运算界面
pn1.setLayout(newGridLayout(6,6));
pn3.add(pn2,"North");
pn3.add(pn1);
JButtonb=newJButton("CLEAR");
b.setToolTipText("请按清除键!
");//设置清零键
b.setForeground(Color.RED);//设置字体颜色
b.setBackground(Color.YELLOW);//设置背景色
b.addActionListener(this);
pn2.add(b,"Center");
b=newJButton("OFF");
b.setToolTipText("请按退出键!
");//设置off键,点击退出应用程序
b.addActionListener(this);
b.setForeground(Color.RED);
b.setBackground(Color.ORANGE);
pn2.add(b,"East");
b=newJButton("1");//addbutten1
b.addActionListener(this);
pn1.add(b);
b=newJButton("2");//addbutten2
b.addActionListener(this);
pn1.add(b);
b=newJButton("3");//addbutten3
b.addActionListener(this);
pn1.add(b);
b=newJButton("+");//addbutten+
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("4");//addbutten4
b.addActionListener(this);
pn1.add(b);
b=newJButton("5");//addbutten5
b.addActionListener(this);
pn1.add(b);
b=newJButton("6");//addbutton6
b.addActionListener(this);
pn1.add(b);
b=newJButton("-");//addbutten-
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("7");//addbutton7
b.addActionListener(this);
pn1.add(b);
b=newJButton("8");//addbutton8
b.addActionListener(this);
pn1.add(b);
b=newJButton("9");//addbutton9
b.addActionListener(this);
pn1.add(b);
b=newJButton("*");//addbutten*
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("0");//addbutton0
b.addActionListener(this);
pn1.add(b);
b=newJButton(".");//addbutton.
b.addActionListener(this);
pn1.add(b);
b=newJButton("^");//addbutten^
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("/");//addbutten/
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("平均数");//addbutten平均数
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("%");//addbutten%
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("sqr");//addbuttensqr
b.setForeground(Color.BLUE);
b.addActionListener(this);
pn1.add(b);
b=newJButton("=");//addbutton=
b.setForeground(Color.RED);
b.addActionListener(this);
pn1.add(b);
jf.setSize(500,500);//设置大小
jf.setVisible(true);//设置为可视
}
//处理按钮按下时的动作,进行相应的处理
publicvoidactionPerformed(ActionEvente)
{
Stringcommand=e.getActionCommand();
tf.setText(tf.getText()+command);
if(command.equals("CLEAR"))//清零键按下时返回初始状态
{
s1=null;
s="";
tf.setText("");//记录输入值的变量清空
}
elseif(command.equals("OFF"))System.exit(0);//off键关闭应用程序
elseif(!
command.equals("+")&&!
command.equals("=")&&!
command.equals("-")
&&!
command.equals("*")&&!
command.equals("/")&&!
command.equals("^")
&&!
command.equals("%")&&!
command.equals("sqr")&&!
command.equals("平均数")
)
{
if(s1==null)//判断输入是否为第一个
s1=command;
elses1+=command;
d1=newDouble(s1).doubleValue();//字符串型转换为双精度型,还原输入
try
{
BigDecimalbd1=newBigDecimal(d1+"");
BigDecimalbd2=newBigDecimal(d2+"");
if(s.equals("+"))
{d1=bd1.add(bd2).doubleValue();}
elseif(s.equals("-"))
{d1=bd1.subtract(bd2).doubleValue();}
elseif(s.equals("*"))
{d1=bd1.multiply(bd2).doubleValue();}
elseif(s.equals("/"))
{if(d2!
=0.0){
d1=bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue();}
else{Exceptionex;}
}elseif(s.equals("^"))
{
d1=Math.pow(d2,d1);
}
elseif(s.equals("sqr"))
{
d1=Math.sqrt(d1);
}
elseif(s.equals("%"))
{
d1=d2%d1;
}
elseif(s.equals("平均数"))
{
d1=d1/2;
}
}
catch(Exceptionex)
{
tf.setText("Error");//错误显示"Error"
System.out.println(ex.getMessage());
}
}
elseif(!
command.equals("="))//判断输入是否为+-*\
{
s=command;
s1=null;
d2=d1;
}
Else//输入=时,显示运算结果
{
tf.setText(tf.getText()+d1);
}
}
publicstaticvoidmain(String[]args)
{
newCalculator().init();
}
}
五、调试和测试记录以及运行结果展示
实例一:
加法运算7.8+7.6=15.4
注:
解决了7.6+7.8=15.39999999这个问题,通过增加精确度来实现的。
具体解决方式如下:
{
BigDecimalbd1=newBigDecimal(d1+"");
BigDecimalbd2=newBigDecimal(d2+"");
if(s.equals("+"))
{d1=bd1.add(bd2).doubleValue();
}
实例二:
减法运算6.5-3.56=2.94
代码如下:
BigDecimalbd1=newBigDecimal(d1+"");
BigDecimalbd2=newBigDecimal(d2+"");
if(s.equals("-"))
{d1=bd1.subtract(bd2).doubleValue();}
实例三:
乘法运算:
3.5*5=17.5
代码如下:
if(s.equals("*"))
{d1=bd1.multiply(bd2).doubleValue();}
实例四:
除法运算:
6.4/2=3.2
代码如下:
if(s.equals("/"))
{
if(d2!
=0.0)
{
d1=bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue();
}
else{Exceptionex;
}
实例五:
乘方运算:
2^3=8
代码如下:
if(s.equals("^"))
{d1=Math.pow(d2,d1);}
实例六:
开方运算:
sqr36=6
if(s.equals("sqr"))
{d1=Math.sqrt(d1);}
实例七:
取模运算:
5%3=2
具体代码实现如下:
if(s.equals("%"))
{d1=d2%d1;}
六、收获体会
终于做完了这次的实验报告,最初有一种如释重负的感觉,但平静过后,又有一些欣喜。
在做这次的《计算器设计与实现》的课程设计中,虽说看上去有些简单,但真真的具体去操作实现,确实是有些困难。
所以体会最深的莫过于“纸上得来终觉浅,绝知此事要躬行”,的确,在这次的亲身实践中,我觉得每件事都需要我们去真真的投入其中,去不断思考,才能不断促进我们的进步,成长。
在这次的《计算器的设计与实现》实验中,相对而言,它是一个相对简单的设计,它牵涉的知识面不是很多,功能相对简单,界面要求不是很高,相对适合初次承担java课程设计的我们。
起初,自己做起来无从着手,内心有一些紧张,但是在老师和同学的帮助下,同时翻看参考书籍,逐渐对代码有了一定的了解,之后,随着精力的逐渐投入,自己对此次实验的兴趣不断增加,促使着自己不断去完成并不断地完善,同时,自己也自乐其中。
从引言到最后的总结,这一步一步的走过来,其中的困难只有身为当事人的自己最清楚,困难已不是阻碍自己前行的绊脚石,最重要的是“心态”。
面对信不过行行色色的困难,我们不能选择去一味的逃避,而要学会去不断正视、克服。
在做这次的实验过程中,虽说有一些困难,但自己凭借不放弃的心态,通过参考资料或网上搜索,寻求解题思路,这样的慢慢摸索虽说需要一些时间,但老师给予的时间是充足的,满足了自己所需要的时间,所以这也相对无形之中给予了自己莫大的信心。
最终,功夫不负有心人,完成了部分的作业。
通过这次的课程设计,自己将本学期所学的JAVA知识得到了巩固和运用,同时相对有了自己更深层次的了解。
但是,感触最深的就是自己的知识面还是相对狭窄、思维收局限,需要不断地去开拓。
通过借助参考书籍和网络,我们看到了一个无尽的知识海洋,在遨游的同时,需要我们不断去汲取其中的营养,不断去充实自我,历练自我。
在这次的实验中,我们更进一步了解了JCreator软件的运用,对其也有了一定深入的认识,更明白了理论与实践相结合的重要性。
不过,由于自己的分析设计、程序的经验不足以及学术不精,部分的功能还不能完全实现,该系统还有许多需要完善的地方。
如界面不够美观、异常的处理、sqr的负数运用等问题,在最后的测试中还有一些问题,有待进一步的完善和提高。
对于此次实验中的瑕疵,希望老师给予更多的指导,不过,自己也会继续去学习、去解决。
通过这次的实验,自己学到了许多知识,对JAVA软件开发有了一定的认识,相信在以后的学习中,自己会不断地充实自我,去设计更完善的系统。
成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 课程设计 报告