java课程设计 计算器含全部代码.docx

上传人:b****8 文档编号:9652635 上传时间:2023-02-05 格式:DOCX 页数:92 大小:421.75KB
下载 相关 举报
java课程设计 计算器含全部代码.docx_第1页
第1页 / 共92页
java课程设计 计算器含全部代码.docx_第2页
第2页 / 共92页
java课程设计 计算器含全部代码.docx_第3页
第3页 / 共92页
java课程设计 计算器含全部代码.docx_第4页
第4页 / 共92页
java课程设计 计算器含全部代码.docx_第5页
第5页 / 共92页
点击查看更多>>
下载资源
资源描述

java课程设计 计算器含全部代码.docx

《java课程设计 计算器含全部代码.docx》由会员分享,可在线阅读,更多相关《java课程设计 计算器含全部代码.docx(92页珍藏版)》请在冰豆网上搜索。

java课程设计 计算器含全部代码.docx

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。

还有就是开始用Vectordata=newVector()泛型数据存入数组加入列表,发现存写入的数据不是更新的而是将同一个数据多次的写入列表,后来将泛型数据改为String型就正确了,但是让我沮丧的是我还是不知道为什么。

完整代码:

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")

////GEN-BEGIN:

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

展开阅读全文
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1