java课程设计计算器的制作.docx
《java课程设计计算器的制作.docx》由会员分享,可在线阅读,更多相关《java课程设计计算器的制作.docx(5页珍藏版)》请在冰豆网上搜索。
java课程设计计算器的制作
java课程设计计算器的制作
河北工程大学科信学院JAVA课程设计说明书计算器的设计专业班级班课设题目学生姓名学生学号指导教师提交日期2一、内容摘要:
运用本学期所学知识设计一个能够完成简单四则运算的计算器;以Myeclipse作为开发环境,结合之前所学的Java基础知识共同完成。
该计算器的计算结果保留了两位小数;这里简单介绍设计思想:
构造出一个界面,然后往面板上粘贴各个组件,包括按钮、标签、文本框等。
二、设计目的:
通过课程设计加深对Java程序设计的理解,掌握Java程序开发的基本方法,把课堂上所学到的多个单元串到一起,提高解决问题和分析问题的能力,具体体现在以下几个方面:
1、了解Java开发一般应用程序的方法和步骤;2、进一步强化类的定义,掌握类的继承、接口;3、熟练掌握变量、数组的应用;4、熟悉图形用户界面中常用组件的使用,掌握事件处理机制;5、了解数据库连接技术JDBC、网络编程和多线程机制。
三、设计内容:
3.1需求分析3.1.1计算器的基本功能:
加法运算:
用+按钮进行运算;减法运算:
用-按钮进行运算;乘法运算:
用*按钮进行运算;除法运算:
用/按钮进行运算;清零键:
用清空按钮实现;3.2用户界面设计该计算器程序的设计:
用户界面包括Swing组件,不过程序中大都使用的是AWT组件.importjava.awt.*;在AWT组件中:
(1)、使用了面板和按钮:
mianban1,2,3;privateJPanelmianBan1=newJPanel();//面板1存放,窗口、和清空按钮chuangKou.add(mianBan1,BorderLayout.NORTH);//面板1,存放窗口的北边privateJPanelmianBan2=newJPanel();//存放其他按钮mianBan2.add(s7);mianBan2.add(s8);mianBan2.add(s9);mianBan2.add(jia);mianBan2.add(s4);mianBan2.add(s5);mianBan2.add(s6);mianBan2.add(jian);mianBan2.add(s1);mianBan2.add(s2);mianBan2.add(s3);mianBan2.add(cheng);mianBan2.add(s0);mianBan2.add(dian);mianBan2.add(deng);mianBan2.add(chu);mianBan2.setLayout(newGridLayout(4,4));//面板2的布局模式Buttons0,s1,s2,s3,s4,s5,s6,s7,s8,s9;Buttonjia,jian,cheng,chu;Button清空,=,.;privateJPanelmianBan3=newJPanel();//存放标签JLabelbiaoQian0=newJLabel(-----------------------屠式计算器------------------------);//标签mianBan3.add(biaoQian0);chuangKou.add(mianBan3,BorderLayout.SOUTH);//位于窗口南边
(2)、界面属性:
chuangKou.setVisible(true);//可见chuangKou.pack();//把容器包起来chuangKou.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//直接退出shuRuKuang.setHorizontalAlignment(JTextField.RIGHT);//编辑框文字右对齐//chuangKou.setResizable(false);//不能调大小chuangKou.setLocation(500,300);//坐标chuangKou.setSize(330,250);//大小(3)、给按钮添加背景颜色:
jia.setBackground(newColor(255,50,50));jian.setBackground(newColor(255,50,50));cheng.setBackground(newColor(255,50,50));chu.setBackground(newColor(255,50,50));dian.setBackground(newColor(60,200,50));deng.setBackground(newColor(60,200,50));s0.setBackground(newColor(60,200,50));s1.setBackground(newColor(60,200,50));s2.setBackground(newColor(60,200,50));s3.setBackground(newColor(60,200,50));s4.setBackground(newColor(60,200,50));s5.setBackground(newColor(60,200,50));s6.setBackground(newColor(60,200,50));s7.setBackground(newColor(60,200,50));s8.setBackground(newColor(60,200,50));s9.setBackground(newColor(60,200,50));qingKong.setBackground(newColor(200,250,100));//清除按钮颜色mianBan1.setBackground(newColor(200,200,255));//mianBan1颜色mianBan3.setBackground(newColor(200,200,255));//mianBan2颜色(4)、事件监听:
dian.addMouseListener(newOperationMouseListener());deng.addMouseListener(newOperationMouseListener());a、注册四则运算监听jia.addMouseListener(newYunSuanJianTing());jian.addMouseListener(newYunSuanJianTing());cheng.addMouseListener(newYunSuanJianTing());chu.addMouseListener(newYunSuanJianTing());b、注册数字监听事件s0.addMouseListener(newShuZiJianTing());s1.addMouseListener(newShuZiJianTing());s2.addMouseListener(newShuZiJianTing());s3.addMouseListener(newShuZiJianTing());s4.addMouseListener(newShuZiJianTing());s5.addMouseListener(newShuZiJianTing());s6.addMouseListener(newShuZiJianTing());s7.addMouseListener(newShuZiJianTing());s8.addMouseListener(newShuZiJianTing());s9.addMouseListener(newShuZiJianTing());c、清空监听器:
qingKong.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)shuRuKuang.setText();//清空编辑框d、数字按钮监听器:
privateclassShuZiJianTingimplementsMouseListenerpublicvoidmouseClicked(MouseEvente)if(shuRuKuang.getText().trim().equals(0))//如果文本框已经是0,结果还是0shuRuKuang.setText(((JButton)e.getSource()).getText().trim());shuRuKuang.setText(shuRuKuang.getText().concat(((JButton)e.getSource()).getText().trim()));publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)e、运算按钮监听器:
privateclassYunSuanJianTingimplementsMouseListener//如果输入的是运算符号,保存第一个结果和运算符号publicvoidmouseClicked(MouseEvente)num1=shuRuKuang.getText().trim();shuRuKuang.setText();operator=((JButton)e.getSource()).getText().trim();publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)f、小数点、等号监听器:
privateclassOperationMouseListenerimplementsMouseListenerpublicvoidmouseClicked(MouseEvente)if(e.getSource()==dian)Stringtext=shuRuKuang.getText().trim();//如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点if(text.indexOf(.)==-1){shuRuKuang.setText(text.concat(.));}elseif(e.getSource()==deng){//如果是等号if(!
operator.trim().equals()){if(!
shuRuKuang.getText().trim().equals()){doubleresult=0D;if(operator.equals(+)){//执行加法运算result=Double.parseDouble(num1)+Double.parseDouble(shuRuKuang.getText().trim());}elseif(operator.equals(-)){//减法运算result=Double.parseDouble(num1)-Double.parseDouble(shuRuKuang.getText().trim());}elseif(operator.equals(*)){//乘法运算result=Double.parseDouble(num1)*Double.parseDouble(shuRuKuang.getText().trim());}elseif(operator.equals(/)){//除法运算result=Double.parseDouble(num1)/Double.parseDouble(shuRuKuang.getText().trim());}//格式化最终结果,保留两位小数点shuRuKuang.setText(newDecimalFormat(0.00).format(result));四、测试4.1加法运算(实现49+57=106):
4.2减法运算(实现48-79=-31):
4.3乘法运算(684*211=144324):
4.4除法运算(251/51=4.92):
4.5清空:
任何情况下鼠标点击清空按钮都可以进行清空操作4.6计算器整界面运行效果:
五、设计缺陷:
5.1该计算器只能进行简单的加、减、乘、除四则运算,不能进行科学计算比如:
幂运算、对数运算、三角函数运算等。
5.2在进行运算的过程中,输入数值以后当按下加减乘除任意一个按钮时数值会自动清空,这带来的不便之处在于有时候会忘记输入的值。
5.3在不用鼠标的情况下不能对该计算器进行操作,把键盘上小键盘各个按键与界面各个按钮相对应起来操作会更加方便。
六、总结体会:
做完这次程序设计,我学到了很多知识,我选的是计算机程序,大家都说计算机程序比较简单。
可我觉得虽然简单,但也有许多不清楚的地方。
尤其是刚开始编写程序的时候,好多地方都出错,做着总是比想象的难。
学习JAVA半年了,没学习前只是听说过,现在对JAVA也有了一些更深入的了解。
比起C语言,JAVA语言的确先进了许多。
计算器的设计,首先就是考虑图形界面怎么分布。
在头脑里大概有了思路。
我想设计一个计算器除了可以进行基本的加减乘除外还具备求平方、倒数和其他之类的一些功能。
可到最后我也只是弄出了加减乘除。
我们用了十天的时间做程序设计,十天虽然不长,但我的收获挺大。
把以前好多不清晰的知识在老师的指导下,我慢慢懂了许多。
用了好七天的时间勉强的做了一个程序出来。
通过这次课程设计,我体会了JAVA广泛的运用性。
由于时间仓促还有很多有待完善的地方,在今后的学习中,我会加倍努力去做好。
附:
程序全部代码importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.text.DecimalFormat;publicclassJiSuanQi{publicJFramechuangKou=newJFrame(计算器);privateJPanelmianBan1=newJPanel();privateJPanelmianBan2=newJPanel();privateJPanelmianBan3=newJPanel();privateJTextFieldshuRuKuang=newJTextField(20);privateJButtonqingKong=newJButton(清空);privateJButtonjia=newJButton(+);privateJButtonjian=newJButton(-);privateJButtoncheng=newJButton(*);privateJButtonchu=newJButton(/);privateJButtondian=newJButton(.);privateJButtondeng=newJButton(=);privateJButtons0=newJButton(0);privateJButtons1=newJButton
(1);privateJButtons2=newJButton
(2);privateJButtons3=newJButton(3);privateJButtons4=newJButton(4);privateJButtons5=newJButton(5);privateJButtons6=newJButton(6);privateJButtons7=newJButton(7);privateJButtons8=newJButton(8);privateJButtons9=newJButton(9);privateStringnum1=;privateStringoperator=;publicstaticvoidmain(String[]args){newJiSuanQi();}publicJiSuanQi(){mianBan1.add(shuRuKuang);mianBan1.add(qingKong);chuangKou.add(mianBan1,BorderLayout.NORTH);mianBan2.add(s7);mianBan2.add(s8);mianBan2.add(s9);mianBan2.add(jia);mianBan2.add(s4);mianBan2.add(s5);mianBan2.add(s6);mianBan2.add(jian);mianBan2.add(s1);mianBan2.add(s2);mianBan2.add(s3);mianBan2.add(cheng);mianBan2.add(s0);mianBan2.add(dian);mianBan2.add(deng);mianBan2.add(chu);mianBan2.setLayout(newGridLayout(4,4));chuangKou.add(mianBan2,BorderLayout.CENTER);JLabelbiaoQian0=newJLabel(-----------屠式计算器----------);mianBan3.add(biaoQian0);chuangKou.add(mianBan3,BorderLayout.SOUTH);chuangKou.setVisible(true);chuangKou.pack();chuangKou.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);shuRuKuang.setHorizontalAlignment(JTextField.RIGHT);chuangKou.setLocation(500,300);chuangKou.setSize(330,250);jia.setBackground(newColor(255,50,50));jian.setBackground(newColor(255,50,50));cheng.setBackground(newColor(255,50,50));chu.setBackground(newColor(255,50,50));dian.setBackground(newColor(60,200,50));deng.setBackground(newColor(60,200,50));s0.setBackground(newColor(60,200,50));s1.setBackground(newColor(60,200,50));s2.setBackground(newColor(60,200,50));s3.setBackground(newColor(60,200,50));s4.setBackground(newColor(60,200,50));s5.setBackground(newColor(60,200,50));s6.setBackground(newColor(60,200,50));s7.setBackground(newColor(60,200,50));s8.setBackground(newColor(60,200,50));s9.setBackground(newColor(60,200,50));qingKong.setBackground(newColor(200,250,100));mianBan1.setBackground(newColor(200,200,255));mianBan3.setBackground(newColor(200,200,255));dian.addMouseListener(newOperationMouseListener());deng.addMouseListener(newOperationMouseListener());jia.addMouseListener(newYunSuanJianTing());jian.addMouseListener(newYunSuanJianTing());cheng.addMouseListener(newYunSuanJianTing());chu.addMouseListener(newYunSuanJianTing());s0.addMouseListener(newShuZiJianTing());s1.addMo