资源描述
淮 海 工 学 院 计算机工程学院
课程设计汇报
设计名称: 面向对象课程设计
选题名称: 计算器设计和实现
姓 名: 学 号:
专业班级:
系 (院): 计算机工程学院
设计时间:
设计地点: 软件试验室、教室
成绩:
指导老师评语:
署名:
年 月 日
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
展开阅读全文