易班轻应用

大学生创新创业训练计划项目

结题论文

项目编号: 201513645026
项目名称: 易班平台轻应用软件开发
项目类型: □创新训练 □创业训练
项目级别: □国家级 □自治区级 □院级
项目负责人: 何文力
项目组成员: 义博、阳鹏、江盛梅、陈建伟
指导教师: 林航、廖显平
项目所属学院: 信息工程学院
项目起止时间: 2015 年 9 月 至 2016 年 9 月

项目简介

本项目基于教育部推行的易班轻应用内置的的开放API,编写能够方便校园师生生活方方面面的H5轻应用,提升办事便捷度的同时也提升了办事的效率,同时可以整合校园内的已有资源进行进一步的优化。

如何部署本系统

系统环境:Windows Server 2008 R2 或以上、CentOS 6 或以上

服务器软件:IIS 10 或以上,Apache 2.2 或以上、Ngnix

PHP版本要求:PHP 5.5或以上

数据库要求:MySQL 5.5 或以上

找到附带光盘中的代码,找到所有 sql 文件将其导入到数据库中。随后将代码拷贝到服务器根目录下,修改 /fuel/app/config/production/db.php 文件,修改数据库的数据库名称、密码、地址和端口即可。确认无误之后,即可从 localhost:80 中检查运行是否正常。

功能简介

易请假

功能简介

本功能实现了请假审批的在线化和无纸化,通过区分学生和老师的账号进行请假和批假操作。本应用取代了传统的纸质请假手续,让学生在不需要到达办公地点进行请假操作,同时分配的假条ID可以通过后台数据库查询,在后期需要验证的时候进行假条的验证。

操作流程

首先学生通过应用首页进入易请假应用,并点击“我要请假”按钮,然后填写辅导员的姓名并提交。(如下图所示)

系统进行验证之后会进入信息填写界面,学生只要对信息进行填写,并选择对应的时间即可提交。对于不同的请假天数,系统会自动指派审批流程,实现逐级上报的能力。并且这些审批流程可以通过简单的代码修改就可以匹配不同学校的不同请假政策。

学生在请假条提交完成之后,对应的辅导员将会在待批假的列表里面看到所有等待审批的学生名单和对应的信息,辅导员确认无误之后,手动点击同意按钮并填写批假意见,即可完成。

对于需要逐级审批的请假条,在当前审批级别完成之后会提示输入上一级的姓名,系统验证通过之后请假条将会自动转交给上一级,直到请假条传递到最高级别。完成审批之后学生将会在他的请假历史界面看到请假的进度和请假的批假结果。

学生在请假结束之后可以直接在应用内执行销假操作。

应用的配置方法

在数据库表 “counsellorinfo” 中,将辅导员和拥有批假权限的老师的易班账号加入即可完成配置。详细解释如下:

Name YBUID Department Leve
姓名 易班ID 所属学院信息 等级(1-4)

在线报修

功能简介

在线报修功能是一款与易请假功能类似的应用,在线报修功能取代了传统通过纸质报修流程。传统的纸质报修流程在效率上比较低下,例如需要到指定地点索取报修单才能确定报修流程。在本应用中,通过区分后勤部门人员的易班ID的学生的易班ID,让后勤人员可以在手机上完成保修单的索取工作。并根据具体情况确定维修行程,大大地提高了后勤部门人员的维修速度。

操作流程

首先学生通过进入在线报修应用,随后逐一填写报修表单项目(如图所示)

需要填写的项目包括维修的区域、具体位置、报修物品的详细描述以及可选的备注项目。当学生填写完成提交之后,可以在报修历史当中查看维修进度。

学生提交完成之后,所有的维修师傅都可以看到当前所有请求进行维修的保修单。根据自行安排选择接收保修到自己的账号当中(如图所示)。

当维修人员确认维修完成之后,选择维修完成。如果出现其他问题,根据选项确认维修结果即可。

应用的配置方法

首先进行维修人员的账号区分,使用数据表“fixit_assoc_account”

Id Yb_uid Name Group
系统自动分配 维修人员账号 维修人员姓名 所属分组

对维修区域进行分类,使用数据表“fixit_assoc_cats”

Id Cat_name Cat_code
系统自动分配 分区名称 分区识别代码(必须唯一)

校园新闻

功能简介

该应用通过抓取校园官网特定区域的内容,将其整合到一个移动友好的页面当中。方便师生通过手机端进行新闻的阅读。

操作流程

通过点击进入校园新闻应用,等待系统抓取完毕之后即可展现出当前校园官网页面上的新闻内容。并点击新闻进行内容阅读。

应用的配置

本应用无需操作数据库,需要修改如下代码。

  1. 定位到 /fuel/app/classes/controller/news.php

  2. 修改第35行 $view->url 的值为校园官网的网址

  3. 修改第55行 $ptn 的值为匹配页面新闻目录连接和发布时间的正则表达式

  4. 往后代码修改选择路径的正则表达式和请求网址

学生手册

功能简介

该功能通过人工导入学生手册数据,在应用中提供搜索功能,完全抛弃纸质学生手册节约资源。并且更新方便,更方便守则的查找。

操作流程

通过进入学生手册应用,可以通过搜索框和推荐标签进行搜索。

应用配置

将学生手册的每一条数据导入数据库中,使用数据表“handbook”

Item_id Part Chapter Node Section Content Click_count Tag
自动 部分 章节 小节 条目 内容 自动计数 标签

实施过程中可能遇到的困难

在实施过程中,可能遇到推广难和数据录入繁琐的问题。解决的方法仅仅只有通过大量的人力操作进行。

实现技术的探讨

当前使用的技术栈

当前代码版本中使用了如下技术栈,这些最终选定使用的技术都是通过我们实践证明可行的。

l FuelPHP框架:一款轻巧的基于PHP的MVC框架

l MySQL数据库:世界上比较流行的数据库软件

l PHP语言:专注网络开发的脚本语言

l Grunt自动化工具:流行的前端自动化流程管理工具

l JQuery前端框架:流行的前端Javascript库,兼容性好

l Bootstrap:流行的前端CSS库,兼容性好,栅格系统强大,可以进行屏幕自适应

l ECMAScript标准:新的ECMA标准实现更高效更简洁的代码

l NodeJS:为前端自动化构建系统提供强大的功能

几种框架的实践对比

Microsoft ASP.NET MVC

这是一个微软推出的基于 .Net 平台的 MVC 框架,功能比较强大,先进的Razor视图引擎等等。在我们的第一个系统版本中,我们使用 VB.NET 基于该框架进行开发。

在投入实际运行之后,我们发现,Windows Server 本身占用内存很高,而且在第一次访问的时候运行进程非常缓慢,在进行Nuget packages升级的时候非常容易造成 webconfig 的配置错误,导致调试花费非常多的时间,所以我们最终放弃该框架进行了全新的开发。

LAMP技术栈

所谓LAMP就是 Linux + Apache + MySQL + Php 的组合实现的,Linux本身占用内存非常小,效率高,而且对于配置只需要配置简单,不需要在代码中体现对系统的配置。非常简单方便。这个技术栈也是当前系统可以使用的。

RESTful API 设计思想

RESTful API 的设计思想主要体现在一切皆状态上,并且采用RESTful API的设计方法可以使得前端和后端模块的完全解耦。在前端页面当中,只需要发出Ajax请求,通过RESTful API服务器返回json数据和HTTP状态达到数据交换的目的。使用RESTful API的后端设计还有一个非常好的好处就是在之后可以将同一套RESTful API系统应用到不同的客户端开发当中。

在当前光盘的代码版本中不包含这个特性,随后将在后面讨论实现的方法。

系统的基本流程

首先系统会接收用户的请求,进行登陆验证,如果未登录将会对易班的开放API发起授权申请,如果已经授权,系统将会为用户展现所有功能。

MVC框架

当前光盘中的代码版本为MVC框架的,采用这种框架的好处有:

l 开发效率更高

l 代码耦合度比较小

l 应用程序各部分之间的职责更清晰

缺点也随之体现

l 过程复杂

l 如果没有对应的模型,视图也无法展现出最终的效果

l 渲染视图的过程是在服务器中完成的,最终呈现给浏览器的是带有视图模型的页面,没有办法对输出的HTML代码做更好的优化

RESTful API 框架

对于RESTful API框架,我们发现使用 NodeJS + ExpressJS 框架实现是最简单的。又因为NodeJS是不阻塞IO的,所以非常适合大量请求的场景。

前端库的构建

在实践当中,我们前端的开发采用 Pug 模板引擎,Sass预编译以及TypeScript进行开发。同时配置Grunt Task实现自动化的构建最终版本。构建完毕之后,提交至Git版本管理系统中。在服务器中通过 Git Hook 技术挂钩 commit 动作,将代码进行编译,压缩和优化。同时可以使用 Mocha 进行自动化测试,如果测试出现问题则触发版本回滚再次编译。

后端服务器的构建

后端采用上面提到的 NodeJS + ExpressJS 框架完成,只要关注数据库的操作和HTTP状态码的输出即可。并且维护简单,高效。而且在日后可以用同一套API构建其他产品。

附件

系统代码详见附带CD光盘