开发环境:Eclipse
结对小伙伴:201306114416 陈键 (http://www.cnblogs.com/be-the-one/)
201306114452 吴舒婷 (http://www.cnblogs.com/wst-2015/)
功能:
a)生成题目,单个题目最多不能超过4个运算符,操作数小于100。
b)用户可以输入答案。
c)用户输入答案正确,正确提示;错误,则提示正确答案。
扩展方向:
b.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
c.用户答题结束以后,程序可以显示用户答题所用的时间
d.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
e.用户在第一次答题,需要用户注册用户名,下次启动,程序记住用户前一次输入的用户名
f.程序可以出单个整数阶乘的题目:如:4!=24
g.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(默认为120seconds,在后台倒计时)
h.程序可以设置皮肤功能,可以改变界面的颜色即可。(右键跟换皮肤)
任务分配:
我的结对同伴主要负责多一点,界面框架,线程(c,g,h)等.而我就是负责算法还有整合其他模块.So在结对时间,一般都是看着我们的驾驶员如何安全行驶.在整合的时候就会整体的审查一次,检查是否有什么不合理的代码存在.
感想:
对于收获我觉得还是挺多的,结对工作的却是能减少编程中所犯错误,程序质量也是会相对高一点.最明显的就是在这次编程中没有出现个人编辑时出现的卡在某个错误点致使不能运行的情况.事实就是这样每个人擅长的方面都是不一样的,结对工作也是结对学习的过程.在这个过程中相互提醒,通过互补来提高程序的总体质量.再者就正如书中所说,两人合作是分阶段性的,总会遇到这样的”不爽”.彼此都有自己的编程风格,但是有时候,个人觉得小如一个变量的定义也是可以决定或者说改变很多东西的.在此次合作中就碰到一次关于变量定义的邂逅.所以还是要注意重视编程的style.最后就是关于同伴之间的交流了,先是肯定partner的成果,再指出不合之处.不然个人觉得这个合作完之后应该就不能好好做朋友了.总之组队better than 单干.
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class LayerJFrame extends JFrame { private static final long serialVersionUID = -8620276339887152797L; static JFrame jframe=null; JLabel Luser=null; int flag=0; static JTextField Tuser=null; static JButton ok=null; static JButton cancell=null; public void init(){ jframe=new JFrame(); Luser=new JLabel("帐号:"); Luser.setBounds(new Rectangle(40,20,70,30)); Luser.setForeground(Color.black); Luser.setFont(new Font("楷体",20,20)); Tuser=new JTextField(); Tuser.setBounds(new Rectangle(100,20,150,30)); Tuser.setFont(new Font("楷体",20,20)); ok=new JButton("登陆"); ok.setBounds(new Rectangle(80,70,70,30)); cancell=new JButton("注册"); cancell.setBounds(new Rectangle(190,70,70,30)); jframe.add(Luser); jframe.add(Tuser); jframe.add(ok); jframe.add(cancell); jframe.getContentPane().setBackground(Color.green); jframe.setLayout(null); jframe.setVisible(true); jframe.setBounds(new Rectangle(450,250,330,150)); jframe.setResizable(false); ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { try { String user=Tuser.getText(); BufferedReader br=new BufferedReader(new FileReader("data.txt")); String temp=null; do{ temp=br.readLine(); if(temp==null){ JOptionPane.showMessageDialog(jframe, "用户不存在,请先注册。"); break; } if(temp.equals(user)) { flag=2; break; } System.out.print(temp); }while(temp!=null); if(flag==2){ // jframe.setVisible(false); EventQueue.invokeLater(new Runnable() { public void run() { try { Input window = new Input(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } } catch (Exception e1) { e1.printStackTrace(); } } }); cancell.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { try { String user=Tuser.getText(); BufferedWriter bw=new BufferedWriter(new FileWriter("data.txt")); bw.write(user); bw.newLine(); JOptionPane.showMessageDialog(jframe, "用户创建成功!"); bw.flush(); bw.close(); } catch (Exception e1) { e1.printStackTrace(); } } }); } public LayerJFrame(){ init(); } public static void main(String[] args){ new LayerJFrame(); } }