当前位置:文档之家› 简易计算器Java实训报告

简易计算器Java实训报告

实训报告书实训名称:Java程序设计实训系(部):信息工程系专业班级:计算机科学与技术学生姓名:学号:指导教师:**完成日期:2015.12.11山东科技大学泰山科技学院课程实训报告书目录1 实训目的 (3)2 简易计算机的分析与设计 (3)2.1 系统功能描述 (3)2.2 系统模块设计 (3)2.3 数据库结构设计 (4)3 主要代码清单 (5)4 程序运行与测试 (9)5 实训总结 (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)转换将十进制数转换为二进制以及将二进制转换为十进制。

图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("除数不能为零");elsenum1=num1 / num2; }else if(chf){//乘方if(num2==0) num1=1;elsenum1=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<num2;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基本知识及软件开发的了解。

相关主题