java课程设计 计算器的设计与实现.docx
- 文档编号:12488539
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:19
- 大小:228.07KB
java课程设计 计算器的设计与实现.docx
《java课程设计 计算器的设计与实现.docx》由会员分享,可在线阅读,更多相关《java课程设计 计算器的设计与实现.docx(19页珍藏版)》请在冰豆网上搜索。
java课程设计计算器的设计与实现
淮海工学院计算机工程学院
课程设计报告
设计名称:
面向对象课程设计
选题名称:
计算器的设计与实现
姓名:
学号:
专业班级:
系(院):
计算机工程学院
设计时间:
设计地点:
软件实验室、教室
成绩:
指导教师评语:
签名:
年月日
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)
publicclassMultipleOperation{
Stringtrans;
publicvoidoperation(Stringexpr)
{
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEngineengine=manager.getEngineByName("js");
try
{
trans=String.valueOf(engine.eval(expr));
}
catch(Exceptione)
{
trans="错误语法";
System.out.println(e);
}
}
}
list
Str:
String
Estr:
String
flag:
String
+toString()
publicclasslist{
StringStr;
StringEstr;
Stringflag;
publiclist()
{
Str="";
Estr="";
flag="";
}
@Override
publicStringtoString(){
//returnA+F+B+D+C;
returnStr+"="+Estr;
}
}
4.编程实现
packageCalculator;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.*;
publicclassNewJFrameextendsjavax.swing.JFrame{
intClearNumber=1;//判定点击“=”后点击数字按钮重置文本框
intI=0;//用来加入列表第一行的提示
intflag=0;//点击列表后提取结果的判定源
judgeju;
privatebooleannumber=true;
privateStringequalOp="=";
//privateCalculatorOpop=newCalculatorOp();
MultipleOperationCalcuOperation;
listhistory;
Vector
//ActionListenernumberListener=newNumberListener();
/*classNumberListenerimplementsActionListener{
*publicvoidactionPerformed(ActionEventevent){
*Stringdigit=event.getActionCommand();
*if(number){
*textfield.setText(digit);
*number=false;
*}else{
*textfield.setText(textfield.getText()+digit);
*}
*}
*}
*
*ActionListeneroperatorListener=newOperatorListener();
*privatevoidaction(){
*number=true;
*textfield.setText("");
*equalOp="=";
*op.setTotal("0");
*}
*
*classOperatorListenerimplementsActionListener{
*publicvoidactionPerformed(ActionEvente){
*if(number){
*action();
*textfield.setText("0");
*}else{
*number=true;
*StringdisplayText=textfield.getText();
*if(equalOp.equals("=")){
*op.A();
*op.setTotal(displayText);
*history.D="=";
*
*
*}elseif(equalOp.equals("+")){
*op.add(displayText);
*op.B();
*history.F="+";
*}elseif(equalOp.equals("-")){
*op.subtract(displayText);
*op.B();
*history.F="-";
*}elseif(equalOp.equals("×")){
*op.multiply(displayText);
*op.B();
*history.F="×";
*}elseif(equalOp.equals("÷")){
*op.divide(displayText);
*op.B();
*history.F="÷";
*}elseif(equalOp.equals("^N")){
*op.B();
*history.F="^";
*intA;
*intB;
*inttrans=1;
*StringC;
*A=Integer.parseInt(history.A);
*B=Integer.parseInt(history.B);
*op.B();
*for(inti=0;i
*trans*=A;
*}
*op.power(String.valueOf(trans));
*}
*textfield.setText(""+op.getTotalString());
*equalOp=e.getActionCommand();
*}
*}
*}*/
publicclassjudge{
publicvoidpan(){
if(ClearNumber==0){
textfield.setText("");
}
}
}
/*publicclassCalculatorOp{
*
*privatedoubletotal;
*publicCalculatorOp(){
*total=0;
*}
*publicStringgetTotalString(){
*return""+total;
*}
*publicvoidsetTotal(Stringn){
*total=convertToNumber(n);
*}
*publicvoidadd(Stringn){
*total+=convertToNumber(n);
*}
*publicvoidsubtract(Stringn){
*total-=convertToNumber(n);
*}
*publicvoidmultiply(Stringn){
*total*=convertToNumber(n);
*}
*
*publicvoiddivide(Stringn){
*total/=convertToNumber(n);
*}
*
*publicvoidpower(Stringn){
*total=convertToNumber(n);
*}
*
*
*publicvoidA(){
*history.A=textfield.getText();
*}
*publicvoidB(){
*history.B=textfield.getText();
*}
*
*privatedoubleconvertToNumber(Stringn){
*returnDouble.parseDouble(n);
*}
*}*/
/**
*CreatesnewformNewJFrame
*/
publicNewJFrame(){
initComponents();
history=newlist();
textfield.setText(null);
CalcuOperation=newMultipleOperation();
ju=newjudge();
this.setLocationRelativeTo(null);
this.setResizable(false);
}
privatevoidbtnPointActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+".");
}
privatevoidbtnClearActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText().substring(0,textfield.getText().length()-1));
}
privatevoidbtnEqual1ActionPerformed(java.awt.event.ActionEventevt){
textfield.setText("");
}
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"1");
}
privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"2");
}
privatevoidjButton3ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"3");
}
privatevoidjButton4ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"4");
}
privatevoidjButton5ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"5");
}
privatevoidjButton6ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"6");
}
privatevoidjButton7ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"7");
}
privatevoidjButton8ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"8");
}
privatevoidjButton9ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"9");
}
privatevoidjButton10ActionPerformed(java.awt.event.ActionEventevt){
ju.pan();
ClearNumber=1;
textfield.setText(textfield.getText()+"0");
}
privatevoidbtnAddActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+"+");
ClearNumber=1;
}
privatevoidbtnSubtractActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+"-");
ClearNumber=1;
}
privatevoidbtnMultiplyActionPerformed(java.awt.event.ActionEventevt){
ClearNumber=1;
textfield.setText(textfield.getText()+"*");
}
privatevoidbtnDivideActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+"/");
ClearNumber=1;
}
privatevoidbtnEqualActionPerformed(java.awt.event.ActionEventevt){
//CalcuOperation;
Stringstrans="";
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;
}
privatevoidbtnBrackets1ActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+"(");
}
privatevoidbtnBrackets2ActionPerformed(java.awt.event.ActionEventevt){
textfield.setText(textfield.getText()+")");
}
privatevoidjlistValueChanged(javax.swing.event.ListSelectionEventevt){
history.flag=String.valueOf(jlist.getSelectedValue());
textfield.setText(history.flag.substring(history.flag.indexOf("=")+1,history.flag.length()));
ClearNumber=1;
flag=1;
}
privatevoidjButton11ActionPerformed(java.awt.event.ActionEventevt){
if(ClearNumber==0||flag==1){
Stringa=textfield.getText().substring(0,textfield.getText().indexOf("."));
textfield.setText("转换为二进制为:
"
+String.valueOf(Integer.toBinaryString(Integer.parseInt(a))));
}
else{
if(textfield.getText().indexOf(".")!
=-1){
Stringa=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;
}
privatevoidjButton12ActionPerformed(java.awt.event.ActionEventevt){
if(ClearNumber==0){
Stringa=textfield.getText().substring(0,textfield.getText().indexOf("."));
textfield.setText("转换为八进制为:
"
+String.valueOf(Integer.toOctalString(Integer.parseInt(a))));
}
else{
if(textfield.getText().indexOf(".")!
=-1){
Stringa=textfield.getText().substring(0,textfield.getText().indexOf("."));
textfield.setText("转换为八进制为:
"
+String.valueOf(Integer.toOctalString(Integer.parseInt(a))));
}else{
textfield.setText("转换为八进制为:
"
+Strin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java课程设计 计算器的设计与实现 java 课程设计 计算器 设计 实现