/rWords

背单词站点

Primary LanguagePython

rWord 背单词

需求分析:

需求

  1. 用户可以根据自己的英语水平,例如四级,六级,雅思和托福来设置自己的背单词范围
  2. 每个用户可以设置每天背多少个单词
  3. 用户背单词的过程中可以天界笔记,也可以查看其他用户的共享笔记
  4. 用户背单词过程中,可以看到单词,单词的解释和例句
  5. 每个单词考虑两个近义词

模型设计

  • 词库 Dict 所有单词的例句和近义词是共享的,所以有一个,里面的词是唯一的,并且每个词拥有例句,近义词的属性。每一个单词都有一个唯一的词库ID

  • 例句 Example 和词库构成一对多关系,每个单词可能会有0到几个例句

  • 近义词 Synonym 和词库构成一对多关系,每个单词可能会有0到几个近义词

  • 单词书 WordBook 单词书可以由用户自行创建,并且不同单词书中的单词释义可以不同。
    单词书的基本属性为,创建时间,作者,单词书名称,(缩略图),单词表
    单词书和单词表构成多对多关系

  • 单词表 WordList 每个单词书有一个单词表,表明单词书内的单词
    单词书和词库构成多对多关系,中间表为单词表,附加属性为释义

  • 笔记 Note 笔记是用户创建的笔记,和单词书,单词以及用户相关联。
    笔记的基本属性为, 作者,单词表,笔记内容,是否共享。

  • 用户 User 普通用户的基本信息为,用户名,密码,正在学习的单词书,每日学习量

  • 学习记录 LearnState 学习记录中包含了用户所有的学习情况。
    学习记录的基本信息为 单词表id,用户id,掌握程度,是否完全掌握,是否标记太简单 单词表中所有的单词一开始掌握度均为0,掌握度为5则为完全掌握 学习记录和单词表构成一对多关系,单词表中的一个单词可以对应多条学习记录

  • 学习任务表 LearnTask 学习任务表包含每个用户当天要学习的单词,和单词表以及用户相关。
    基本属性有单词表ID,用户ID,建立日期,是否完成
    当用户准备学习时,先查看学习任务表中是否有以往的学习任务,如果有则清空。然后查看是否有今天的学习任务,如果不存在,则生成今天的学习任务。然后用户根据学习任务的顺序依次学习每一个单词。
    生成学习任务的算法如下:
    首先确定用户今天新学习多少个单词。如果用户有正在学习的单词书,则取单词书中未学习过的单词数量记为unknown,否则unknown=0,设用户每日学习量为R,取unknown=min(unknown,math.ceil(R*0.15)),然后从未学习的单词表中取一个sample,为要新学习的单词
    然后确定用户今天要复习多少个单词,首先得到用户学习过但是未掌握的单词表数量设为review,然后取review=min(R-unknown,review)然后取一个simple即为要复习的单词。
    然后将两个sample合并,得到今天的学习任务。

视图设计

  • 登录界面 如果用户未登录,直接跳转到登录界面
    登录界面为标准的Djano AuthenticationForm

  • 注册界面 注册界面为标准的Django UserCreationForm

  • 导航栏 未登录界面导航栏只有Logo,右侧为登入和登出
    导航栏最左边为Logo,从左至右分别为单词学习, 单词书,我的词库,我的笔记,学习设置,修改密码,登出

  • 上传单词书页面 单词书界面,可以查看单词书或者选择自己上传单词书。
    上传单词书需要同时上传封面和单词,上传完成之后系统导入单词到词库

  • 词库页面 词库页面可以根据URL显示某个用户或者所有用户上传的单词书

  • 背单词页面 背单词页面每次只显示tasks列表中最靠前的单词,通过获取页面的方法是post还是get来显示简单界面和详细信息
    当方法为get时,显示单词的简略信息页面,简略信息页面包含三个按钮,认识,不认识和太简单,按不同的按钮向页面post不同的信息。
    当方法为post时,显示单词的详细信息页面,单词的详细信息页面还可以通过post方法来提交笔记。详细信息页面包含单词释义,例句,近义词,例句最多5句,近义词最多5个。并且显示自己的笔记以及其他用户的共享笔记。页面上面有提交笔记表单,用户可以输入自己的笔记,POST笔记时,把taskid一起post上去,避免因为单词已经完成而没有出现在任务列表中,并且选择是否共享。
    通过post处理按钮功能时,要把任务插入到数据库中的新位置,避免顺序和之前一样

  • 用户词库页面 显示用户所有的学习记录,已完成单词,太简单单词和正在学习的单词拥有不同的外观

  • 修改密码界面 使用Django自带的ChangPasswordForm表单进行密码修改

  • 单词查询界面,显示一个单词在有所词库中的出现信息和学习记录。

URL 设计

User 相关

  • 登录 /user/login/
  • 登出 /user/logout/
  • 注册 /user/register/
  • 修改密码 /user/change/password/
  • 学习设置 /user/learing/setting/
  • 背单词 /user/learning/
  • 学习状态 /user/learning/state/
  • 忘记单词 /user/learning/state/forgot/(int:id)/
  • 用户笔记 /user/notes/
  • 修改用户笔记 /user/notes/edit/(ind:id)/

单词书相关

  • 创建单词书 /wordbook/new/
  • 查看单词书 /wordbook/(int:id)/
  • 书库 /wordbook/library/(int:id)/
  • 设置为学习&不学习 /wordbook/set/learning/(int:id)/

单词相关

  • 查询单词 /word/?word=(str)