題目要求:
- 一個小組中的兩個同學選取比較優秀的 作業1 (兩個人的都獨立完成了), 把它作為本次作業的基礎,然後再修改。
- 結對程式設計實作上述功能,同樣的,在程式正式開發之前,請先預估下PSP每個環節的消耗時間,并在過程中統計實際耗時,最後送出PSP表格。依然注意,這個主要是給你們自己看的,不必造假資料。
-
在兩人合作的過程中, 請看下面的内容
a. 滿足代碼風格規範和代碼設計規範(參考書第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
- 請重視這點,在開發時兩個人要有口頭上的溝通:“好的,我們一起在開發中遵守一起認可的編碼規範”
- 請把你們約定的編碼規範文檔也送出到git
b. 給人提意見的方式——送一個漢堡包http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
c. 了解領航員和駕駛員兩種角色關系,并在結對程式設計中兩個人輪流做對方的角色。兩人都必須參與本次作業的編碼工作,并在git送出日志上展現這點。
隊友學号:栗海輝 201421123121 黃良靜 201421123103
- 記錄使用者的對錯總數,程式退出再啟動的時候,能把以前的對錯數量儲存并在此基礎上增量計算。
- 有計時功能,能顯示使用者開始答題後的消耗時間。
- 界面支援中文簡體/中文繁體/英語,使用者可以選擇一種
<一>
1.首先應該建立一個用于存放錯誤題目的.txt檔案。
2.在每次判斷函數以後若判斷為錯誤,應把生成的題目自動存放到txt檔案中。
3.每次增加錯誤題目的時候記錄的錯題數目應該+1.
4.錯誤題目的數量也儲存到一個檔案中記錄下來,每當有錯誤實時更新錯誤數量。
<二>
1首先記錄時間的計數器不能被界面覆寫應該放置在明顯的頂部或者右上方。
2在運作過程中不應該應在未做完題目之前不能夠終止計時,并且在答題完成以後終止技術工作。
3在每次重新開始答題的時候計時器自動清零。
<三>
1.引用SetThreadUILanguage函數用于轉換語言
2.添加改變語言的按鈕,用于連結不同語言的切換
3.用不同的按鈕實作改變不同的語言。
b. 程式設計:針對選擇的2-3個新開發功能做設計,使用思維導圖。
1.

2.
3.
c. 代碼展示:展示每個功能的核心代碼。
(初始化指派)FILE * in;
if (fopen_s(&in, "tf.txt", "r")!=0)
{
fopen_s(&in, "tf.txt", "w");
}
fscanf_s(in, "%d,%d", &t, &f);
fclose(in);
n = t + f;
(寫入)FILE * out;
fopen_s(&out, "tf.txt", "w");
fprintf_s(out, "%d,%d", t, f);
fclose(out);.
(定時器)
void CMFCApplication1Dlg::OnTimer(UINT_PTR nIDEvent)
static UINT s1 = 0;
static UINT f1 = 0;
static UINT h1 = 0;
CString str;
switch (nIDEvent)
case 1:
s1++;
if (s1 == 60) { s1 = 0; f1++; }
if (f1 == 60) { f1 = 0; h1++; }
str.Format(_T("%02i:%02i:%02i"), h1, f1, s1);
SetDlgItemText(IDC_EDIT6, str);
break;
case 2:
s2++;
if (s2 == 60) { s2 = 0; f2++; }
if (f2 == 60) { f2 = 0; h2++; }
str.Format(_T("%02i:%02i:%02i"), h2, f2, s2);
SetDlgItemText(IDC_EDIT8, str);
使用定時器:
void CMFCApplication1Dlg::OnBnClickedButton1()
// TODO: 在此添加控件通知處理程式代碼
UpdateData(TRUE);
CString ls;
ls = "00:00:00";
SetDlgItemText(IDC_EDIT8, ls);
SetTimer(1, 1000, NULL);
SetTimer(2, 1000, NULL);
禁止按鈕2(送出按鈕)使用次代碼實作在生成題目前無法送出,送出答案前無法生成下一道題。
GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
切換語言
1引用庫
strTemp.LoadString(IDS_BUTTON1);
SetDlgItemText(IDC_BUTTON1, strTemp);
strTemp.LoadString(IDS_BUTTON2);
SetDlgItemText(IDC_BUTTON2, strTemp);
strTemp.LoadString(IDS_BUTTON3);
SetDlgItemText(IDC_BUTTON3, strTemp);
strTemp.LoadString(IDS_STATIC1);
SetDlgItemText(IDC_STATIC1, strTemp);
strTemp.LoadString(IDS_STATIC2);
SetDlgItemText(IDC_STATIC2, strTemp);
strTemp.LoadString(IDS_STATIC3);
SetDlgItemText(IDC_STATIC3, strTemp);
strTemp.LoadString(IDS_STATIC4);
SetDlgItemText(IDC_STATIC4, strTemp);
strTemp.LoadString(IDS_STATIC5);
SetDlgItemText(IDC_STATIC5, strTemp);
strTemp.LoadString(IDS_STATIC6);
SetDlgItemText(IDC_STATIC6, strTemp);
strTemp.LoadString(IDS_STATIC7);
SetDlgItemText(IDC_STATIC7, strTemp);
2.切換線程語言改為美式英語
SetThreadUILanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
d. 程式運作:程式運作及每個功能的使用截圖。
e. 小結感受:結隊程式設計真的能夠帶來1+1>2的效果嗎?通過這次結隊程式設計,請談談你的感受和體會。
通過初次的結隊合作,有許許多多的分歧導緻進度有時候變得很難前行,由于程式設計語言使用的分歧導緻有時候代碼編寫上出現不同,同時由于兩個人使用的變量名稱不同有時候會讓程式報錯甚至崩潰。不過通過此次合作也了解了要如何使用未知變量,也了解到了不同人的程式設計習慣和程式設計思維是不同的。但是經過兩到三天的合作也增加的不少程式設計的默契,實驗最終是全滿的完成了。我認為1+1的效果能夠大于2是要看兩個人長期的合作和默契程度決定的。
提供項目開發的coding.net 位址。
https://git.coding.net/lenmo/MFC_sizeyunsuan.git
描述結隊的過程,提供非擺拍的兩人在讨論、細化和程式設計時的結隊照片。
提供此次結隊作業的PSP。
Planning | 計劃 | 10min | 6min |
· Estimate | 估計這個任務需要多少時間 | 2day | 1.5day |
Development | 開發 | 1day | |
· Analysis | 需求分析 (包括學習新技術) | 2h | 4h |
· Design | 具體設計 | 20min | |
· Coding | 具體編碼 | 1h | |
· Code Review | 代碼複審 | 30min | |
· Test | 測試(自我測試,修改代碼,送出修改) | 13 | 21 |