結對編程項目總結 by:陳宏偉&劉益

    結對編程項目在歡快的國慶假期中也順利結束了。從最初拿到結對編程項目的思考,再到一步一步實現,中間經歷了一個漫長的過程。在我和隊友的屢次協商下,最終咱們仍是選擇使用基於python來實現這一次結對編程項目,而且最終選擇了以eric6 + pyqt5 +Anaconda3以及pycharm混搭的開發環境來實現了這次帶UI的中小學生題目生成系統。python

 

設計實現:編程

  關於這次結對項目,我和隊友總結了一下,主要分爲兩個方面,UI加上後臺的實現,咱們也進行了明確的分工,我去實現UI界面,隊友實現後臺系統,後期再根據我每一個頁面提供給隊友的接口,把UI和後臺實現進行整合。在實現的過程當中,咱們也遇到了不少困難,而後咱們也對此分別進行了總結。函數

UI的實現:學習

  起初最開始拿到結對編程項目的需求的時候,先是冷靜分析了一波,UI的實現具體須要哪些頁面,頁面與頁面之間的關係是什麼,怎麼去實現頁面之間的相互跳轉。起初分析完後,最開始是用的python自帶的tkinter模塊進行每個界面的設計,但當設計第一個界面的時候,便出現了問題,關於label控件在背景圖片上的顯示問題,嘗試了不少方法,畫布,背景圖片和label控件的組合方法或者分開來按照順序貼圖,可是設計出來都達不到本身預期所想要的效果。最終仍是放棄了tkinter,選擇了功能更爲強大的pyqt5,加上之前學習UI所搭建好的eric6和Anconda3,最終實現了所想要的效果。優化

 

後臺的實現:spa

  由於隊友最初的我的項目是用C++來寫的,可是咱們決定整個項目基於python來實現以後,隊友仍是選擇了從新把C++代碼改爲了python代碼,而且在之前所遇到的出題的出現的問題上進行了優化,還多加實現了項目所須要的其餘功能,好比題目的計算,短信驗證,統計成績等等。尤爲是在對題目進行計算的時候咱們遇到了些許困難,隊友最開始的時候想的是使用隊列這一結構對題目答案進行計算,先只考慮小學的狀況,用一個隊列來保存算式裏面的運算數,用另外一個隊列來保存算式裏的運算符,定義括號長度從2開始遞增,而後先對算式進行遍歷,將括號長度爲2包含的兩個操做數放入到隊列1裏,而後將其中的運算符放入隊列2裏,依次類推,最終將全部運算數和操做符所有放完,再每次從隊列1中取出兩個元素,並從隊列2中取出一個操做符,而後進行計算,將獲得的值從新放入到隊列1的隊尾,一直循環,直到隊列2爲空,隊列1裏所獲得的數值即是最後的計算結果。對於初中生和高中生來講,只須要先將加入的某數的平方開方或者三角函數替換爲具體數值,再複用小學計算的方法便能實現。但最後仍是有點小bug,最終咱們根據查找資料,而後運用的python裏面的自帶的eval()函數進行計算,最終能算出具體的數值。設計

 

組合的實現:
  在進行UI開發的時候,採用的思想是頁面與邏輯的分離,每個UI都有一個UI界面的py文件和一個具體控件邏輯行爲實現的py文件,而控件邏輯行爲實現的文件,剛好爲咱們後臺代碼與UI界面的結合提供了一個很好的接口,咱們只須要將咱們後臺具體實現的某個頁面所須要的代碼糅合進槽函數中,便能實現後臺與UI界面的完美融合。3d

 

 

成果展現:blog

 

 

 

 

 

 

 

 

 

結對編程的經驗教訓:接口

  經過此次項目,咱們深切體會到告終對編程的利弊。兩我的一塊兒作項目能夠相互監督,互相促進,當遇到難點的時候還能共同研究討論,以儘快解決問題,在這個過程當中,總體的效率有了較爲明顯的提升。可是不一樣的人總有不一樣的想法,當意見產生分歧的時候就很糟糕,整個項目也會停滯不前,這個時候溝通就很重要,要綜合兩我的的想法,爭取找到最好的解決辦法,因此結對編程也是一個相互磨合的過程。總的來講,結對編程仍是頗有益處,咱們能從對方身上學到不少東西,也有了合做完成項目的意識,是一個很好的經歷。 
相關文章
相關標籤/搜索