天天看點

個人作業1——四則運算題目生成程式(基于控制台)

個人作業1,實作一個自動生成國小四則運算題目的指令行程式

Deadline:##

2017-3-8 12:00AM,以部落格發表日期為準。

評分基準:##

  • 按時交 - 有分,檢查的項目包括後文的四個方面
    • 題目要求
    • 個人軟體過程耗時估計與統計表
    • 代碼送出
    • 博文規範
  • 晚交 - 0分
  • 遲交兩周以上 - 倒扣本次作業分數
  • 抄襲 - 倒扣本次作業分數

題目描述:##

看了大家對于本課程的目标和規劃,很多同學都希望能提高自己的實踐能力,沒有捷徑可走,就是練習、練習再練習!那麼就從第一個個人項目開始吧,用一周的時間完成一個基于控制台的四則運算程式,實作一個自動生成國小四則運算題目的指令行程式

從《建構之法》第一章的 “程式” 例子出發,像阿超那樣,花二十分鐘寫一個能自動生成國小四則運算題目的指令行 “軟體”,滿足以下需求:

  1. 除了整數以外,還要支援真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
  2. 運算符為 +, −, ×, ÷
  3. 并且要求能處理使用者的輸入,并判斷對錯,打分統計正确率。
  4. 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等
  5. 使用 -n 參數控制生成題目的個數,例如執行下面指令将生成10個題目

    Myapp.exe -n 10

個人軟體過程:##

  1. 在開始實作程式之前,了解下Personal Software Process Stages(http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)
  2. 在開始實作程式之前,請使用以下PSP表格,在第3列填上自己對每個環節的估計時間(機關:分鐘).
  3. 在做每個環節的過程中,請在第4列填上對應環節的實際消耗時間(機關:分鐘).
  4. 在軟體開發中,掌握估計時間是一項重要的技能,請通過PSP表格做到

    a.厘清開發的完整環節,争取在每個環節都有實際的工作,一開始邊界不清楚是正常的,但請嘗試按自己的了解去努力在對應環節做實際的工作。

    b.預估每個環節的時間,并真實統計這些環節的耗時,在完成後輸出完整的PSP耗時估計表。

    c.注意:該表格是給自己看的,不要僞造資料!

    d.PSP模版表格如下,第3列和第4列分别對應第2列條目的估計時間和真實時間,模版表格裡的時間隻是示意。

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 計劃 8 6
· Estimate 估計這個任務需要多少時間
Development 開發 82 88
· Analysis 需求分析 (包括學習新技術) 10
· Design Spec 生成設計文檔 5
· Design Review 設計複審 4
· Coding Standard 代碼規範 3
· Design 具體設計 12
· Coding 具體編碼 36 21
· Code Review 代碼複審 7 9
· Test 測試(自我測試,修改代碼,送出修改) 13
Reporting 報告
· 測試報告 2
計算工作量 1
并提出過程改進計劃

代碼送出:##

  1. 送出你的源代碼和可執行程式至你的coding.net位址

    a.怎樣使用git送出代碼到coding.net? 參考,考驗你強大自學能力的時刻到了:

    • http://rogerdudler.github.io/git-guide/index.zh.html
    • http://www.cnblogs.com/hebau-may/p/6382743.html
    b.需要送出的應該有
    • 項目的工程檔案,例如Eclipse的項目檔案
    • 項目的源代碼
    • 一些必要的配置
    • 單獨建立一個public子目錄,存放編譯後的可執行程式,這不是标準的軟體釋出的做法,但是目前你這樣先送出可以。
    c.不應該送出的有:
    • bin目錄
    • obj目錄
    • 可以在根目錄下建立一個.gitignore檔案,把需要忽略的檔案夾和檔案相對路徑逐行添加進去,這樣git 送出的時候就會忽略這些子目錄和子檔案。
  2. 博文的一開始需要寫明你注冊的 coding 位址

博文規範##

  1. 送出的部落格必須完整包含下面五個部分

    a.需求分析,即使老師已經給出了題目,也要對題目的需求做分析,需求分析可以是自己的思考分析,也可以是找國小老師,學生甚至家長調查後挖掘出更細緻的需求,别小看這個過程,請真實的做這個過程。

    b.功能設計,題目的需求,以及從真實調研裡獲得的需求後,要對程式做基本的功能設計,有同學會問:“不就是出題嘛,有啥好設計的?”,其實, 題目裡要求的隻是基本的要求,自己思考和調研會有超出題目要求的需求,甚至你有天才的設計,作出特色的功能。是以,功能會有:

    • 基本功能
    • 擴充功能
    • 進階功能

    c.設計實作,設計包括代碼如何組織,你會有哪些Java類,這些類分别負責什麼功能,他們之間的關系怎樣?你會設計哪些重要的函數,關鍵的函數是否需要畫出流程圖?

    d.代碼說明,你一定花了最多時間在代碼的編寫與調試上,那麼,這個環節請把你的重要代碼展示出來,代碼的排版請做好。

    e.測試運作,你的程式必須是可運作的,請展示你的程式運作的截圖,包括題目要求的所有需求,都有運作的截圖。說明你的程式确實完成了所有需求,如果有實作了擴充需求或者進階需求,也請大方秀出來。

  2. 展示PSP,這個環節重要的是讓自己看到自己的估計和實際消耗時間,哪個環節耗時最多,哪個環節估計失敗?為什麼?
  3. 小結。如果,如果所有的環節你都認真做了,那麼,此處你應該會有很多經驗願意與大家分享。