复习提醒系统——项目汇报

1.引言

一、软件开发目的
上了大学以后,许多学生失去自制力,变得怠于学习。不少同学是在考试临近的一星期内甚至两三天、一天的时间内才开始复习(预习),与中学时期勤勤恳恳、用工刻苦的学习态度大相径庭。
为了对自制力较差的同学起到警示作用,本小组制作了复习提醒系统(RevReminder System)。用户在系统里输入课程名称、上课时间,软件就会自动根据拟合方程生成艾宾浩斯遗忘曲线(The Ebbinghaus Forgetting Curve),使用户了解自己处于遗忘曲线的哪个阶段,从而在心理上起到警醒效果,督促用户及时复习。
由于技术、时间等因素,软件的功能与最初的设计有出入,小组对一些难以实现或不必要的功能进行了删减,对保留的功能进行了完善。

2.项目概述

2.1项目需求:

(1)录入课程信息
(2)读取课程信息
(3)根据课程信息绘制曲线
(4)能删除课程信息
(5)提供日历
(6)提供适当的教程
(7)老师收到软件提供学生遗忘情况

2.2.性能需求:

(1)绘制曲线的速度不能慢于2秒
(2)添加或删除课程信息时不能有可见的延迟
(3)弹出任何子窗口时不能有可见的延迟
(4)至少能正确拟合一星期内的遗忘曲线

2.3.对外接口

(1)第三方库接口
(2)数据交换接口

2.4.约束

(1)只能在Windows系统运行
(2)不需要联网
(3)项目要在2020年6月5日晚上之前完成

3.功能列表

3.1.弹出教程

用户第一次运行该软件时,会弹出对话框询问是否显示教程。如果点击“Yes”,则会显示一个有6页的教程窗口;如果点击“No”,则教程窗口不会弹出……

3.2.输入课程

用户在主界面点击“添加课程”,就会弹出输入课程的对话框。
该对话框包含两个输入栏:课程名称和上课时间。课程名称是软件引用课程信息的唯一标识,而上课时间则是软件对该课程遗忘曲线进行拟合计算的依据……

3.3.删除课程

用户在主界面点击“删除课程”,就会弹出删除课程的对话框。
该对话框包含一个输入栏,内容是课程名称。该输入栏既可以进行文本编辑,也可以点击下拉箭头在已有的课程中选择……

3.4.“绯红之王”加速功能

该功能是一个Debug功能,即检查软件开发过程中检验软件是否正确执行指令的功能。用户使用软件时不需要使用此功能……

3.5.显示和隐藏日历

用户可以在菜单栏的“帮助”一栏下找到“显示日历”和“隐藏日历”的选项卡,点击就可以在主界面右上角显示或隐藏日历……

3.6.绘制艾宾浩斯遗忘曲线

绘制遗忘曲线是软件的核心功能。用户在主界面的下拉栏选择课程后,软件就会绘制相应的艾宾浩斯遗忘曲线……

3.7.异常状况处理

软件运行中,由于用户操作不当,会出现一些错误输入。本软件的异常状态处理机制可以一定程度上增强软件的健壮性。
打开软件时,若软件根目录下的配置文件没有被正常读取,则会弹框显示“配置文件错误”……

4.代码实现

4.1.编程语言

本软件在最初的设计中用Java作为编程语言,但是综合考虑运行效率、第三方库的易用程度、需要的插件、对编程语言的熟悉程度、常用IDE的功能多寡等因素,最终小组决定用C++作为编程语言。

4.2.第三方库

本软件采用Qt作为第三方库。Qt是一个重量级的C++图形库,功能强大,接口完备,封装程度高,调用简便。若使用Qt的官方IDE:Qt Creator或者在Visual Studio中安装Qt Tools插件,可以直接在Qt Designer中用鼠标拖拽的方式构建前端界面,所见即所得,将前端和后端逻辑分开处理,易于开发。
本软件还采用一个基于Qt的第三方库:QCustomplot。这是一个基于Qt的基本库开发的图形绘制第三方库,本软件的遗忘曲线绘制就是用该库实现的。

4.3.前端与后端的逻辑连接

软件的前端使用Qt Designer的图形界面方法开发,后端则在各窗口对应的.h和.cpp文件中实现。
前端控件和后端方法的连接是通过Qt的信号-槽机制(Signal-slot)实现的,这是Qt封装的一种安全且逻辑清晰的前后端连接机制,是Qt的主要特色之一。

4.4.数据交换

本软件的数据交换通过JSON文件实现。该文件在上面的描述中称为“配置文件”,命名为“config.json”。该文件里储存有用户输入的课程名称和上课时间。
在config.json文件中,课程名称是键(key),是一个课程对象的唯一标识符。上课时间则是该课程对象的键值(value)。
用户输入课程时,其相应信息被写入config.json文件中,若用户删除课程,则其相应信息也在config.json中被移除。
对config.json文件的读写是在软件打开、用户修改课程列表和关闭软件时进行的。每次写入config.json时都是采用QFile::Truncate模式进行覆盖写入,这是为了确保写入的文件格式正确。

4.5.代码总量

根据统计,本项目的代码文件共包含6个.h文件,6个.cpp文件,具体来说:
(1)6个.h文件中,4个为窗口的头文件,1个为QCustomplot库的头文件,1个为预编译头文件,用来加快编译速度。
(2)6个.cpp文件中,4个为窗口对应头文件的实现,1个为main.cpp主函数入口文件,1个为QCustomplot库对应头文件的实现。
(3)还有图片等资源文件若干。
本项目的总共有效代码(去除第三方库和自动生成的代码)行数为572行。

5.软件展示

帮助系统
在这里插入图片描述
在这里插入图片描述
软件主界面
添加课程后的软件界面
代码展示:
在这里插入图片描述

6.小组贡献

组员贡献
吴浩天完成了用户输入与配置文件的数据交换功能
曾亦诺完成了主界面的前端和后端开发,完成了教程窗口的前端和后端开发,完成了代码的整合工作,对小组其他成员的代码进行整合和格式调整。
吕浩程完成了添加课程界面的前端和后端开发
张梦沛完成了删除课程界面的前端和后端开发
郝佳博完成了计时器和绘制曲线的算法
全组在博客撰写、ppt和视频制作、项目报告方面,小组成员轮流负责。

7.附件

代码文件 提取码:uzwy

感谢老师及学长的帮助,感谢组内大家(大佬们)的辛苦工作。完结撒花!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值