java课设计算器连续运算带源码.docx

上传人:b****0 文档编号:18321973 上传时间:2023-08-15 格式:DOCX 页数:27 大小:101.54KB
下载 相关 举报
java课设计算器连续运算带源码.docx_第1页
第1页 / 共27页
java课设计算器连续运算带源码.docx_第2页
第2页 / 共27页
java课设计算器连续运算带源码.docx_第3页
第3页 / 共27页
java课设计算器连续运算带源码.docx_第4页
第4页 / 共27页
java课设计算器连续运算带源码.docx_第5页
第5页 / 共27页
java课设计算器连续运算带源码.docx_第6页
第6页 / 共27页
java课设计算器连续运算带源码.docx_第7页
第7页 / 共27页
java课设计算器连续运算带源码.docx_第8页
第8页 / 共27页
java课设计算器连续运算带源码.docx_第9页
第9页 / 共27页
java课设计算器连续运算带源码.docx_第10页
第10页 / 共27页
java课设计算器连续运算带源码.docx_第11页
第11页 / 共27页
java课设计算器连续运算带源码.docx_第12页
第12页 / 共27页
java课设计算器连续运算带源码.docx_第13页
第13页 / 共27页
java课设计算器连续运算带源码.docx_第14页
第14页 / 共27页
java课设计算器连续运算带源码.docx_第15页
第15页 / 共27页
java课设计算器连续运算带源码.docx_第16页
第16页 / 共27页
java课设计算器连续运算带源码.docx_第17页
第17页 / 共27页
java课设计算器连续运算带源码.docx_第18页
第18页 / 共27页
java课设计算器连续运算带源码.docx_第19页
第19页 / 共27页
java课设计算器连续运算带源码.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java课设计算器连续运算带源码.docx

《java课设计算器连续运算带源码.docx》由会员分享,可在线阅读,更多相关《java课设计算器连续运算带源码.docx(27页珍藏版)》请在冰点文库上搜索。

java课设计算器连续运算带源码.docx

java课设计算器连续运算带源码

java课设__计算器__连续运算_带源码

课程设计(论文)说明书

题目:

Java课程设计

数学表达式计算程序学院:

计算机科学与工程学院专业:

信息管理与信息系统姓名:

邓浩学号:

1100340117指导教师:

王华登

2013年6月20日

一(java课程设计要求

在老师给定的几个任务选题中,选择难度适合自己的课题,通过自己对设计目标的理解,独立完成所选课题要求实现的功能目标,编写软件代码和设计报告。

也可以根据自己的兴趣自选题目,难度适中符合要求即可。

课设要求独立完成。

可相互讨论或查阅参考资料,但不得与他人雷同,不得直接从网上或其它地方抄袭代码。

验收时和最后提交代码后会进行是否抄袭的检验,发现雷同或抄袭者成绩为不及格。

二(数学表达式计算程序,基本功能如下:

1.由用户输入一个简单的四则运算表达式,求出其计算结果后显示。

2.允许在表达式中出现常用的数学函数,如绝对值、取整、三角函数、倒数、平方根、平方、立方等。

三(选题分析

当时选择这个题时的原因是,这个题目类似于我们之前在Java实验课上学习的“计算器”实验。

相对来说比较容易实现,所以选择做“数学表达式计算程序”。

能够在之前的基础上实现跟多的功能。

四(本题思路分析

1.初步结构设想:

要有独立的数字按钮、小数点、可以运行加减乘除、清零、对于数学函数简单的可执行平方、立方、倒数„„,可以进行退格操作。

2.界面结构设想:

3.运行构想:

通过监听,将信息存储到一个链表里,然后通过操作键与功能键制定函数,运行后将值显示出来。

五(代码

1.定义

publicclassComputerPadextendsFrameimplementsActionListener//界面设计继承于结构,对这个类进行监听

{//对所需要的进行定义,按键、链表、运算符„„

NumberButtonnumberButton[];

OperationButtonoprationButton[];

Button小数点按钮,正负号按钮,退格按钮,立方按钮,绝对值按钮,

求倒数按钮,等号按钮,清零按钮,平方按钮,求根按钮;

Panelpanel;//通过面板来进行绘制界面

JTextFieldresultShow;//显示框中出现结果显示

String运算符号[]={"+","-","*","/"};

LinkedList链表;//信息存储于链表中

boolean是否按下等号=false;//设置运算判定

以上为,对整个系统所需要的所有内容的,总定义。

2.界面的绘制

publicComputerPad()//创建界面

{

super("邓浩的计算器");

链表=newLinkedList();//用链表继承每个按钮

numberButton=newNumberButton[10];//制定10个数字按钮

for(inti=0;i<=9;i++)

{

numberButton[i]=newNumberButton(i);//赋值数字按钮

numberButton[i].addActionListener(this);//对每个数字按钮进行监听

}

oprationButton=newOperationButton[4];//制定4个功能按钮

for(inti=0;i<4;i++)

{

oprationButton[i]=newOperationButton(运算符号[i]);//对+—*/

进行添加

oprationButton[i].addActionListener(this);//对每个功能按钮进

行监听

}

小数点按钮=newButton(".");//逐个添加函数运算符

正负号按钮=newButton("+/-");

等号按钮=newButton("=");

求倒数按钮=newButton("1/x");

退格按钮=newButton("退格");

清零按钮=newButton("C");

平方按钮=newButton("平方");

立方按钮=newButton("立方");

求根按钮=newButton("?

");

绝对值按钮=newButton("绝对值");

清零按钮.setForeground(Color.red);//设置显示的颜色

退格按钮.setForeground(Color.red);

等号按钮.setForeground(Color.red);

求倒数按钮.setForeground(Color.blue);

正负号按钮.setForeground(Color.blue);

小数点按钮.setForeground(Color.blue);

平方按钮.setForeground(Color.blue);

立方按钮.setForeground(Color.blue);

求根按钮.setForeground(Color.blue);

绝对值按钮.setForeground(Color.blue);

退格按钮.addActionListener(this);//对各个函数按钮进行监听

清零按钮.addActionListener(this);

等号按钮.addActionListener(this);

小数点按钮.addActionListener(this);

正负号按钮.addActionListener(this);

求倒数按钮.addActionListener(this);

平方按钮.addActionListener(this);

立方按钮.addActionListener(this);

求根按钮.addActionListener(this);

绝对值按钮.addActionListener(this);

resultShow=newJTextField(10);//结果显示

resultShow.setHorizontalAlignment(JTextField.RIGHT);//建立水平方

向的队列、链表

resultShow.setForeground(Color.blue);//数字设置为蓝色

resultShow.setFont(newFont("TimesRoman",Font.PLAIN,14));//设置

显示字体与大小

resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));

//设置边界效果

resultShow.setBackground(Color.white);//设置背景

resultShow.setEditable(false);//设为这些显示是不能改变的

panel=newPanel();//建立平板

panel.setLayout(newGridLayout(4,6));//大小为4x5的

//横向逐个添加上去

panel.add(numberButton[1]);

panel.add(numberButton[2]);

panel.add(numberButton[3]);

panel.add(oprationButton[0]);

panel.add(清零按钮);

panel.add(平方按钮);

panel.add(numberButton[4]);

panel.add(numberButton[5]);

panel.add(numberButton[6]);

panel.add(oprationButton[1]);

panel.add(退格按钮);

panel.add(立方按钮);

panel.add(numberButton[7]);

panel.add(numberButton[8]);

panel.add(numberButton[9]);

panel.add(oprationButton[2]);

panel.add(求倒数按钮);

panel.add(求根按钮);

panel.add(numberButton[0]);

panel.add(正负号按钮);

panel.add(小数点按钮);

panel.add(oprationButton[3]);

panel.add(等号按钮);

panel.add(绝对值按钮);

add(panel,BorderLayout.CENTER);

add(resultShow,BorderLayout.NORTH);

//添加显示结果的窗口

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

setVisible(true);//可视的

setBounds(100,50,240,180);//设置大小

setResizable(false);//不能变大小

validate();

}

得到的界面效果是:

3.监听与数据处理

publicvoidactionPerformed(ActionEvente)//进行事件处理,监听事件为e

{

if(e.getSource()instanceofNumberButton)//e得到一个资源来自数字按钮

{

NumberButtonb=(NumberButton)e.getSource();//进行赋值给b

if(链表.size()==0)//未输入,显示空

{

intnumber=b.getNumber();

链表.add(""+number);

resultShow.setText(""+number);

是否按下等号=false;

}

elseif(链表.size()==1&&是否按下等号==false)//输入后显示一串数字

{

intnumber=b.getNumber();

Stringnum=(String)链表.getFirst();

Strings=num.concat(""+number);

链表.set(0,s);

resultShow.setText(s);

}

elseif(链表.size()==1&&是否按下等号==true)

{

intnumber=b.getNumber();

链表.removeFirst();//移至开头

链表.add(""+number);//在链表中加入输入的数字

是否按下等号=false;

resultShow.setText(""+number);

}

elseif(链表.size()==2)

{

intnumber=b.getNumber();

链表.add(""+number);

resultShow.setText(""+number);

}

elseif(链表.size()==3)

{

intnumber=b.getNumber();

Stringnum=(String)链表.getLast();

Strings=num.concat(""+number);//合并为一个字符串

链表.set(2,s);

resultShow.setText(s);

}

}

elseif(e.getSource()instanceofOperationButton)//如果得到e为运算键

{

OperationButtonb=(OperationButton)e.getSource();//把这个复制给b

if(链表.size()==1)//在链表中添加符号

{

Stringfuhao=b.get运算符号();

链表.add(fuhao);

}

elseif(链表.size()==2)//符号在第二个位子

{

Stringfuhao=b.get运算符号();

链表.set(1,fuhao);

}

elseif(链表.size()==3)

{

Stringfuhao=b.get运算符号();

Stringnumber1=(String)链表.getFirst();

Stringnumber2=(String)链表.getLast();

String运算符号=(String)链表.get

(1);

try

{

doublen1=Double.parseDouble(number1);//对n1,n2,n进行定义

doublen2=Double.parseDouble(number2);

doublen=0;

if(运算符号.equals("+"))//加法

{

n=n1+n2;

}

elseif(运算符号.equals("-"))//减法

{

n=n1-n2;

}

elseif(运算符号.equals("*"))//乘法

{

n=n1*n2;

}

elseif(运算符号.equals("/"))//除法

{

n=n1/n2;

}

链表.clear();

链表.add(""+n);

链表.add(fuhao);

resultShow.setText(""+n);//显示结果

}

catch(Exceptionee)//异常处理

{

}

}

}

elseif(e.getSource()==等号按钮)

{

是否按下等号=true;

if(链表.size()==1||链表.size()==2)//如果链表长度为1或2,直接显示

{

Stringnum=(String)链表.getFirst();

resultShow.setText(""+num);

}

elseif(链表.size()==3)//若链表长度为3需要运算

{

Stringnumber1=(String)链表.getFirst();

Stringnumber2=(String)链表.getLast();

String运算符号=(String)链表.get

(1);

try

{

doublen1=Double.parseDouble(number1);

doublen2=Double.parseDouble(number2);

doublen=0;

if(运算符号.equals("+"))

{

n=n1+n2;

}

elseif(运算符号.equals("-"))

{

n=n1-n2;

}

elseif(运算符号.equals("*"))

{

n=n1*n2;

}

elseif(运算符号.equals("/"))

{

n=n1/n2;

}

resultShow.setText(""+n);

链表.set(0,""+n);

链表.removeLast();//移动到表的最后

链表.removeLast();

}

catch(Exceptionee)//捕获异常

{

}

}

}

elseif(e.getSource()==小数点按钮)//当得到小数点时

{

if(链表.size()==0)

{

是否按下等号=false;

}

elseif(链表.size()==1)

{

Stringdot=小数点按钮.getLabel();//显示一个小点

Stringnum=(String)链表.getFirst();//与之前的组成一个数字

Strings=null;

if(num.indexOf(dot)==-1)//索引还没有点,就把点和数合并,

{

s=num.concat(dot);

链表.set(0,s);

}

else//不然就不变

{

s=num;

}

链表.set(0,s);

resultShow.setText(s);

}

elseif(链表.size()==3)

{

Stringdot=小数点按钮.getLabel();

Stringnum=(String)链表.getLast();

Strings=null;

if(num.indexOf(dot)==-1)

{

s=num.concat(dot);

链表.set(2,s);

}

else

{

s=num;

}

resultShow.setText(s);

}

}

elseif(e.getSource()==退格按钮)//退格键的功能操作

{

if(链表.size()==1)

{

Stringnum=(String)链表.getFirst();

if(num.length()>=1)

{

num=num.substring(0,num.length()-1);

链表.set(0,num);

resultShow.setText(num);

}

else

{

链表.removeLast();

resultShow.setText("0");

}

}

elseif(链表.size()==3)

{

Stringnum=(String)链表.getLast();

if(num.length()>=1)

{num=num.substring(0,num.length()-1);

链表.set(2,num);

resultShow.setText(num);

}

else

{

链表.removeLast();

resultShow.setText("0");

}

}

}

elseif(e.getSource()==正负号按钮)//正负号的功能操作

{

if(链表.size()==1)

{

Stringnumber1=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number1);

d=-1*d;

Stringstr=String.valueOf(d);//获得返回对象的值

链表.set(0,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

elseif(链表.size()==3)

{

Stringnumber2=(String)链表.getLast();

try

{

doubled=Double.parseDouble(number2);

d=-1*d;

Stringstr=String.valueOf(d);

链表.set(2,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()==求倒数按钮)//对于倒数的运算

{

if(链表.size()==1||链表.size()==2)

{

Stringnumber1=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number1);

d=1.0/d;

Stringstr=String.valueOf(d);

链表.set(0,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

elseif(链表.size()==3)

{

Stringnumber2=(String)链表.getLast();

try

{

doubled=Double.parseDouble(number2);

d=1.0/d;

Stringstr=String.valueOf(d);

链表.set(2,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()==平方按钮)//对平方运算

{

if(链表.size()==1||链表.size()==2)

{

Stringnumber1=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number1);

d=d*d;

Stringstr=String.valueOf(d);

链表.set(0,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

elseif(链表.size()==3)

{

Stringnumber2=(String)链表.getLast();

try

{

doubled=Double.parseDouble(number2);

d=d*d;

Stringstr=String.valueOf(d);

链表.set(2,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()==立方按钮)//对于立方的运算

{

if(链表.size()==1||链表.size()==2)

{

Stringnumber1=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number1);

d=d*d*d;

Stringstr=String.valueOf(d);

链表.set(0,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

elseif(链表.size()==3)

{

Stringnumber2=(String)链表.getLast();

try

{

doubled=Double.parseDouble(number2);

d=d*d*d;

Stringstr=String.valueOf(d)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2