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

    **1. **作业

    2.PSP

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

    3.计算模块接口的设计与实现过程

    解题思路描述

    (1)读取文件

    (2)区分难度等级

    (3)把名字切出来

    (4)把手机号切出来

    (5)分直辖市和非直辖市两种情况做地址解析

    (6)按json格式输出

    代码组织

      一个类,除了主函数有九个函数,如下:

    函数 功能
    void write(String) 将字符串写入文件
    void name(String) 将名字写入文件
    void phonenumber(String) 将手机号写入文件
    String getTelnum(String) 提取手机号
    String deletephonenumber(String,String) 删掉手机号
    List<Map<String,String>> addressResolution(String) 非直辖市五级地址解析
    List<Map<String,String>> addressResolution1(String) 直辖市五级地址解析
    List<Map<String,String>> addressResolution3(String) 非直辖市七级地址解析
    List<Map<String,String>> addressResolution2(String) 直辖市七级地址解析

      函数name(String),phonenumber(String)两个函数中调用了函数write(String)。

    关键代码

    五级地址正则表达式

    String regex="(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇|.+街道|.+乡)?(?<village>.*)";
    

    七级地址正则表达式

    String regex="((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+局|.+市)(?<town>[^区]+区|.+镇|.+街道|.+乡)?(?<road>[^路]+路|.+弄|.+街|.+巷)?(?<number>[^号]+号)?(?<village>.*)";
    

      百度上一通瞎找,再结合了一些实例,得到了以上正则表达式。

      我真的很菜,能解决的情况真的很少,随便缺点什么,我都解决不了了。实在非要我说独到之处,那可能是把直辖市单独处理了吧。

    4.计算模块接口部分的性能改进

      在改进计算模块性能上花费120分钟。将名字和手机号的写入单独用函数处理,直辖市单独处理,由只能处理五级解析升级为能处理五级和七级解析。

      由JProfiler生成的性能分析图如下:

    5.计算模块部分单元测试展示

      (emmmmm)其实我也不知道单元测试是不是这样做的。可能也许或许是吧。我就一个类,就把整个代码都做单元测试了。部分代码如下:

      单元测试得到的测试覆盖率截图如下:

    6.计算模块部分异常处理说明

    (1)解决无法处理直辖市的情况。

        小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    

    7.心路历程与收获

      看到题目的时候,这都是啥???直到现在我也还是不明不白。从C++开始尝试,历经一天,失败。又开始尝试java,全程面向百度编程。一开始就果断放弃了附加题,又渐渐地放弃了单元测试,异常处理,然后发现可能我的代码根本都没机会跑起来。千言万语化作一句”我太难了“。可能是时候考虑一下转行了??

      收获的话,也是有很多的吧。整个作业都是从头学习,一个问题一个问题搜,下了一堆七七八八的软件,我可能是个假的计算机学子。感觉一个星期学了两年都没学到的知识量,有点消化不良。菜是原罪,好好学习天天向上吧。

  • 相关阅读:
    Sqlsugar中使用Codefrist创建数据库
    EFCore中CoreFrist多个上下文
    高并发
    优先级反转
    二叉树算法
    使用AJAX上传图片
    Entity Framework
    .Net面试题
    LC 1515. Best Position for a Service Centre (Simulated Annealing)
    git
  • 原文地址:https://www.cnblogs.com/noren/p/11525011.html
Copyright © 2011-2022 走看看