程序分析.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 + -
显示快捷键?