小学生四则运算自动刷题库优化升级

原项目博客:https://www.cnblogs.com/liyanyinng/p/13704568.html

github地址:https://github.com/Gitforyong/autoBankApp

psp2.1表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 5 5
·Estimate ·估计这个任务需要多少时间 5 5
Development 开发 180 305
·Analysis ·需求分析(包括学习新技术) 5 5
·Design Spec ·生成设计文档 5 5
·Design Review ·设计复审(和同事审核设计文档) 10 10
·Coding Standard ·代码规范(为目前的开发设计合适的代码规范) 5 5
·Design ·具体设计 10 20
·Coding ·具体编码 120 240
·Code Review ·代码复审 10 5
·Tset ·测试(自我测试,修改代码,提交修改) 15 15
Reporting 报告 80 70
·Test Report ·测试报告 30 20
·Size Measurement ·计算工作量 20 10
·Postmortem & Process Improvement Plan ·事后总结,并提出过程修改计划 30 30
合计   265 380

一、功能升级——把用户刷题结果记录保存为本地docx文档

二、性能升级——核心函数优化

1.1功能升级核心代码:

 1 #saveRecordToDocx——保存用户刷题记录到本地docx文档
 2 def saveRecordToDocx(title,gradeNum,degreeOfDiff,problemNum,problemsArray,accuracyRate):
 3 
 4     today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y='',m='',d='')  #记录当天日期
 5     
 6     document = Document()                                                                   #创建一个空文档
 7     
 8     p0 = document.add_paragraph()                                                          #初始化建立第一个自然段
 9     
10     run0 = p0.add_run('————————————小学生四则运算自动刷题库——————————
 
11     请输入您的所在年级:(1,2,3,4,5,6):%d
 
12     请输入本次刷题题型:1,0->(100以内正整数四则运算,真分数加减运算):%d
 
13     请输入您要选择的难易程度:(1,2,3,4,5->简单,较易,中等,较难,难):%d
 
14     请输入本次刷题目标数量:%d
 
15     ————————————————————————————'%(int(gradeNum),int(title),int(degreeOfDiff),int(problemNum)))
16     
17     run0.font.name = '仿宋_GB2312'                                                #设置字体中文
18     
19     run0.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')                  #设置字体西文
20     
21     run0.font.bold = True                                                         #是否加粗
22     
23     run0.font.size = Pt(12)                                                        #字符尺寸大小
24     
25     for i in range(len(problemsArray)):
26         
27         document.styles['Normal'].font.name = u'宋体'                               #设置文档的基础字体中文                             
28         
29         document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')  #设置文档的基础字体西文
30 
31         pl = document.add_paragraph()                                              #初始化建立第二个自然段
32     
33         run1 = pl.add_run('题目:%s;你的答案:%s;正确答案:%s'%(problemsArray[i][0],problemsArray[i][1],problemsArray[i][2]))
34     
35         run1.font.name = '仿宋_GB2312'
36     
37         run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')
38     
39         run1.font.size = Pt(11)
40     
41     p2 = document.add_paragraph()                                                  #初始化建立第三个自然段
42     
43     p2.alignment = WD_ALIGN_PARAGRAPH.CENTER                                      #对齐方式为居中,没有则默认左对齐
44     
45     run2 = p2.add_run('————————————————————————————
本次刷题准确率达到:%.3f !'%(float(accuracyRate)))
46     
47     run2.font.name = '仿宋_GB2312'                                                #设置字体中文
48     
49     run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312')                  #设置字体西文
50     
51     run2.font.bold = True                                                         #是否加粗
52     
53     run2.font.size = Pt(12)
54     
55     document.save('D:Git-projects\autoBankApp\%s刷题记录.docx'% today)
56     

以下是部分结果和展示:

(终端输出)

(docx文档内容)

 

 2.1性能优化结构:

(优化前)

(优化后)

2.2性能测试:

(优化前)

(优化后)

 2.3性能优化分析:

可以看到 优化前整个程序的运行时间是28.554s,优化后的总时长是8.761s

 

原文地址:https://www.cnblogs.com/liyanyinng/p/13744010.html