软件作业——结对编程

软件结对编程

1.项目地址

项目地址 项目地址
伙伴 201831061203
博客地址 伙伴博客

2.代码规范说明

代码规范 具体说明
函数名以及变量名 以名字的英文形式呈现,读代码便于理解函数功能,名字注意大小写,一般变量用小写,函数名用大写
代码注释 ①对代码加以注释,便于改动、查找、阅读 ②注释位置最好在被说明内容的前一行或后一行,而不是直接加在其后
代码布局 ①每一行只写一句代码 ②每一行只对一个东西进行声明③ 在不同的定义之后加一行空白用以分开④注释位置最好在被说明内容的前一行或后一行,而不是直接加在其后⑤缩进控制在4个字符⑦在复杂的条件表达式中,用括号清楚地表示逻辑优先级

3.PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 30
· Estimate · 估计这个任务需要多少时间 20 25
Development 开发 150 100
· Analysis · 需求分析 (包括学习新技术) 60 100
· Design Spec · 生成设计文档 10 10
· Design Review · 设计复审 (和同事审核设计文档) 20 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10
· Design · 具体设计 120 60
· Coding · 具体编码 720 400
· Code Review · 代码复审 30 15
· Test · 测试(自我测试,修改代码,提交修改) 120 60
Reporting 报告 30 25
· Test Report · 测试报告 30 25
· Size Measurement · 计算工作量 60 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计 30 60
合计 1430 960

4.复审代码

根据我们的代码规范,我发现我的小伙伴的注释并不到位,有一些变量名的名字也不规范,就对此做了一些修改

5.解题思路

只学过C++,C的我,在涉及到命令行的解释是一大盲区,之前看到过某同学写的有关C语言main函数两个参数argc、argv的文章,于是就参考着用C语言写了。
本打算先实现统计行数、单词数、字符数各个模块的功能,封装在每一个函数里面,但命令行那里行不通,就利用数据结构学过的知识,用结构体来封装结点提供可以在命令行输入的选项以及单词数那些。 c++里面获取一长串的字符可以有string,以及getline(),那么c又怎么实现呢, argc是指从命令行输入的参数个数,包括固定的本文件的路径argv[0],char* argv[]是一个指针数组,index是从0开始的,0存的是本文件的绝对路径,1存的是控制台输入的第一个参数,以此类推,因此控制台输入的命令就存在argv里面。

//功能:结构体--记录字符数和单词数
struct Couter
{
	int CharacterNum;//记录字符数
	int WordNum;//记录单词数
	int LineNum;//记录行数
};

//功能:结构体--记录单词
struct Word
{
	string ws;//存放单词
	int lengthW;//存放单词的长度
	int num;//单词出现的频率
};

//功能:计算文件中的字符数和行数
class Calcu
{public:
	int WordNum(const char s[]);
	int LineNum(const char s[]);
private:;
	Couter couter = { 0,0,0 };
};

我们是以这个文件的内容来测试的

得到结果显示

6.需求分析

用户的需求是变化的,我们在文件的信息输入时应该给用户一些提示,涉及到文件中的字符、单词统计,就需要获取到文件里的内容,于是想到用数组来存放文件内容,采用const 定义数组长度,便于改变
需求分析图

7.算法关键

关键就是计算文件中的字符个数以及文件行数,单词个数

8.性能分析图&单元测试

9.心得体会&讨论图片

刚拿到题目的时候是没有啥头绪的,因为自己的能力仅限于C和C++,就去网上看了一下其他大佬的代码以及思路,编码能力要加强以及真的要多花点时间去学习一些课外的与专业有关的东西。学习一样东西不是那么容易,但是身边的竞争很强,大家都有在学习,你学会了就也可以成为你羡慕的人。

关于GitHub

posted on 2019-10-15 19:12  duoraemon  阅读(128)  评论(2编辑  收藏  举报