资源描述
课程设计报告书
课程名称 面向对象程序设计
设计题目 计算器设计与实现
年 月
1 设计时间
2 设计目
1、复习、巩固Java语言基本知识,进一步加深对Java语言理解和掌握;
2、能设计符合问题规定图形和顾客界面程序,掌握惯用组件事件接口;
3、培养团队合伙精神、创新意识及能力。
3设计任务
3.1 设计一种能实现计算器功能Java程序,可以进行加、减、乘、除(此外可恰当加上阶乘、正弦、余弦和指数)运算。
(1) 应具备相应界面,如下图所示:
图示3-1
(2) 操作符号定为:“+”,“—”,“*”,“/”,“.”,“sin”,“cos”等。
(3) 顾客通过点击面板中各种组件输入表达式,应在上方文本框中显示。
(4) 当顾客点击“=”时,文本框中之前内容应清空,直接显示表达式运算成果。
3.2 具备相应科学计算功能。
(1) 可以进行加、减、乘、除等某些简朴运算。
(2) 可以进行正弦、余弦运算。
(3) 可以进行阶乘与指数运算。
4 设计内容
4.1实验内容
该计算器程序设计先引入程序设计所需要包,代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
4.2 程序运营过程成果
125+235=运营成果:
图4-1
图4-2
图4-3
100/3运营成果:
图4-4
图4-5
图4-6
4.3 界面设计涉及了如下几种类:
public class Calculator extends JFrame implements ActionListener
public void actionPerformed(ActionEvent e)
public void Display(int i)
public static void main(String[] args) //主函数入口
{
new Calculator();
}
4.4 程序实当代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener{
JPanel pnl1,pnl2;
JTextField textfild;
GridLayout grdlyt;
JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bp,bd;
JButton badd,bsub,bmul,bdiv,bcos,bsin,bjiecheng,bpow,beql,bclear;
String str;
boolean end,add,sub,mul,div,cos,sin,jiecheng,pow;
double num1,num2;
Calculator()
{
super("计算器");
grdlyt=new GridLayout(3,7,6,6);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设立窗口关闭按钮
pnl1=new JPanel();
pnl2=new JPanel(grdlyt);
Container cp=this.getContentPane();
cp.add(pnl1,"North");
cp.add(pnl2,"Center");
this.setBounds(400,300,450,240);
textfild=new JTextField("0",30);
textfild.setHorizontalAlignment(JTextField.RIGHT);
//数字按钮区
b0=new JButton("0");
b1=new JButton("1");
b2=new JButton("2");
b3=new JButton("3");
b4=new JButton("4");
b5=new JButton("5");
b6=new JButton("6");
b7=new JButton("7");
b8=new JButton("8");
b9=new JButton("9");
bd=new JButton(".");
//操作按钮区
bdiv=new JButton("÷");
bmul=new JButton("×");
bsub=new JButton("-");
badd=new JButton("+");
bsin=new JButton("Sin");
bcos=new JButton("Cos");
bjiecheng=new JButton("n!");
bclear=new JButton("C");
bpow=new JButton("x^y");
beql=new JButton("=");
//添加按钮到面板并设立相应监听事件
pnl1.add(textfild);
pnl2.add(b0);b0.addActionListener(this);
pnl2.add(b1);b1.addActionListener(this);
pnl2.add(b2);b2.addActionListener(this);
pnl2.add(b3);b3.addActionListener(this);
pnl2.add(b4);b4.addActionListener(this);
pnl2.add(b5);b5.addActionListener(this);
pnl2.add(b6);b6.addActionListener(this);
pnl2.add(b7);b7.addActionListener(this);
pnl2.add(b8);b8.addActionListener(this);
pnl2.add(b9);b9.addActionListener(this);
pnl2.add(bd);bd.addActionListener(this);
pnl2.add(bdiv);bdiv.addActionListener(this);
pnl2.add(bmul);bmul.addActionListener(this);
pnl2.add(bsub);bsub.addActionListener(this);
pnl2.add(badd);badd.addActionListener(this);
pnl2.add(bsin);bsin.addActionListener(this);
pnl2.add(bcos);bcos.addActionListener(this);
pnl2.add(bjiecheng);bjiecheng.addActionListener(this);
pnl2.add(bpow);bpow.addActionListener(this);
pnl2.add(bclear);bclear.addActionListener(this);
pnl2.add(beql);beql.addActionListener(this);
this.setVisible(true);//显示界面
}
//监听按钮事件并解决按钮响应事件
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
Display(1);
else if(e.getSource()==b2)
Display(2);
else if(e.getSource()==b3)
Display(3);
else if(e.getSource()==b4)
Display(4);
else if(e.getSource()==b5)
Display(5);
else if(e.getSource()==b6)
Display(6);
else if(e.getSource()==b7)
Display(7);
else if(e.getSource()==b8)
Display(8);
else if(e.getSource()==b9)
Display(9);
else if(e.getSource()==b0)
Display(0);
else if(e.getSource()==badd)
{ add=true;sub=false; mul=false;div=false;
cos=false;sin=false;jiecheng=false;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bsub)
{
add=false;sub=true;mul=false;div=false;
cos=false;sin=false;jiecheng=false;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bmul)
{
add=false;sub=false;mul=true;div=false;
cos=false;sin=false;jiecheng=false;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bdiv)
{
add=false;sub=false;mul=false;div=true;
cos=false;sin=false;jiecheng=false;pow=false;
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bcos)
{
add=false;sub=false;mul=false;div=false;
cos=true;sin=false;jiecheng=false;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bsin)
{
add=false;sub=false;mul=false;div=false;
cos=false;sin=true;jiecheng=false;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bjiecheng)
{
add=false;sub=false;mul=false;div=false;
cos=false;sin=false;jiecheng=true;pow=false;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bpow)
{
add=false;sub=false;mul=false;div=false;
cos=false;sin=false;jiecheng=false;pow=true;
bd.setEnabled(true);
num1=Double.parseDouble(textfild.getText());//接受第一种字符并转化成double型
end=true;//输入结束
}
else if(e.getSource()==bclear)
{
bd.setEnabled(true);
textfild.setText("0");
}
else if(e.getSource()==bd)
{
str=textfild.getText();
str+=".";
textfild.setText(str);
bd.setEnabled(false);
}
else if(e.getSource()==beql)
{
bd.setEnabled(true);
num2=Double.parseDouble(textfild.getText());//接受第二个字符并转化成double型
if(add){num1=num1 + num2;}
else if(sub){num1=num1 - num2;}
else if(mul){num1=num1*num2;}
else if(div)
{ if(num2==0)
{
textfild.setText("输入非法");
return;
}
num1=num1/num2;
}
else if(cos){num1=Math.cos(num1);}
else if(sin){num1=Math.sin(num1);}
else if(jiecheng){ num1=funjiecheng(num1);}
else if(pow){num1=Math.pow(num1,num2);}
textfild.setText(String.valueOf(num1));//把所得成果显示在文本框
end=true;
}
}
public double funjiecheng(double num)//阶乘计算
{
double sum=1;
double i;
for(i=num;i>0;i--){
sum=sum*i;}
return sum;
}
public void Display(int i) //textfild显示按钮输入
{
String s = null;
s=String.valueOf(i);
if(end)//如果数字输入结束,则将文本框置零,重新输入
{
textfild.setText("0");
end=false;
}
if((textfild.getText()).equals("0"))//如果文本框内容为零,则覆盖文本框内容
{
textfild.setText(s);
}
else//如果文本框内容不为零,则在内容背面添加数字
{
str=textfild.getText() + s;
textfild.setText(str);
}
}
public static void main(String[] args) //主函数入口
{
new Calculator();
}
}
5 总结与展望
通过这次实验,我结识到了面向对象编程基本思想,Java是一门先进编程语言,具备面向对象、与平台关于,安全、稳定和多线程等特点。理解了Java编程流程,学会了用Java语言编写简朴软件,增强了我对学习Java兴趣。通过查资料更是明白了诸多函数用法,解决了生活中诸多问题。在课堂上学习中不明白、没掌握、结识不深刻,通过自己动手实践,均有理解答。
通过一种学期Java学习,对Java编程有了一定结识。在做这个课程设计时候,刚开始感觉自己无从下手,不懂得该怎么开始,最后运用网络资源和查阅图书馆书籍,在教师和同窗指引与讨论之下,通过一段时间终于完毕了这个设计。编程过程中,总体设计重要是窗口与组件应用,详细执行则是运用Java语言设计算法,而难点也在算法设计上。当程序运营结束都看到弹出计算器界面时,感到很开心,虽然只是一种小小东西,但却是自己小小成就,从中学到了诸多知识,对Java也多了一分学习兴趣,也通过这次程序设计感觉到自己平时对于编程十级操作贫乏,没有把课本上知识结合实际应用起来。没有真正掌握牢固,在咱们对程序编写以及对查找错误过程中使咱们更细心,为咱们后来工作学习打下了较好基本。
参照文献
[1] 屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:北京但愿电子出版社,
[2] 白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,,10(4):100~130.
[3] Jiang Guo,Yuehong Liao,Behzad Parviz.A Survey of J2EE Application Performance Management Systems[J],Proceedings of the IEEE International Conference on Web Services (ICWS'04),.6(5):17~32.
[4] VB数据库管理范例:
[5] java就业培训教程 .张孝祥 .北京:清华大学出版社,
[6] java编程思想 陈昊鹏 饶若男等译 .北京:机械工程出版社,
[7] java2应用编程150例 张晨 付冰 赵军等 北京:电子工业出版社,
[8] java课程设计 耿祥义 北京:清华大学出版社,
成绩评估
成绩 教师签字
展开阅读全文