一、项目成员以及coding地址:
洪灏捷(本人)201321122020 coding地址:https://git.coding.net/hoje/The-GUI-operation.git
白至幸 201421122116 博客园地址 http://www.cnblogs.com/EtihwXD/
视频演示地址:http://v.youku.com/v_show/id_XMzEwMjIyMDE3Ng==.html?spm=a2hzp.8253869.0.0
二、结对编程题目描述
在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI,成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间;
界面支持中文简体/中文繁体/英语,用户可以选择一种。
三、需求分析
- 将上次基于控制台的代码写成GUI界面;
- 设置“英语|简体中文|繁体中文”选项;
- 开始答题并记录答题时间。
四、思维导图
五、项目实现
语言选择的代码实现
1 private void initialize() { 2 // TODO Auto-generated method stub 3 frame = new JFrame(); 4 if(lang == 1){ 5 frame.setTitle("arithmetic"); 6 } 7 else if(lang == 2){ 8 frame.setTitle("四则运算"); 9 } 10 else{ 11 frame.setTitle("四則運算"); 12 } 13 frame.setSize(900, 300); 14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 15 16 Label Title = new Label("題目:", Label.CENTER); 17 Label ans = new Label("答案:", Label.CENTER); 18 Label time = new Label("用時:", Label.CENTER); 19 Label right = new Label("正確數量:", Label.CENTER); 20 Label wrong = new Label("錯誤數量:", Label.CENTER); 21 22 23 final Label Titles = new Label(); 24 final JTextField anss = new JTextField(12); 25 final Label rns = new Label(); 26 final Label times = new Label(); 27 final Label rights = new Label(); 28 final Label wrongs = new Label(); 29 30 JButton next = new JButton("下一題"); 31 next.setFont(new Font("宋体", Font.PLAIN, 16)); 32 JButton check = new JButton("檢查答案"); 33 check.setFont(new Font("宋体", Font.PLAIN, 16)); 34 35 if(lang == 1){ 36 Title.setText("quiz:"); 37 ans.setText("answer: "); 38 time.setText("time:"); 39 right.setText("correct:"); 40 wrong.setText("wrong:"); 41 next.setText("next"); 42 check.setText("check"); 43 right.setText("Correct question number:"); 44 wrong.setText("Error question number:"); 45 } 46 else if(lang ==2 ){ 47 Title.setText("题目:"); 48 ans.setText("答案: "); 49 time.setText("用时:"); 50 right.setText("正确数量:"); 51 wrong.setText("错误数量:"); 52 next.setText("下一题"); 53 check.setText("检查答案"); 54 right.setText("正确题数:"); 55 wrong.setText("错误题数:"); 56 } 57
计时功能的代码实现
1 timer = new Timer(); 2 3 finishtime = System.currentTimeMillis(); 4 starttime = finishtime; 5 timer.schedule(new TimerTask() { 6 public void run() { 7 finishtime = System.currentTimeMillis(); 8 duration = finishtime - starttime; 9 String str = df.format(new Date(duration)); 10 times.setText(str); 11 if (summary == titles) { 12 try { 13 Thread.sleep(2000000); 14 } catch (InterruptedException e) { 15 // TODO Auto-generated catch block 16 e.printStackTrace(); 17 } 18 19 } 20 21 } 22 }, 1000, 1000);
判断答案是否正确并记录对错数目
1 check.addActionListener(new ActionListener() { 2 3 @Override 4 public void actionPerformed(ActionEvent e) { 5 // TODO Auto-generated method stub 6 7 if(results.equals(anss.getText())){ 8 if(lang == 1){ 9 rns.setText("Correct!"); 10 rightNum = rightNum + 1; 11 rights.setText(String.valueOf(rightNum)); 12 } 13 else if(lang == 2){ 14 rns.setText("正确!"); 15 rightNum = rightNum + 1; 16 rights.setText(String.valueOf(rightNum)); 17 } 18 else{ 19 rns.setText("正確!"); 20 rightNum = rightNum + 1; 21 rights.setText(String.valueOf(rightNum)); 22 } 23 }else{ 24 if(lang == 1){ 25 rns.setText("Wrong!"); 26 wrongNum = wrongNum + 1; 27 wrongs.setText(String.valueOf(wrongNum)); 28 } 29 else if(lang == 2){ 30 rns.setText("错误!"); 31 wrongNum = wrongNum + 1; 32 wrongs.setText(String.valueOf(wrongNum)); 33 } 34 else{ 35 rns.setText("错误!"); 36 wrongNum = wrongNum + 1; 37 wrongs.setText(String.valueOf(wrongNum)); 38 } 39 } 40
六、功能截图展示
语言选择界面
不同语言界面演示
选择题数和范围
计时运行和判断对错题数
六、小结感受
- 对于结对编程是否能1+1>2的结果?我觉得是肯定的,在编程过程中,有许多自己考虑不到的问题,或许别人一个提醒就豁然开朗;
七、评价
优点:对于问题的综合处理能力好,逻辑思维不错;
缺点:代码写的有乱
希望他提高的地方:多交流,共同进步
八、PSP展示