结对作业
一、结对题目:手机计算器
二、题目介绍:
1. 进行图形界面设计
通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。
2. 实现计算器的基本功能
包括加减乘除四则运算、倒数、平方根及清除结果等功能。
手机计算器除了能算四则运算之外,还可以算阶乘,三角函数等,不过由于能力有限只能进行个位数的计算。
三、结对分工及过程:
我主要负责计算器运行界面的设计,我的结对成员主要负责计算器功能编写的设计。我们两人共同学习,编写该计算器源代码。然后每个人分别运行、测试。
四、 github地址:https://github.com/gaino1/jisuanqi
结对人博客园地址:http://www.cnblogs.com/yqm1576705573/p/4510280.html
五、源代码:
package 测试;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test{
public static void main(String [] agur){
jisuan frame = new jisuan();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}
}
class jisuan extends JFrame implements ActionListener{
private JMenuBar menubar = new JMenuBar();
private JMenu m1 = new JMenu("文件(field)");
private JMenu m2 = new JMenu("编辑(education)");
private JMenu m3 = new JMenu("帮助(help)");
private JMenuItem t1,t2,t3,t4,t5,t6,t7,t8;
private JPanel j1,j2;
private JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
private JButton kaigen,qiuyu,pingfang,zengxuan,yuxuan ,jiecheng,jia,jian,cheng,chu,dengyu;
private Container contenPane = getContentPane();
private JTextField p1,p2;
private JLabel j0;
private double tem1 = 0;
private double tem2 = 0;
private double tem3 = 0;
private int biaozhi=0;
public jisuan(){
super.setTitle("简单计算器");
super.setSize(640,200);
setJMenuBar(menubar);
menubar.add(m1);
menubar.add(m2);
menubar.add(m3);
t1 = new JMenuItem("打开");
t2 = new JMenuItem("全部清零");
t3 = new JMenuItem("打开圆周率");
t4 = new JMenuItem("退出");
m1.add(t1);
m1.add(t2);
m1.add(t3);
m1.add(t4);
t5 = new JMenuItem("简单的加减计算器");
t6 = new JMenuItem("画图");
t7 = new JMenuItem("写字本");
m2.add(t5);
m2.add(t6);
m2.add(t7);
t8 = new JMenuItem("关于....");
m3.add(t8);
j1 = new JPanel();
p1 = new JTextField(40);
p1.setEditable(false);
j0 = new JLabel("请输入要计算的数字:");
// p2 = new JTextField("请输入计算的数字",10);
// p3 = new JTextField("结果是",10);
// p3.setEditable(false);
j1.add(j0);
j1.add(p1);
// j1.add(p2);
// j1.add(p3);
j2 = new JPanel();
GridLayout f = new GridLayout(3,7);
j2.setLayout(f);
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");
// j3 = new JPanel();
j2.add(b0);
j2.add(b1);
j2.add(b2);
j2.add(b3);
j2.add(b4);
j2.add(b5);
j2.add(b6);
j2.add(b7);
j2.add(b8);
j2.add(b9);
jia = new JButton("+");
jian = new JButton("-");
cheng = new JButton("*");
chu = new JButton("/");
kaigen = new JButton("立方根");
qiuyu = new JButton("平方根");
pingfang = new JButton("平方");
zengxuan = new JButton("sin");
yuxuan = new JButton("cos");
jiecheng = new JButton("阶乘");
dengyu = new JButton("=");
j2.add(jia);
j2.add(jian);
j2.add(cheng);
j2.add(chu);
j2.add(kaigen);
j2.add(qiuyu);
j2.add(pingfang);
j2.add(zengxuan);
j2.add(yuxuan);
j2.add(jiecheng);
j2.add(dengyu);
contenPane.add(j2,BorderLayout.CENTER);
contenPane.add(j1,BorderLayout.NORTH);
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
kaigen.addActionListener(this);
qiuyu.addActionListener(this);
pingfang.addActionListener(this);
zengxuan.addActionListener(this);
yuxuan.addActionListener(this);
jiecheng.addActionListener(this);
dengyu.addActionListener(this);
t2.addActionListener(this);
t3.addActionListener(this);
t4.addActionListener(this);
t7.addActionListener(this);
t8.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b0){
p1.setText("0");
j1.add(p1);
tem1 = 0;
}
else if(e.getSource() == b1){
p1.setText("1");
j1.add(p1);
tem1 = 1;
}
else if(e.getSource() == b2){
p1.setText("2");
j1.add(p1);
tem1 = 2;
}
else if(e.getSource() == b3){
p1.setText("3");
j1.add(p1);
tem1 = 3;
}
else if(e.getSource() == b4){
p1.setText("4");
j1.add(p1);
tem1 = 4;
}
else if(e.getSource() == b5){
p1.setText("5");
j1.add(p1);
tem1 = 5;
}
else if(e.getSource() == b6){
p1.setText("6");
j1.add(p1);
tem1 = 6;
}
else if(e.getSource() == b7){
p1.setText("7");
j1.add(p1);
tem1 = 7;
}
else if(e.getSource() == b8){
p1.setText("8");
j1.add(p1);
tem1 = 8;
}
else if(e.getSource() == b9){
p1.setText("9");
j1.add(p1);
tem1 = 9;
}
if(e.getSource()==jia){
p1.setText(tem1+"+");
j1.add(p1);
tem2 = tem1;
biaozhi = 0; }
if(e.getSource()==jian){
p1.setText(tem1+"-");
j1.add(p1);
tem2 = tem1;
biaozhi = 1;
}
if(e.getSource()==cheng){
p1.setText(tem1+"*");
j1.add(p1);
tem2 = tem1;
biaozhi = 2;
}
if(e.getSource()==chu){
p1.setText(tem1+"/");
j1.add(p1);
tem2 = tem1;
biaozhi = 3;
}
if(e.getSource()==kaigen){
p1.setText(tem1+"立方根");
j1.add(p1);
tem2 = tem1;
biaozhi = 4;
}
if(e.getSource()==qiuyu){
p1.setText(tem1+"平方根");
j1.add(p1);
tem2 = tem1;
biaozhi = 5;
}
if(e.getSource()==pingfang){
p1.setText(tem1+"平方");
j1.add(p1);
tem2 = tem1;
biaozhi = 6;
}
if(e.getSource()==zengxuan){
p1.setText(tem1+"sina");
j1.add(p1);
tem2 = tem1;
biaozhi = 7;
}
if(e.getSource()==yuxuan){
p1.setText(tem1+"cosa");
j1.add(p1);
tem2 = tem1;
biaozhi = 8;
}
if(e.getSource()==jiecheng){
p1.setText(tem1+"!");
j1.add(p1);
tem2 = tem1;
biaozhi = 9;
}
if(e.getSource()==dengyu){
if(biaozhi ==0){tem3 = tem2+tem1;}
if(biaozhi ==1){tem3 = tem2-tem1;}
if(biaozhi ==2){tem3 = tem2*tem1;}
if(biaozhi ==3){tem3 = tem2/tem1;}
if(biaozhi ==4){tem3 = Math.cbrt(tem1);}
if(biaozhi ==5){tem3 =Math.sqrt(tem1);}
if(biaozhi ==6){tem3 = tem1*tem1;}
if(biaozhi ==7){tem3 = Math.sin(tem1);}
if(biaozhi ==8){tem3 = Math.cos(tem1);}
if(biaozhi ==9){tem3 = jisuanjiecheng(tem1);}
p1.setText("="+tem3);
j1.add(p1);
}
else if(e.getSource()==t2){
p1.setText("0.0");
j1.add(p1);
}
else if(e.getSource()==t3){
p1.setText(Math.PI+"");
j1.add(p1);
}
else if(e.getSource()==t4){
System.exit(0);
}
else if(e.getSource()==t5){
repaint();
this.jiandanjisuan();
}
else if(e.getSource()==t8){
System.out.println("这是一个简单的GUI应用程序");
}
else if(e.getSource()==t7){
repaint();
new jishiben(contenPane);
}
}
private double jisuanjiecheng(double a){
if(a==1) return 1;
else return (jisuanjiecheng(a-1)*a);
}
public void jiandanjisuan(){
p1 = new JTextField(20);
p2 = new JTextField(20);
j0 = new JLabel("输入你要计算的数字");
j1 = new JPanel();
j1.add(j0);
j1.add(p1);
j1.add(p2);
j2 = new JPanel();
jia = new JButton("+");
jian = new JButton("-");
cheng = new JButton("*");
chu = new JButton("/");
j2.add(jia);
j2.add(jian);
j2.add(cheng);
j2.add(chu);
contenPane.add(j2,BorderLayout.CENTER);
contenPane.add(j1,BorderLayout.NORTH);
}
}
class jishiben extends jisuan {
private Container contenPane1 = getContentPane();
private JTextArea text = new JTextArea();
private JButton baobutton,tuibutton;
private JLabel l;
private JPanel ji1,ji2,ji3;
public jishiben(Container cont ){
this.contenPane1 = cont;
ji1 = new JPanel();
ji2 = new JPanel();
ji3 = new JPanel();
l = new JLabel("请输入你要记录的文字");
baobutton = new JButton("保存为");
tuibutton = new JButton("退出");
ji1.add(l);
ji2.add(text);
ji3.add(baobutton);
ji3.add(tuibutton);
contenPane1.add(ji2,BorderLayout.CENTER);
contenPane1.add(ji1,BorderLayout.NORTH);
contenPane1.add(ji3,BorderLayout.SOUTH);
}
}
六、测试情况及截图:
七、体验与心得:
通过本次实验让我对JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法,有了进一步的了解。同时在实验过程中也发现了自己的许多不足,但通过查询对其有有了更深刻大大大的了解.同时,我意识到了要出色完成一项工作,合作意识非常重要。