c语言软件课设
电子设计应用软件训练总结报告(二)
一、题目分析
1、问题描述
读入一个C程序,统计程序中代码、注释和空行的行数以及函数的个数和平均行数,并利用统计信息分析评价该程序的风格。为方便,作以下约定:第一个字符是'{'的行称为注释行(该行不含语句)。除了空行和注释行外,其余均为代码行,每个函数都是全局的,没有嵌套函数。
2、基本要求
把 C程序文件作为TEXT文件读人源程序; 边读入程序,边识别统计代码行、注释行和空行,还要识别过程和函数的开始和结束,以便统计其个数和平均行数。评价分为代码、注释和空行3方面。分为A、B、C和D4个等级,等级的划分标准是:
A级B级C级D级代码(过程平均长度)10~15行8~9行或16~20行5~7行或21~24行<5或>24行注释(占总行数比率)10~25%10~14%或26~30%5~9%或31~35%<5%或>35%空行(占总行数比率)15~25%10~14%或26~30%5~9%或31~35%<5%或>35%
以下是对程序文件ProgAnal.C分析的输出结果示例:
The results of analysing program file“ProgAnal。C”:
Lines of code:180 Iines of comments:63 Blanklines:52 Code Comments Space 61% 21% 18%
The program includes 9 procedures and 4 functions.
The average length of a section of code is 12.9 lines.
Grade A。EXCellent routine Size Style.Grade A:Excellent commenting style.
Grade A:Excellent white space style.
3、需求分析
(1)文本串非空且以C程序文件形式存放,文件由用户建好并设立路径。
(2)把C程序文件按字符顺序读入源程序;
(3)边读入程序,边识别统计代码行、注释行和空行,同时还要识别函数的开始和结束,以便统计其个数和平均行数。
(4)在计算机终端输出的结果是:函数的个数,函数的总行数,函数的平均行数,总函数,空行的行数,注释的行数,函数的平均长度的等级,注释等级,空行等级。
(5)测试数据:C文本文件为本次练习中的1.cpp
二、设计过程
此次课程设计频繁的用到了文件的读写操作,牵扯到了关于缓存的一些细节问题,利用函数定义特性的格式与关键字排除方法相结合,实现所要求的功能。
1、头文件引用与宏定义:
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define BOOL int
#define MAXSIZE 5000
#define COUNT20//可以统计的最大的文件个数
#define LEN 20 // 文件名的最大长度
2、程序所用存储结构
//函数属性结构
typedef struct {
char filename[20]; //每一个函数的名字
int length; //每一个函数的长度
int pos;//每一个函数的位置
}Fun;
//统计结构的声明
typedef struct {
int comments; //纯注释的个数
int comment; //混合注释个数
int blank;//空行的个数
Fun fun[MAXSIZE];//函数的属性
int others;//除去函数中代码外其余的代码个数
int funcount; //函数的个数
}Analy;
3、函数功能说明
BOOL StrEmpty(char *s)//S是不是空
int Find(char *s1,char *s2)//查找S1中是否有值为S2的子串
void HaveLine(FILE *fp,char *s)//重文件中获取一行
char* IgnoreB(char *s)//截断一行的空字符
int IsCom(char *s)//判断一行是不是注释
BOOL IsBlank(char *s)//判断一行是不是空格
BOOL IsFunB(char *s)//判断一行是否是函数的开头
4、详细设计说明
(1)主函数的设计