代碼連接git
本次要求把這個程序作成GUI(能夠是Windows PC 上的,也能夠是Mac、Linux,web,手機上的),成爲一個有基本功能、必定價值的程序。
在下面的功能需求中實現兩個:web
本次編程要求實現記錄用戶的對錯總數,而且在之前的基礎上進行增量計算。所以,這就要求咱們須要建立文件或其餘方法來保存對錯的數量,以便於在再次開啓程序時可以讀入之前作題的數目。計時功能是相對比較容易實現的,只需在開始答題是開啓時鐘,提交答案時關閉時鐘,兩次的差值就是答題所用的時間。多種語言選擇,其實就是在實現中文的基礎上將顯示界面和答案對錯提示用不一樣的語言來替代,而內在的關於計算、比較答案的算法卻沒有太大的變化。算法
程序中判斷答案的代碼以下(爲中文版的),在切換到英文等其餘語言時,只需將顯示正確錯誤的的中文設置爲英文,而生成題目的函數並不須要有任何的改變。編程
char* Submit(char result[],char * answer) { static char prompt[20]; FILE * in; FILE * out; in=fopen("number.txt","r"); fscanf(in,"%d,%d",&right,&wrong); fclose(in); if(strcmp(answer,result)==0) { strcpy(prompt,"正確!"); right++; } else { strcpy(prompt,"錯誤! "); strcat(prompt,"正確答案是:"); strcat(prompt,result); wrong++; } out=fopen("number.txt","w"); fprintf(out,"%d,%d",right,wrong); fclose(out); return prompt; }
整個工程總共有三個界面:選擇語言的界面、中文界面和英文界面(中文繁體的只需建立一個新的界面,而後調用以前的函數便可)。界面之間的跳轉使用按鈕來控制,如下是部分代碼(主界面到中文界面):函數
void CTeamworkDlg::OnChinese() { // TODO: Add your control notification handler code here chinese chinese; CTeamworkDlg::OnOK(); chinese.DoModal(); }
每一題計時的代碼以下:學習
void chinese::OnButton() { // TODO: Add your control notification handler code here UpdateData(); m_Show1=Draw(); start=clock(); UpdateData(false); } void chinese::OnButton_Submit() { // TODO: Add your control notification handler code here finish= clock(); duration =(double)(finish-start)/CLOCKS_PER_SEC; sprintf(temp,"%g",duration); m_Show3=temp; UpdateData(false); }
計時功能經過按鈕實現,在生成題目以後開啓時鐘,在提交以後在記錄一個時間,兩個時間的差值就是本題的用時。測試
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student(/hour) | Time (%)(/hour) |
· Planning | 計劃 | 2 | 1.8 |
· Estimate | 估計這個任務須要多少時間 | 25 | 20 |
· Analysis | 需求分析 (包括學習新技術) | 2 | 1 |
· Coding Standard | 代碼規範 | 1 | 1.5 |
· Design | 具體設計 | 1.5 | 1 |
· Coding | 具體編碼 | 20 | 15 |
· Test | 測試(自我測試,修改代碼,提交修改) | 1 | 1.5 |
Reporting | 報告 | 1 | 1 |
整個編程過程當中,遇到很多的問題。相似[Error]:LNK2005 ——生成題目的函數寫在Draw.h的頭文件中,在只有中文界面時調用函數時沒有任何的問題,而在加入英文界面的由於重複定義而出現了錯誤。上網百度後,發現只需聲明該方法便可,並不須要從新定義其餘與之功能相同的異名函數。在讀入文件時,也曾就文件的路徑編寫時使用絕對路徑或則相對路徑出現過問題。一開始使用絕對路徑編寫,發現編譯後運行生成的.exe文件時會出現錯誤。以後,將文件路徑改成相對路徑並將其移入到Debug文件夾中後就能夠很好地實現實驗要求的功能。同時,在計時方面仍有不足,只可以一題一題的統計時間。程序還有許多不足,以後會不斷改進!!!編碼