java课程设计 计算器含全部代码.docx
- 文档编号:2734492
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:92
- 大小:421.75KB
java课程设计 计算器含全部代码.docx
《java课程设计 计算器含全部代码.docx》由会员分享,可在线阅读,更多相关《java课程设计 计算器含全部代码.docx(92页珍藏版)》请在冰点文库上搜索。
java课程设计计算器含全部代码
课程设计报告
设计名称:
面向对象课程设计
选题名称:
计算器的设计与实现
姓名:
学号:
专业班级:
软件工程软件121
系(院):
计算机工程学院
设计时间:
设计地点:
软件实验室、教室
成绩:
指导教师评语:
签名:
年月日
1.课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。
2.课程设计任务与要求:
课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。
建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。
计算器的设计与实现
设计一个能实现计算器功能的Java程序,可以进行加、减、乘、除(另外可适当加上阶乘、正弦、余弦和指数)运算。
3.课程设计说明书
3.1用户需求
本次设计的是计算器,可以实现计算器的基本功能,在使用计算器时很多人容易忘掉之前是用8*2呢还是6*2,于是这个计算器多出历史检验的功能,可以将以前的式子显示在下方,一边检验正确与否,而且在运算完成后可以轻松点击历史显示调用结果。
图1.用例图
3.2详细设计
3.2.1类图
MultipleOperation类,用来实现连续运算的类
MultipleOperation
trans:
String
+operation(expr:
String)
用户类图
(1)
Listl类,用来记录历史的类
list
Str:
String
Estr:
String
flag:
String
+toString()
用户类图
(2)
MultipleOperation
trans:
String
+operation(expr:
String)
用户类图
(1)
list
Str:
String
Estr:
String
flag:
String
+toString()
用户类图
(2)
4.设计成果
4.1主要代码
(1)按键响应以及转换进制代码:
(2)运算
主要代码如下:
(3)将历史写入列表
代码如下:
4调试分析
开始时,在一次运算结束后,再次点击数字后,会在上次的结果后面直接接续,所以我定义intClearNumber;用来判定是否进行了运算,这样在运算后如果点击数字就是新的运算,如果点击运算符号则直接继续上次的结果继续运算
写了一个判定,
遇到的问题还有就是转换进制时,在运算后是有小数点的,所以利用ClearNumber再次做判定,如果式运算后则把“.”和它之后的去掉,转换前面的数,转换进制只有转换整数的功能,未写转换小数的方法,所以就算用户转换一个小数比如3.9则自动去掉小数部分转换3。
还有就是开始用Vector
完整代码:
Calculator类:
/*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packageCalculator;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
/**
*
*@authorhp
*/
classCalculatorextendsJFrame
{
privatefinalFontBIGGER_FONT=newFont("monspaced",Font.PLAIN,20);
privateJTextFieldtextfield;
privatebooleannumber=true;
privateStringequalOp="=";
privateCalculatorOpop=newCalculatorOp();
publicCalculator()
{
textfield=newJTextField("0",12);
textfield.setHorizontalAlignment(JTextField.RIGHT);
textfield.setFont(BIGGER_FONT);
ActionListenernumberListener=newNumberListener();
StringbuttonOrder="1234567890";
JPanelbuttonPanel=newJPanel();
buttonPanel.setLayout(newGridLayout(4,4,4,4));
for(inti=0;i { Stringkey=buttonOrder.substring(i,i+1); if(key.equals("")) { buttonPanel.add(newJLabel("")); } else { JButtonbutton=newJButton(key); button.addActionListener(numberListener); button.setFont(BIGGER_FONT); buttonPanel.add(button); } } ActionListeneroperatorListener=newOperatorListener(); JPanelpanel=newJPanel(); panel.setLayout(newGridLayout(4,4,4,4)); String[]opOrder={"+","-","*","/","=","C"}; for(inti=0;i { JButtonbutton=newJButton(opOrder[i]); button.addActionListener(operatorListener); button.setFont(BIGGER_FONT); panel.add(button); } JPanelpan=newJPanel(); pan.setLayout(newBorderLayout(4,4)); pan.add(textfield,BorderLayout.NORTH); pan.add(buttonPanel,BorderLayout.CENTER); pan.add(panel,BorderLayout.EAST); this.setContentPane(pan); this.pack(); this.setTitle("Calculator"); this.setResizable(false); this.setAlwaysOnTop(true); } privatevoidaction() { number=true; textfield.setText("0"); equalOp="="; op.setTotal("0"); } classOperatorListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ if(number){ action(); textfield.setText("0"); }else{ number=true; StringdisplayText=textfield.getText(); if(equalOp.equals("=")){ op.setTotal(displayText); }elseif(equalOp.equals("+")){ op.add(displayText); }elseif(equalOp.equals("-")){ op.subtract(displayText); }elseif(equalOp.equals("*")){ op.multiply(displayText); }elseif(equalOp.equals("/")){ op.divide(displayText); } textfield.setText(""+op.getTotalString()); equalOp=e.getActionCommand(); } } } classNumberListenerimplementsActionListener{ publicvoidactionPerformed(ActionEventevent){ Stringdigit=event.getActionCommand(); if(number){ textfield.setText(digit); number=false; }else{ textfield.setText(textfield.getText()+digit); } } } 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); } privatedoubleconvertToNumber(Stringn){ returnDouble.parseDouble(n); } } } 2CalcuOp类 /* *Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor. */ packageCalculator; /** * *@authorstudent */ publicclassCalcuOp{ Stringdisp; privatedoubletotal; publicCalcuOp(){ disp=""; 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); } privatedoubleconvertToNumber(Stringn){ returnDouble.parseDouble(n); } } 3fram类 /* *Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor. */ /* *fram.java * *Createdon2014-4-11,15: 15: 10 */ packageCalculator; importjava.awt.event.*; /** * *@authorstudent */ publicclassframextendsjavax.swing.JFrame{ privatebooleannumber=true; privateStringequalOp="="; //privateCalculatorOpop=newCalculatorOp(); CalcuOpop; ActionListeneroperatorListener=newOperatorListener(); StringdisplayText=""; StringdisplayText2=""; /**Createsnewformfram*/ publicfram(){ initComponents(); this.setVisible(true); } /*classNumberListenerimplementsActionListener{ publicvoidactionPerformed(ActionEventevent){ Stringdigit=event.getActionCommand(); if(number){ textfield.setText(digit); number=false; }else{ textfield.setText(textfield.getText()+digit); } } }*/ privatevoidaction(){ number=true; textfield.setText("0"); equalOp="="; op.setTotal("0"); } //运算的响应 classOperatorListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ if(number){ action(); textfield.setText("0"); }else{ number=true; StringdisplayText=textfield.getText(); if(equalOp.equals("=")) { op.setTotal(displayText); /*history.C=displayText; hislist.add(history); data.addElement(history); jlist.setListData(data);*/ }elseif(equalOp.equals("+")){ op.add(displayText); }elseif(equalOp.equals("-")){ op.subtract(displayText); }elseif(equalOp.equals("*")){ op.multiply(displayText); }elseif(equalOp.equals("/")){ op.divide(displayText); } textfield.setText(""+op.getTotalString()); equalOp=e.getActionCommand(); } } } /*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); } privateintconvertToNumber(Stringn){ returnInteger.parseInt(n); } }*/ /**Thismethodiscalledfromwithintheconstructorto *initializetheform. *WARNING: DoNOTmodifythiscode.Thecontentofthismethodis *alwaysregeneratedbytheFormEditor. */ @SuppressWarnings("unchecked") // initComponents privatevoidinitComponents(){ textfield=newjavax.swing.JTextField(); btnNum1=newjavax.swing.JButton(); btnNum2=newjavax.swing.JButton(); btnNum3=newjavax.swing.JButton(); btnNum4=newjavax.swing.JButton(); btnNum5=newjavax.swing.JButton(); btnNum6=newjavax.swing.JButton(); btnNum7=newjavax.swing.JButton(); btnNum8=newjavax.swing.JButton(); btnNum9=newjavax.swing.JButton(); jScrollPane1=newjavax.swing.JScrollPane(); jTextArea1=newjavax.swing.JTextArea(); btnNum0=newjavax.swing.JButton(); btnSubtract=newjavax.swing.JButton(); btnMultiply=newjavax.swing.JButton(); btnDivide=newjavax.swing.JButton(); btnClear=newjavax.swing.JButton(); btnAdd=newjavax.swing.JButton(); btnEqual=newjavax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setAlwaysOnTop(true); setBackground(newjava.awt.Color(153,255,255)); setCursor(newjava.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); btnNum1.setText("1"); btnNum1.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(java.awt.event.ActionEventevt){ btnNum1ActionPerformed(evt); } }); btnNum2.setText("2"); btnNum2.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(java.awt.event.ActionEventevt){ btnNum2ActionPerformed(evt); } }); btnN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java课程设计 计算器 含全部代码 java 课程设计 全部 代码
![提示](https://static.bingdoc.com/images/bang_tan.gif)