Skip to content
This repository has been archived by the owner on Aug 31, 2019. It is now read-only.

qiujun8023/hnust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

湖南科技大学查询网站

前台编写的功能及模块有

后台编写的功能与模块有

全局介绍

  • 本项目所有代码均为个人编写(类库除外)
  • 其中特别感谢陈康王克纯提供的帮助与技术支持
  • 其中所有数据来源均通过模拟登陆验证码识别等实现
  • 为了避免重复登陆耗时等,登陆Cookie及数据均通过Memcache或者MySQL缓存
  • 本项目在上述数据的基础上进行了一些简单分析
  • 其中部分内网网站的访问如一卡通、图书馆等使用了Nginx反向代理或者SSH端口映射
  • 由于学校的限制,本项目并未开放给全校同学使用

PHP端

  • 代码全部遵循 PHP-FIG规范
  • 对外访问文件夹为 /public
  • 自写简单框架,入口文件为 /public/action.php 使用反射执行代码
  • 所有PHP代码均在 /Hnust/ 目录下,一级命名空间 Hnust
  • \Hnust\Config.php 为配置文件,定义全局的一些配置,部分动态配置从MySQL中读取(中间通过Memcache缓存),动态配置使用惰性加载
  • \Hnust\functions.php 文件定义一些常用的函数,其中input函数参考了ThinkPHP中的I函数
  • \Hnust\Utils 命名空间定义了一些常用的工具类,其中包括惰性连接的Memcache惰性连接的MySQL
  • \Hnust\Crawler 命名空间为所有的爬虫代码,包括教务网、财务网、一卡通、信息门户等
  • \Hnust\Analyse 命名空间对所有的爬虫数据进一步分析处理,增加缓存以及读取缓存等
  • \Hnust\Module 命名空间为所有的模块,对外提供访问,其中\Hnust\Module\Base 为基类,\Hnust\Module\Auth 为对基类增加了权限验证模块

Node端

  • Node 主要是提供Socket微信两个服务
  • Socket主要用于消息推送、记录实时日志、弹幕等功能
  • 微信主要负责微信企业号的回调消息,以及为PHP端提供主动消息API
  • main.coffee 为入口文件,以及定义一些Express的路由
  • wechat.coffee 主要负责微信被动消息
  • wechatApi.coffee 主要提交微信API,获取微信用户信息、发送主动消息等
  • youtu.coffee 主要利用腾讯云提供的优图人脸识别功能提供人脸识别

前端

  • 前端主要使用Semantic UI以及AngularJS
  • 前端所有文件位于/public/static目录下,全静态模板文件
  • 访问时默认通过rewrite发送前端index.html文件

提醒及定时任务相关

  • 提醒主要包括 成绩提醒选课提醒图书续期提醒图书续期提醒,提醒通过WebSocket推送(Socket.io)、短信提醒(阿里大鱼)、邮件提醒(PHPMailer)、微信企业号提醒、安卓客户端(其他同学利用本网站API开发的查询APP)
  • 计划任务主要包括 数据库定时备份(shell脚本)删除过期或冗余数据
  • 成绩提醒 主要分析考试安排,并且考试安排中的成绩尚未公布,则自动开启成绩提醒,成绩提醒通过轮训教务网实现
  • 图书续期图书超期 主要通过查询图书借阅情况,并且控制好在快过期时再查询图书借阅情况,如果借阅者尚未续借或归还,则帮其进行续借,如续借失败,则提示图书超期

成绩查询功能

  • 成绩查询主要提供个人成绩全班成绩全班成绩图片
  • 个人成绩 全班成绩 均提供不及格、补考高亮显示
  • 全班成绩 可以根据学号、分数排序(分数排序支持分数制及等级制混合排序, Angular Filter 实现)
  • 全班成绩图片 使用PHP生成
  • 截图如下:

个人成绩 全班成绩 成绩图片

课表查询功能

  • 课表查询主要提供个人课表 个人课表Excel版本下载
  • 个人课表可提供单周课表、全部课表(自己分割实现)
  • Excel课表使用PHPExcel实现
  • 截图如下:

个人课表 Excel课表

考试安排查询

  • 截图如下:

考试安排

学分绩点查询

  • 截图如下:

学分绩点

空闲教室

  • 空闲教室查询主要获取当前时间,判断当前周次、星期、节次
  • 节次分析时充分考试夏季作息时间表及冬季作息时间表
  • 截图如下:

空闲教室 空闲教室

教学评价

  • 教学评价,使用惰性提交,在用户评价页面并未先获取评价参数
  • 暂无截图

##选课平台

  • 由于每个学期选课时,教务网基本处于瘫痪状态,但本选课平台却能迅速抢到选课,原因如下:
  • 选课平台使用提前登陆、选课列表缓存、消息队列等方式实现
  • 提前登陆 当选课还没开始时,提前登陆教务网网站
  • 列表缓存 选课列表并不是用户访问时爬取数据,而是使用定时任务对选课列表进行更新,用户获取的列表为缓存列表,虽然数据更新可能不及时,但是加载速度更快,且更新不及时数据并不影响正常的选课
  • 消息队列 由于选课时教务网压力过大,服务器宕机几率大,并不能及时返回选课结果,在本项目上选课时,用户的操作只是加入消息队列,服务器后端会有其他的进行对消息队列进行处理,只有当教务网返回选课成功或失败时,服务端才会认为该任务执行完成,并且通过socket推送或者邮件提醒等方式提醒用户
  • 截图如下:

选课平台 选课列表

图书借阅

  • 图书借阅使用了内网代理等方式实现
  • 截图如下:

图书续借 图书列表 图书详情

学年学费

  • 截图如下:

学年学费

校园一卡通

  • 校园一卡通点击随机图片键盘的方式输入密码,在开发时遇到了一点困难,但依旧顺利解决
  • 截图如下:

校园一卡通

挂科率统计

  • 挂科率统计主要对成绩数据进行统计分析
  • 可以按科目、学院、专业等方式显示
  • 提供自动补全功能
  • 截图如下:

挂科率统计 挂科率统计

系统配置

  • 使用动态配置,配置存于MySQL,中间通过Memcache进行缓存
  • 配置可以随时修改,修改后会同时刷新Memcache
  • 截图如下:

系统配置

数据统计

  • 对网站数据进行一些简单统计分析
  • 部分数据调用标签云进行显示
  • 截图如下:

数据统计 数据统计 数据统计

用户管理

  • 对用户的一些增加、删除、修改、锁定、等操作
  • 统计用户的访问等
  • 截图如下:

用户管理 用户管理 用户管理

消息推送

  • 通过Socket或者其他方式对用户进行消息推送及统计推送情况等
  • 截图如下:

消息推送

APP管理

  • APP为其他同学调用网站API开发
  • 可以统计APP的使用情况以及发布APP等
  • APP存于七牛
  • 截图如下:

APP管理

日志记录

  • 提供实时日志(Socket.io)
  • 访问日志的查询、检索等
  • 截图如下:

实时日志 访问日志

实用工具

  • 提供查找相同选课的同学
  • 通过上课教室反查上课班级
  • 查询在某同一时间段无课的同学

目前运行网站(暂无法提供测试账号)

About

湖南科技大学查询网站

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published