第一次个人编程作业

一、Github项目地址

https://github.com/linxiaotang031702542/031702542

二、PSP表格

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

三、解题思路

先将姓名提取出来,再从剩下的中找出连着的11个数字,这样其余的就都是地址;先根据关键字“省”,“市”,“区/县”,“街道/镇/乡”找出前面四级,地址然后根据首字符判断要划分成五级地址还是七级地址,如果是七级的话再根据关键字划分就行了。

四、设计实现过程

在代码中我就只是用了for循环之间的嵌套,并没有用到类,函数的话也都是从数据库中调用的,下面是比较关键的代码。
这是提取省份:

	for (i = 0; i < (s.length() - 6); i = i + 2)
	{
		if (s.substr(i, 2) == "省")
		{
			outfile << s.substr(0, i + 2);
			i += 2;
			break;
		}
		else if (s.substr(i, 6) == "自治区")
		{
			outfile << s.substr(0, i + 6);
			i += 2;
			break;
		}
	}
	if (i > (s.length() - 6))
	{
		if (s.substr(0, 4) == "北京" || s.substr(0, 4) == "上海" || s.substr(0, 4) == "重庆" || s.substr(0, 4) == "天津")
		{
			outfile << s.substr(0, 4);
			i = 0;
		}
		if (s.substr(0, 6) == "黑龙江")
		{
			outfile << "黑龙江省";
			i = 6;
		}
		else
		{
			outfile << s.substr(0, 4) << "省";
			i = 4;
		}
		
	}
	outfile << '"' << ',' ;
	outfile << '"';

这是提取市:

	for (j = i; j < (s.length() - 2); j = j + 2)
	{

		if (s.substr(j, 2) == "市")
		{
			outfile << s.substr(i, j - i + 2);
			j += 2;
			break;
		}
	}
	if (j > (s.length() - 2))
	{
		outfile << s.substr(i, 4)<<"市";
		j = m + 4;
	}
	outfile << '"' << ',';
	outfile << '"';

这是提取县:

    for (i = j; i < (s.length() - 2); i = i + 2)
	{
		if (s.substr(i, 2) == "区" || s.substr(i, 2) == "县")
		{
			outfile << s.substr(j, i - j + 2);
			i += 2;
			break;
		}
	}
	outfile << '"' << ',';
	outfile << '"';
	if (i > (s.length() - 2))
	{
		i = m;
	}
	

之后的地址也跟上面一样操作。

测试样例:

文件输入:

文件输出:

异常

只从输出上举例:

1.有些市级无法输出;

2.有些七级地址无法划分开来;
3.会出现乱码的情况。

性能分析图

五、总结:

一句话:太难了!!!

自己基础太过薄弱,有很多东西都是 这几天新学的,并且学了之后我还是只会解决一部分问题,还有很多都无法解决;然后c++的正则看了半天还是不会用。。。。至于py和js自己又不会,就特别难受,只能以后慢慢学了。

原文地址:https://www.cnblogs.com/LIN5516558/p/11537657.html