第一次个人编程作业
求求测评的同学用测评工具的时候,用单点模式,循环模式测我的代码会有问题,好人一生平安!!!!!
真是一次苦涩的经历
个人仓库地址
个人仓库
PSP表
psp2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 40 |
Estimate | 估计这个任务需要多少时间 | 600 | 10 |
Development | 开发 | 600 | 850 |
Analysis | 需求分析 (包括学习新技术) | 120 | 150 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 | 30 | 45 |
Coding Standard | 代码规范(为开发制定合适的规范) | 15 | 25 |
Design | 具体设计 | 100 | 110 |
Coding | 具体编码 | 150 | 175 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 150 | 200 |
Reporting | 报告 | 40 | 60 |
Test Repor | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 20 | 25 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 30 |
Total | 总计 | 1375 | 1840 |
模块接口的设计和实现
主要的类:
class AnswerPart1:
level = ""
name = ""
phoneNumber = ""
class AnswerPart2:
province = ""
city = ""
area = ""
town = ""
detail = ""
road = ""
number = ""
preciseAddress = ""
这两个类主要是拿来存答案和计算模块的信息传递
主要的计算函数模块
def getIn():
def getOut(ap1,ap2):
def getBasisMessage(s):
def getLevel(s):
def getName(s):
def getPhoneNumber(s):
def cutSame(s1,s2):
def getroad(s):
def getnumber(s):
def findarea(aareas,s):
def findcity(cities,s):
def getAddress(address):
主函数
def main():
调用关系
编写思路与关键部分
本来想正则搞定一切来着,写着写着发现不大对。还是和同学要了有全国四级行政划分的json文件
也没什么核心思路和独到之处,完全就是见山开路,遇河架桥
能搜到的就搜,搜不到的正则
计算模块借口部分与实现过程
本来做的时候,大家都说input的部分会耗用时间最多
这是一件自然而然的事,毕竟要等待IO输入
我就将需要数据直接写在了代码里,我觉得主要可以更好地看看是哪部分在运行时最慢
结果如下
可以看到主要耗时在getAddress函数
而其中最耗时的部分又在从外部导入json文件
其实这也很好理解
其他部分耗时倒是不多
计算模块部分单元测试展示
测试代码
class MyTestCase(unittest.TestCase):
def test_cutSame(self):
cut = tt.cutSame("福建省","福建")
self.assertEqual( cut,"省")
cut = tt.cutSame("闽侯县", "闽侯")
self.assertEqual(cut, "县")
cut = tt.cutSame("鼓楼区","鼓楼")
self.assertEqual( cut,"区")
cut = tt.cutSame("乌鲁木齐市", "乌鲁木齐")
self.assertEqual(cut, "市")
def test_getroad(self):
cut = tt.getroad("湖滨路110号湖滨大厦一层")
self.assertEqual(cut,"湖滨路")
cut = tt.getroad("五一北路123号福州鼓楼医院")
self.assertEqual(cut, "五一北路")
cut = tt.getroad("东大街1号北京市东城区人民法院")
self.assertEqual(cut, "东大街")
def test_getnumber(self):
cut = tt.getnumber("110号湖滨大厦一层")
self.assertEqual(cut,"110号")
cut = tt.getnumber("123号福州鼓楼医院")
self.assertEqual(cut, "123号")
cut = tt.getnumber("1号北京市东城区人民法院")
self.assertEqual(cut, "1号")
if __name__ == '__main__':
unittest.main()
结果和覆盖率
因为我的代码耦合性太高了,所以对于单独一级的代码测试效果并不好。(懒得解耦)
计算模块部分异常处理说明
等级判断不出来的时候按照七级来划分。
小张,福18150632336建福州龙江街道福山路.
说好的省不能缺省呢,23333
3!牛多搓,来宾市金秀瑶15029285452族自治县六巷乡六巷街1号六巷乡人民政府.
还有就是到号也会缺失,在调用函数的时候也会出错,造成正则表达式找不到结果
2!戚形亮,河北省15184451587张家口怀安县头百户镇头百户派出所.
还有第六级地址划分的时候,找不到相应的关键词的时候,正则表达式也会出错
2!曾阀犬,天津河东区唐家口街道成林道63号天津工业大学15755715952.