java课程设计计算器实际与实现.docx
- 文档编号:24080993
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:8
- 大小:19.64KB
java课程设计计算器实际与实现.docx
《java课程设计计算器实际与实现.docx》由会员分享,可在线阅读,更多相关《java课程设计计算器实际与实现.docx(8页珍藏版)》请在冰豆网上搜索。
java课程设计计算器实际与实现
学号
xxxxxx
《面向对象程序设计》
课程设计报告
题目:
计算器设计与实现
专业:
班级:
姓名:
指导教师:
成绩:
xx
201x年x月xx日
1设计内容及要求
1.1设计内容
该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。
即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
可以进行简单的四则运算(加、减、乘、除,等)
1.2设计任务及具体要求
计算器的设计与实现,使学生巩固和加深以Java语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。
在日常生活中经常需要用到计算器,比如科学计算、数字计算、会计业务甚至是日常生活中的一些运算,当运算比较复杂时没有计算器就会显得很麻烦。
为了解决日常生活中的困难,特意设计了这个计算器系统。
2概要设计
2.1功能需求
在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有计算器就会显得很麻烦。
为了解决日常生活中的困难,特意设计了这个计算器系统。
在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。
除此之外还可以进行三角函数、指数、对数、平方等运算。
人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。
学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。
2.2系统的开发运行环境
本系统开发平台:
Java
本系统集成开发环境:
MyEclipse和UltraEdit
本系统运行环境:
windowsxp
3设计过程
3.1系统体系结构设计
本应用程序继承自框架类(Frame),此程序使用Frame布局管理器GridLayout,在Container容器中将单行文本框放在窗体上方区域,将选项、进制转换、帮助等按钮添加到菜单条。
包含各种按钮的面板Jpanel采用n行m列的网格布局,然后将数字按钮和运算按钮以及控制按钮添加到面板中。
同时注册事件监听器:
计算器总体结构如图1所示:
图1总体分析图
3.2系统功能模块
3.2.1系统功能描述
(1)基本运算,包括对整数和浮点数进行加、减、乘、除以及乘方、三角函数、指数等运算;
(2)进制运算,包括十进制和二进制数、十进制和八进制之间的转换;
(3)其他功能,包括对输入、输出结果的复制、粘贴、剪切和退格、清零等。
3.2.2系统流程图
根据系统要求和和系统功能的划分可以得到如图2所示的流程图:
图2程序流程图
3.2.3主要类设计
publicclassCalculatorextendsFrameimplementsActionListener;
WindowListener{}//Calculator是初始化界面,整体布局及响应用户的各种按钮操作
classWinClose
implements
WindowListener
{
publicvoidwindowClosing(WindowEvente)
}//WinClose是设置计算器整个窗体的显示、退出、隐藏的操作。
4设计结果与分析
4.1功能模块的划分
(1)界面模块:
实现计算器的运算界面,该界面表示数据的按钮、表示浮点型的按钮运算符按钮和实现显示运算结果界面以及菜单选项界面。
(2)监听器模块:
该模块为每一个按钮设置监听器,当鼠标点击按钮时通过监听器来判断该按钮代表的什么数据、实现什么运算功能、执行什么功能等。
(3)动作响应模块:
该模块通过按钮事件,进行对应的处理功能其主要是将运算数据,以浮点型类型保存在内存中,然后通过判断运算符类型对数据进行相应的运算,并将运算结果以String类型在结果文本区域中显示,其中包括菜单条里的进制转换和各选项菜单的动作响应。
(4)主函数模块:
调用已经设计好的函数,来实现计算器的全部功能。
4.2功能模块的实现
4.2.1计算器界面模块
在界面设计中,应用Frame框架,Frame是独立于浏览器的可运行的窗口,所以应用Frame框架来设计计算器界面比较合适。
在Frame框架的容器分别设置菜单条JmenuBar、文本区JTextField、然后在其中设置了五个面板分别都采用GirdLayout布局完成数字键盘和运算符的设置。
实现该界面的部分代码如下:
publicclassCalculatorextendsFrameimplementsActionListener,WindowListener
{privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;//保存+,-,*,/,=命令定义各种组件
JPanelpanel1=newJPanel();
panel1.setLayout(newGridLayout(1,5,4,4));//定义为GridLayout布局
this.add(panel1);
button_sqrt=newJButton("sqrt");
button_plusminus=newJButton("+/-");
panel1.add(button_sqrt);//面板的定义和按钮添加
4.2.2监听器模块
通过继承ActionListener和WindonListener接口来实现事件监听。
当Buttoin或Item对象上用鼠标进行点击时,将发送一个ActionEvent事件。
这个事件ActionEvent事件会被使用addAtionListener()方法注册的所有ActionListener的actionPerformed()方法接收,首先为所有具有时间动作的组件用addAtionListener(this)进行监听,当被监听的组件发生事件时就进行反馈,同时进行动作事件处理。
该模块的部分代码如下:
button_plusminus.addActionListener(this);
button_exp.addActionListener(this);
button_CE.addActionListener(this);//各按钮的监听器设置
this.addWindowListener(newWinClose());//注册窗口监听器
this.setVisible(true);
dialog.add(label_dialog);
dialog.addWindowListener(this);//为对话框注册窗口事件监听器
JMenuItemm1_exit=newJMenuItem("复制");
m1_exit.addActionListener(this);//设置菜单按钮的监听器
4.2.3动作响应模块
该模块通过publicvoidactionPerformed(ActionEvente)函数来实现动作响应事件。
首先通过e.getSource()来获得当前发生动作,然后根据不同的按钮产生不同动作响应,在实现动作响应之前定义了lastCommand、resul、start变量界面效果,其中若鼠标点击的是数字按钮则e.getSource()获取lastCommand,
if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||
if(start)displayField.setTiext("");//设置计算器初始为空
if(input.equals("+/-"))displayField.setText(displayField.getText()+"-")
if(!
input.equals("+/-"))当首先输入的符号是+/-时初始
if(input.equals("退格"))//退格键的实现方
if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));
lseif(input.equals("C"))//清零键的实现方
displayField.setText("0");
elseif(e.getActionCommand()=="复制")//各按钮的动作响应方式代码
displayField.copy();
elseif(e.getActionCommand()=="剪切")
elseif(e.getActionCommand()=="二进制")//二进制的转换
if(displayField.getText()==null)若为空则弹出对话框
JOptionPane.showMessageDialog(this,"不能为空!
请输入要进行转换的字符","消息对话框",JOptionPane.WARNING_MESSAGE);
elseif(e.getActionCommand()=="用法")//按'帮助'菜单栏用法的处理方法label_dialog.setText("sqrt,exp,log等键是先输运算符再输数字,其他运算是先输入数字再输入运算符\n");
elseif(e.getActionCommand()=="关于")//按'关于'菜单栏用法的处理方法
JOptionPane.showMessageDialog(label_dialog,"Java的计算器\n"+"JAVA课程设计"+"详情咨询mail:
605260019@\n","关于计算器",JOptionPane.INFORMATION_MESSAGE)
if(lastCommand.equals("+"))//各运算符的具体运算方法
result+=x;
publicvoidwindowClosing(WindowEvente)
if(e.getSource()==dialog)dialog.setVisible(false);//
隐藏对话框elseSystem.exit(0);
基于前面三块模板的功能,定义一个主函数来实现计算器的所有功能,同时定义一个windowClosing控制窗口关闭事件,其具体代码如下:
publicstaticvoidmain(Stringargs[])
Calculatorcalculator=newCalculator()
CalssWinCloseimplementsWindowListenerpublicvoidwindowClosing(WindowEvente)
4.3功能模块的测试
图3初始化界面
图4求平方根
图5cos运算
图6exp运算结果
图7加减运算
小结
设计,给人以创作的冲动,但也要为这次冲动承担一定的痛苦,但事后发现,这一切都是值得的,本次的JAVA课程设计让我对JAVA的理论知识又有深一步的了解,温故而知新,开始设计之时完全没头绪,对与理论学习不够扎实的我深感“书到用时方恨少”只好再把书上介绍的相关知识重新阅读一遍,对知识进行了全面而系统的梳理,遇到难处首先是苦思冥想寻求方法,再向同学请教,终于熟练掌握了基本理论知识,而且领悟了诸多平时学习难以理解掌握的的较难的知识,学会了如何思考的方式,找到了设计的灵感。
在反反复复的学习中,我终于作出一我涉及到的仅仅是计算器的一部分简单内容,离实际的需求肯定还有差距。
由于我的知识浅薄,经验不足及阅历颇浅,在设计方面还有很多不足,比如功能过少,界面不醒目等问题,我会在以后的学习过程中,根据具体要求不断的修改、完善,争取使系统慢慢趋于完美。
这次课程设计使我感到收获不小,促进了对理论知识的消化与吸收,也巩固和完善了本门课程的知识体系结构。
设计过程中遇到了不少的麻烦,在调试过程中也出现一些平时学习过程中没有遇到过的错误,通过在课程设计中老师耐心指导以及查阅相关资料,努力思考,一一解决了遇到的问题,通过这些问题,我对课本知识的理解也加深了。
终上所述,课程设计诚然是一门专业课,给我们很多专业知识以及很多专也技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道理、给了我很多思想、给了我莫大的空间,大学教育当如此!
5参考文献
[1]丁振凡主编.《Java语言实用教程》.北京:
北京邮电大学出版社.2007
[2]李刚主编.《疯狂Java讲义》.北京:
电子工业出版社.2008
[3]埃史尔主编.《Java编程思想》.北京:
机械工业出版社.2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 计算器 实际 实现