版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Counter V1.0 详细设计说明书拟制TProject项目组日期2003-06-08评审人日期yyyy-mm-dd修订记录日期修订版本修改章节修改描述作者2001-06-081.00初稿完成TProject项目组目 录1简介61.1目的61.2范围62详细设计62.1用户界面模块详细设计6数据描述6函数描述62.2参数检查模块详细设计10数据描述10函数描述102.3统计空行模块详细设计13数据描述13函数描述132.4统计代码行模块详细设计14数据描述14函数描述152.5统计注释行数模块详细设计18数据描述18函数描述182.6统计总行数模块详细设计20数据描述20函数描述202.7
2、统计结果输出模块详细设计22数据描述22函数描述22表目录Table1*表错误!未定义书签。表1*表错误!未定义书签。图目录图1 参数检查模块函数调用关系10Counter V1.0 详细设计说明书关键词:代码行、空行、注释行、统计工具摘 要:本文档是Counter V1.0的软件详细设计说明书,为了指导软件编码工作和软件单元测试用例设计 缩略语清单: 缩略语英文全名中文解释1 简介1.1 目的本文档是对Counter V1.0软件概要设计说明书的细化。用以指导Counter V1.0的编码工作。1.2 范围本文档给出Counter V1.0的具体函数实现。2 详细设计2.1 用户界面模块详细
3、设计2.1.1 数据描述简单数据描述无数据结构定义无2.1.2 函数描述标识:用户界面模块功能概述:该模块相应用户通过界面的输入。包括如下几个功能:选择被统计的文件、选择统计空行、选择统计代码行、选择统计注释行、选择统计总行、退出Counter、开始统计几大功能。每个功能对外提供独立的接口,彼此独立,没有逻辑关系。1. 函数选择被统计的文件Function: VOID SelectStatFile()Description: 该函数相应用户选择被统计文件的操作,得到被统计文件的全路径名Calls: 无Input: 无Output: g_szStatFileName全局变量,被统计的文件全路径R
4、eturn: 无Others: 无-函数实现: VOID SelectStatFile()BEGIN弹出文件对话框,文件对话框列出当前目录后缀名为.c的所有文件用户按下“确定”按钮后,得到用户选择的文件全路径g_szStatFileName = 被统计文件的全路径END2. 函数选择统计空行项Function: VOID SetStatBlankLineFlag()Description: 相应用户单击“统计空行”复选框Calls: 无Input: 无Output: g_bStatBlankLineFlag全局变量,统计空行标志位 Return: 无Others: 无-函数实现: VOID S
5、etStatBlankLineFlag()BEGINIf (STAT = g_bStatBlankLineFlag) g_bStatBlankLineFlag = NOT_STAT Else g_bStatBlankLineFlag = STATEND3. 函数选择统计代码行项Function: VOID SetStatCodeLineFlag()Description: 相应用户单击“统计代码行”复选框Calls: 无Input: 无Output: g_bStatCodeLineFlag全局变量,统计代码行标志位 Return: 无Others: 无-函数实现: VOID SetStatCo
6、deLineFlag()BEGINIf (STAT = g_bStatCodeLineFlag) g_bStatCodeLineFlag = NOT_STAT Else g_bStatCodeLineFlag = STATEND4. 函数选择统计注释行项Function: VOID SetStatCommLineFlag()Description: 相应用户单击“统计注释行”复选框Calls: 无Input: 无Output: g_bStatCommLineFlag全局变量,统计注释行标志位 Return: 无Others: 无-函数实现: VOID SetStatCommLineFlag()
7、BEGINIf (STAT = g_bStatCommLineFlag) g_bStatCommLineFlag = NOT_STAT Else g_bStatCommLineFlag = STATEND5. 函数选择统计总行数项目Function: VOID SetStatTotalLineFlag()Description: 相应用户单击“统计总行数”复选框Calls: 无Input: 无Output: g_bStatTotalLineFlag全局变量,统计总行数标志位 Return: 无Others: 无-函数实现: VOID SetStatTotalLineFlag()BEGINIf
8、(STAT = g_bStatTotalLineFlag) g_bStatTotalLineFlag = NOT_STAT Else g_bStatTotalLineFlag = STATEND6. 函数退出Counter应用程序Function: VOID ExitCounter()Description: 退出应用程序CounterCalls: 无Input: 无Output: 无Return: 无Others: 无-函数实现: VOID ExitCounter()BEGIN退出应用程序CounterEND2.2 源文件统计主控模块2.2.1 数据描述简单数据描述无数据结构定义无2.2.2
9、 函数描述1. 函数-开始统计功能Function: VOID MainStatFun()Description: 该函数在用户通过界面单击“开始统计”按钮后,开始运行。该主控函数具有调度功能,分别调用参数检查模块、代码统计模块和统计结果输出模块,完成一次统计执行过程Calls: 无Input: 无Output: 无Return: 无Others: 无-函数实现: VOID MainStatFun ()BEGIN /为全局变量赋值,记录统计行数的变量均初始化为0g_iCodeLineNum = 0;g_iBlankLineNum = 0;g_iCommLineNum = 0;g_iTotalL
10、ineNum = 0;/定义调用函数的返回值变量BOOL iRetVal;iRetVal = CheckParameters(g_szStatFileName,g_bStatBlankLineFlag,g_bStatCodeLineFlag,g_bStatCommLineFlag,g_bStatTotalLineFlag); If (RET_FAIL = iRetVal) return;/统计文件中空行数目MainStatBlankLine(g_szStatFileName,g_bStatBlankLineFlag);/统计文件中代码行数MainStatCodeLine(g_szStatFil
11、eName,g_bStatCodeLineFlag);/统计文件中的注释行数MainStatCommLine(g_szStatFileName,g_bStatCommLineFlag);/统计文件中的总行数MainStatTotalLine(g_szStatFileName,g_bStatBlankLineFlag,g_bStatCodeLineFlag,g_bStatCommLineFlag,g_bStatTotalLineFlag);/输出空行统计数目StatResultOutput(STAT_BLANK, g_iBlankLineNum);/输出代码行统计数目StatResultOutp
12、ut(STAT_CODE, g_iCodeLineNum);/输出注释行统计数目StatResultOutput(STAT_COMM, g_iCommLineNum);/输出总行统计数目StatResultOutput(STAT_TOTAL, g_iTotalLineNum);END2.3 参数检查模块详细设计2.3.1 数据描述简单数据描述无数据结构定义 无2.3.2 函数描述标识:参数检查模块功能概述:该模块实现对用户输入参数,包括被统计文件名、统计项目的合法性检查 函数调用关系: 参数检查模块函数调用关系“参数检查主函数”分别调用“被统计文件合法性检查函数”和“统计标志位合法性检查函数”
13、,如果参数不合法,给用户提示信息。1. 函数参数检查主函数Function: BOOL CheckParameters(CString szStatFileName,BOOL bStatBlankLineFlag,BOOL bStatCodeLineFlag,BOOL bStatCommLineFlag,BOOL bStatTotalLineFlag)Description: 参数检查主函数 Calls: CheckStatFile();CheckStatItem()Input: szStatFileName被统计的文件全路径bStatBlankLineFlag统计空行标志位bStatCode
14、LineFlag统计代码行标志位bStatCommLineFlag统计注释行标志位bStatTotalLineFlag统计总行标志位Output: 无Return: RET_OK参数检查合法,RET_FAIL参数检查不合法Others: 无-函数实现: BOOL CheckParameters(CString szStatFileName,BOOL bStatBlankLineFlag,BOOL bStatCodeLineFlag,BOOL bStatCommLineFlag,BOOL bStatTotalLineFlag)BEGINCString szErrorMsg; /给用户的提示信息B
15、ool iRetVal; /调用函数的返回值/开始检查被统计文件的合法性iRetVal = CheckStatFile(szStatFileName);If ( RET_FAIL = iRetVal) szErrorMsg = “被统计文件” + szStatFileName + “不存在,或者正在被其他程序使用,或者后缀名不为.c,请检查!”;弹出警告对话框,对话框上的文字为szErrorMsg中的值; Return RET_FAIL;/开始检查统计项目的合法性iRetVal = CheckStatItem (bStatBlankLineFlag, bStatCodeLineFlag, bS
16、tatCommLineFlag, bStatTotalLineFlag);If ( RET_FAIL = iRetVal)szErrorMsg = “至少需要选择一个统计项目,否则无法统计”; 弹出警告对话框,对话框上的文字为szErrorMsg中的值; Return RET_FAIL;Return RET_OK;END2. 函数被统计文件检查函数Function: BOOL CheckStatFile(CString szStatFileName)Description: 检查被统计文件的合法性Calls: 无Input: szStatFileName被统计的文件全路径Output: 无Re
17、turn: RET_OK参数检查合法,RET_FAIL参数检查不合法Others: 无-函数实现: BOOL CheckStatFile(CString szStatFileName)BEGINIF文件szStatFileName的后缀名不为.c Return RET_FAIL;Else If (文件szStatFileName不可读) Return RET_FAIL;Return RET_TRUE;END3. 函数统计项目检查函数Function: BOOL CheckStatItem(BOOL bStatBlankLineFlag,BOOL bStatCodeLineFlag,BOOL b
18、StatCommLineFlag,BOOL bStatTotalLineFlag)Description: 统计项目检查函数Calls: 无Input: 无Output: bStatBlankLineFlag统计空行标志位bStatCodeLineFlag统计代码行标志位bStatCommLineFlag统计注释行标志位bStatTotalLineFlag统计总行标志位Return: RET_OK参数检查合法,RET_FAIL参数检查不合法Others: 无-函数实现: BOOL CheckStatItem (BOOL bStatBlankLineFlag,BOOL bStatCodeLine
19、Flag,BOOL bStatCommLineFlag,BOOL bStatTotalLineFlag)BEGIN /如果四个统计项目都没有被选中,则返回失败If ( (NOT_STAT = bStatBlankLineFlag) AND (NOT_STAT = bStatCodeLineFlag)AND (NOT_STAT = bStatCommLineFlag)AND (NOT_STAT = bStatTotalLineFlag) ) return RET_FAIL;Return RET_OK;END2.4 统计空行模块详细设计2.4.1 数据描述简单数据描述无数据结构定义无2.4.2 函
20、数描述标识:统计空行模块功能概述:统计文件中的空行数目 函数调用关系: MainStatBlankLine检查是否需要统计空行数目,如果需要,则调用 StatBlankLine开始具体的统计操作1. 函数统计空行数主函数Function: VOID MainStatBlankLine(CString szStatFileName,BOOL bStatBlankLineFlag)Description: 调用StatBlankLine 统计文件中空行数目Calls: StatBlankLine (CString szStatFileName)Input: g_szStatFileName全局变量
21、,被统计的文件全路径g_bStatBlankLineFlag全局变量,统计空行标志位Output: 无Return: 无Others: 无-函数实现: VOID MainStatBlankLine(CString szStatFileName,BOOL bStatBlankLineFlag)BEGIN /判断是否需要统计空行数 If (STAT = bStatBlankLineFlag) StatBlankLine(szStatFileName); END2. 函数统计空行数函数Function: VOID StatBlankLine(CString szStatFileName)Descri
22、ption: 统计文件中空行数目Calls: 无Input: g_szStatFileName全局变量,被统计的文件全路径Output: g_iBlankLineNum全局变量,统计得到的空行数目Return: Others: 无-函数实现: VOID StatBlankLine(CString szStatFileName)BEGIN /定义被统计文件的句柄CStdioFile StatFilehandle;/定义保存文件中当前行字符串的变量CString szStatFileLine;打开文件szStatFileName,并使文件句柄StatFilehandle指向打开的文件szStatF
23、ileName;WHILE(没有读取到文件szStatFileName尾部) szStatFileLine = 文件szStatFileName的当前行中的文本; 删除szStatFileLine中的TAB字符; 删除szStatFileLine中的空格符; 删除szStatFileLine中的回车符; 删除szStatFileLine中的换行符号; If ( 0 = szStatFileLine的字符串长度) ( g_iBlankNum+;) 关闭文件szStatFileName; END2.5 统计代码行模块详细设计2.5.1 数据描述简单数据描述无数据结构定义无2.5.2 函数描述标识:
24、统计代码行模块功能概述:该模块实现对 文件中代码行的统计功能函数调用关系: MainStatCodeLine检查是否需要统计代码行数目,如果需要,则调用 StatCodeLine开始具体的统计操作1. 函数统计代码行数主函数Function: VOID MainStatCodeLine(CString szStatFileName,BOOL bStatCodeLineFlag)Description: 调用StatCodeLine 统计文件中空行数目Calls: StatCodeLine (CString szStatFileName)Input: g_szStatFileName全局变量,被
25、统计的文件全路径g_bStatCodeLineFlag全局变量,统计空行标志位Output: 无Return: Others: 无-函数实现: VOID MainStatCodeLine(CString szStatFileName,BOOL bStatCodeLineFlag)BEGIN /判断是否需要统计空行数 If (STAT = bStatCodeLineFlag) StatCodeLine(szStatFileName); END2. 函数统计代码行函数Function: VOID StatCodeLine(CString szStatFileName)Description: 统计
26、文件中代码行数目Calls: IsCodeLineInput: g_szStatFileName全局变量,被统计的文件全路径Output: g_iCodeLineNum全局变量,统计得到的空行数目Return: Others: 无-函数实现: VOID StatCodeLine(CString szStatFileName)BEGIN /定义被统计文件的句柄CStdioFile StatFilehandle;/定义保存文件中当前行字符串的变量CString szStatFileLine;/标识当前行是否处于注释体内,false-没有处于注释体内.true-处于注释体内BOOL bIsComme
27、nt = false;/调用函数的返回值BOOL bRetVal;打开文件szStatFileName,并使文件句柄StatFilehandle指向打开的文件szStatFileName;WHILE(没有读取到文件szStatFileName尾部) szStatFileLine = 文件szStatFileName的当前行中的文本; 删除szStatFileLine中的TAB字符; 删除szStatFileLine中的空格符; 删除szStatFileLine中的回车符; 删除szStatFileLine中的换行符号; /如果该行是空行,继续循环 If ( 0 = szStatFileLine
28、的字符串长度) ( continue;)/调用函数IsCodeLine,判断当前行是否是代码行bRetVal = IsCodeLine(szStatFileLine, bIsComment);If (RET_OK = bRetVal) g_iCodeLineNum+; END3. 函数判断当前行是否为代码行Function: BOOL IsCodeLine(CString szStatFileLine,BOOL &bIsComment)Description: 判断当前字符串是否是代码行Calls: 无Input: szStatFileLine文件中当前行的字符串,该行字符串不是空行
29、bIsComment标识当前行是否处于注释体内。True处于注释体内,false不是处于注释体内Output: bIsComment:如果该行为注释的最后一行,bIsComment赋值falseReturn: RET_OK是代码行,RET_FAIL该行为注释行Others: 无-函数实现: BOOL IsCodeLine(CString szStatFileLine,BOOL &bIsComment)BEGIN /定义代码行标志 Int iCodeFlag=RET_FAIL; /记录当前字符串的长度 Int iCodeLineLen=0; /循环变量 Int iLoop=0; /从字符
30、串中获取的两个字符,判断是否为“/*”或者“*/” CString szTmpCommLine; /从字符串中获取的一个字符,判断是否为代码字符 CString szTmpCodeLine; 删除szStatFileLine的首尾空格,tab,回车,换行;iCodeLineLen = szStatFileLine的字符串长度;/如果没有读取到字符串的倒数第二个字符,循环继续 While (iLoop < iCodeLineLen -1 ) szTmpCommLine = szStatFileLine的第iLoop和第(iLoop+1)个字符; szTmpCodeLine = szStat
31、FileLine的第iLoop个字符; /如果原来代码未处于注释段中,如果发现字符串“/*”,则注释段开始 if( (szTmpCommLine = “/*”) AND (bIsComment = false) ) /注释标志位被置为true; bIsComment = true; /循环变两加2,越过“/*”,读取注释体内的字符iLoop+=2;continue;/如果原来代码处于注释段中,如果发现字符串“*/”,则注释段结束else( (szTmpCommLine = “*/”) AND (bIsComment = true) ) /注释标志位被置为true;bIsComment = fa
32、lse;/循环变两加2,越过“*/”,读取注释体外的字符iLoop+=2;continue;/如果当前的字符,非tab字符,非空格字符,并且没有处于注释体内,那么/可以判断该行为代码行 if( (szTmpCodeLine != tab字符) AND (szTmpCodeLine != 空格字符) AND (bIsComment = false) iCodeFlag = RET_OK;/循环变两加1,读取字符串中的下一个字符iLoop+=1; return iCodeFlag;END2.6 统计注释行数模块详细设计2.6.1 数据描述简单数据描述无数据结构定义无2.6.2 函数描述标识:统计注
33、释行数模块功能概述:MainStatCommLine检查是否需要统计空行数目,如果需要,则调用 StatCommLine开始具体的统计操作1. 函数统计注释行数主函数Function: VOID MainStatCommLine(CString szStatFileName,BOOL bStatCommLineFlag)Description: 调用StatCommLine 统计文件中注释行数目Calls: StatCommLine (CString szStatFileName)Input: g_szStatFileName全局变量,被统计的文件全路径g_bStatCommLineFlag全
34、局变量,统计空行标志位Output: 无Return: Others: 无-函数实现: VOID MainStatCommLine(CString szStatFileName,BOOL bStatCommLineFlag)BEGIN /判断是否需要统计空行数 If (STAT = bStatCommLineFlag) StatCommLine(szStatFileName); END2. 函数统计注释行函数Function: VOID StatCommLine(CString szStatFileName)Description: 统计文件中注释行数目Calls: IsCodeLineInp
35、ut: g_szStatFileName全局变量,被统计的文件全路径Output: g_iCommLineNum全局变量,统计得到的空行数目Return: Others: 无-函数实现: VOID StatCommLine(CString szStatFileName)BEGIN /定义被统计文件的句柄CStdioFile StatFilehandle;/定义保存文件中当前行字符串的变量CString szStatFileLine;/标识当前行是否处于注释体内,false-没有处于注释体内.true-处于注释体内BOOL bIsComment = false;/调用函数的返回值BOOL bRe
36、tVal;打开文件szStatFileName,并使文件句柄StatFilehandle指向打开的文件szStatFileName;WHILE(没有读取到文件szStatFileName尾部) szStatFileLine = 文件szStatFileName的当前行中的文本; 删除szStatFileLine中的TAB字符; 删除szStatFileLine中的空格符; 删除szStatFileLine中的回车符; 删除szStatFileLine中的换行符号; /如果该行是空行,继续循环 If ( 0 = szStatFileLine的字符串长度) ( continue;)/调用函数IsC
37、odeLine,判断当前行是否是注释行bRetVal = IsCodeLine(szStatFileLine, bIsComment);If (RET_FAIL = bRetVal) g_iCommLineNum+; END2.7 统计总行数模块详细设计2.7.1 数据描述简单数据描述无数据结构定义无2.7.2 函数描述标识:统计总行数模块功能概述:该模块实现对文件中总行数的统计功能函数调用关系: MainStatTotalLine检查是否需要统计空行数目,如果需要,则调用StatTotalLine开始具体的统计操作1. 函数统计总行数主函数Function: VOID MainStatTot
38、alLine(CString szStatFileName,BOOL bStatBlankLineFlag,BOOL bStatCodeLineFlag,BOOL bStatCommLineFlag,BOOL bStatTotalLineFlag)Description: 统计文件中的总行数Calls: StatCodeLine (CString szStatFileName)Input: szStatFileName被统计的文件全路径 bStatBlankLineFlag统计空行标志位bStatCodeLineFlag统计空行标志位bStatCommLineFlag统计注释行标志位bStat
39、TotalLineFlag统计总行数标志位Output: g_iTotalLineNum-统计得到的总行数Return: 无Others: 无-函数实现: VOID MainStatTotalLine(CString szStatFileName,BOOL bStatBlankLineFlag,BOOL bStatCodeLineFlag,BOOL bStatCommLineFlag,BOOL bStatTotalLineFlag)BEGIN /如果统计了空行、代码行和注释行,则把三个统计值相加得到总行数 If (STAT = bStatBlankLineFlag) AND (STAT = bStatCodeLineFlag) AND (STAT = bStatCommLineFlag) g_iTotalLineNum = g_iBlankLineNum + g_iCodeLineNum + g_iCommLineNum;/否则,调用StatCodeLine统计总行数Else StatCodeLine(szStatFileName); END2. 函数统计总行数函数Function: VOID StatTotal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国AV连接线数据监测研究报告
- 2024年中国瓦楞辊市场调查研究报告
- 2024年中国核桃夹心巧克力市场调查研究报告
- 2024年中国悬挂传动超声清洗机市场调查研究报告
- 2024年中国乘员侧安全气袋市场调查研究报告
- 2024八年级数学上册第五章平行四边形4多边形的内角与外角和第2课时多边形的外角和习题课件鲁教版五四制
- 2024年云南驾驶员客运从业资格证考试题及答案
- 2024年湛江客运从业资格证
- 2024年乌鲁木齐道路运输客运从业资格证考试模拟试题
- 城市轻轨工程施工组织设计
- 2024-2030年中国玻尿酸行业竞争策略与消费动态分析研究报告
- JGJT299-2013 建筑防水工程现场检测技术规范
- DL∕T 974-2018 带电作业用工具库房
- 箱式变电站技术规范书
- 台东山煤矿联合试运转方案
- 2024年红十字应急救护知识竞赛考试题库500题(含答案)
- 技能成才强国有我课件模板
- 生化检验知识考核试卷附答案(血浆蛋白血糖)
- 2024年4月自考05424现代设计史试题
- 第六节肺源性心脏病
- 24春国家开放大学《建筑力学#》形考任务1-4参考答案
评论
0/150
提交评论