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

    一.GitHub地址

    https://github.com/lylinyi/041702108

    二.PSP表格

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

    三.代码设计与实现

    1.解题思路

    • 先用正则表达式和字符串处理提取出名称,电话,和难度级别,得到地址.
    • 每次提取字符串的前两个字符,根据引入的pcas.json文件逐级匹配,得到前四级的地址.
    • 用正则表达式继续匹配得到后三级地址.
    • 若为第一级难度,将后三级地址合并,若为第三级难度,则调用高德api得到前四级地址,再回到步骤三.

    2.代码结构


    在main()函数里创建Address类实例,再调用show_info()打印出json数据.在parse()函数里通过调用get_XX()或call_api()完成对地址的解析,get_XX()里调用了cut_string()用来去掉字符串的某一级地址得到新字符串.

    四.性能改进


    可以看出parse()里的call_api()函数占用时间最多,改进方法就是尽量少调用api,采用更优秀的查表算法实现地址的补全功能,由于水平太菜未能实现.

    五.单元测试

    部分函数的覆盖率

    样例测试

    • 输入
    1!何东,北京东城13297814858区朝阳门街道南小街59号竹杆胡同小区.
    2!柳吻,辽宁省大连市中山区青泥13013864707洼桥街道上海路45号宏孚大厦苏宁易购.
    3!汝舟孙,贵州省修文县龙岗社区15766780930服务中心阳明西路196号龙岗居委会.
    3!柏雅蚜,长宁区周家桥街道武夷路718号武夷13757741271花园722号楼.
    
    • 输出
    {"姓名": "何东", "手机": "13297814858", "地址": ["北京", "北京市", "东城区", "朝阳门街道", "南小街59号竹杆胡同小区"]},
    {"姓名": "柳吻", "手机": "13013864707", "地址": ["辽宁省", "大连市", "中山区", "青泥洼桥街道", "上海路", "45号", "宏孚大厦苏宁易购"]},
    {"姓名": "汝舟孙", "手机": "15766780930", "地址": ["贵州省", "贵阳市", "修文县", "龙岗社区服务中心", "阳明西路", "196号", "龙岗居委会"]},
    {"姓名": "柏雅蚜", "手机": "13757741271", "地址": ["上海", "上海市", "长宁区", "周家桥街道", "武夷路", "718号", "武夷花园722号楼"]}
    , 
    
    

    评测结果

    六.异常处理

    • 输入手机号位数不是11位
    • 难度后没有感叹号
    • 名字后没有逗号
    • 没有连接网络或调用次数用尽

    解决方法示例:

    # 每个函数套上try except,例如:
    try:
        call_api()
    except:
        print("请连接网络再运行")
    try:
        get_phoneNum()
    except:
        print("手机号格式错误")
    try:
        get_level()
    except:
        print("难度等级格式错误")
    try:
        get_name()
    except:
        print("名字格式错误")
    
    
  • 相关阅读:
    2018-2019-1 20165228 《信息安全系统设计基础》第八周学习总结
    2018-2019-1 20165227 20165228 20165237 实验三 实时系统
    2018-2019-1 20165228 《信息安全系统设计基础》第七周学习总结
    2018-2019-1 20165227 20165228 20165237 实验二 固件程序设计
    2018-2019-1 20165228 《信息安全系统设计基础》第六周学习总结
    第五周课上测试补做
    2018-2019-1 20165228 《信息安全系统设计基础》第五周学习总结
    ## 2018-2019-1 《信息安全系统设计基础》 20165232 20165231 20165235 实验五 通信协议设计
    2018-2019-1 20165231 20165232 20165235 实验四 外设驱动程序设计
    2018-2019-1 20165232 第九周学习总结
  • 原文地址:https://www.cnblogs.com/lylinyi/p/11569413.html
Copyright © 2011-2022 走看看