結對編程項目:帶UI的小初高數學學習軟件總結

須要實現的功能:c++

一、用戶註冊功能。用戶提供手機號碼,點擊註冊將收到一個註冊碼,用戶可以使用該註冊碼完成註冊;算法

二、用戶完成註冊後,界面提示設置密碼,用戶輸入兩次密碼匹配後設置密碼成功。密碼6-10位,必須含大小寫字母和數字。用戶在登陸狀態下可修改密碼,輸入正確的原密碼,再輸入兩次相同的新密碼後修改密碼成功;編程

三、密碼設置成功後,跳轉到選擇界面,界面顯示小學、初中和高中三個選項,用戶點擊其中之一後,提示用戶輸入須要生成的題目數量;後端

四、用戶輸入題目數量後,生成一張試卷(同一張卷子不能有相同題目,題目所有爲選擇題),界面顯示第一題的題乾和四個選項,用戶選擇四個選項中的一個後提交,界面顯示第二題,...直至最後一題;網絡

五、最後一題提交後,界面顯示分數,分數根據答對的百分比計算;函數

六、用戶在分數界面可選擇退出或繼續作題;ui

七、小初高數學題目要求見我的項目。阿里雲

 需求分析與設計思路:spa

本次項目較上次我的項目新增了ui界面與算出答案並評分的功能,個人分工爲計算生成題目的答案即後端內容。
.net

而我須要解決的最主要問題也就是題目的計算,首先出題邏輯是能夠複用的,只須要算出每道題的答案並保存便可。

在獲得題目後,我以爲首先的任務是去除表達式的‘√’等單邊運算符,轉換爲純浮點數的四則運算。

其次浮點數四則運算能夠由中綴式轉換爲後綴式即逆波蘭式進行計算:

 

將一個普通的中序表達式轉換爲逆波蘭表達式的通常算法是:

 

首先須要分配2個棧,一個做爲臨時存儲運算符的棧S1(含一個結束符號),一個做爲輸入逆波蘭式的棧S2(空棧),S1棧可先放入優先級最低的運算符#,注意,中綴式應以此最低優先級的運算符結束。可指定其餘字符,不必定非#不可。從中綴式的左端開始取字符,逐序進行以下步驟:

 

(1)若取出的字符是操做數,則分析出完整的運算數,該操做數直接送入S2棧

 

(2)若取出的字符是運算符,則將該運算符與S1棧棧頂元素比較,若是該運算符優先級(不包括括號運算符)大於S1棧棧頂運算符優先級,則將該運算符進S1棧,不然,將S1棧的棧頂運算符彈出,送入S2棧中,直至S1棧棧頂運算符低於(不包括等於)該運算符優先級,最後將該運算符送入S1棧。

 

(3)若取出的字符是「(」,則直接送入S1棧頂。

 

(4)若取出的字符是「)」,則將距離S1棧棧頂最近的「(」之間的運算符,逐個出棧,依次送入S2棧,此時拋棄「(」。

 

(5)重複上面的1~4步,直至處理完全部的輸入字符

 

(6)若取出的字符是「#」,則將S1棧內全部運算符(不包括「#」),逐個出棧,依次送入S2棧。

 

完成以上步驟,S2棧便爲逆波蘭式輸出結果。不過S2應作一下逆序處理。即可以按照逆波蘭式的計算方法計算了!
圖例:

 

 

 

 

 

 

 

 轉換後就能夠計算逆波蘭式了,新建一個表達式,若是當前字符爲變量或者爲數字,則壓棧,若是是運算符,則將棧頂兩個元素彈出做相應運算,結果再入棧,最後當表達式掃描完後,棧裏的就是結果。

最後就能夠生成選項了。

 

而後我還參與了一部分發送短信驗證碼的實現,由於阿里雲上並無給出c++的DEMO,所以只好在網上搜尋解決方案,能夠參考:

https://blog.csdn.net/print_out/article/details/89420314

最終我在阿里雲上註冊了帳號開通短信功能後把各類參數放到函數裏後能夠正常接收短信了。

 

 

 

 

 

 

 

總結與感想:

  本次結對編程項目工程量明顯比我的項目要大不少,所以也更加考驗兩人的實力與配合,並且半路上出的問題也是很多,經過本身思考和查詢資料與網絡,一個個解決,感受

仍是收穫了很多,也讓我感受到了合做的重要性。而相信在接下來的團隊項目中相信合做也會變得愈加重要。

相關文章
相關標籤/搜索