欢迎来到 L H S 的博客

早餐,人生的一半,今天也要元气满满哦。| 凤兮凤兮归故乡,遨游四海求其凰。凤凰鸣矣,于彼高岗;梧桐生矣,于彼朝阳。| 死亡本是轮回的归宿,因所爱而无畏。| 有一美人兮见之不忘,一日不见兮,思之如狂。邂逅你,是生生世世的宿命。。。。。|

软工第四次作业:结对编程

Github项目 Github地址
结对伙伴 伙伴1地址伙伴2地址

PSP表格

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

结对编程过程

感受:相互结对的是较熟悉的人,因此我们能很好地熟悉分工,进行高效效的代码设计以及相互协作,能节约时间,更高效的完成作业。
通过结对编程,可以让我们体验到1+1>2的效果,完成项目速度远远超过以前一个人的时候,是相当快的。
过程:我们先是一起讨论了如何实现代码的编写,大致确定了方向,就开始写。自己想写哪部分就先写,最后在一起写最难的一部分。写代码途中互相讨论,思考,查阅相关资料,最终共同完成任务。

图片

bool isnum_str(char str)  //判断是否是字符或数字
{
	if ((str >= 'A' && str <= 'z') || (str >= '0' && str <= '9'))
		return true;
	else
		return false;
}

按要求不统计文字数

void count(fstream &outfile, int *cnt)  //统计函数
{
	char str[100000];
	while (outfile.getline(str, 100000))
	{
		int tmp = 0;

		for (int i = 0; i < strlen(str); i++)
		{
			if (str[i] == ' ' || str[i] == '.' || str[i] == ',' || str[i] == '?' || str[i] == '!')
				cnt[1]++;      //统计单词数      

			if (isnum_str(str[i]))   
			{
				cnt[0]++;   //计算字符数
				tmp++;    //tmp局部变量用来区分是不是一个空行
			}    
		}

		if (tmp != 0)
			cnt[2]++;                 //计算行数
		tmp = 0;
	}

	return;
}

这儿主要用了fstream函数(对文件进行读写操作,对打开的文件可进行读写操作 )

void frequency(char s[])                      //统计单词频率函数

{

	int i, j;

	int flag = 0;  

	for (i = 0; i <= sum; i++)         //单词频率统计

	{

		if (strcmp(A[i].str, s) == 0)

		{

			A[i].num++;

			flag = 1;

			sum++;

		}

	}

	if (flag == 0)

	{

		for (j = 0; j<30; j++)

			A[sum].str[j] = s[j];

		A[sum].num++;

		sum++;

	}


	struct word a;

	for (i = 0; i<sum; i++)   //单词频率排序

	{

		for (j = i + 1; j<sum; j++)

			if (A[i].num<A[j].num)

			{

				a = A[j];

				A[j] = A[i];

				A[i] = a;

			}

	}


}

写了如何计算单词频率并排序

	FILE *fp;
	fp = fopen(filename, "r");
	
	if (fp == NULL)

	{

		printf("此文件不存在!\n");

	}
	sum = 0;

	ch = NULL;

	for (i = 0; i<100000; i++)

		A[i].num = 0;

	while (ch != -1)

	{

		for (i = 0; i<30; i++)

			s[i] = '\0';

		ch = fgetc(fp);

		if ((65 <= ch&&ch <= 90) || (ch >= 97 && ch <= 122))

		{

			for (i = 0;; i++)

			{

				s[i] = ch;

				ch = fgetc(fp);

				if ((65 <= ch&&ch <= 90) || (ch >= 97 && ch <= 122))continue;

				else break;

			}

			frequency(s);//调用frequency函数统计单词频率并排序

		}

	}

代码不足之处主要是这儿写在主函数中了,并没有和主函数分开。

程序测试结果


posted @ 2019-10-16 10:17  小囡囡不成仙  阅读(152)  评论(2编辑  收藏  举报