小學生四則運算練習軟件
結對夥伴博客地址:http://www.cnblogs.com/zhangcunhui/
Github倉庫主頁鏈接地址:https://github.com/huicunzhang/Sizeyunsuan2
- 需求分析
1. 由計算機從題庫文件中隨機選擇20道加減乘除混合算式,用戶輸入算式答案,程序檢查答案是否正確,每道題正確計5分,錯誤不計分,20道題測試結束後給出測試總分;
2. 題庫文件可采用實驗二的方式自動生成,也可以手工編輯生成,文本格式如下:
(3)程序為用戶提供三種進階四則運算練習功能選擇:百以內整數算式(必做)、帶括號算式、真分數算式練習;
(4)程序允許用戶進行多輪測試,提供用戶多輪測試分數柱狀圖,示例如下:
(5)程序記錄用戶答題結果,當程序退出再啟動的時候,可為用戶顯示最後一次測試的結果,並詢問用戶可否進行新一輪的測試;
(6)測試有計時功能,測試時動態顯示用戶開始答題後的消耗時間。
(7)程序人機交互界面是GUI界面(WEB頁面、APP頁面都可),界面支持中文簡體(必做)/中文繁體/英語,用戶可以進行語種選擇。
- 設計類圖:
Start類:用來創建進入系統的界面;
SimpleFrame類:做題界面、隨機出題、調用shishi3類中的計時功能;
Sort類:成績匯總界面,以柱狀圖的形式展現,用數組記錄每次測試的結果。
- 程序流程圖:
- 核心代碼:
判斷結果對錯的代碼:
1View Codeif( Expressions.get(0).equals(answers.get(0)) ) 2 {answer1.setText("正確 "); sum++;} 3 else 4 answer1.setText("錯誤"); 5 6 if( Expressions.get(1).equals(answers.get(1)) ) 7 {answer2.setText("正確 "); sum++;}8 else 9 answer2.setText("錯誤"); 10 11 if( Expressions.get(2).equals(answers.get(2)) ) 12 {answer3.setText("正確 "); sum++;} 13 else 14 answer3.setText("錯誤"); 15 16 if( Expressions.get(3).equals(answers.get(3)) ) 17 {answer4.setText("正確 "); sum++;} 18 else 19 answer4.setText("錯誤"); 20 21 22 23 num.add(sum*5+""); 24 //num.add(sum+""); 25 //將判斷結果存入文件 26 try { 27 File f = new File("result.txt"); 28 FileWriter fw = new FileWriter(f,true); 29 PrintWriter pw = new PrintWriter(fw); 30 for(String con:num) 31 { 32 pw.println(con); 33 } 34 35 fw.close(); 36 37 } catch (IOException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 }
計時器代碼:
1 class shishi3 extends Thread { 2 private long noww = 0l; 3 private long start = System.currentTimeMillis();// 程序啟動時間的毫秒值 4 private long time; 5 public void run() { 6 int i=0; 7 while (true) { 8 9 noww = System.currentTimeMillis();// 獲取一秒之後的毫秒值 10 time = noww - start;// 兩個時間相減的到毫秒差 11 timetime=time; 12 String ssss=String.format("%02d:%02d:%02d\n", 13 time / (1000 * 60 * 60) % 60/* 時 */, 14 time / (1000 * 60)% 60/* 分 */, 15 (time / 1000 % 60)/* 秒 */);// 格式化字符串輸出 16 17 l1.setText(ssss); 18 i++; 19 try { 20 Thread.sleep(1000); 21 } catch (InterruptedException e) { 22 e.printStackTrace(); 23 } 24 25 } 26 } 27 }View Code
柱狀圖代碼:
int Width = 400; int Height = 450; Random ran = new Random(); int leftMargin = 15;//柱形圖左邊界 int topMargin = 50;//柱形圖上邊界 Graphics2D g2 = (Graphics2D) g; g2.translate(50, 100); int ruler = Height-topMargin-5; int rulerStep = ruler/10;//將當前的高度評分為10個單位 g2.setColor(Color.gray);//繪制白色背景 g2.fillRect(0, 0, Width, Height);//繪制矩形圖 g2.setColor(Color.LIGHT_GRAY); for(int i=0;i<=10;i++) {//繪制灰色橫線和百分比 g2.drawString((100-10*i)+"", 10, topMargin+rulerStep*i);//寫下百分比 g2.drawLine(10, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//繪制灰色橫線 } g2.setColor(Color.PINK); for(int i=0;i<4;i++) {//繪制柱形圖 int value =save[i]*4;// ran.nextInt(Height-topMargin-10)+10;//隨機產生柱形的百分比 int step = (i+1)*35;//設置每隔柱形圖的水平間隔為40 //繪制矩形 g2.fillRoundRect(leftMargin+step*2, Height-value-10, 40, value, 40, 10); //g2.fillRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10); //列出產品的編號 g2.drawString("測試"+(i+1), leftMargin+step*2, Height-value-15); }View Code
- 運行結果:
- 結對過程:
- 總結與評價:
在本次結對過程中,我和我的小夥伴先通過查閱資料對軟件系統進行了詳細的設計,並作了合理的分工,但理想很豐滿,現實過於骨感吶,由於雙方編程基礎都比較弱,開始去編程的時候出現了很多的困難,沒辦法,只好再次進行設計,去了很多復雜的東西,從簡單的功能入手,等到程序能運行之後再慢慢進行補充。由於雙方都不是很要強的那種,加之關系也好,在合作過程中能比較愉快地交流。
對於結對編程真的能夠帶來1+1>2的效果的說法,我自己是很贊同的,以前一個人編程完成實驗項目,就算完成了也仍然會存在很多的問題,發現問題不及時,後知後覺的,但在此次結對過程中,我深切體會到了合作的力量,結對完成項目,無論在設計還是編程實現過程中,都能讓該過程實現得堪稱完美,存在的問題能得到及時的反饋、糾正,但前提是溝通要到位。結對完成還能收獲其他的很多東西,比方說合作能力,通過結對,合作能力能得到不斷提升。
- PSP:
PSP2.1 |
任務內容 |
計劃共完成需要的時間(min) |
實際完成需要的時間(min) |
Planning |
計劃 |
10 |
10 |
· Estimate |
· 估計這個任務需要多少時間,並規劃大致工作步驟 |
10 |
10 |
Development |
開發 |
1302 |
1065 |
·· Analysis |
需求分析 (包括學習新技術) |
10 |
20 |
· Design Spec |
· 生成設計文檔 |
5 |
5 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
2 |
5 |
· Coding Standard |
代碼規範 (為目前的開發制定合適的規範) |
5 |
5 |
· Design |
具體設計 |
30 |
25 |
· Coding |
具體編碼 |
1200 |
960 |
· Code Review |
· 代碼復審 |
30 |
20 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
20 |
25 |
Reporting |
報告 |
25 |
28 |
·· Test Report |
· 測試報告 |
10 |
5 |
· Size Measurement |
計算工作量 |
5 |
3 |
· Postmortem & Process Improvement Plan |
· 事後總結 ,並提出過程改進計劃 |
10 |
20 |
小學生四則運算練習軟件