- 发布于
做了一个比较完善的课程管理与推荐系统
- 作者
- 姓名
- Jacob
- Web 端:https://github.com/jacob-lcs/awesome-curriculum-web
- Android 端:https://github.com/jacob-lcs/awesome-curriculum-android
- Nodejs 端:https://github.com/jacob-lcs/awesome-curriculum-backend
- 预览网址:http://schedule.lcs.show/
一、引言
自己在大学的时候做了一个课程管理与推荐系统,系统的功能包括课程表、课程推荐、课程群聊三大功能。其实自己也是在大学时候感受到没有一款相似的工具出现,并且平时想找大学课程班上的同学比较困难,因为大学是走班制,没有固定的班级。所以就做了这么一款软件。总体来说分为 Android 端、Web 端、Nodejs 端。
二、功能介绍
本章主要来介绍一下本系统做的一些功能,并且通过 gif 图片的形式对其作出演示。
2.1 课程表
课程表就是可以通过自动导入或者手动新建的方式进行添加,但是由于浏览器跨域限制,Web 端并没有做自动导入功能,而是将其放到了 Android 端,GitHub 地址如上所示。自动导入故名思义,输入你的学号和密码,就可以通过学校教务处拉取你的课程信息,当然这个需要适配,目前只适配了上海大学(对,我就是上海大学的 😝)。 手动新增课程的方式也比较人性化,通过在课程表中下拉就可以弹出课程详情的 form 表单,输入相关的信息即可。下面通过 gif 图片来演示一下。
2.2 课程群聊
课程群聊就是在你新建完课程之后,系统会自动根据你新建的课程将你拉入到对应的课程群聊当中,省去了寻找群聊的过程,打开聊天界面即可看到所有课程群聊,要注意的是当学校、课程名称、课程好均相同时才会进入到同一个课程群聊当中。 在群聊中可以发送图片、表情、文字等信息,演示如下:
课程推荐
系统中还有一个课程推荐的功能,就是根据你平时的点击日志进行课程推荐,推荐算法使用的是比较经典的基于物品的协同过滤推荐算法。数据库的所有课程都是从网易云课堂、腾讯课堂、MOOC 等网站爬取的,具体的方法可以看我这篇博客,演示如下:
Android 端总览
三、部署方法
3.1 Web 端
安装依赖
yarn install
运行项目
yarn start
3.2 Nodejs 端
你应该可以发现项目目录/config/
下的三个文件里面的配置项都为空,因为我使用的云服务器作为 MySQL 数据存储,包括 qq 邮箱密钥,为了保护隐私,还请大家自己填写调试程序。
3.2.1 配置变量
// PASS_SECERT.js
const PASS_SECRET = {
SECRET_KEY: '', // 加密密码的密钥,自己随便填写就好
}
// dbConfig.js
const dbConfig = {
DATABASE: '', //数据库
USERNAME: '', //用户
PASSWORD: '', //密码
PORT: '', //端口
HOST: '', //服务ip地址
}
// email.js
const emailInfo = {
user: '',
pass: '', // QQ邮箱密钥,注意:不是密码
}
另外,config 目录下还有两个 pem 文件,这个是生成的密钥和公钥,请按照以下方法生成
- 打开命令行工具,输入 openssl,打开 openssl;
- 生成私钥
genrsa -out rsa_private_key.pem 2048
- 生成公钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3.2.2 安装依赖
npm run install
3.2.3 运行项目
npm run start