Java课程设计报告之计算器原创.docx
- 文档编号:9422209
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:13
- 大小:68.47KB
Java课程设计报告之计算器原创.docx
《Java课程设计报告之计算器原创.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告之计算器原创.docx(13页珍藏版)》请在冰豆网上搜索。
Java课程设计报告之计算器原创
湖南理工学院
Java课程设计报告
院别:
计算机学院
题目:
简易计算器
专业班级:
计科1402班
学生姓名:
XXX
学号:
XXXXXXXX
指导教师:
XXX
完成时间:
2016年6月1日
1、课程设计目的
(1)熟练掌握java面向对象编程,进一步加深对java语言的理解和掌控。
(2)掌握Java图形界面的实现和相应事件的处理
(3)将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
2、设计题目分析
2.1、设计任务
利用JAVA语言设计一个简易的计算器,实现加,减,乘,除,平方,开方,数的倒数等功能。
2.2、课程设计要求
(1)对系统进行功能模块分析、控制模块分析正确;
(2)系统设计要实用;
(3)编程简练,可用,具有较好的健壮性;
(4)说明书、流程图要清楚。
3、课程设计内容
3.1、系统总体设计框架
面板容器(封装菜单栏)
面板容器(封装文本框)
面板容器(封装计算器操作区域)
面板容器(添加标签)
3.2、调试与测试
包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;(列出主要问题的出错现象、出错原因、解决方法及效果等)。
问题:
出现当输入第一个数据后,再输入第二个数据时,第一个数据没有存储在文本框显示出来
解决方法:
添加一个static的字符串变量t用于获取和存储文本框上的类容,然后再让文本框获取操作区输入的数据和字符串t的内容。
问题:
将文本框的算式字符串变量转换成算式。
解决方法:
调用importjavax.script.*;里面的eval()方法直接将算式字符串转换成计算式。
待解决问题:
当向文本框输入一个数据,然后再连续输入两个运算符号的时候,该计算器并未报错,也没有给出相应的解决方法。
这个问题虽然对程序整体而言并没有什么太大的影响,但却使得程序并不完善,有待改进。
4、设计心得与总结
通过此次的课程设计实践,我不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。
在实践中我们遇到了很多问题,但我都努力克服,并最终成功的完成了这次课程设计。
通过编写这个相对复杂的程序,我认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。
并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类的调用关系。
由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。
5、附录
源代码:
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.script.*;
classJiSuan
{JFramejr;
JButton[]b=newJButton[24];
JTextFieldshuru;
staticStringt="";
Colorc=newColor(244,164,96);
Colorc1=newColor(222,184,135);
Doubletest(Stringn)throwsScriptException
{
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEnginese=manager.getEngineByName("js");
Doubleresult=(Double)se.eval("0.0+"+n);
returnresult;
}
publicJiSuan()
{
jr=newJFrame("简易计算器");
jr.setBounds(800,200,320,600);
jr.getContentPane().setBackground(c1);
Imageim=(newImageIcon("计算器.jpg")).getImage();
jr.setIconImage(im);
jr.setLayout(null);
jr.setResizable(false);
Fontfnt=newFont("宋体",Font.ITALIC,15);
JLabela=newJLabel("版本:
1.02016/6/1作者:
计科二班袁庚亚");
a.setBackground(c1);
a.setOpaque(true);
a.setBounds(0,0,300,15);
a.setFont(fnt);
JPanelpan3=newJPanel();
pan3.setLayout(null);
pan3.setBounds(0,555,300,15);
jr.add(pan3);
pan3.add(a);
JMenuBarbar=newJMenuBar();
JPanelpan2=newJPanel();
pan2.setLayout(null);
pan2.setBounds(0,0,320,30);
jr.add(pan2);
pan2.add(bar);
bar.setBounds(0,0,320,33);
JMenuhelp=newJMenu("菜单");
help.setForeground(Color.red);
bar.add(help);
bar.setBackground(c1);
finalJMenuItemaboutapp=newJMenuItem("关于...");
finalJMenuItemexit=newJMenuItem("退出");
aboutapp.setForeground(Color.red);
exit.setForeground(Color.red);
help.add(aboutapp);
help.add(exit);
finalString[]s={"1/X","(",")","平方","π","C","←","√","7","8","9","/","4","5","6","*","1","2","3","-","0",".","+","="};
GridLayoutgrid=newGridLayout(6,4);
JPanelpan=newJPanel();
pan.setLayout(grid);
pan.setBounds(7,100,300,400);
for(inti=0;i<=23;i++)
{
b[i]=newJButton(s[i]);
pan.add(b[i]);
b[i].setBackground(Color.LIGHT_GRAY);
b[i].setFont(newFont("宋体",Font.PLAIN,28));
}
b[0].setFont(newFont("宋体",Font.PLAIN,20));
b[3].setFont(newFont("宋体",Font.PLAIN,20));
b[0].setForeground(Color.red);
b[0].setBackground(c);
b[1].setForeground(Color.red);
b[1].setBackground(c);
b[2].setForeground(Color.red);
b[2].setBackground(c);
b[3].setForeground(Color.red);
b[3].setBackground(c);
b[4].setForeground(Color.red);
b[4].setBackground(c);
b[5].setForeground(Color.red);
b[5].setBackground(c);
b[6].setForeground(Color.red);
b[6].setBackground(c);
b[7].setForeground(Color.red);
b[7].setBackground(c);
b[11].setForeground(Color.red);
b[11].setBackground(c);
b[15].setForeground(Color.red);
b[15].setBackground(c);
b[19].setForeground(Color.red);
b[19].setBackground(c);
b[21].setForeground(Color.red);
b[21].setBackground(c);
b[22].setForeground(Color.red);
b[22].setBackground(c);
b[23].setForeground(Color.red);
b[23].setBackground(c);
JPanelpan1=newJPanel();
pan1.setLayout(null);
shuru=newJTextField("");
pan1.add(shuru);
pan1.setBounds(7,40,300,50);
shuru.setBounds(0,0,300,50);
shuru.setBackground(Color.LIGHT_GRAY);
shuru.setFont(newFont("宋体",Font.PLAIN,25));
shuru.setHorizontalAlignment(JTextField.RIGHT);
jr.add(pan1);
jr.add(pan);
ActionListenerlis=newActionListener()
{
publicvoidactionPerformed(ActionEventm)
{
JButtonbut=(JButton)m.getSource();
try
{
for(inti=8;i<=22;i++)
{if(but==b[i])
shuru.setText(t+s[i]);
t=shuru.getText();
}
if(but==b[23])
{t=shuru.getText();
t=Double.toString(test(t));
shuru.setText(t);}
if(but==b[0])
{
t=shuru.getText();
t=Double.toString(1/test(t));
shuru.setText(t);
}
if(but==b[1])
{
shuru.setText(t+"(");
t=shuru.getText();
}
if(but==b[2])
{
shuru.setText(t+")");
t=shuru.getText();
}
if(but==b[3])
{t=Double.toString(test(t));
doublex=Double.parseDouble(t);
t=Double.toString(x*x);
shuru.setText(t);
}
if(but==b[4])
{shuru.setText(t+"3.1415926536");
t=shuru.getText();}
if(but==b[5])
{t="";
shuru.setText(t);
}
if(but==b[6])
{
t=t.substring(0,t.length()-1);
shuru.setText(t);
t=shuru.getText();
}
if(but==b[7])
{t=Double.toString(test(t));
doublex=Double.parseDouble(t);
if(x<0)t="负数不能开方!
";
if(x==0)t="0";
if(x>0)
{doubley=x;
doublelasty=Double.MAX_VALUE;
finaldoublej=1e-300;
while(Math.abs(y-lasty)>j)
{
lasty=y;
y=(y+x/y)/2;
}
t=Double.toString(y);
}
shuru.setText(t);
}
}
catch(Exceptione)
{
}
}
};
ActionListenercaidan=newActionListener()
{
publicvoidactionPerformed(ActionEventk)
{
JMenuItembut=(JMenuItem)k.getSource();
if(but==exit)System.exit(0);
if(but==aboutapp)
JOptionPane.showMessageDialog(jr,"简易计算器1.0\n开发所用到的编程语言:
JAVA\n功能:
四则运算,混合运算,开方运算,平方运算...",
"关于简易计算器...",JOptionPane.PLAIN_MESSAGE);
}
};
for(inti=0;i<=23;i++)
b[i].addActionListener(lis);
exit.addActionListener(caidan);
aboutapp.addActionListener(caidan);
jr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jr.setVisible(true);
}
}
publicclassmyapp
{publicstaticvoidmain(String[]args)
{
newJiSuan();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 报告 计算器 原创