收藏 分销(赏)

java专业课程设计计算器的设计和实现.doc

上传人:w****g 文档编号:2864474 上传时间:2024-06-07 格式:DOC 页数:15 大小:347.54KB 下载积分:8 金币
下载 相关 举报
java专业课程设计计算器的设计和实现.doc_第1页
第1页 / 共15页
java专业课程设计计算器的设计和实现.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
淮 海 工 学 院 计算机工程学院 课程设计汇报 设计名称: 面向对象课程设计 选题名称: 计算器设计和实现 姓 名: 学 号: 专业班级: 系 (院): 计算机工程学院 设计时间: 设计地点: 软件试验室、教室 成绩: 指导老师评语: 署名: 年 月 日 1.课程设计目标 《面向对象程序设计》是一门实践性很强计算机专业基础课程,课程设计是学习完该课程后进行一次较全方面综合练习。其目标在于经过实践加深学生对面向对象程序设计理论、方法和基础知识了解,掌握使用Java语言进行面向对象设计基础方法,提升利用面向对象知识分析实际问题、处理实际问题能力。 2.课程设计任务和要求: 课程设计可选择NetBeans、Eclipse、JBuilder等作为开发平台以提升开发效率,尽可能熟练掌握其中一个集成开发环境。提议采取UML建模技术进行系统分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计汇报中。 经过这次设计,要求掌握以下内容: 1) 面向对象技术中继承和多态(重载和覆盖)机制、多种修饰符使用 2) 类、包、接口定义和使用 3) 常见工具类和算法实现(数组、向量、字符串、链表) 4) Java常见标准GUI组件及其事件处理 5) Java异常处理机制 6) Java数据库连接技术 7) Java多线程技术和动画制作 8) Java网络编程 3.课程设计说明书 1、需求分析(用例图) 图1.用例图 课题:计算器设计和实现 功效分析:此计算器有连续运算功效,然而在大家使用计算器时轻易忘记之前是用8*2呢还是6*2,于是这个计算器多出历史检验功效,能够将以前式子显示在下方,一边检验正确是否。 2、概要设计 MultipleOperation类,用来实现连续运算类 MultipleOperation trans: String +operation (expr: String) Listl类,用来统计历史类 list Str: String Estr: String flag: String +toString () 3.具体设计 MultipleOperation trans: String +operation (expr: String) public class MultipleOperation { String trans; public void operation(String expr) { ScriptEngineManager manager=new ScriptEngineManager(); ScriptEngine engine =manager.getEngineByName("js"); try { trans= String.valueOf( engine.eval(expr)); } catch(Exception e) { trans="错误语法"; System.out.println(e); } } } list Str:String Estr: String flag: String +toString () public class list { String Str; String Estr; String flag; public list() { Str=""; Estr=""; flag=""; } @Override public String toString (){ //return A+F+B+D+C; return Str+"="+Estr; } } 4.编程实现 package Calculator; import java.awt.event.*; import javax.swing.*; import java.util.*; public class NewJFrame extends javax.swing.JFrame { int ClearNumber=1;//判定点击“=”后 点击数字按钮重置文本框 int I=0;//用来加入列表第一行提醒 int flag=0;//点击列表后 提取结果判定源 judge ju; private boolean number = true; private String equalOp = "="; // private CalculatorOp op = new CalculatorOp(); MultipleOperation CalcuOperation; list history; Vector<String> data=new Vector<String>(); // ActionListener numberListener = new NumberListener(); /* class NumberListener implements ActionListener { * public void actionPerformed(ActionEvent event) { * String digit = event.getActionCommand(); * if (number) { * textfield.setText(digit); * number = false; * } else { * textfield.setText(textfield.getText() + digit); * } * } * } * * ActionListener operatorListener = new OperatorListener(); * private void action(){ * number = true; * textfield.setText(""); * equalOp = "="; * op.setTotal("0"); * } * * class OperatorListener implements ActionListener { * public void actionPerformed(ActionEvent e) { * if (number) { * action(); * textfield.setText("0"); * } else { * number = true; * String displayText = textfield.getText(); * if (equalOp.equals("=")) { * op.A(); * op.setTotal(displayText); * history.D="="; * * * } else if (equalOp.equals("+")) { * op.add(displayText); * op.B(); * history.F="+"; * } else if (equalOp.equals("-")) { * op.subtract(displayText); * op.B(); * history.F="-"; * } else if (equalOp.equals("×")) { * op.multiply(displayText); * op.B(); * history.F="×"; * } else if (equalOp.equals("÷")) { * op.divide(displayText); * op.B(); * history.F="÷"; * } else if (equalOp.equals("^N")) { * op.B(); * history.F="^"; * int A; * int B; * int trans=1; * String C; * A=Integer.parseInt(history.A); * B=Integer.parseInt(history.B); * op.B(); * for(int i=0;i<B;i++) { * trans *=A; * } * op.power(String.valueOf(trans)); * } * textfield.setText("" + op.getTotalString()); * equalOp = e.getActionCommand(); * } * } * }*/ public class judge{ public void pan(){ if(ClearNumber==0){ textfield.setText(""); } } } /*public class CalculatorOp { * * private double total; * public CalculatorOp() { * total = 0; * } * public String getTotalString() { * return ""+total; * } * public void setTotal(String n) { * total = convertToNumber(n); * } * public void add(String n) { * total += convertToNumber(n); * } * public void subtract(String n) { * total -= convertToNumber(n); * } * public void multiply(String n) { * total *= convertToNumber(n); * } * * public void divide(String n) { * total /= convertToNumber(n); * } * * public void power (String n) { * total = convertToNumber(n); * } * * * public void A(){ * history.A=textfield.getText(); * } * public void B(){ * history.B=textfield.getText(); * } * * private double convertToNumber(String n) { * return Double.parseDouble(n); * } * }*/ /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); history=new list(); textfield.setText(null); CalcuOperation=new MultipleOperation(); ju=new judge(); this.setLocationRelativeTo(null); this.setResizable(false); } private void btnPointActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+"."); } private void btnClearActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText().substring(0, textfield.getText().length()-1)); } private void btnEqual1ActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(""); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"1"); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"2"); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"3"); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"4"); } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"5"); } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"6"); } private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"7"); } private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"8"); } private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"9"); } private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) { ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"0"); } private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+"+"); ClearNumber=1; } private void btnSubtractActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+"-"); ClearNumber=1; } private void btnMultiplyActionPerformed(java.awt.event.ActionEvent evt) { ClearNumber=1; textfield.setText(textfield.getText()+"*"); } private void btnDivideActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+"/"); ClearNumber=1; } private void btnEqualActionPerformed(java.awt.event.ActionEvent evt) { // CalcuOperation; String strans=""; history.Str=textfield.getText(); CalcuOperation.operation(textfield.getText()); textfield.setText(CalcuOperation.trans); history.Estr=CalcuOperation.trans; strans=history.Str+"="+history.Estr; if(I==0&&textfield.getText()!=null){ data.addElement("历史统计以下:"); I=1; } if(CalcuOperation.trans=="错误语法"){ ClearNumber=0; }else{ data.addElement(strans); jlist.setListData(data); textfield.setText(CalcuOperation.trans); } ClearNumber=0; } private void btnBrackets1ActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+"("); } private void btnBrackets2ActionPerformed(java.awt.event.ActionEvent evt) { textfield.setText(textfield.getText()+")"); } private void jlistValueChanged(javax.swing.event.ListSelectionEvent evt) { history.flag=String.valueOf(jlist.getSelectedValue()); textfield.setText( history.flag.substring(history.flag.indexOf("=")+1,history.flag.length())); ClearNumber=1; flag=1; } private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) { if(ClearNumber==0||flag==1) { String a=textfield.getText().substring(0, textfield.getText().indexOf(".")); textfield.setText("转换为二进制为: " +String.valueOf(Integer.toBinaryString(Integer.parseInt(a)))); } else { if(textfield.getText().indexOf(".")!=-1){ String a=textfield.getText().substring(0, textfield.getText().indexOf(".")); textfield.setText("转换为二进制为: " +String.valueOf(Integer.toBinaryString(Integer.parseInt(a)))); }else{ textfield.setText("转换为二进制为:" +String.valueOf(Integer.toBinaryString(Integer.parseInt(textfield.getText())))); } } ClearNumber=0; } private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) { if(ClearNumber==0) { String a=textfield.getText().substring(0, textfield.getText().indexOf(".")); textfield.setText("转换为八进制为: " +String.valueOf(Integer.toOctalString(Integer.parseInt(a)))); } else { if(textfield.getText().indexOf(".")!=-1){ String a =textfield.getText().substring(0, textfield.getText().indexOf(".")); textfield.setText("转换为八进制为: " +String.valueOf(Integer.toOctalString(Integer.parseInt(a)))); }else{ textfield.setText("转换为八进制为: " +String.valueOf(Integer.toOctalString(Integer.parseInt(textfield.getText())))); } } ClearNumber=0; } private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) { if(ClearNumber==0) { String a=textfield.getText().substring(0, textfield.getText().length()-2); textfield.setText("转换为十六进制为: " +String.valueOf(Integer.toHexString(Integer.parseInt(a)))); } else { if(textfield.getText().indexOf(".")!=-1){ String a =textfield.getText().substring(0, textfield.getText().indexOf(".")); textfield.setText("转换为十六进制为: " +String.va
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服