結對程式設計專案分析與經驗總結
阿新 • • 發佈:2020-10-09
結對專案實現
前言
本部落格對在個人程式設計的基礎上進行的結對程式設計進行總結,主要包括程式碼的複用和結對程式設計中學到的經驗教訓
結對程式設計分工:我負責UI介面(登陸介面,出題介面,做題介面,彙報介面,修改密碼,彈窗模組),隊友負責(驗證碼註冊模組,查重模組,儲存賬戶資訊模組,計算模組)
一、結對程式設計要求
1、所有功能通過圖形化介面操作,可以是桌面應用,可以是網站(程式語言和技術不限);
2、使用者註冊功能。使用者提供手機號碼,點選註冊將收到一個註冊碼,使用者可使用該註冊碼完成註冊;
3、使用者完成註冊後,介面提示設定密碼,使用者輸入兩次密碼匹配後設置密碼成功。密碼6-10位,必須含大小寫字母和數字。使用者在登入狀態下可修改密碼,輸入正確的原密碼,再輸入兩次相同的新密碼後修改密碼成功;
4、密碼設定成功後,跳轉到選擇介面,介面顯示小學、初中和高中三個選項,使用者點選其中之一後,提示使用者輸入需要生成的題目數量;
5、使用者輸入題目數量後,生成一張試卷(同一張卷子不能有相同題目,題目全部為選擇題),介面顯示第一題的題乾和四個選項,使用者選擇四個選項中的一個後提交,介面顯示第二題,…,直至最後一題;
6、最後一題提交後,介面顯示分數,分數根據答對的百分比計算;
7、使用者在分數介面可選擇退出或繼續做題;
二、程式碼複用
1.生成試卷
根據使用者選擇的題目型別和數量生成題目(示例):
給函式增加了返回值,函式返回一個字串陣列,每一個字串代表一個題目,傳入的引數分別是題目型別,題目儲存的路徑和題目數量
public static String[] GenerateTest(String type, String path, int number)
2.生成字尾表示式
程式碼如下(示例):
int num = (int) (0 + Math.random() * (4 - 0 + 1)); //獲取0-4個 二元運算子
ArrayList<String> houzhui = new ArrayList<>();
int operands = (int) (1 + Math.random() * (100 - 1 + 1)); //運算元的取值範圍是1-100
houzhui.add(Integer.toString(operands));
隨機生成二元運算子和運算數,然後把他們拼接成字尾表示式。根據題目的型別,隨即插入根號等一元運算子
3.把字尾表示式翻譯成中綴表示式
通過棧來實現,從字尾表示式中取字串,根據字串的內容來決定進行入棧還是出棧的操作
//將字尾表示式翻譯成中綴表示式
Stack<String> stack = new Stack<>();
int time=0;
for (String str:houzhui){
if (str.equals("sin")||str.equals("cos")||str.equals("tan")||str.equals("√")||str.equals("²")){
String popB=stack.pop();
if (str.equals("√")){
stack.push("√"+"("+popB+")");
}
if (str.equals("²")){
stack.push("("+popB+")"+"²");
}
if (str.equals("sin")){
stack.push("sin"+"("+popB+")");
}
if (str.equals("cos")){
stack.push("cos"+"("+popB+")");
}
if (str.equals("tan")){
stack.push("tan"+"("+popB+")");
}
}
else if(str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")){
String popB=stack.pop();
String popA=stack.pop();
if (str.equals("+")){
if (time==0){
temp = temp + "(" + popA + "+" + popB + ")";
time++;
}
else{
temp = "(" + temp + "+" + popB + ")";