统计程序中各种代码行数的课程设计报告书Word下载.docx

上传人:b****1 文档编号:13886251 上传时间:2022-10-14 格式:DOCX 页数:20 大小:295KB
下载 相关 举报
统计程序中各种代码行数的课程设计报告书Word下载.docx_第1页
第1页 / 共20页
统计程序中各种代码行数的课程设计报告书Word下载.docx_第2页
第2页 / 共20页
统计程序中各种代码行数的课程设计报告书Word下载.docx_第3页
第3页 / 共20页
统计程序中各种代码行数的课程设计报告书Word下载.docx_第4页
第4页 / 共20页
统计程序中各种代码行数的课程设计报告书Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

统计程序中各种代码行数的课程设计报告书Word下载.docx

《统计程序中各种代码行数的课程设计报告书Word下载.docx》由会员分享,可在线阅读,更多相关《统计程序中各种代码行数的课程设计报告书Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

统计程序中各种代码行数的课程设计报告书Word下载.docx

Linesofcomments:

63

Blanklines:

 

52

Code 

Comments 

Space

61% 

21% 

18%

Theprogramincludes9functions.

Theaveragelengthofasectionofcodeis12.9lines.

GradeA:

Excellentroutinesizestyle.

Excellentcommentingstyle.

Excellentwhitespacestyle.

1.概要设计

1).头文件引用与宏定义:

#include<

stdio.h>

stdlib.h>

string.h>

#defineTRUE1

#defineFALSE0

#defineBOOLint

#defineMAXSIZE5000

#defineCOUNT20//可以统计的最大的文件个数

#defineLEN20//文件名的最大长度

2).所用存储结构

//函数属性结构

typedefstruct{

charfilename[20];

//每一个函数的名字

intlength;

//每一个函数的长度

intpos;

//每一个函数的位置

}Fun;

//统计结构的声明

intcomments;

//纯注释的个数

intcomment;

//混合注释个数

intblank;

//空行的个数

Funfun[MAXSIZE];

//函数的属性

intothers;

//除去函数中代码外其余的代码个数

intfuncount;

//函数的个数

}Analy;

2.详细设计

1).函数功能及声明

BOOLStrEmpty(char*s)//S是不是空

intFind(char*s1,char*s2)//查找S1中是否有值为S2的子串

voidHaveLine(FILE*fp,char*s)//重文件中获取一行

char*IgnoreB(char*s)//截断一行的空字符

intIsCom(char*s)//判断一行是不是注释

BOOLIsBlank(char*s)//判断一行是不是空格

BOOLIsFunB(char*s)//判断一行是否是函数的开头

voidPrintMax(Analy*An)//打印最大函数的信息

voidprintR(intaver,intcomc,intblanks)//打印代码风格级别

voidprint(Analy*An)//

voidcheckfile(char*filename,inti)//检测文件是否存在

BOOLGetIn(int*n)//规输入的数据,只能为数字

voidanaly(charfilename[COUNT][LEN],intn)//分析单个文件

voidsavelog()//保存日志

2)详细源代码

//检测是否为空串

BOOLStrEmpty(char*s)

{

if(s[0]=='

\0'

returnTRUE;

returnFALSE;

}

//查看S1中是否有值为S2的子串,若有则返回第一个子串的位置,若无则返回-1;

intFind(char*s1,char*s2)

inti=0,j=0;

if(strlen(s1)<

strlen(s2))

return-1;

while(s1[i]!

='

{

if(s1[i]==s2[j])

{

i++;

j++;

if(s2[j]=='

returni-j;

continue;

}

i++;

j=0;

}

return-1;

//读取文件中的一行字符

voidHaveLine(FILE*fp,char*s)

while(!

feof(fp))

*s=fgetc(fp);

if(*s=='

\n'

){//若果是一行的结尾则表示取完了一行

*s='

;

return;

s++;

}

*s='

//忽略一行字符开头的空格和tab,返回截断后上的串指针

char*IgnoreB(char*s)

while(*s=='

'

||*s=='

returns;

//判断一行字符是不是注释

intIsCom(char*s)

intposc,pos1,pos2;

s=IgnoreB(s);

posc=Find(s,"

//"

);

if(posc==0)//此行仅有注释,无代码;

return1;

if(posc==-1)

return0;

pos1=Find(s,"

\"

"

pos2=Find(&

s[pos1+1],"

if(posc>

pos1&

&

posc<

pos2)

return2;

//判断一行字符是不是空白

BOOLIsBlank(char*s)

if(*s=='

BOOLIsFunB(char*s)

inti,j,pos,pos2;

//有分号,ifwhilefor的不是函数开头

if(Find(s,"

)!

=-1||Find(s,"

if"

for"

while"

=-1||Find(s,"

switch"

=-1)

returnFALSE;

//没有小括号的不是函数开头

if((pos=Find(s,"

("

))==-1)

s=IgnoreB(s);

i=Find(s,"

"

j=Find(s,"

if(i!

=-1&

j!

i=i>

j?

j:

i;

elseif(i==-1)

i=j;

elseif(1==-1&

j==-1)

if(i>

pos)

s=&

s[i];

pos2=Find(s,"

if(*s=='

||*s=='

('

||pos2>

returnTRUE;

//打印最大的函数属性

voidPrintMax(Analy*An)

//FILE*fp;

inti,j=0;

//intlen;

for(i=1;

i<

An->

funcount;

i++)

if(An->

fun[j].length<

fun[i].length)//找出最大的函数的位置

j=i;

0||An->

fun[j].pos<

0){

printf("

therearenotanyfunctioninthefiles"

//打印出函数所在的文件和位置

printf("

Thelengthoflengthestfunctionhave%dlines\n"

An->

fun[j].length);

//打印长度

Theposoflengthestfunctionisin%sthe%dthline\n"

fun[j].filename,An->

fun[j].pos);

voidprintR(intaver,intcomc,intblanks)

//按代码级别判定标准输出分析结果

inti;

charGrade[4][15]={"

Excellent"

"

Good"

So-So"

Bad"

};

//定义四个级别段

//判定代码的级别

if(aver<

=15&

aver>

=10)

i=0;

elseif((aver<

=20&

=16)||aver<

=9&

=8)

i=1;

=7&

=5)||aver<

=24&

=21)

i=2;

elseif((aver<

5)||(aver>

24))

i=3;

printf("

Grade%sroutinecodestyle\n"

Grade[i]);

//判定注释的级别

if(comc<

=25&

comc>

=15)

elseif((comc<

=14&

=10)||comc<

=30&

=26)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1