?? 程序分析.txt
字號:
數據結構課程設計報告-程序分析
作者:劉大兵 來源: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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -