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

来源:https://www.cnblogs.com/wb995532169/archive/2018/10/09/9758129.html
-Advertisement-
Play Games

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


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

 

設計實現:

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

UI的實現:

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

 

後臺的實現:

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

 

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

 

 

成果展示:

 

 

 

 

 

 

 

 

 

結對編程的經驗教訓:

  通過這次項目,我們深切體會到了結對編程的利弊。兩個人一起做項目可以相互監督,互相促進,當遇到難點的時候還能共同研究討論,以儘快解決問題,在這個過程中,整體的效率有了較為明顯的提高。但是不同的人總有不同的想法,當意見產生分歧的時候就很糟糕,整個項目也會停滯不前,這個時候溝通就很重要,要綜合兩個人的想法,爭取找到最好的解決辦法,所以結對編程也是一個相互磨合的過程。總的來說,結對編程還是很有益處,我們能從對方身上學到很多東西,也有了合作完成項目的意識,是一個很好的經歷。 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題意 "題目鏈接" Sol 比較套路的一個題。 第一問二分答案check一下 第二問設$f[i][j]$表示前$i$個數,切了$j$段的方案數,單調隊列優化一下。 轉移的時候只需要保證當前段的長度小於最大限度即可。 cpp include using namespace std; const int ...
  • Mybatis Mybatis的介紹 1. Mybatis是持久層層框架,是半ORM(對象關係映射)框架. 2. 使用Mybatis有兩類配置文件 核心配置文件: mybatis Config.xml 映射配置文件: 與介面相對應的xml文件 3. 核心的API: SqlSessionFactory ...
  • 網路編程 bind函數 bind的作用是確定埠號。 正常處理都是先bind,然後listen 如果不bind,直接listen,會是什麼結果? 內核會自動隨機分配一個埠號 例子: c++ include include include include include include void p ...
  • 題意 "題目鏈接" Sol 挺顯然的樹形背包吧。。 $f[i][j]$表示$i$這棵子樹中答案為$j$的最大價值,轉移的時候背包一下。。 第一次寫樹形背包,犯了兩個錯誤 1. 枚舉根節點的貢獻時需要倒著枚舉 2. 轉移時需要註意$k = 0$的情況,不要出現重覆轉移 ...
  • 線上學習: [撩課-JavaWeb系列1之基礎語法-前端基礎][撩課-JavaWeb系列2之XML][撩課-JavaWeb系列3之MySQL][撩課-JavaWeb系列4之JDBC][撩課-JavaWeb系列5之web伺服器-idea] 一、字元集的由來 二、ASSCII 三、unicode 四、U ...
  • 有很多種,比如: 1、通過@RequestParam註解接收請求參數; 2、通過Bean封裝,接收多個請求參數 3、通過@ModelAttribute綁定接收前端表單數據 4、通過@PathVariable獲取URL中某段可變值; 5、通過@RequestBody接收請求體中的數據 6、通過@Req ...
  • 本次 Cicada 已經更新到了 v1.0.3。 主要是解決了兩個 issue,#9(Boss線程數好像設置有誤 ) #8(怎麼返回純字元串內容不要JSON格式?)。 ...
  • P1049 譚浩強C語言(第三版)習題6.5 java import java.util. ; import java.io. ; import java.math.BigInteger; import java.lang.Character; public class Main { public ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...