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

    软工实践第一次个人编程作业

    1.仓库地址

    Github <-click这里

    2.PSP表格

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

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

    1. 首先根据'!'把前 level 存起来,后面再根据level调用不同等级的处理函数,共分为1 2 3三种.

    2. 因为名字和地址是由','分割开来,所以再取两部分name,address.

    3. 地址里面只混有手机号,根据正则d{11}?把手机号分割出来.

    4. 最后的标准地址通过正则表达式解析出来,正则表达式参考博客

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

    输入输出样例:

    2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
    1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
    2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
    3!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
    
    {"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","","鼓西街道湖滨路110号湖滨大厦一层"]}
    {"姓名":"张三","手机":"13599622362","地址":["","","福建福州闽侯县","上街镇","福州大学10#111"]}
    {"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","123号福州鼓楼医院"]}
    {"姓名":"小美","手机":"15822153326","地址":["北京市","东城区交道口东大街1号北京市","东城区","","人民法院"]}
    {"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路13号"]}
    

    发现以上还是不满足需求的。

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

    分析问题

    1. 直辖市和一般城市没有做区别.
    2. town部分没有匹配街道.
    3. 县级市应是第三级,而因贪婪正则而补充到了地级市.
    4. 会有省市后缀丢失的情况.

    修改后的正则表达式

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

    解决问题

    1. 地址正则表达第一级去掉市级,后判断第一级缺失且第二级存在,并判断是否是直辖市而对第一级地址补充
    2. 正则表达式补充更多的地址后缀
    3. 采用非贪婪表达式
    4. 先通过正则遍历一遍,看是否有后缀丢失,而导致一二级缺失。通过导入数据对比补充后缀,再通过正则解析

    函数

    1. void Strsolve() /把地址分解成等级,名字,电话,标准地址/
    2. void WithPC() /补一二级后缀/
    3. void WithP() /补一级后缀/
    4. void WithC() /补二级后缀/
    5. void Doit() /类似Main 调用其他功能函数/
    6. void Rank1() void Rank2() void Rank3() /->根据问题的level,而选择正确的处理函数/
    7. void Solve() /不会用 json库,只能手码 json格式/
    正则表达式改进版
    //5级的后2级
    (?<town>[^区]+?区|.+?镇|.+?街道|.+?乡)?(?<village>.*)
    //7级的后4级
    (?<town>[^区]+区|.+?镇|.+?街道|.+?乡)?(?<village1>.+?街|.+?路|.+?巷)?(?<village2>[d]+?号|[d]+.?道)?(?<village3>.*)
    

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

    内存空间


    单元测试

    1!李四,福建鼓楼13756899511鼓西街道湖滨路110号湖滨大厦一层.
    1!张三,福州市闽13599622362侯县上街镇福州大学10#111.
    1!刘湖,吉林省白山市六道江镇西村药店18694520738.
    1!王五,腾冲市满邑社区华园三小区47号18694520738.
    1!咸陡隐,江苏省苏州市吴江13184142847区平望镇新业织造有限公司吴江区平望镇双浜村村民委员会.
    2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
    2!小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院.
    2!王五,云南省昭通市水富18694520738县云川路1号.
    2!王五,云南省迪庆藏族自治州18694520738香格里拉市.
    2!王五,四川省眉山市仁寿18694520738县黑龙滩镇牌坊街.
    2!王五,陕西省渭南市韩18694520738城市108国道附近.
    
    {"姓名":"李四","手机":"13756899511","地址":["福建省","","鼓楼区","鼓西街道","湖滨路110号湖滨大厦一层"]}
    {"姓名":"张三","手机":"13599622362","地址":["","福州市","闽侯县","上街镇","福州大学10#111"]}
    {"姓名":"刘湖","手机":"18694520738","地址":["吉林省","白山市","","六道江镇","西村药店"]}
    {"姓名":"王五","手机":"18694520738","地址":["","","腾冲市","满邑社区","华园三小区47号"]}
    {"姓名":"咸陡隐","手机":"13184142847","地址":["江苏省","苏州市","吴江区","平望镇","新业织造有限公司吴江区平望镇双浜村村民委员会"]}
    {"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]}
    {"姓名":"小美","手机":"15822153326","地址":["北京","北京市","东城区","","交道口东大街","1号","北京市东城区人民法院"]}
    {"姓名":"王五","手机":"18694520738","地址":["云南省","昭通市","水富市","","云川路","1号",""]}
    {"姓名":"王五","手机":"18694520738","地址":["云南省","迪庆藏族自治州","香格里拉市","","","",""]}
    {"姓名":"王五","手机":"18694520738","地址":["四川省","眉山市","仁寿县","黑龙滩镇","牌坊街","",""]}
    {"姓名":"王五","手机":"18694520738","地址":["陕西省","渭南市","韩城市","","","108国道","附近"]}
    

    测试覆盖率
    img

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

    1. 只有手机号,没有地址。 ->用正则处理地址的时候 eg:1!陈天恒,12345678901
    2. 手机号位数不对,不能把手机号正确的取出,而地址不能解析出。 -> eg:1!陈天恒,福建131652福州市闽侯县
    3. 没有设置等级难度 -> eg: 陈天恒,福建12345678901福州闽侯福州大学32号楼605

    7.总结

    1. 发现自己是真的菜,弱鸡的无能狂怒!
    2. 第一次get到了正则表达式的点!
    3. 第一次认真普及了中国的地理知识!
    4. 代码,真实改了又改,给我整吐了!
  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/cc1219032777/p/11595371.html
Copyright © 2011-2022 走看看