小學生四則運算結對項目
GitHub地址:https://github.com/jiyx/operation-four.git
一、需求分析
1、需求分析
(1)由計算機從題庫文件中隨機選擇20道加減乘除混合算式,用戶輸入算式答案,程序檢查答案是否正確,每道題正確計5分,錯誤不計
分,20道題測試結束後給出測試總分;
(2)題庫文件可采用實驗二的方式自動生成,也可以手工編輯生成,文本格式如下:
(3)程序為用戶提供三種進階四則運算練習功能選擇:百以內整數算式(必做)、帶括號算式、真分數算式練習;
(4)程序允許用戶進行多輪測試,提供用戶多輪測試分數柱狀圖,示例如下:
(5)程序記錄用戶答題結果,當程序退出再啟動的時候,可為用戶顯示最後一次測試的結果,並詢問用戶可否進行新一輪的測試;
(6)測試有計時功能,測試時動態顯示用戶開始答題後的消耗時間。
(7)程序人機交互界面是GUI界面(WEB頁面、APP頁面都可),界面支持中文簡體(必做)/中文繁體/英語,用戶可以進行語種選擇。
二、核心代碼
class Num{ //定義數字類 private int a; public Num() { this.a = (int)(Math.random()*10000); } public Num(int i) { this.a = (int)(Math.random()*4)+1; } public int get_num() { return this.a; } public int num_sum(Num B) { return this.a + B.a; } public int num_dec(Num B) { return this.a - B.a; } public int num_c(Num B) {return this.a * B.a; } public int num_chu(Num B) { return this.a / B.a; } public void flash() { this.a = (int)(Math.random()*100); } public void flash_t() { this.a = (int)(Math.random()*4)+1; } public boolean pd(int i) { if(this.a == i) return true; else return false; } }
public class jiedui { private static Num a = new Num(); //a,b private static Num b = new Num(); private static Num c = new Num(1); private static int q = 0; private static String p; private static JFrame frame = new JFrame("簡單四則運算"); private static JLabel label1 = new JLabel("A"); private static JLabel label2 = new JLabel("*"); private static JLabel label3 = new JLabel("B"); private static JLabel label4 = new JLabel(" "+"="+" "); private static JLabel label5 = new JLabel("結果"); private static JButton button = new JButton("查看"); private static JButton bt1 = new JButton("下一題"); private static JButton bt2 = new JButton("退出"); private static JTextField text = new JTextField(5); private static JPanel pane = new JPanel(); public static void main(String[] args) { pane.setBorder(BorderFactory.createEmptyBorder(20,60,20,60)); pane.setLayout(new GridLayout(0,5)); //設置布局 pane.add(label1); pane.add(label2); pane.add(label3); pane.add(label4); pane.add(text); pane.add(label5); pane.add(button); pane.add(bt1); pane.add(bt2); if(c.pd(1)) { p = "+"; q = a.num_sum(b); } if(c.pd(2)) { p = "-"; q = a.num_dec(b); } if(c.pd(3)) { p = "*"; q = a.num_c(b); } if(c.pd(4)) { p = "/"; q = a.num_chu(b); } frame.getContentPane().add(pane,BorderLayout.CENTER); button.setMnemonic(KeyEvent.VK_I); button.addActionListener(new ActionListener(){ //鼠標單擊事件 public void actionPerformed(ActionEvent e){ if(q == Integer.parseInt(text.getText().trim())) label5.setText("正確!"); else label5.setText("錯誤!"); } }); bt1.setMnemonic(KeyEvent.VK_H); bt1.addActionListener(new ActionListener(){ //鼠標單擊事件 public void actionPerformed(ActionEvent e){ a.flash(); b.flash(); c.flash_t(); if(c.pd(1)) { p = "+"; q = a.num_sum(b); } if(c.pd(2)) { p = "-"; q = a.num_dec(b); } if(c.pd(3)) { p = "*"; q = a.num_c(b); } if(c.pd(4)) { p = "/"; q = a.num_chu(b); } label1.setText(" "+a.get_num()+" "); label2.setText(p); label3.setText(" "+b.get_num()+" "); text.setText(" "); label5.setText("結果"); } }); bt2.setMnemonic(KeyEvent.VK_T); bt2.addActionListener(new ActionListener(){ //鼠標單擊事件 public void actionPerformed(ActionEvent e){ System.exit(0); } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); label1.setText(" "+a.get_num()+" "); label2.setText(p); label3.setText(" "+b.get_num()+" "); frame.setVisible(true); }
三、運行過程
四、結對過程
五、psp
PSP2.1 | 任務內容 | 計劃完成的時間(min) | 實際完成需要的時間(min) |
---|---|---|---|
PLanning | 計劃 | 60 | 100 |
Estimate | 估計這個任務需要多少時間,並規劃大致工作步驟 | 60 | 60 |
Developmet | 開發 | 480 | 700 |
Analysis | 需求分析(包括學習新技術) | 30 | 50 |
Design Spec | 生成設計文檔 | 10 | 25 |
Design Revie | 設計復審(和同事審核設計文檔) | 30 | 35 |
Coding Standard | 代碼規範 | 20 | 30 |
Design | 具體設計 | 60 | 80 |
Coding | 具體編碼 | 300 | 350 |
Code Review | 代碼復審 | 30 | 360 |
Test | 測試(自我測試,修改代碼,提交修改) | 20 | 30 |
Reporting | 報告 | 30 | 35 |
Test Report | 測試報告 | 20 | 20 |
Size Measurement | 計算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事後總結,並提出過程改機計劃 | 30 | 35 |
六、請使用漢堡評價法給你的小夥伴一些點評
我的結對小夥伴是個有想法的人,盡管這次我們遇到太多的問題,但總歸比一個人的效果要好,兩個人一起合作討論交流,思路開闊,容易發現一個人發現不了的錯誤,也可以及時改正錯誤,還可以增加團隊合作意識,相信這對以後的訓練很有幫助。(由於我倆編程比較差差了,沒有實現全部的需求。盡我們最大的努力,也只能做到這了)遇到不會的問題就要去學習,一口吃不了個胖子,所幸我們能夠一起努力,一起進步。
七、 結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會。
一根筷子容易折,一把筷子難折斷,我想這就是群體的力量,一個人的編程設計往往會出現很多的問題,比如一些代碼上的漏洞和設計功能等考慮的不全面,一個人編程的時候遇到問題有時候會卡好長時間,有時候很簡單的錯誤也需要好久才能找見,但是結對編程的時候這種問題出現次數比較少,遇到問題時解決問題的思路和時間會很大幅度的減少,經過兩個人的討論會對問題理解的更透徹,效率更高,所以說結對編程和團隊合作還是很有必要的。一個成功的項目後面往往有一個優秀的團隊。
小學生四則運算結對項目