软工实践-02

一、GitHub仓库地址

 https://github.com/viency-yy/131700146

 

二、PSP表格

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

 

三、解题思路

刚拿到题目十分懵逼,完全不知道如何入手,前面几天一无所获。后来看到大佬说用json、正则表达式,就开始疯狂百度,大部分都是在CSDN博客和博客园中看大佬的解法,然后去理解他的,再去思考,以下流程图为大致思路。

 

method1:依次提取“省”、“市”、“区/县”、“街道/镇”,并将其从地址簿中切除

method2:依次提取“省”、“市”、“区/县”、“街道/镇”、“路”、“门牌号”,并将其从地址簿中切除

 

四、关键算法

  • 文件的写入(点+可展开)
     1 public static void main(String[] args) throws IOException {
     2         Main main=new Main();
     3         
     4         FileReader fileReader = new FileReader("E:\\test.txt");
     5         BufferedReader buf = new BufferedReader(fileReader);
     6         String readLine = "";
     7         List<JSONObject> ads=new ArrayList<JSONObject>();
     8         while((readLine = buf.readLine()) != null){
     9             //System.out.println(readLine);
    10             String flag=readLine.substring(0,1);
    11             String address=readLine.substring(2);
    12             
    13             if(flag.equals("1"))
    14             {
    15                 JSONObject ad= main.method1(address);
    16                 ads.add(ad);
    17 
    18             }else
    19             {
    20                 JSONObject ad= main.method2(address);
    21                 ads.add(ad);
    22             }
    23 
    24             
    25         }
    public static void main(String[] args) throws IOException
  • 正则表达式
    Pattern pattern = Pattern.compile("((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}");
            // 创建匹配给定输入与此模式的匹配器。
            Matcher matcher = pattern.matcher(str);
            //查找字符串中是否有符合的子字符串
  • 提取关键字并将其切除(以姓名为例)
    JSONObject object = new JSONObject();
            //获取姓名
            int index = str.indexOf(',');
            String name = str.substring(0,index);
            object.put("姓名",name);
            //将姓名从地址簿中切除

 

五、性能改进

用JProfiler生成一张性能分析图,但是第一次用,他的分析结果我也没看懂,也没时间了,就。。不知道如何改进了。我太菜了dbq

 

六、单元测试展示

 

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

 

七、异常处理说明

  • 刚开始时,缺少“省”、“市”这类字眼的数据时,没法正常输出
  • 本来想用字典或者set存省、市....然后第一个逗号之后,向后探测两个字符,然后发现,还有“黑龙江省”,三个字的省名

                  用正则表达式之后,就解决了

 

八、心路历程与收获

  •  第一次知道中国的地址还能有这么多的分类,第一次真的这么认真地去学习地理
  • 我本来就是菜鸡,题目一出来,连代码都敲不出来,更别说附带的那么多要求。。。然后都是在问大佬,问度娘,一步一步慢慢写出来的。真的太难了,我太难了
  • 和室友一起熬夜写代码的经历,体验一把就好了,ballball老师下次手下留情
  • 我真的太菜了,好多软件都是第一次用,而且基本都是英文版的,跟着教程走都累,看来还得去学学专业英语了,唉

转载于:https://www.cnblogs.com/zy159/p/11519856.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值