程序分析.txt

来自「读入一个C程序」· 文本 代码 · 共 170 行

TXT
170
字号
数据结构课程设计报告-程序分析 
作者:刘大兵  来源:lwbst.com    【2006-09-19】    编辑:Admin  
一、需求分析:

bst
读入一个C程序,统计程序中代码、注释和空行数以及函数的个数和平均行数,并利用统计信息分析评价该程序风格。
基本要求如下:
(1)、把C程序文件按字符顺序读入源程序;
(2)、边读入程序,边识别统计代码行、注释行和空行,同时还要识别函数的开始和结束,以便统计其个数及平均行数。
(3)、程序风格分为代码注释和空行三方面。每方面分A、B、C、D四个等级。

如下是对本程序代码进行分析的结果:



二、概要设计: 
(1)、定义一个函数结构,用于存放>函数信息
struct FunctionData{
char funname[80];
int fun_startline;
//函数的起始行号
int fun_endline;
//函数的结束行号
int fun_length;
};
typedef struct FunctionData FunData;
(2)、用于动态存放所有函数信息

//以下为带头结点链表操作的定义及相关函数
typedef FunData LLElemType;
//定义链表元素类型为FunData类型
typedef struct LinkListNode{
LLElemType data;
struct LinkListNode *next;
}*LinkList;
//end typedef struct LinkList

int InitLinkList(LinkList &LL)
{
//初始化链表
……
}

int LinkListLength(LinkList LL)
{
//获取链表长度
……
}
//end LinkListLength(LinkList LL)

int GetLinkListElem(LinkList LL,LLElemType &elem,int pos)
{
//获取链表元素
……
}
//end GetLinkListElem(LinkList LL,LLElemType *elem,int pos)

int LinkListInsert(LinkList &LL,LLElemType data)
{
//插入到链尾
……
}
//end LinkListInsert(LinkList *LL,LLElemType data,int pos)
//单链表定义至此结束
(3)、定义Data 存储程序分析的基本信息

typedef struct Data{
int CodeLines;
//代码行数
int CommentsLines;
//注释行数
int BlankLines;
//空白行数
int line_len;
unsigned long int length;
float average_len;
//函数平均长度
int fun_number;
//函数总数
int max_len;
//函数最大的长度
int max_startline;
int max_endline;
//最大函数起止行
}Data;

void InitData(Data &data)
{
//初始化data
……
}
//end InitData()

int SelectFunName(char data[1024],char pname[80])
{
//从字符串data中筛选出靠后且非空的连续字符pname
……
}
//end SelectFunName()

int IsFunName(char name[])
{
//判断字符串 name 是否函数名
……
}
//end IsFunName()

 

void DispAbout()
{
//输出本程序设计相关信息
……
}
//end DispAbout()

 

int AverageLen(LinkList &funlist,Data &data)
{
//计算函数平均长度
……
}
//end AverageLen()

int MyOpenFile(FILE *&fp)
{
//打开文件
……
}
//end MyOpenFile()

int Analysis(LinkList &funlist,Data &data)
{
//程序分析主函数
……
}
//end Analysis()

int DispFunData(LinkList funlist)
{
//输出函数的详细信息
……
}
//end DispFunData()

int GetGrade(char score[3][30],Data data,int &level,float coderate,float commentrate,float blankrate,int totallines)
{ 
//评定相应等级
……
}

int DispResult(Data data)
{
//输出基本分析结果
……
}
//end DispResult()

/////////////////////////////////////////
//main
void main()
{
//程序主函数
……
}
//end main
 
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?