java计算器课程设计报告 包含代码.docx
- 文档编号:7279317
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:104
- 大小:290.46KB
java计算器课程设计报告 包含代码.docx
《java计算器课程设计报告 包含代码.docx》由会员分享,可在线阅读,更多相关《java计算器课程设计报告 包含代码.docx(104页珍藏版)》请在冰点文库上搜索。
java计算器课程设计报告包含代码
青岛理工大学琴岛学院
设计报告
课题名称:
简单计算器的使用
学院:
青岛理工大学琴岛学院
专业班级:
计算机使用技术092班
学号:
20090311023
学生:
刘书腾
指导教师:
代学卿、马金霞
青岛理工大学琴岛学院教务处
2011年7月7日
学生
刘书腾
指导教师
代学卿、马金霞
课题名称
简单计算器的使用
设计时间
设计地点
图书馆506
设计目的
一、课题介绍
1、课题要求
(1)使用图形用户界面:
一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;
(2)完成整数、实数的四则运算(加、减、乘、除);
(3)通过按钮点击实现数据的复位(清零);
(4)实数运算中小数位的精度一致。
2、课题设计思想
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
这是计算器中的一种:
简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:
点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;
还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。
二、详细设计过程
1、界面设计
界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用awt中的BorderLayout和GridLayout布局管理方式,窗体名称jisuan继承JFrameActionListener接口,并实现publicvoidactionPerformed(ActionEvente){}方法。
定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。
定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。
使用privateJButtongetJButton()方法添加按钮并给按钮命名,使用setFont(newFont("楷体",
Font.BOLD,30));setForeground(newColor(250,0,0));方法设置按钮的字体和字体颜色。
设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色,其图形界面如下图1-1所示:
图1-1
2、详细设计
根据课题设计的具体要求画出如下图所示的流程图:
图1-2
(1)这段代码主要是对程序的主框架进行相应的设置
Framef=newFrame("计算器");
f.setBackground(Color.lightGray);
f.setForeground(Color.blue);
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.setSize(350,300);//设置大小
f.setVisible(true);//设置为可视
(2)设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色
addMouseListener(newMouseListener(){
publicvoidactionPerformed(MouseEvente){
jButton.setForeground(newColor(0,100,0));}
publicvoidmouseClicked(MouseEvente){
jButton.setForeground(newColor(0,150,100));}
publicvoidmouseEntered(MouseEvente){
jButton.setForeground(newColor(0,0,250));}
publicvoidmouseExited(MouseEvente){
jButton.setForeground(newColor(250,0,0));}
publicvoidmousePressed(MouseEvente){
jButton.setForeground(newColor(0,250,0));}
publicvoidmouseReleased(MouseEvente){
jButton.setForeground(newColor(250,250,0));}});
(3)在基本的运算中重点介绍一下除法运算jButton3=newJButton("x/y");定义double变量c用来存放从除数文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果
jButton3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublec=Double.parseDouble(jTextField.getText());
doubled=Double.parseDouble(jTextField.getText());
doublea;
if(c==0){jTextField.setText("除数不能等于0");
}else{a=d/c;jTextField.setText(Double.toString(d));}}});
(4)这段代码主要为窗口关闭按钮编写程序
classcloseWinextendsWindowAdapter//为关闭按钮编写程序
{
publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
3、类的种类如图1-2显示
图1-3
三、程序的调试和运行结果说明,下面列举几种特殊情况下的具体操作
事例1:
当除数为0时,程序运行结果如图1-3:
图1-4
事例2:
4561+8715预计结果13276实际结果如图1-4:
图1-5
4、存在问题
因为第一次设计JAVA程序,有很多地方没有想到,这次设计计算器,也有很多没有完善的地方,比如:
计算器除数不能为0,但我们这次设计的计算器没考虑到这个方面,使得计算器在这种情况下不能正常计算,后经过老师的知道和查阅参考书,解决了这个问题,只需一行代码即可:
if(d3==0)tf.setText("除数不能为零")。
5、主要收获
这次的程序设计,从一个简单的计算器就可以看出JAVA的程序设计不是那么简单,仅仅是一个小小的计算器,就已经有很多需要注意的问题,一不小心就会出错,还会有很多地方没怎么明白,而计算器的设计是最简单的几个设计其中之一,可见,平时的知识积累是很重要的。
没有知识的积累,再简单的东西也不可能设计出来。
课程设计还让我们练习了动手能力,使我们平时学习的知识得以在实际中使用,不会学死书,活学活用,很大程度上提高了我们的能力,对以后的学习、工作、生活也会有一定的帮助。
通过此次的程序设计,让我了解了JAVA的更多知识,使平时的知识可以运用,更好的理解了JAVA这门课程。
课程设计要求
各专业学生应根据课程任教老师的要求,做出选题计划,并按下列要求完成课程设计任务。
一、学生应按照老师的要求完成规定的课程设计任务量。
二、课程设计报告书要求格式统一,字迹工整,语言简练,文字通顺,按课程设计格式要求书写。
程序清单不够填写时统一用A4纸补充并粘贴。
对不按格式要求书写或打印的报告书一律不收,也不得进行答辩和评分。
三、必须独立完成课程设计,不得相互抄袭。
在答辩和批阅过程中发现源程序相同或有大面积抄袭现象,课程任教老师有权通知学生重做,不得给予评分,并通知相关系部做出处理。
四、学生课程设计结束后应提交的材料:
(1)课程设计说明书(3000字以上);
(2)包含完整的、正确的源程序代码(含电子文档);
(3)答辨材料(介绍课程设计要点)。
参考文献情况
序号
名称
编著者
出版社
1
Java语言程序设计
郑莉
清华大学出版社
2
Java程序设计实训教程
张小波
冶金工业出版社
3
Java程序设计
魏衍君
中国商业出版社
4
Java使用和开发案例教程
徐谡
清华大学出版社
教师评价情况
指导老师评语:
指导老师:
_____________(签名)
日期:
年月日
学生答辩情况
答辩(组)评语:
主答辩老师:
____________(签名)
答辩日期:
年月日
综合成绩评定情况
综合评价等级:
__________________
注:
共分五个等级(1.优秀2、良好3、中等4、及格5、不合格)
课程设计考核情况
课程设计报告书目录
一、设计课题…………………………………………………5
二、设计目的…………………………………………………5
三、操作环境…………………………………………………5
四、设计场所(机房号、机器号或自己机器)……………5
五、设计过程(设计内容及主要程序模块)………………6
六、本次设计中用到的课程知识点(列出主要知识点)…16
七、设计过程中遇到的问题及解决办法……………………16
八、程序清单…………………………………………………18
一、设计课题及内容
课题:
计算器
内容:
该程序是一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:
加、减、乘、除基本算术运算;科学计算器的基本功能有:
三角函数、进制转换、对数、阶乘;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形边长。
二、设计目的
进一步掌握和理解java程序编程;
进一步掌握java语言的基本数据类型,熟悉定义变量和使用变量;
理解java图形用户界面的基本工作原理和界面设计;
巩固窗体的布局设计;
掌握窗体按钮控件和文本控件对事件的响应;
理解函数和方法的使用。
三、操作环境
操作系统:
MicrosoftWindowsXPProfessional
CPU:
IntelPentium43.06GHz
内存:
512M
四、设计场所
4306教室
自己笔记本
五、设计过程(设计内容及主要模块,不少于3000字)
1.设计要求
1)标准计算器:
加、减、乘、除、求平方根;
2)科学计算器:
进制转换、求解三角函数、对数运算、阶乘;
3)一元二次方程:
求一元二次方程的解;
4)勾股定理:
求直角三角边长。
2.总体设计
1)功能模块图,如图1。
图1功能模块图
2)一元二次方程界面图科学计算器界面,如图2。
图2一元二次方程界面图
3)标准计算器界面,如图3。
图3标准计算器界面图
4)勾股定理科学计算器界面图,如图4。
图4勾股定理界面图
5)科学计算器界面图,如图5。
图4科学计算器界面图
3.详细设计
1)流程图,如图6。
图6流程图
2)设置窗体
窗体名称biaozhun继承JFrame类和ActionListener接口,并实现publicvoid
actionPerformed(ActionEvente){}方法。
3)定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。
4)定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。
5)使用privateJButtongetJButton()方法添加按钮并给按钮命名,使用
setFont(newFont("楷体",Font.BOLD,30));setForeground(newColor
(250,0,0));方法设置按钮的字体和字体颜色。
6)设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色
addMouseListener(newMouseListener(){
publicvoidactionPerformed(MouseEvente){
jButton.setForeground(newColor(0,100,0));}
publicvoidmouseClicked(MouseEvente){
jButton.setForeground(newColor(0,150,100));}
publicvoidmouseEntered(MouseEvente){
jButton.setForeground(newColor(0,0,250));}
publicvoidmouseExited(MouseEvente){
jButton.setForeground(newColor(250,0,0));}
publicvoidmousePressed(MouseEvente){
jButton.setForeground(newColor(0,250,0));}
publicvoidmouseReleased(MouseEvente){
jButton.setForeground(newColor(250,250,0));}});
7)开根号运算,定义jButton2=newJButton("sqrt");对其设置监控,调用Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,
jButton2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublea=Double.parseDouble(jTextField.getText());
doubleb;
if(a<0){jTextField.setText("负数不能开平方");}
else{b=Math.sqrt(a);jTextField.setText(Double.toString(b));}}});
8)设置百分比按钮,jButton7=newJButton("%");使用变量i1来存放从文本框中读出的数据并转换成double类型,定义double类型变量z1,z1=i1/100实现求百分比运算,在使用jTextField.setText(Double.toString(z1))使其在文本框中输出结果
jButton7.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublei1=Double.parseDouble(jTextField.getText());
doublez1=i1/100;
jTextField.setText(Double.toString(z1));}});
9)设置求倒数运算,jButton14=newJButton("1/x");定义double变量c用来存放从文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果
jButton14.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublec=Double.parseDouble(jTextField.getText());
doubled;
if(c==0){jTextField.setText("除数不能等于0");
}else{d=1/c;jTextField.setText(Double.toString(d));}}});
10)定义相反数按钮,jButton16=newJButton("+/-");通过使用
0-Double.parseDouble(jTextField.getText().trim());使文本框中的数据变成其相反数
jButton16.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublei2=0-Double.parseDouble(jTextField.getText().trim());
jTextField.setText(Double.toString(i2));}});
11)等于号按钮,jButton19.setText("=");通过使用switch……case语句来控制,Operator变量在定义+、-、*、/按钮时对其赋值
jButton19.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doubledatatwo;
datatwo=Double.parseDouble(str);
switch(Operator){
case'+':
dataone+=datatwo;break;
case'-':
dataone-=datatwo;break;
case'*':
dataone*=datatwo;break;
case'/':
dataone/=datatwo;break;
default:
break;}
str=Double.toString(dataone);
jTextField.setText(str);}});
12)定义文本框textMemory,用来显示进行MS、M+操作时显示M用,使用
textMemory.setEditable(false);方法使textMemory文本框变成不可编辑。
13)定义文本框jTextField,用来显示运算结果
jTextField.addKeyListener(newKeyAdapter(){
publicvoidkeyTyped(KeyEvente){
if(e.getKeyChar()>='0'&&e.getKeyChar()<='9'){
str+=e.getKeyChar();
jTextField.setText(str);
}elseif(e.getKeyChar()==KeyEvent.VK_BACK_SPACE){
str=str.substring(0,str.length()-1);
jTextField.setText(str);
}elseif(e.getKeyChar()==KeyEvent.VK_ESCAPE){
str="";
jTextField.setText(str);}}});
14)定义jButton20、jButton21、jButton22、jButton23分别为MC、MR、MS、
M+,并且对按钮添加监听,计算器内部有一个存贮器,假设将其称为“寄数器”。
MS是将当前窗口数据写入“寄数器”,M+是将当前窗口数据和“寄数器”内的数据相加后再存入“寄数器”,MR是读出“寄数器”内的数据到窗口,MC是清除“寄数器”内的数据,使其为0。
按钮实现方法在publicvoidactionPerformed
(ActionEvente)中实现,
publicvoidactionPerformed(ActionEvente){
Objecttemp=e.getSource();
if(temp==jButton20){
memoryd=memoryi=0;
textMemory.setText("ZY");
textMemory.setFont(newFont("华文行楷",Font.BOLD,30));}
//'MS'的操作,将当前文本框内容保存入内存,显示'M'
if(temp==jButton22){//textMemory显示m的文本框
booleanisDot=false;
textMemory.setText("M");
textMemory.setFont(newFont("楷体",Font.BOLD,30));
for(inti=0;i if('.'==jTextField.getText().charAt(i)){ isDot=true; break;} //如果是double,则存入memoryd(double存储器) if(isDot==true){ memoryd=Double.parseDouble(jTextField.getText()); memoryi=0;//保证存储器中存放最新的值} //如果是int,则存入memoryi(int存储器) else{ memoryi=Integer.parseInt(jTextField.getText()); memoryd=0;//保证存储器中存放最新的值}} //'MR'的操作,将存储器中的信息输出 if(temp==jButton21){if(memoryd! =0) jTextField.setText(Double.toString(memoryd)); if(memoryi! =0) jTextField.setText(Integer.toString(memoryi));} //'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 if(temp==jButton23){ textMemory.setText("M"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java计算器课程设计报告 包含代码 java 计算器 课程设计 报告 包含 代码