1.代码基础:
https://github.com/hebaowei/test
2.结对过程:
3.项目计划:
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
Planning | 计划 | 1 | 2 |
Estimate | 估计这个任务需要多少时间 | 1 | 2 |
Development | 开发 | 20 | 20 |
Analysis | 需求分析 (包括学习新技术) | 0.5 | 1 |
Design Spec | 生成设计文档 | 3 | 4 |
Design Review | 设计复审 (和同事审核设计文档) | 2 | 3 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3 |
Design | 具体设计 | 5 | 4 |
Coding | 具体编码 | 5 | 5 |
Code Review | 代码复审 | 1 | 1 |
Test | 测试(自我测试,修改代码,提交修改) | 5 | 4 |
Reporting | 报告 | 3 | 2 |
Test Report | 测试报告 | 2 | 1 |
Size Measurement | 计算工作量 | 0.5 | 1 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 2 | 5 |
合计 | 54 | 58 |
4.解题思路:
在上次使用pycharm作为集成环境进行编程的基础上,我和同伴这次选择进行网页设计界面:
- 记录用户的历史做题情况,并且能够方便的进行查询或统计,再次运行程序时不会丢失。
- 用户可以选择练习模式或测验模式,设计不同的界面和交互逻辑。
- 建立错题本功能,用户可以回顾或改正错题。
- 有计时功能,能显示用户开始答题后的消耗时间。
由于上一次的程序不是很完善,在吕智勇同学的帮助下,我们完成了对程序的修改,并成功调试运行。前期的界面设计和代码都是吕智勇完成了大部分,我负责修代码复审以及进行测试报告。
根据所需要实现的功能我们将程序代码分为以下几个模块:产生题目,定义gen(count,ns,max_num)生成多个题目;储存数据,方便调用和保存,定义database数据库使用sqlite3数据库格式来保存数据,界面交互,定义函数http_server来实现和浏览器的界面交互;界面设计,界面使用HTML5开发,Vue框架将内容呈现到浏览器上,使用axios和Python通信。
主程序大致内容为:
一、定义四个函数,用于浏览器调用。
1. new_question 生成几个新题目,返回一个题目数组
2. update_history 用于错题本改错,更新错题记录。
3. write_history 用于向历史记录添加一个题目,不论是答对的还是答错的都用这个记下来。
4. get_history 用于读取历史记录。如果提供了参数 wrong=1 那么只返回错题,否则返回全部历史题目。
在产生运算表达式的时候使用了Fraction 类型来处理分数。
定义gen(ns,max_num)
生成一个题目表达式,字符串。
数据库模块使用sqlite3数据库格式,模块初始化的时候,会试着创建一个数据库,以及新建一个表格 history 存储历史记录。定义下面函数:
update(table,data,id) 更新表格里某个ID项的数据。
insert(table, data) 向表格里插入数据,返回值是插入后的ID。
fetch(table, where, rows, other_info) 从数据库表格里提取数据。
where 是提取条件,使用SQL 语句。
rows 是要提取的列标题,是一个字符串列表。
other_info 可选,是额外的 SQL 条件语句
二、使用 http_server.register_method 将这些函数开放给浏览器。
三、使用 http_server.start() 启动浏览器。
http_server这个模块负责和浏览器界面交互。
界面设计:界面使用HTML5开发,Vue框架将内容呈现到浏览器上,使用axios和Python通信。
5.设计实现过程:
界面分为四种选项:当我们进入网页界面,可以选择练习模式、测验模式、历史记录和错题本选项。
练习模式:练习模式随机产生题目,答题并且判断对错,同时计算使用的时间。
测验模式:可以计算时间和判断对错,并且计算得分。
历史记录:可以倒序显示你做过的题目,并且可以提供正确的答案。
错题本:倒序实现错题的收集,方便用户的回顾,同时有改错功能,可以让用户在同一界面进行错题重做。
6.心得体会:
经过了很长时间,终于完成了本次作业,这次作业对于我来说确实比较吃力,一方面复习备考的压力很大,一方面自己欠缺编程方面的知识,还好在同伴的帮助和指导下,我们完成了对本次作业的上交。
1.从这次作业中我感受到了团队的好处就是大家可以相互借鉴,取长补短,将双方的缺陷都弥补了,这一点在编写代码的整个过程中都能体现出来;
2.任务并不是一个人埋头苦干就能完成的,有好几个晚上我都一个人在冥思苦想可是半天都没有做出任何东西,在休息好后,我和同伴之间的交流沟通总能得到新的灵感启示,所以说同伴确实给了我很大帮助;
3.每过一天都要有今天的反思总结,今天的任务做的如何,到底做了什么无用功;
4.没有最好,只有更好;即使编程能力不强的我对于本次作业还是相对满意的,但是我还是觉得有很多的改进空间,例如练习模式和测验模式下的计时功能会影响使用者的视觉效果;在代码测试时发现在pycharm下运行时,可以产生分数运算,但是到了网页界面却不能显示;测验模式完成一次后在进行到第二次时,按下enter键会直接跳出本次答题,并且会即时显示答案正确性,这样起不到测验的效果;历史记录和错题本最好能存在文本格式中,能更好地满足使用者的回顾;还有欠缺对于错题本的推荐类似题目功能。我个人觉得本产品最大的特点是历史记录和错题本可以倒序显示,而且会根据题目正确或者错误来区分背景颜色,给了用户很好的筛选功能,同时也可以在错题本上进行改错。
5.在以后的程序开发中,我会继续努力,多问多学,争取把每次作业都完成好。