1.题目要求
- 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。
题目1:
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
能够自动生成四则运算练习题
可以定制题目数量
用户可以选择运算符
用户设置最大数(如十以内、百以内等)
用户选择是否有括号、是否有小数
用户选择输出方式(如输出到文件、打印机等)
最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
2.角色选择
- 驾驶员:林陆 领航员:王灵杰
3.程序代码
代码链接:coding
- 界面设计
看见题目要求界面设计,本着学习与好奇的兴趣,在网上学习了有关WindowBuilder的使用。
package org.eclipse.wb.swing;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import org.omg.PortableServer.RequestProcessingPolicyValue;
import javax.swing.JLabel;
import javax.swing.JCheckBox;
import java.awt.Font;
import java.awt.Panel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JTextArea;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.List;
import javax.swing.JButton;
import javax.swing.JToggleButton;
import javax.swing.JTextField;
import javax.swing.JList;
import java.awt.ScrollPane;
public class HelloWorld extends JFrame {
private JPanel contentPane;
private JTextField fanwei;
private JTextField shuliang;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
HelloWorld frame = new HelloWorld();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public HelloWorld() {
setTitle("\\u56DB\\u5219\\u8FD0\\u7B97\\u81EA\\u52A8\\u751F\\u6210");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JCheckBox chckbxNewCheckBox = new JCheckBox("\\u52A0\\u6CD5");
chckbxNewCheckBox.setFont(new Font("楷体", Font.PLAIN, 22));
contentPane.add(chckbxNewCheckBox, BorderLayout.WEST);
JCheckBox jiafa = new JCheckBox("\\u52A0\\u6CD5");
jiafa.setFont(new Font("楷体", Font.PLAIN, 20));
jiafa.setBounds(6, 6, 65, 23);
contentPane.add(jiafa);
JCheckBox jianfa = new JCheckBox("\\u51CF\\u6CD5");
jianfa.setFont(new Font("楷体", Font.PLAIN, 20));
jianfa.setBounds(73, 6, 65, 23);
contentPane.add(jianfa);
JCheckBox chengfa = new JCheckBox("\\u4E58\\u6CD5");
chengfa.setFont(new Font("楷体", Font.PLAIN, 20));
chengfa.setBounds(140, 6, 65, 23);
contentPane.add(chengfa);
JCheckBox chufa = new JCheckBox("\\u9664\\u6CD5");
chufa.setFont(new Font("楷体", Font.PLAIN, 20));
chufa.setBounds(207, 6, 65, 23);
contentPane.add(chufa);
JCheckBox kuohao = new JCheckBox("\\u62EC\\u53F7");
kuohao.setFont(new Font("楷体", Font.PLAIN, 20));
kuohao.setBounds(344, 6, 65, 23);
contentPane.add(kuohao);
JCheckBox xiaoshu = new JCheckBox("\\u5C0F\\u6570");
xiaoshu.setFont(new Font("楷体", Font.PLAIN, 20));
xiaoshu.setBounds(277, 6, 65, 23);
contentPane.add(xiaoshu);
JLabel lblNewLabel = new JLabel("\\u6570\\u503C\\u8303\\u56F4");
lblNewLabel.setFont(new Font("楷体", Font.PLAIN, 20));
lblNewLabel.setBounds(10, 42, 80, 28);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("\\u9898\\u76EE\\u6570\\u91CF");
lblNewLabel_1.setFont(new Font("楷体", Font.PLAIN, 20));
lblNewLabel_1.setBounds(207, 45, 91, 23);
contentPane.add(lblNewLabel_1);
JToggleButton button = new JToggleButton("\\u751F\\u6210\\u7B97\\u5F0F");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String n1 = fanwei.getText();
int num = Integer.parseInt(n1);
String n2 = shuliang.getText();
int max = Integer.parseInt(n2);
int[] a = {0,0,0,0};
int kh=0,outp=0,xs=0;
if(jiafa.isSelected())
a[0] = 1;
if(jianfa.isSelected())
a[1] = 1;
if(chengfa.isSelected())
a[2] = 1;
if(chufa.isSelected())
a[3] = 1;
if(kuohao.isSelected()) {
kh = 1;
}else {
kh = 0;
}
if(xiaoshu.isSelected()) {
xs = 1;
}else {
xs = 0;
}
shuchu.aa(num,max,a,kh,xs);
}
});
button.setFont(new Font("楷体", Font.PLAIN, 20));
button.setBounds(6, 95, 132, 38);
contentPane.add(button);
fanwei = new JTextField();
fanwei.setBounds(100, 48, 80, 21);
contentPane.add(fanwei);
fanwei.setColumns(10);
shuliang = new JTextField();
shuliang.setBounds(308, 48, 80, 21);
contentPane.add(shuliang);
shuliang.setColumns(10);
}
private void RequestProcessingPolicyValue(String string) {
// TODO Auto-generated method stub
}
}
4.成果展示
5.心得体会
同伴评价
- 对于此次结对编程,这是我和我伙伴第一次设计java界面,在此期间遇见了很多困难,但是我们两个人互帮互助顺利完成任务,也从中获得了许多新知识。我的伙伴王灵杰同学作为领航员,辅助我完成了程序代码的编写,和对代码的复审,减少了程序在运行过程中bug的出现。最重要的是在我没有耐心,一度想放弃对界面设计的学习时,他一直鼓励我不要放弃,最终在我们两互帮互助下完成了一个简单的界面设计,虽然挺界面简单,但我们收获颇丰,更加促进了我们的友谊。
经验总结
- 此次作业,大大提升了我的编程能力和学习能力。让我深刻体验到了在我们自己使用app带给我们便捷的同时,知道了对于我们而言最终目的是要设计出适合用户使用的软件,而不只是在小黑框里实现相应的结果,所以这对我们来说,去学会用户界面的设计是很重要的,因为这是提供给用户的第一印象,还能让用户操作使用更加便捷。