第一次个人编程作业
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等工具要更加熟练,才能更好地做好任务。