結對程式設計-四則運算
組員
陳福鵬 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的東西快忘得差不多了,是以交流跟負責的會比較少
評價合作夥伴
隊友很給力,也挺體諒我的,總有那麼個時間段是抽不開身的。
