1. 程式人生 > >結對編程第二次作業

結對編程第二次作業

文件 jupyter 通過 別了 小數 輸出 溝通 實現題 xcode

一.題目要求

1.題目:

??我們在剛開始上課的時候介紹過一個小學四則運算自動生成程序的例子,請實現它,要求:
能夠自動生成四則運算練習題
可以定制題目數量
用戶可以選擇運算符
用戶設置最大數(如十以內、百以內等)
用戶選擇是否有括號、是否有小數
用戶選擇輸出方式(如輸出到文件、打印機等)
最好能提供圖形用戶界面(根據自己能力選做,以完成上述功能為主)

2.成員定位

駕駛員:楊天瑞

領航員:張榮盛

二.開發環境

編程語言:python,swift。

開發環境:jupyter、Xcode

運行環境:windows 10、IOS11.3

三.代碼實現

  • 用戶可以選擇是生成普通的算式,還是帶括號的復合運算,還是兩者都有。

  • 也可以選擇是否生成小數,默認選擇不生成小數。

  • 用戶可以選擇是生成10以內的運算還是百以內的運算。

  • 最後再輸入需要的題目數量和題目的長度。

  • 生成的算式最後會被保存為兩個文件,算式文件存為“question.txt”,答案文件存為“answer.txt”。

  • 用戶也可以選擇是否發送郵件,發送郵件的話會將這兩個文件發送到用戶指定的郵箱中,也可以群發設置群發郵件。

發送郵件代碼實現如下:

技術分享圖片

四.單元測試

??由於這次代碼采用python編寫,我們自己沒有寫什麽函數,都是調用庫中的函數(只構建了輸出函數),所以無法編寫JUnit自動單元測試,因此在這裏貼上測試樣例運行截圖。

(1)測試1

1.文件結果如下:

我們在jupyter notebook運行程序“四則運算自動生成器.ipynb”

在算式生成代碼區輸入:“2 0 1 10 5”

生成50組長度為5,百以內不帶小數的算式

技術分享圖片

技術分享圖片

2.郵件結果

技術分享圖片

技術分享圖片

(2)測試2

1.編譯器類代碼運行結果

我們在jupyter notebook運行程序“四則運算自動生成器.ipynb”

在算式生成代碼區輸入:“2 0 1 50 5”

生成50組長度為5,百以內不帶小數的算式

技術分享圖片

技術分享圖片

2.郵箱結果

技術分享圖片

技術分享圖片

五.UI界面

因為本次作業時間比較緊張,並且我們組全部沒有學過前端界面該怎麽做,所以以下界面只是我們的一次嘗試,並沒有完全真正實現題目要求的功能。雖然失敗了,但是還是要發一下我們的成果,畢竟還是做了好久~~。
本次前端開發采用Xcode9.3,Swift4.1環境,項目名稱為:小巫師四則運算自動生成器(support for iPhone X)

技術分享圖片 技術分享圖片
技術分享圖片 技術分享圖片

六.結對感想

??對於這次合作難度比上次檢查代碼難度高了很多,即使上傳結對作業的檢查代碼是對隊友編程習慣的了解;但在這次合作過程中,編程階段就存在著思想上的不同。此次作業使我受益頗多,這次采用的是python語言編寫,也是以前沒有用的,通過小夥伴(talosL)的帶領下也會了一些。主要學習了調用隨機數與讀寫調用文件等操作,在此次作業中遇到了很多困難,如函數間的互相調用,如何將字符串轉換為數學算式求得結果和如何獲得隨機小數都困擾了我很久,也知道了怎麽調用隨機數了。
??最後是界面實現部分,雖然我們實現了一部分界面,但是並沒有完全實現全部功能,最開始的設想是生成後會進入到做題部分,根據正確率來判斷是否進階,進階的話會出更復雜和數更混合的算式出來計算。但是因為界面實現是現在才接觸,對於按鈕的功能定義和傳參的部分不是特別了解,中間也是出了很多問題,導致這部分功能完全沒有實現,最後也只是進行簡單設置和傳參,最後我們選擇在服務器運算和發郵件來查看結果,因為端口封禁的問題也是在不斷的嘗試新的辦法。
??這次在程序編寫的過程不像以前一樣是一個人獨立完成的,感覺上有了一些不同,從中也學習到了很多,在編程的時候通過和小夥伴的溝通交流,也從他身上學習到了 很多東西;在寫程序的過程中遇見了問題時,也不是一個人思考了,在查閱相關材料時也時變得更快了。當然在編寫的過程中少不了爭議,但是最後都完美解決了,畢竟每個人的思想都不一樣,所考慮的東西也是不同的,所以只要我們都認真的考慮對方的遇見,不斷總結我們自己的想法是否有錯,這樣可以更塊的解決爭議。總體來說這次結對編程是一次特別愉快的經歷,但是還是愉快的解決了,最後在兩個人的合作之下題目順利地完成了。
??最後非常感謝小夥伴(talosL)在此次編程中的合作,以下是我們合作時的照片。

技術分享圖片

結對編程第二次作業