软件工程2017第三次作业(吕智勇+何保委)

1.代码基础: 

https://github.com/hebaowei/test

2.结对过程:

3.项目计划:

 PSP2.1  Personal Software Process Stages 预估耗时(小时)  实际耗时(小时) 
 Planning  计划  1  2
 Estimate 估计这个任务需要多少时间   1
 Development  开发  20 20 
 Analysis  需求分析 (包括学习新技术) 0.5 
 Design Spec  生成设计文档
 Design Review  设计复审 (和同事审核设计文档)
 Coding Standard  代码规范 (为目前的开发制定合适的规范)
 Design  具体设计
 Coding  具体编码
 Code Review  代码复审
 Test  测试(自我测试,修改代码,提交修改)
 Reporting  报告
 Test Report  测试报告  2
 Size Measurement  计算工作量 0.5 
 Postmortem & Process Improvement Plan  事后总结, 并提出过程改进计划
 合计    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.在以后的程序开发中,我会继续努力,多问多学,争取把每次作业都完成好。

 

 

 


原文地址:https://www.cnblogs.com/hbw188/p/8244437.html