- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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 stdio.h
#include stdlib.h
#include string.h
#define TRUE 1
#define FALSE 0
#define BOOL int
#define MAXSIZE 5000
#define COUNT 20 // 可以统计的最大的文件个数
#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)主函数的设计
调用各个
您可能关注的文档
最近下载
- DL∕T 5168-2023表A.5 分部工程质量控制资料核查记录.pdf VIP
- 大班数学活动《8的分解组成》PPT课件.ppt
- 【一模】2025年广东省2025届高三高考模拟测试 (一) 数学试卷(含官方答案及解析 ).docx
- 13S201 室外消火栓及消防水鹤安装.docx VIP
- 主题班会课件-师恩难忘-学子感恩-致敬恩师主题班会.ppt
- GB50327-2001住宅装饰装修工程施工规范.docx
- World怎么在参考文献后面添加CrossRef.pdf VIP
- 江苏省房屋建筑和市政基础设施工程标准施工招标文件(适用于资格后审).doc VIP
- 八下英语U3词性变化.docx
- 《机械原理》期末考试试题及答案.docx
文档评论(0)