一、從個人項目出發,将程式改裝成一個單機帶使用者界面(不是控制台)的程式,這個程式最基本要達到:
- 生成題目,單個題目最多不能超過4個運算符,操作數小于100。
- 使用者可以輸入答案
- 若使用者輸入答案正确,則提示正确;若答案錯誤,則提示錯誤,并要提示正确答案是多少。
二、下面附有 8 個互相獨立的可以擴充的方向。
- 程式可以出帶括号的正整數四則運算,支援分數,除法保留兩位小數,如:(1/3+1)*2 = 2.67,特别注意:這裡是2.67而非2.66,或保持分數形式:8/3
- 可以出表達式裡含有負整數(負整數最小不小于-100)的題目,且負數需要帶括号,使用者輸入的結果不用帶括号。如: 2*(-4) = -8
- 使用者答題結束以後,程式可以顯示使用者答題所用的時間
- 使用者可以選擇出題的個數(最多不能超過5個題目),答題結束可以顯示使用者答錯的題目個數和答對的題目個數
- 使用者在第一次答題時,需要使用者輸入使用者名,使用者下次啟動後,程式需要記住使用者前一次輸入的使用者名
- 程式可以出單個整數階乘的題目:如:4!=24
- 程式可以設定答題時間,時間設定為整數,機關為秒,最大不能超過120秒,若超過了答題時間未答題,則提示:時間已到,不能答題。
- 程式可以設定皮膚功能,可以改變界面的顔色即可。
三、同學 兩兩結對,每對學生選取 8 個可擴充方向上面的 4個加以實作。
此次使用c語言來做實驗,代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<windows.h>
float algorithm(float x,char op,float y);
float algorithm2(float x,char op2,float y);
char createnumberop();
void test1(int n);
main()
{
int chooce,n;
system("color 3c");
printf("\n\t1.100以内四則運算 (小數點後保留兩位)\n\n");
printf("\n請輸入四則運算的數目:");
scanf("%d",&n);
if(n<=0)
printf("【數目有誤,請重新輸入!】\n");
test1(n);
}
//第一個運算符計算
float algorithm(float x,char op,float y)
float result;
switch(op)
case'+':result = x + y;break;
case'-':result = x - y;break;
case'*':result = x * y;break;
case'/':result = x / y;break;
return result;
//第二個運算符計算
float algorithm2(float x,char op2,float y)
switch(op2)
//随機産生運算符
char mark()
int op;
op=rand() % 4+1;
case 1:return'+';
case 2:return'-';
case 3:return'*';
case 4:return'/';
return 0;
//100以内四則運算
void test1(int n)
int i,rightnum=0,wrongnum=0;//rightnumber正确的個數,wrongnumber錯誤的個數
float a,b,c,answer,result;
char op,op2;//運算符
srand(time(NULL));
for(i=0;i<n;i++)
a=(float)(rand() % 100+1);//擷取随機數
b=(float)(rand() % 100+1);
c=(float)(rand() % 100+1);
op=mark();//擷取随機運算符
op2=mark();
if((op=='+' || op=='-') && (op2=='*' || op2=='/')){
result=algorithm(a,op,algorithm2(b,op2,c));
else{
result=algorithm2(algorithm(a,op,b),op2,c);//根據運算符優先級得出結果
if(result< 0)//如果結果為非正數,則重新擷取題目
i--;
continue;
printf("%.f %c %.f %c %.f = ",a,op,b,op2,c);
scanf("%f",&answer);
if((int)(100.0*answer+0.5)/100.0==(int)(100.0*result+0.5)/100.0 && result>=0)//四舍五入精确到小數點後兩位
printf("【回答正确!】\n\n");
rightnum++;
else
printf("【回答錯誤!答案是:%.2f】\n\n",(int)(100.0*result+0.5)/100.0);
wrongnum++;
printf("你總共答對了%d題,準确率為%.2f%!\n",n,rightnum,(float)rightnum/(float)n*100);
system("pause");
system("CLS");
printf("\n\n");

四、估計實作所需時間,記錄結對程式設計時間,并寫在部落格中。
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
Planning | 計劃 | 120 | 220 |
· Estimate | 估計這個任務需要多少時間 | 40 | 200 |
Development | 開發 | 60 | |
· Analysis | 需求分析 (包括學習新技術) | 30 | |
· Design Spec | 生成設計文檔 | ||
· Design Review | 設計複審 | 5 | 20 |
· Coding Standard | 代碼規範 | ||
· Design | 具體設計 | 35 | |
· Coding | 具體編碼 | 42 | |
· Code Review | 代碼複審 | 10 | 6 |
· Test | 測試(自我測試,修改代碼,送出修改) | 12 | |
Reporting | 報告 | 50 | 25 |
Test Report | 測試報告 | ||
·workload | 計算工作量 | ||
·correction | 并提出過程改進計劃 |