zoukankan      html  css  js  c++  java
  • 第一次个人编程作业

    一、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自己又不会,就特别难受,只能以后慢慢学了。

  • 相关阅读:
    leetcode 141 环形链表
    [转载]Tensorflow中reduction_indices 的用法
    SIFT特征原理与理解
    numpy切片和布尔型索引
    IPython的使用
    [文献阅读]基于卷积神经网络的高光谱图像深度特征提取与分类
    验证码校验
    防止表单重复提交
    MyBatis 一对一,一对多,多对多
    MySQL基础内容
  • 原文地址:https://www.cnblogs.com/LIN5516558/p/11537657.html
Copyright © 2011-2022 走看看