简易计算器java实训报告.docx
- 文档编号:17738640
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:14
- 大小:306.87KB
简易计算器java实训报告.docx
《简易计算器java实训报告.docx》由会员分享,可在线阅读,更多相关《简易计算器java实训报告.docx(14页珍藏版)》请在冰点文库上搜索。
简易计算器java实训报告
实训报告书
实训名称:
Java程序设计实训
系〔部〕:
信息工程系
专业班级:
计算机科学与技术
学生姓名:
学号:
指导老师:
张民
完成日期:
山东科技大学泰山科技学院
实训课题
简易计算器
实训人姓名
同组人员
实训日期
2021.12.07至2021.12.11
实训成绩
指导老师评语
指导老师签名:
______________
_______年____月____日
简易计算机的设计与实现
1实训目的
通过本课程设计可以较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,进步自身的编程才能。
利用Java Applet图形界面首先开场设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,明晰可见,操作轻松。
给各个按钮进展算法,利用鼠标点击事件,当鼠标点击某个按钮时就开场执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进展输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
至于其中的进制转换功能的实现那么是直接调用Java中进制转换的函数,例如要将十进制转换成二进制那么可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。
当然了在输入数据时还要进展异常捕捉,防止越界的现象的发生,这也是Java语言强健性的表达!
2简易计算机的分析与设计
2.1系统功能描绘
此系统可以实现如下功能:
1〕可进展“+〞、“-〞、“*〞、“/〞以及混合运算。
2〕支持〔〕改变运算的优先级
3〕可进展二、十六和十进制数的互相转换
4〕支持复制和粘贴操作
2.2系统模块设计
〔1〕加法
两个数据进展加操作,可以为小数。
〔2〕减法
两个数据进展减操作,可以为负数相减。
〔
3〕乘法
两个数相乘操作。
〔4〕除法
两个数相除操作。
〔5〕开平方
对任意一个数进展开方运算,可以是小数。
〔6〕求余
对任意一个数进展求余运算。
〔7〕倒数
对任意一个数进展倒数运算。
〔8〕转换
将十进制数转换为二进制以及将二进制转换为十进制。
2.3数据库构造设计
图1计算机E-R图
图2流程图
3主要代码清单
这段代码主要是对程序的主框架进展相应的设置 super("简易计算器");
setSize(300,260);
this.setLayout(new BorderLayout());
jPanel1=new JPanel();
jPanel1.setLayout(new GridLayout(1,1)); //一行一列的布局
jPanel2=new JPanel();
jPanel2.setLayout(new GridLayout(6,4));
//六行四列的布局
resultField=new JTextField("0");
jPanel1.add(resultField);
this.add(jPanel1,BorderLayout.NORTH);
this.add(jPanel2,BorderLayout.CENTER);
设置数字按钮1到9并添加监控以及符号等的添加监控
s1=new JButton(" 1 ");
s1.addActionListener(this);
s2=new JButton(" 2 ");
s2.addActionListener(this);
s3=new JButton(" 3 ");
s3.addActionListener(this);
s4=new JButton(" 4 ");
s4.addActionListener(this);
s5=new JButton(" 5 ");
s5.addActionListener(this);
s6=new JButton(" 6 ");
s6.addActionListener(this);
s7=new JButton(" 7 ");
s7.addActionListener(this);
s8=new JButton(" 8 ");
s8.addActionListener(this);
s9=new JButton(" 9 ");
s9.addActionListener(this);
s0=new JButton(" 0 ");
s0.addActionListener(this);
b1=new JButton(" + ");
b1.addActionListener(this);
b2=new JButton(" - ");
b2.addActionListener(this);
b3=new JButton(" * ");
b3.addActionListener(this);
b4=new JButton(" / ");
b4.addActionListener(this);
b5=new JButton(" ^ ");
b5.addActionListener(this);
b6=new JButton(" 开方 ");
b6.addActionListener(this);
b7=new JButton(" % ");
b7.addActionListener(this);
b8=new JButton(" x!
");
b8.addActionListener(this);
b9=new JButton(" 1/x ");
b9.addActionListener(this);
f1=new JButton(" . ");
f1.addActionListener(this);
f2=new JButton(" = ");
f2.addActionListener(this);
f3=new JButton(" C ");
f3.addActionListener(this);
f4=new JButton(" 负 ");
f4.addActionListener(this);
f5=new JButton(" 退格 ");
f5.addActionListener(this);
jPanel2.add(f3);
jPanel2.add(b4);
jPanel2.add(b3);
jPanel2.add(f5);
jPanel2.add(s7);
jPanel2.add(s8);
jPanel2.add(s9);
jPanel2.add(b1);
jPanel2.add(s4);
jPanel2.add(s5);
jPanel2.add(s6);
jPanel2.add(b2);
jPanel2.add(s1);
jPanel2.add(s2);
jPanel2.add(s3);
jPanel2.add(b5);
jPanel2.add(s0);
jPanel2.add(f1);
jPanel2.add(f4);
jPanel2.add(b6);
jPanel2.add(b7);
jPanel2.add(b8);
jPanel2.add(b9);
jPanel2.add(f2);
〔3〕数据输入用方法num(int i)设计如下:
public void num(int i){
String s = null;
s=String.valueOf(i); //返回整数i的字符串表示形式
if(end){
//假如数字输入完毕,那么将文本框置零,重新输入
resultField.setText("0");
end=false;
}
if((resultField.getText()).equals("0")){
//假如文本框的内容为零,那么覆盖文本框的内容
resultField.setText(s);
}
else{
//假如文本框的内容不为零,那么在内容后面添加数字
str = resultField.getText() + s;
resultField.setText(str); }
以及用JFrame的方法actionPerformed(ActionEvent e)来获取数据
〔4〕符号运算及清零、退格的设计如下:
if(add){
// 加法 num1=num1 +num2; }
else if(sub){
//减法
num1=num1 - num2; }
else if(mul){
//乘法 num1=num1 * num2; }
else if(div){
//除法
if (num2==0) throw new ArithmeticException("除数不能为零");
else
num1=num1 / num2; }
else if(chf){
//乘方
if(num2==0) num1=1;
else
num1=Math.pow(num1, num2);
}
else if(evo){
//开方
if(num2<0) throw new ArithmeticException("被开方数不能小于零");
else num1=Math.sqrt(num2); }
else if(rec){
//倒数
if(num2<0) throw new ArithmeticException("分母不能小于零");
else num1=1/num2;
}
else if(per){
//百分
num1=num1/100.0; }
else if(pur){
//阶乘
if(num2<0) throw new ArithmeticException("负数不能求阶乘");
else for(int i=1;i num1=i*num1; } } resultField.setText(String.valueOf(num1)); end=true; } else if(e.getSource()==f3){ //实现清零 resultField.setText("0"); } else if(e.getSource()==f4){ //实现负号 if(resultField.getText()! ="0"){ resultField.setText("-"+resultField.getText()); } } else if(e.getSource()==f5){ //实现退格 int i; i=(resultField.getText()).length(); if(i==1){ resultField.setText("0"); } else { str=resultField.getText(); resultField.setText(str.substring(0,i-1)); } } } 图3主要程序图 4程序运行与测试 图4加法实现图 图5减法实现图 图6乘法实现图 图7除法实现图 图8二进制变十进制 图9十进制变二进制 5实训总结 经过一周的实习,本学期的java课程设计到此也算告一段落了,经过这次的学习,我学到了很多东西,在此根底上更加稳固了自己对java根本知识及软件开发的理解。 在做本工程是时候,会遇到很多小问题,比方说,在整个运算过程中要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类型来很好的控制运算符的应用! 此次课程设计让我更理解熟悉了Java中的图形用户界面和它的编程方式。 在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。 最大的收获就是对大学学习的总结和培养理解决困难的信心和才能,使我对所学知识可以融会贯穿,又不断丰富了新知识。 Java计算器设计使得我们对所学的专业课有了更为深入的认识,使得知识得到了稳固和进步。 在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐,理解更多有关java的知识,纯熟掌握java中常用类的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 计算器 java 报告