天天看點

結對程式設計 結對程式設計-四則運算

結對程式設計-四則運算

組員

    陳福鵬 201421122096

    林棟  201421122098

代碼位址:https://gitee.com/helloc14/JieDuiXiangMu.git

本次作業的完成内容

    本次作業基于作業一四則運算程式做增量開發,新增了如下功能

    1、實作了web界面。

    2、儲存曆史的錯題和對題的數量,用于參考。

    3、計時功能,用于計算本次練習的所花時間。

 4、界面支援中文簡體/中文繁體/英語,使用者可以選擇一種。

需求分析

    在練習四則運算題目的時候,我們需要參考原來做題的正确率,來了解一下自己的實力。有時候我們做練習題不僅需要得到題目的正确率,還需要在限定時間内完成練習,這時候需要這個程式有一個計時功能,在開始練習的時候開始計時,到練習完成計算所花時間。記錄題目正确率需要統計每一次的練習,這樣能保證這個正确率的參考性,将資料儲存到本地文本檔案,使資料持久化。使用者也需要良好的界面來操作程式,還需要對程式的界面進行優化。

程式設計

我負責做的是答題數量的記錄,在程式退出後再次進入能在原來的數量上疊加,以及錯誤題數的記錄:

項目的思維導圖如下:

結對程式設計 結對程式設計-四則運算

代碼展示

實作答題數量記錄,錯題記錄

結對程式設計 結對程式設計-四則運算

public void WriteGradeFile(String f,String[] str ,String time) throws IOException{

String[] grade=new String[4];

grade[0]="TotalCorrect: ";

grade[1]="TotalWrong: ";

grade[2]="TotalRepeat: ";

grade[3]="ThisTestUsedTime: "+time;

int c=0,w=0,r=0;

File file=new File("C:\\Arithmetic\\grade.txt");

if(file.exists()==true){

System.out.println(c+"fff");

FileReader fr=new FileReader(file);

BufferedReader b = new BufferedReader(fr);

String[] rub=new String[2];

rub= b.readLine().split("\\:");

System.out.println(rub[1]+"fff");

c=Integer.parseInt(rub[1].trim());

System.out.println(c+"fff");

rub= b.readLine().split("\\:");

w=Integer.parseInt(rub[1].trim());

r=Integer.parseInt(rub[1].trim());

b.close();

fr.close();

}

String[] ans=new String[str.length];

try {

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(f)),"UTF-8"));

String lineTxt = null;

int j=1;

while ((lineTxt = br.readLine()) != null) {

try {

String[] rub=new String[2];

rub= lineTxt.split("\\)");

ans[j-1]=rub[1].trim();

if(ans[j-1].equals(str[j-1])){

c++;

}

else{

w++;

}

catch (Exception e) {

// TODO Auto-generated catch block

//System.out.println(j+" 答案為空");

w++;

}

j++;

}

br.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

grade[0]=grade[0]+c;

grade[1]=grade[1]+w;

grade[2]=grade[2]+r;

if(file.exists()==true){

file.delete();

file.createNewFile();

FileWriter fileWritter = new FileWriter(file,true);

BufferedWriter bufferWritter = new BufferedWriter(fileWritter);

for(int i=0;i<grade.length;i++){

bufferWritter.write(i+1+". "+grade[i]);

bufferWritter.newLine();

}

bufferWritter.close();

fileWritter.close();

}

public void WriteStringFile(String f,String str) throws IOException{

System.out.println(count);

File file=new File(f);

if(count==1||file.exists()==false){

System.out.println(file.getAbsolutePath());

FileWriter fw = new FileWriter(file, true);

BufferedWriter bw = new BufferedWriter(fw);

// bw.append("在已有的基礎上添加字元串");

if(f.equals("C:\\Arithmetic\\math.txt")){

bw.write("("+count+") "+str+"=\r\n");// 往已有的檔案上添加字元串

else{

bw.write("("+count+") "+str+"\r\n");// 往已有的檔案上添加字元串

bw.close();

fw.close();

public int getTextLines(String path) throws IOException {

FileReader fr = new FileReader(path); //這裡定義一個字元流的輸入流的節點流,用于讀取檔案(一個字元一個字元的讀取)

BufferedReader br = new BufferedReader(fr); // 在定義好的流基礎上套接一個處理流,用于更加效率的讀取檔案(一行一行的讀取)

int x = 0; // 用于統計行數,從0開始

while(br.readLine() != null) { // readLine()方法是按行讀的,傳回值是這行的内容

x++; // 每讀一行,則變量x累加1

}

return x; //傳回總的行數

結對程式設計 結對程式設計-四則運算

程式運作截圖:

結對程式設計 結對程式設計-四則運算
結對程式設計 結對程式設計-四則運算

結對過程

  隊友是使用java實作的,本人是使用c++實作的,是以在誰的基礎上進行修改有了一番讨論,最終決定不使用qt,使用web實作。

 展示PSP

PSP2.1  Personal Software Process Stages Time Senior Student Time 
Planning 計劃 16 25
· Estimate 估計這個任務需要多少時間 15 22
 Development 開發 552 573
 ·Analysis 需求分析 (包括學習新技術) 40 35
· Design Spec 生成設計文檔 30
· Design Review 設計複審 23
 · Coding Standard 代碼規範
· Design 具體設計 46
· Coding 具體編碼 264 263
· Code Review 代碼複審 26
 · Test 測試(自我測試,修改代碼,送出修改) 50
 Reporting 報告 63 84
測試報告 10 8
計算工作量 14 13
并提出過程改進計劃 17

小結感受

在結對程式設計中,最近忙着找工作,沒啥心思做了,而且最終采用web實作功能,java web的東西快忘得差不多了,是以交流跟負責的會比較少

評價合作夥伴

隊友很給力,也挺體諒我的,總有那麼個時間段是抽不開身的。

結對程式設計 結對程式設計-四則運算

結對程式設計 結對程式設計-四則運算
結對程式設計 結對程式設計-四則運算
結對程式設計 結對程式設計-四則運算
結對程式設計 結對程式設計-四則運算