java课程设计王慧.docx
- 文档编号:10487540
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:30
- 大小:611.18KB
java课程设计王慧.docx
《java课程设计王慧.docx》由会员分享,可在线阅读,更多相关《java课程设计王慧.docx(30页珍藏版)》请在冰豆网上搜索。
java课程设计王慧
面向对象程序设计课程设计
题目:
保存计算过程的计算器
学院:
数学与信息管理系
专业:
信息管理与信息系统
姓名:
王慧
学号:
201330060221
班级:
1330602
指导教师:
司红伟
日期:
2015年5月
一、需求分析
当下计算机技术发展迅捷,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,然而Windows自带的计算器所提供的功能已经无法满足人民日益增长的需求,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程,能够提供给用户更加好的体验感受。
保存计算过程的计算器正是在、样的需求之下应运而生的,目的旨在帮助用户快速准确的得到计算结果。
本次实验课题使用了JAVA语言,开发平台选用Eclipse这个开源的编译软件。
二、设计目的
1、掌握JAVA语言编程的基础知识并能熟练运用。
2、熟悉类声明与对象的使用。
3、理解委托时间处理模型。
4、了解JAVA语言的图形用户界面JAVASWING的设计知识。
5、运用Eclipse编写简单计算器程序,并实现其功能。
6、掌握Windows环境下JDK的安装与配置。
三、
系统总体设计
四、详细设计
(1)CalculatorWindow类
代码:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.util.LinkedList;
importjava.io.*;
publicclassCalculatorWindowextendsJFrameimplementsActionListener{
NumberButtonnumberButton[];
OperationButtonoperationButton[];
JButton小数点操作,正负号操作,退格操作,等号操作,清零操作,sin;
JTextFieldresultShow;
JTextFieldshowComputerProcess;
JTextAreasaveComputerProcess;
JButtonsaveButton,copyButton,clearButton;
LinkedList
HandleDigithandledDigit;
HandleOperationhandleOperation;
HandleBackhandleBack;
HandleClearhandleClear;
HandleEqualityhandEquality;
HandleDothandleDot;
HandlePOrNhandlePOrN;
HandleSinhandleSin;
publicCalculatorWindow(){
setTitle("计算器");
JPanelpanelLeft,panelRight;
list=newLinkedList
resultShow=newJTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.pink);
resultShow.setFont(newFont("TimeRoman",Font.BOLD,20));
resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
showComputerProcess=newJTextField();
showComputerProcess.setHorizontalAlignment(JTextField.CENTER);
showComputerProcess.setFont(newFont("黑体",Font.BOLD,20));
showComputerProcess.setBackground(Color.cyan);
showComputerProcess.setEditable(false);
saveComputerProcess=newJTextArea();
saveComputerProcess.setEditable(false);
saveComputerProcess.setFont(newFont("宋体",Font.PLAIN,20));
numberButton=newNumberButton[10];
handleDigit=newHandleDigit(list,resultShow,showComputerProcess);
for(inti=0;i<=9;i++){
numberButton[i]=newNumberButton(i);
numberButton[i].setFont(newFont("黑体",Font.BOLD,30));
numberButton[i].addActionListener(handleDigit);
}
operationButton=newOperationButton[4];
handleOperation=newHandleOperation(list,resultShow,showComputerProcess,saveComputerProcess);
String运算符号[]={"+","-","*","/"};
for(inti=0;i<=4;i++){
operationButton[i]=newOperationButton(运算符号[i]);
operationButton[i].setFont(newFont("黑体",Font.BOLD,30));
operationButton[i].addActionListener(handleOperation);
}
小数点操作=newJButton(".");
handleDot=newHandleDot(list,resultShow,showComputerProcess);
小数点操作.addActionListener(handleDot);
正负号操作=newJButton("+/-");
handlePOrN=newHandlePOrN(list,resultShow,showComputerProcess);
正负号操作.addActionListener(handlePOrN);
等号操作=newJButton("=");
handleEquality=newHandleEquality(list,resultShow,showComputerProcess,saveComputerProcess);
等号操作.addActionListener(handleEquality);
sin=newJButton("sin");
handleSin=newHandleSin(list,resultShow,showComputerProcess,saveComputerProcess);
sin.addActionLisener(handleSin);
退格操作=newJButton("退格");
handleBack=newHandleBack(list,resultShow,showComputerProcess);
退格操作.addActionListener(handleBack);
清零操作=newJButton("C");
handleClear(list,resultShow,showComputerProcess);
清零操作.addActionListener(handleClear);
清零操作.setForeground(Color.red);
退格操作.setForeground(Color.red);
等号操作.setForeground(Color.pink);
sin.setForeground(Color.pink);
正负号操作.setForeground(Color.pink);
小数点操作.setForeground(Color.pink);
panelLeft=newJpanel();
panelRight=newJpanel();
panelLeft.setLayout(newBorderLayout());
JpanelcenterInLeft=newJpanel();
panelLeft.add(resultShow,BorderLayout.NORTH);
panelLeft.add(centerInLeft,BorderLayout.CENTER);
centerInLeft.setLayout(newGridLayout(4,5));
centerInLeft.add(numberButton[1]);
centerInLeft.add(numberButton[2]);
centerInLeft.add(numberButton[2]);
centerInLeft.add(operationButton[0]);
cebterInteft.add(清零操作);
centerInLeft.add(numberButton[4]);
centerInLeft.add(numberButton[5]);
centerInLeft.add(numberButton[6]);
centerInLeft.add(operationButton[1]);
cebterInteft.add(退格操作);
centerInLeft.add(numberButton[7]);
centerInLeft.add(numberButton[8]);
centerInLeft.add(numberButton[9]);
centerInLeft.add(operationButton[2]);
cebterInteft.add(sin);
centerInLeft.add(numberButton[0]);
cebterInteft.add(正负号操作);
cebterInteft.add(小数点操作);
cebterInteft.add(operationButton[3]);
cebterInteft.add(等号操作);
panelRight.setLayout(newBorderLayout());
panelRight.add(showComputerProcess,BorderLayout.NORTH);
saveButton=newJButton("保存");
copyButton=newJButton("复制");
clearButton=newJButton("清除");
saveButton.setToolTipText("保存计算过程到文件");
copyButton.setToolTipText("复制选中的计算过程");
clearButton.setToolTipText("清除计算过程");
saveButton.addActionListener(this);
copyButton.addActionListener(this);
clearButton.addActionListener(this);
panelRight.add(newJScrollPane(saveComputerProcess),BorderLayout.CENTER);
JPanelsouthInPanelRight=newJPanel();
southInPanelRight.add(saveButton);
southInPanelRight.add(copyButton);
southInPanelRight.add(clearButton);
panelRight.add(southInPanelRight,BorderLayout.SOUTH);
JSplitPanesplit=newJSplitPane
(JSplitPane.HORIZONTAL_SPLIT,panelLeft,panelRight);
add(split,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBounds(100,50,528,258);
validate();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==copyButton)
saveComputerProcess.copy();
if(e.getSource()==clearButton)
saveComputerProcess.setText(null);
if(e.getSource()==saveButton){
JFileChooserchooser=newJFileChooser();
intstate=chooser.showSaveDialog(null);
Filefile=chooser.getSelectedFile();
if(file!
=null&&state==JFileChooser.APPROVE_OPTION){
try{Stringcontent=saveComputerProcess.getText();
StringReaderread=newStringReader(content);
BufferedReaderin=newBufferedReader(read);
FileWriteroutOne=newFileWriter(file);
BufferedWriterout=newBufferedWriter(outOne);
Stringstr=null;
while((str=in.readLine())!
=null){
out.write(str);
out.newLine();
}
in.close();
out.close();
}
catch(IOExceptione1){}
}
}
}
publicstaticvoidmain(Stringargs[]){
newCalculatorWindow();
}
}
(2)NumberButton类
代码:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassNumberButtonextendsJButton{
intnumber;
publicNumberButton(intnumber){
super(""+number);
this.number=number;
setForeground(Color.pink);
}
publicintgetNumber(){
returnnumber;
}
}
(3)OperationButton类
代码:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassOperationButtonextendsJButton{
StringoperateSign;
publicOperationButton(Strings){
super(s);
operateSign=s;
setForeground(Color.red);
}
publicStringgetOperateSign(){
returnoperateSign;
}
}
(4)HandleDigit类
importjava.util.LinkedList;
importjavax.swing.*;
importjava.awt.event.*;
publicclassHandleDigitimplementsActionListener{
LinkedList
JTextFieldresultShow;
JTextFieldshowComputerProcess;
HandleDigit(LinkedList
this.list=list;
resultShow=t1;
showComputerProcess=t2;
}
publicvoidactionPerformed(ActionEvente){
NumberButtonb=(NumberButton)e.getSource();
if(list.size()==0){
intnumber=b.getNumber();
list.add(""+number);
resultShow.setText(""+number);
showComputerProcess.setText(""+list.get(0));
}
elseif(list.size()==1){
intnumber=b.getNumber();
Stringnum=list.getFirst();
Strings=num.concat(""+number);
list.set(0,s);
resultShow.setText(s);
showComputerProcess.setText(""+list.get(0));
}
elseif(list.size()==2){
intnumber=b.getNumber();
list.add(""+number);
resultShow.setText(""+number);
showComputerProcess.setText(""+list.get(0)+""+list.get
(1)+""+list.get
(2));
}
elseif(list.size()==3){
intnumber=b.getNumber();
Stringnum=list.getLast();
Strings=num.concat(""+number);
list.set(2,s);
resultShow.setText(s);
showComputerProcess.setText(""+list.get(0)+""+list.get
(1)+""+list.get
(2));
}
}
}
(5)HandleOperation类
importjava.util.LinkedList;
importjavax.swing.*;
importjava.awt.event.*;
publicclassHandleOperationimplementsActionListener{
LinkedList
JTextFieldresultShow,showComputerProcess;
JTextAreasaveComputerProcess;
HandleOperation(LinkedList
this.list=list;
resultShow=t1;
showComputerProcess=t2;
saveComputerProcess=t3;
}
publicvoidactionPerformed(ActionEvente){
OperationButtonb=(OperationButton)e.getSource();
if(list.size()==1){
Stringfuhao=b.getOperateSign();
list.add(fuhao);
showComputerProcess.setText(""+list.get(0)+""+list.get
(1));
}
elseif(list.size()==2){
Stringfuhao=b.getOperateSign();
list.set(1,fuhao);
showComputerProcess.setText(""+list.get(0)+""+list.get
(1));
}
elseif(list.size()==3){
StringnumOne=list.getFirst();
StringnumTwo=list.getLast();
String运算符号=list.get
(1);
StringmiddleProcess=numOne+""+运算符号+numTwo;
try{
doublen1=Double.parseDouble(numOne);
doublen2=Double.parseDouble(numTwo);
doubleresult=0;
if(运算符号.equals("+"))
result=n1+n2;
elseif(运算符号.equals("-"))
result=n1-n2;
elseif(运算符号.equals("*"))
result=n1*n2;
elseif(运算符号.equals("/"))
result=n1/n2;
Stringfuhao=b.getOperateSign();
list.clear();
list.add(""+result);
list.add(fuhao);
Stringpro=middleProcess+"="+result+""+list.get
(1);
showComputerProcess.setText(pro);
saveComputerProcess.append(""+middleProcess+"="+result+"\n");
resultShow.setText(""+result);
}
catch(Exceptionee){}
}
}
}
(6)HandleDot类
importjava.util.LinkedList;
importjavax.swing.*;
importjava.awt.event.*;
publicc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计