第一次编程作业

1、Github项目地址:https://github.com/WQH1999/031702437
2、PSP表格

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

3、解题思路:作业要求是将被打乱的文件按要求重新梳理。一共有电话号码、姓名、个人地址三部分,这可以成为三个独立的函数来实现。
4、设计实现过程:代码有一个类homework1,类中有getphone、getname、getaddress三个私有类分别对应获得电话号码、名字、地址三个功能,还有getdata、dealdata、outputdata三个公有类供外部调用以实现输入、处理、输出三个功能。
5、改进花费了一个多小时。一开始是将处理电话、名字、地址都混在一起,后来才将这三个功能拆分开。
6、代码说明:
...

static class homework1 {            //创建一个地址
    private String data=null;       //原始输入数据
            String name=null;       //名字
            String phone=null;      //手机号
            String province=null;   //省或直辖市
            String city=null;       //市或直辖市
            String county="";     //县或区或县级市
            String town="";       //街道或镇或乡
            String address=null;       //详细地址
    private void getphone()         //私有类,用于找手机号
    {
        int i,j,k,d=0;
        String s=data;
        String s1=null;
        while (phone==null)
        {
            i=s.indexOf("1");
            d=d+i;
            k=0;
            for (j=i+1;j<11;j++)
            {
                if (s.charAt(j)<48||s.charAt(j)>57)
                {
                    k=1;
                    break;
                }
            }
            if (k==0)
            {
                phone=s.substring(i,i+11);
                s=data.substring(0,d);
                s1=data.substring(d+11);
                data=s.concat(s1);
            }
            else
            {
                s=s.substring(i+1);
                d++;
            }
        }
    }
    private void getname()                  //私有类,用于查找名字
    {
        int i;
        String s=data;
        i=s.indexOf(",");
        name=data.substring(0,i);
        data=s.substring(i+1);
    }
    private void getaddress()
    {
        String s=data;
        int i,j=-1;
        i=data.indexOf("省");
        if (i!=-1)
        {
            province=data.substring(0,i+1);
            data=s.substring(i+1);
            s=data;
        }
        i=data.indexOf("市");
        city=data.substring(0,i+1);
        data=s.substring(i+1);
        s=data;
        if ((i=data.indexOf("县"))!=-1||(i=data.indexOf("区"))!=-1||(i=data.indexOf("市"))!=-1)
        {
            county=data.substring(0,i+1);
            data=s.substring(i+1);
            s=data;
        }
        if ((i=data.indexOf("镇"))!=-1||(i=data.indexOf("乡"))!=-1||(j=data.indexOf("街道"))!=-1)
        {
            if (j!=-1)
            {
                i=j+1;
            }
            town=data.substring(0,i+1);
            data=s.substring(i+1);
            s=data;
        }
        address=data;
        if (province==null)
        {
            j=city.length();
            province=city.substring(0,j-1);
        }
    }
    public void getdata ()throws IOException      //提供输入方法
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        System.out.println("Please Enter:");
        str = br.readLine();
        data=str;
    }
    public void dealdata()            //提供处理数据方法(这是作业中要求1)
    {
        getphone();
        getname();
        getaddress();
    }
    public void outputdata()         //提供输出的方法
    {
        System.out.println("{“姓名”“"+name+"”“手机”“"+phone+"”“地址”[“"+province+"”“"+city+"”“"+county);
        System.out.println("”“"+town+"”“"+address+"”]}");
    }
}

...
心路历程与收获:这些需要使用的工具在之前我都没有用过。原本打算使用c++来写,然而vs2017下载不下来,只好换成java。而java自己又不熟悉,这才导致学习的时间大大超过原本所预料的时间。因此我觉得自己要对于所需要用到的如github等工具要更加熟练,才能更好地做好任务。

上一篇:结对第一次—疫情统计可视化(原型设计)


下一篇:震惊!!!某初中生竟30min一蓝两紫一黑!!!