軟件測試第二周
github地址:https://github.com/WhaterverYouCall/rjcshomework
PSP2.1 | PSP階段 | 預估耗時(分鐘) | 實際耗時(分鐘) |
Planing | 計劃 | ||
Estimate | 估計任務所需時間 | 730 | 910 |
Development | 開發 | 40 | 40 |
Analysis | 需求分析 | 10 | 10 |
Design Spec | 生成設計文檔 | 10 | 10 |
Design Review | 設計復審(和同事審核設計文檔) | 10 | 10 |
Coding Standard | 代碼規範(為目前的開發制定合適的規範) | 10 | 10 |
Design | 具體設計 | 60 | 60 |
Coding | 具體編碼 | 360 | 480 |
Code Review | 代碼復審 | 30 | 30 |
Test | 測試(自我測試、修改代碼、提交修改) | 120 | 180 |
Reporting | 報告 | 20 | 20 |
Test Report | 測試報告 | 20 | 20 |
Size Measurement | 計算工作量 | 10 | 10 |
Postmortem&Process Improvement | 事後總結,並提出改進計劃 | 30 | 30 |
合計 | 730 | 910 |
解題思路
按照老師所給的功能模塊(基礎、擴展、高級)由簡到難對問題進行解決,使用較為熟悉的C++進行編程
程序實現過程
分析函數:讀取文件第一個字符開始進行判斷,並開始統計字符數等。
(1)字符數:讀一次便將字符數參數加一。
(2)行數:出現\n則行數參數加一
(3)單詞數:出現,或空格則單詞參數加一
(4)註釋行數:出現\則為註釋行
(5)空行:開頭為\n則為空行
最後在主函數中輸入文件路徑後,調用輸出結果。
代碼說明
文件內容分析:
analyse()
void analyse()
{
while((c=fgetc(file))!=EOF)
{
chars++;
if (((c<=‘z‘)&&(c>=‘a‘))||((c<=‘Z‘)&&(c>=‘A‘))||((c>=‘0‘)&&(c<=‘9‘)))
{
words++;
while((c=fgetc(file))!=EOF)
{
chars++;
if (((c<=‘z‘)&&(c>=‘a‘))||((c<=‘Z‘)&&(c>=‘A‘))||((c>=‘0‘)&&(c<=‘9‘)))
{
}
else if (c==‘\n‘)
{
s[lines]=3;
lines++;
break;
}
else if ((c==‘,‘)||(c==‘ ‘))
break;//判斷單詞,有空格或者逗號或者換行則停止
else
{
symbols++;
break;
}//判斷運算符號,不是單詞的即為符號
}
}
else if (c==‘/‘)
{
if ((c=fgetc(file))==‘/‘)
{
symbols+=2;
s[lines]=2;
fseek(file,-1L,SEEK_CUR);
}//判斷註釋行
}
else if (c==‘\n‘)
{
if (s[lines]!=2)
s[lines]=1;
lines++;
}
else if (c==‘ ‘)
{
}
else
symbols++;
}
if (s[lines]!=2)
s[lines]=1;
}//分析所有字符數、單詞數、行數及行類的函數
主函數
{
char name[50];
int a,i,j;
int m=0,n=0,q=0;
cout<<"輸入源文件名:";
for(;;)
{
cin>>name;
if((file=fopen(name,"r"))!=NULL)
break;
else
cout<<"文件路徑錯誤!";
}
analyse();
fclose(file);
for (i=1;i<=lines;i++)
{
if (s[i]==1)
{
m++;
cout<<"第"<<i<<"行為代碼行"<<endl;
}
else if (s[i]==2)
{
n++ ;
cout<<"第"<<i<<"行為註釋行"<<endl;
}
else if(s[i]==3)
{
q++;
cout<<"第"<<i<<"行為空行"<<endl;
}
}
cout<<"字符數:"<<chars<<endl;
cout<<"單詞數:"<<words<<endl;
cout<<"行數 :"<<lines<<endl;
cout<<"符號數:"<<symbols<<endl;
cout<<"代碼行數:"<<m<<endl;
cout<<"註釋行數:"<<n<<endl;
system("pause");
return 0;
}
其中使用了與文件調用相關的函數fopen()fgetc(file)等
註:由於時間水平有限,只能實現部分功能,如未能實現文件遍歷、命令行命令批處理,還請老師諒解。
軟件測試第二周