基于微信的辅助教学系统的设计与实现 - 图文
更新时间:2024-05-08 12:48:01 阅读量: 综合文库 文档下载
- 计算机辅助教学系统推荐度:
- 相关推荐
存档日期: 存档编号:
JIANGSU NORMAL UNIVERSITY 本科毕业设计 UNDERGRADUATE DESIGN
论文(设计)题目: 基于微信的辅助教学系统
的设计与实现 姓 名: 孙* 学 院: 智慧教育学院 专 业: 计算机科学与技术(物联网技术) 年 级 、 学 号: 2012级 122******* 指 导 教 师: 李小斌
江苏师范大学教务处印制
江苏师范大学计算机学院学士学位
毕业设计报告原创性声明
本人郑重声明:
所呈交的毕业设计报告基于微信的辅助教学系统的设计与实现 是本人在导师指导下,在江苏师范大学计算机学院学习期间,进行毕业设计时取得的成果。本人知道,除文中已经标明引用的内容外,本毕业设计报告不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人或集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
本人签名 年 月 日
基于微信的辅助教学系统的设计与实现
设计版权使用授权书
本设计 “基于微信的辅助教学系统的设计与实现 ”是本人在校期间所完成学业的组成部分,是在江苏师范大学教师的指导下完成的,因此,本人特授权江苏师范大学可将本毕业论文的全部或部分内容编入有关书籍、数据库保存,可采用复制、印刷、网页制作等方式将论文文本和经过编辑、批注等处理的论文文本提供给读者查阅、参考,可向有关学术部门和国家有关部门或机构呈送复印件和电子文档。本毕业论文无论做何种处理,必须尊重本人的著作权,署明本人姓名。
作者签名: 指导教师签名:
年 月 日 年 月 日
基于微信的辅助教学系统的设计与实现
摘 要
辅助教学系统与教师、学生教学和学习息息相关,一个实用的辅助教学系统可以为教师的教学以及学生的学习提供很多便捷和帮助。微信是现今流行的一种社交软件,具有很大的即时交互性。微信公众号提供了高效的关键词系统,为交互性提供了保障,本设计主要依托微信公众账号的关键词系统,实现课堂的即时交互与辅助教学。
本设计注重于,解决课堂上交互的即时处理,避免使用网页等非实时载体。本系统为教师、学生提供及时签到,实时答题及统计,询问与留言等功能,方便学生及时解决疑惑,教师及时了解学生动态,提升课堂教学效率。本系统虽然不是很全面,不像一些辅助教学app或者网络辅助教学系统有着更加丰富的功能,但本系统的最大特点是以简洁和必要的功能保证课堂效率以及课堂交互的实时性,充分发挥微信作为及时交互工具的特点。
本设计主要基于微信公众号提供的开放接口,充分利用关键词系统,利用php语言、mysql数据库,sae平台进行设计,给大家一个及时高效的辅助教学系统。
该论文有图25幅,表1个,参考文献21篇
关键词:微信 辅助教学 关键词 交互
I
基于微信的辅助教学系统的设计与实现
The Design and Implementation of the Assistant
Teaching System Based on WeChat
Abstract
Auxiliary teaching system is closely related to teachers, students, teaching and learning. One useful auxiliary teaching system bring teachers' teaching and students' learning a lot of convenience and help.WeChat is a now popular social software, has a great deal of real-time interactive.WeChat public system provides efficient keywords, has provided the safeguard for interactivity, this design mainly depends on the WeChat public accounts’ keywords system, and realize real-time interaction with auxiliary teaching class.
Focusing on the design, solve the classroom interactive real-time processing, avoid using non real-time carriers such as web pages.The system to provide timely check for teachers, students, real-time problem solving and statistics, inquiry and comments, and other functions, convenient for students to solve doubt, teachers understand students dynamic in time, improve the classroom teaching efficiency.Though this system is not very comprehensive, not like some auxiliary teaching app or the function of the network auxiliary teaching system has a more rich, but the biggest characteristic of this system is concise and necessary function to ensure the efficiency of class and class interaction of real-time, give full play to the WeChat as the characteristics of interactive tools in time.
This design is mainly based on WeChat public offer open interface, make full use of the keyword system, using the PHP language and mysql database, sae platform design, give you a timely and efficient auxiliary teaching system.
Keywords:WeChat Auxiliary teaching Key words interaction
II
基于微信的辅助教学系统的设计与实现
目 录
摘要----------------------------------------------------------------------------------------------Ⅰ Abstract-----------------------------------------------------------------------------------------Ⅱ 目录----------------------------------------------------------------------------------------------Ⅲ 图清单-------------------------------------------------------------------------------------------Ⅳ 表清单-------------------------------------------------------------------------------------------Ⅴ 1 绪论---------------------------------------------------------------------------------------------1 1.1课题背景及研究意义 ---------------------------------------------------------------------1 1.2开发工具的选用及语言介绍-------------------------------------------------------------1 1.3文章内容及课题的主要贡献-------------------------------------------------------------3 1.4本章小结-------------------------------------------------------------------------------------4 2 需求分析--------------------------------------------------------------------------------------5 2.1功能需求 -----------------------------------------------------------------------------------5 2.2性能需求-------------------------------------------------------------------------------------6 2.3文章内容及课题的主要贡献-------------------------------------------------------------6 2.4本章小结-------------------------------------------------------------------------------------7 3 系统总体设计--------------------------------------------------------------------------------8 3.1系统的结构划分----------------------------------------------------------------------------8 3.2系统的主要数据成员---------------------------------------------------------------------10 3.3本章小结------------------------------------------------------------------------------------12 4 系统实现过程-------------------------------------------------------------------------------13 4.1公众号申请与基本配置 ----------------------------------------------------------------13 4.2进行token验证----------------------------------------------------------------------------15 4.3菜单及基础性接口------------------------------------------------------------------------16 4.4教师功能模块------------------------------------------------------------------------------33 4.5学生功能模块------------------------------------------------------------------------------42
III
基于微信的辅助教学系统的设计与实现
4.6本章小结------------------------------------------------------------------------------------48 5 关键技术-------------------------------------------------------------------------------------49 5.1系统需要的硬件环境及软件环境------------------------------------------------------49 5.2编程的关键技术---------------------------------------------------------------------------49 5.3本章小结------------------------------------------------------------------------------------50 6 公众号使用及推广-------------------------------------------------------------------------51 6.1公众号基本信息---------------------------------------------------------------------------51 6.2关键词说明---------------------------------------------------------------------------------51 6.3公众号使用实例---------------------------------------------------------------------------52 6.4公众号推广及使用建议------------------------------------------------------------------56 6.5本章小结------------------------------------------------------------------------------------56 7 总结与展望----------------------------------------------------------------------------------57 7.1总结------------------------------------------------------------------------------------------57 7.2展望------------------------------------------------------------------------------------------57 毕业设计体会------------------------------------------------------------------------------58 致谢------------------------------------------------------------------------------59 参考文献------------------------------------------------------------------------------------60
IV
基于微信的辅助教学系统的设计与实现
图清单
图序号 图1-1 图2-1 图3-1 图名称 关键词原理示意图 学生及教师用户用例图 系统总体功能框架 教师功能模块结构图 页码 图3-2 图3-3 图3-4 图3-5 图3-6 图3-7 图3-8 图3-9 图4-1 图4-2 图4-3 图4-4 图4-5 图6-1 图6-2 图6-3 图6-4 图6-5 图6-6 图6-7 图6-8 图6-9 学生功能模块结构图 验证与搭建及其他功能模块结构 table teacher table student table question table qiandao table work 微信公众号 测试号(1) 测试号(2) 自定义菜单 关键词帮助 测试号二维码 教师开始签到 学生签到成功 结束签到 教师出题 学生答题 教师接收答题情况 交互学生端 交互教师端
3 6 8 9 9 10 11 11 11 12 12 13 14 14 21 33 51 52 52 53 53 54 54 55 56 V
基于微信的辅助教学系统的设计与实现
表清单
表序号 表6-1 表名称 关键词说明表 页码 51
VI
基于微信的辅助教学系统的设计与实现
1 绪论
1.1 课题背景及研究意义
1.1.1 课题背景
现在,社交工具已经进入人们生活学习的各方各面,微信作为一个社交工具更为广大同学和教师广泛接受。微信为用户提供了公众平台服务、为用户提供了分享和消息获得的渠道,用户可以通过微信表达自己的喜怒哀乐,可以通过微信朋友圈将自己的生活乐趣、各种经历、各种所得向朋友们展示,微信也渐渐的融入人们生活的方方面面,给人人与人之间搭建了一个新的交流渠道,丰富了生活[1]。微信公众平台很高的交互性和平台性,为移动移动学习和辅助教学提供了一种新的渠道和方式 [2]。辅助教学系统现在已经广泛获得应用,但是在很大程度上难以满足广大师生进行及时交互并便捷地在教学过程中获得数据和反馈的需求[3]。以本校的辅助教学系统为例,主要提供了选课,成绩查询等功能,主要是解决课前课后的问题,并未提供交互性的课上服务。而微信公众号以其提供的api和交互体系,也为开发出一套注重课堂交互的辅助教学系统提供了可能。
微信编程以其准确、实时的关键词服务,为用户获得及时交互提供了高效的方式,设计科学的关键词系统,可以给用户带来人性化、简单高效的使用体验。微信二次开发出来的系统不会以独立的软件出现,而是以微信作为载体,可以最大程度的保障系统的普适,保障不受时空限制[4]。
虽然辅助教学系统已经很大程度的发展,但是只有很少的一部分人在研究如何利用微信公众平台进行辅助教学。 [5]。一款主要面向课堂之上,面向交互的系统是对现有的辅助教学系统模式的补充,可以很大程度上满足师生对课堂交互的需求,而这种课堂交互正是学生教师所需的[6]。例如实现课堂上的实时签到统计、课堂答等功能。 1.1.2 研究意义
基于微信的辅助教学系统以公众号为载体,使用微信二次开发,以注重实时性和交互性为开发理念,以课上为使用主体,为现有的辅助教学系统提供了补充,满足了师生对课堂交互的需求。教师和学生可以简单实时地在系统中实现答题、提问、留言等操作,也有助于提升课堂效率和教学效果,并有助于提高学生的积极性与注意力,解决课堂中玩手机的问题。
开发微信辅助教学系统可以巩固自己的所学知识,提高实际应用能力,并能更好地适应市场的实际需求,丰富自己的知识,了解一个现在比较热门的开发技术和方向。
1.2 开发工具的选用及语言介绍
1.2.1 微信二次开发
微信是腾讯公司推出的在智能终端提供的一种即时通讯的服务软件。微信公众号是微信向用户提供的一种账号形式,用户关注公众号后可以方便地获取多种多样的服务。为了使微信的开发者更好地进行微信的开发和拓展,微信公众号为用户提供了种类众多的open API,这些接口为开发者进行二次开发提供了支持。
微信公众平台为用户进行二次开发提供了众多的open API,主要有消息接收接口、消息发送接口、获取用户信息接口、客服接口、菜单接口等[7]。微信的消息接收接口主
1
基于微信的辅助教学系统的设计与实现
要处理消息的接收与回复,消息的处理等。获取用户消息接口主要是通过用户的openid(用户在公众号中的标识)获取用户的头像、用户名等信息[8]。当用户和公众号发生一些动作的交互时,微信可以用一定的接口将消息发送给微信的第三方开发者,开发者可以在交互发生48小时内调用客服接口,通过https请求的POST方法将一个json数据包发送给服务器,服务器对json数据进行解析,达到主动向用户发送消息的目的。这个接口可以在一定条件下满足开发者主动向用户发送消息的请求,可以使用户在使用时获得更加令人满意的使用体验,提升微信公众号进行消息处理的灵活性。菜单接口用于微信菜单的定义与管理[9]。
微信接口为用户进行二次开发,提供了固定的格式,用于xml或者json数据传输或实现一定的功能。以微信进行接口验证的接口为例,如下:
private function checkSignature() {
$signature = $_GET[\获取signature $timestamp = $_GET[\获取时间戳 $nonce = $_GET[\获取随机数
$token = TOKEN;//token值
$tmpArr = array($token, $timestamp, $nonce);//将数据数组化 sort($tmpArr, SORT_STRING);//排序 $tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );//sha1 加密
if( $tmpStr == $signature ){//如果验证匹配通过 return true;//返回true }else{
return false;//返回false } }
以上接口主要是为了进行接口的验证与连接第三方开发者,主要包括token值(标志微信公众号与验证),signure(微信加密签名,signature是对用户填写的token参数和请求中的timestamp参数、nonce参数的结合。),timestamp(从服务器获得的时间戳),nonce(服务器产生的一组随机数),echostr(服务器产生随机字符串)作为验证标志。
以微信进行普通消息传书的XML文档为例:
主要包括,微信发送者的openid,接收者的openid,消息内容等。微信根据规范的xml文档格式进行消息的解析[10]。
微信公众平台作为微信提供的一种服务对接口权限和调用频次具有一定限制,在这
2
基于微信的辅助教学系统的设计与实现
里不做详细说明。
1.2.2 微信关键词
微信的关键词系统是微信公众平台进行消息回复与消息处理的一个重要机制,也是实现实时交互的一种重要手段。微信通过庞大的关键词系统进行事件或者用关系的匹配,实现消息的自动回复或者处理。微信关键词的处理机制如图1-1所示。
图1-1 关键词原理示意图
1.2.3 PHP
PHP是微信接口的主要语言,是很多开发者进行微信二次开发的优先选择语言。PHP(Hypertext Preprocessor, 超文本预处理器),是一种服务器端、跨平台、HTML嵌入式的脚本语言。PHP是B/S体系结构,属于三层结构。服务器启动后用户可以不使用客户端软件进行使用和操作,只使用浏览器就能进行访问并使用功能[11]。
PHP具有以下特点: 安全性高 跨平台特性 支持广泛的数据 执行速度快 模块化
支持面向对象与过程[12]。 1.2.4 开发工具及运行环境 适用的操作环境:微信公众平台 开发环境: NetBeans IDE 、Dreamw 、新浪 SAE 、微信公众平台测试账号 服务器环境: 新浪SAE 云平台 开发语言: PHP 数据库: Mysql
1.3 文章内容及课题的主要贡献
本文主要介绍了基于微信的辅助教学系统课题研究的技术背景以及现状,介绍了开发本系统的主要意义,整个系统的架构以及各模块的主要架构,分析了基于微信的辅助教学系统开发的可行性,对用户对系统的性能功能的需求进行了归纳和分析。此外,介
3
基于微信的辅助教学系统的设计与实现
绍了开发和实现系统索要使用的关键技术,介绍了基于微信的辅助教学系统的设计与实现过程。
教师使用本系统可以更好的掌握课堂情况和活跃课堂节奏,而学生也能在课堂中更好地解决自己的问题,提高学习的积极性。可以很好地实现课堂交互。
做为开发者,在开发的过程中,我可以很好地巩固知识并学习新的知识,开拓自己的眼界,并提高自己的能力。
论文的主要章节概括如下:
第1章是本文绪论,介绍了基于微信的辅助教学系统的课题研究背景、分析了开发该系统的意义和系统的价值,对开发本所系统所使用的技术进行了简要的介绍,除此之外,本章还介绍了系统开发的主要工具以及系统开发的环境,介绍了主要使用的编程语言,介绍了系统的运行环境。
第2章是对基于微信的辅助教学系统的需求分析,总结说明基于微信的辅助教学系统主要要实现的功能,分析了用户的需求,分析和说明了系统开发、运用的可行性。
第3章是对基于微信的辅助教学系统的总体架构以及各功能模块架构的总结和分析,介绍可一些重要的数据库和逻辑层设计
第4章是基于微信的辅助教学系统的实现过程,介绍系统各个模块的实现代码,说明了一些重要的微信API。
第5章介绍基于微信的辅助教学系统的软硬件需求以及开发的一些关键技术点 第6章是个人对设计以及系统开发和自身情况的总结和展望。
1.4 本章小结
本章主要介绍了基于微信的辅助教学系统的开发背景、意义和价值。本节对微信二次开发及其部分接口做了简要介绍,介绍了微信公众平台的关键词响应式处理的原理做了简单介绍,简要介绍了项目的主要开发语言以及运行和开发环境。对本文的总体内容进行了简单的介绍。
4
基于微信的辅助教学系统的设计与实现
2 需求分析
2.1 系统的功能需求分析
2.1.1 系统的功能需求主要有以下几块内容:
1)教师的操作与管理 2)学生的操作与管理 3)系统其他功能与验证 2.1.2 系统主要由以下3大功能块组成: 1)教师功能模块:
教师绑定与验证 发起签到于结束签到 在线出题
题目结果统计 布置作业
在线答疑交流
2)学生功能模块: 学生绑定与验证 学生签到 在线答题
发起交流与给教师留言 查看作业
3)系统搭建与验证模块: 系统token验证 基本菜单形成 关键词帮助 校历 2.1.3 系统的用例图
用例图如图2-1所示。
5
基于微信的辅助教学系统的设计与实现
账号绑定账号绑定开始与结束签到签到出题答题学生教师答题统计询问与留言回复学生作业查看布置作业 图2-1学生及教师用户用例图
2.2 性能需求
2.2.1 系统硬件需求
安卓或IOS手机
2.2.2 系统开发运行所需要的软件环境
? 软件操作环境。
微信客户端 ? 编程环境。
1) NetBeans EDI 、dreamweaver 2) SAE
3) 微信公众平台测试号及其API 4) Mysql
2.3 可行性分析
从技术上,微信公众平台提供了大量的API,为实现功能的接入打下了很有利的基础。另一方面,微信公众平台的数据格式较为统一,按照其格式进行代码书写会容易很多。Php作为编程语言,相对简单易学,再加上已拥有的编程基础,相对容易掌握[13]。另一方面,做为微信系统的二次开发,适配问题也较容易解决。 作为公众账号的二次开发,实时完善和拓展更加容易[14]。
从经济和推广上看,作为适用特定推广的公众账号,复制性和便捷性较高,不需要额外的系统负担和存储空间。另外,二次开发的代码也较为轻量,开发工具和语言也是免费的,主要开支存在于公众账号认账以及可接入公网的服务器,其中认证费用完全可
6
基于微信的辅助教学系统的设计与实现
以接受,而服务器使用SAE、阿里云等开放平台做维护成本也较低。
从系统的使用价值和推广上看,目前市场上成熟的辅助教学系统很多,但是本系统做为一种主要是面向课堂和实时交互的微信公众号,是一个有益的补充,用户需求比较大,作为一种面向班级或者课堂的推广与复用前景比较乐观。
从以上看,经过完成开发和进一步推广,系统可以获得很好的推广效果。
2.4 本章小结
本章大概地说明了系统需要实现的功能、系统开发运行对软硬件性能的要求,分析了系统实现的可行性。系统需实现签到,答题等功能,主要有教师、学生、系统功能与验证,自定义菜单等几块。硬件上不限移动终端的系统,只需要微信作为支持。从整个开发、技术、消耗支出及推广等方面肯定系统能够实现,并可以获得很好的效果。
7
基于微信的辅助教学系统的设计与实现
第3章 系统总体设计
3.1 系统的结构划分
该信微信公众号系统主要分为3个功能模块:教师使用功能模块、学生使用功能模块、验证与搭建及其他功能模块。
教师使用功能模块:基本的绑定,签到设置,作业发布,答疑出题。 学生使用功能模块:基本绑定,签到,提问,查看答题。
验证与搭建及其他功能模块:验证、菜单、关键词帮助、外链校历 3.1.1 系统结构图
微信辅助教学系统与三个子模块及关系如图3-1所示。
辅助教学系统教师功能模块学生功能模块系统验证及搭建模块
图3-1系统总体功能框架
基于微信的辅助教学教学系统的设计与实现。系统主要完成对教师和学生两个人群的服务,划分成两个功能模块两种用户一一对应。量系统中的功能有相互依存。另外,系统中的其他独立于两种身份之外的包括token验证、自定义菜单、关键词帮助独立为一个系统。
3.1.2 各个子系统的描述
1)教师功能模块
教师功能模块如图3-2所示。
8
基于微信的辅助教学系统的设计与实现
教师功能模块教师绑定签到设置题目管理解答交流作业发布
图3-2教师功能模块结构图
教师功能模块主要完成教师短课堂交互的功能,包括绑定验证、签到设置、互动交流等功能的实现。教师端主要完成一些设置性,统计性以及交互性的的工作。
2)学生功能模块
学生功能模块如图3-3所示。
学生功能模块学生绑定签到答题提问留言查看作业
图3-3学生功能模块结构图
9
基于微信的辅助教学系统的设计与实现
学生功能模块要为学生用户提供相应的服务,学生模块的功能大概与教师部分的功能相对应,以更好地完成课堂中两个参与者的相互交互。主要为学生根据老师的要求及设置完成操作服务,并提供自主留言与询问的接口。
3)验证与搭建及其他功能模块
验证与搭建及其他功能模块结构如图3-4所示。
系统其他功能token验证及微信接口验证外链校历自定义菜单关键词帮助
图3-4验证与搭建及其他功能模块结构
前两个模块是该系统功能实现的主体部分,完成了系统交互双方的功能实现,本模块主要完成一些基础性工作,为实现上述功能提供基础与接口验证。此外增加了一些附加的功能。
3.2 系统的主要数据成员
系统中主要涉及到学生、教师两个用户主体数据,以及作业、题目、签到信息等其他的数据结构。数据主要存储在mysql数据库中。
3.2.1 系统中主要数据成员的数据表结构
1) 教师表
教师表主要包括openid,technumber 两个核心心字段,openid 是用户在微信公众账号中的标识符,唯一对应一个用户,technumber作为教师工号
10
基于微信的辅助教学系统的设计与实现
与openid绑定,即可实现教师的绑定。另外两个为从微信端获取的信息,存储下来可用于拓展。如图3-5所示。
图3-5 table teacher
2) 学生表
学生表主要包括openid、stunumber、qiandao三个核心字段。Openid是微信用户在公众号的身份标识符,stunumber用于记录学生用户的 学号信息并进行绑定,qiandao记录学生的签到信息,1代表签到成功,0代表未签到。其他字段可用于其他拓展。如图3-6所示。
图3-6 table student
3) 题目表
题目表主要包括id、answer、answer_count,right_count四个字段。其中id记录题目编号,answer记录客观题答案,answe_count记录题目回答数,right_count 记录正确数。如图3-7所示。
图3-7 table question
11
基于微信的辅助教学系统的设计与实现
4) 签到表
签到表的核心字段包括mark和secret。本表只会有一条记录,每次设置只会更新内容。Mark字段为签到标志,限制学生能否进行签到。Secret为签到密码,由教师设置,学生签到时进行匹配。如图3-8所示。
图3-8 table qiandao
5) 作业表
作业表由id与work_content 两个字段组成。其中work_content 用于简单描述作业内容。如图3-9所示。
图3-9 table work
3.3 本章小结
本章主要讲述了系统的几个主要模块及其组成,以及格模块的主要功能结构。给出了几个主要的数据成员,并给出了几个主要的数据表。
12
基于微信的辅助教学系统的设计与实现
4 系统实现过程
4.1 公众号申请与基本配置
进行微信公众号的二次开发,首先要申请一个微信公众号,相关步骤相对简单。微信公众号分为订阅号和服务号,为获得全部的高级及接口权限,需要进行对服务号的认证。服务号认证的主体必须为企业或组织,并提供相关证明。公众号进入后主要如图4-1所示。
图 4-1 微信公众号
为满足一般开发者可以学习使用微信的高级接口并完成开发,微信公众号为开发者提拱了微信公众平台测试账号,我在进行开发时主要使用了微信开发者测试账号。微信公众平台测试账号提供了所有高级open API的功能,如客服接口、获取用户信息接口(部分接口有调用次数限制)。如图4-2及图4-3所示。
13
基于微信的辅助教学系统的设计与实现
图 4-2 测试账号(1)
图 4-3 测试账号(2)
14
基于微信的辅助教学系统的设计与实现
4.2 进行token验证
微信公众号在连接第三方开发者时,需要对接口及身份的有效性进行验证,即token验证。进行验证时,需要在微信公众平台对token值及验证链接进行接口配置,基本配置如图4-2所示,token值为weixin,验证链接为http://1.mywxfzjxxt.applinzi.com/index.php
.。
微信公众平台为token验证提供了接口,这部分在绪论中已做介绍,此部分提供实际代码。
define(\
if($wechatObj->valid()){//调用valid方法去验证,valid方法上文已经有介绍 echo $echoStr; exit;
}
}
//通过Wechat类,创建一个对象? $wechatObj = new Wechat(); //$p=1;
header('content-type:text'); include 'function.php'; include \
//如果没有通过GET收到echostr字符串, 说明不是再使用token验证 if (!isset($_GET['echostr'])) { echo 'aaa';
//调用wecat对象中的方法响应用户消息 $wechatObj->responseMsg(); //调用valid()方法,进行token验证 $echoStr = $_GET[\
}else{
此段代码用于token验证,只有通过验证,开发者才能对微信公众平台进行开发。微信在首次运行时,首先需要进行token验证,验证成功后,即获得开发者权限,并且对于同一个开发者或地址,不需要再一次进行验证
15
基于微信的辅助教学系统的设计与实现
4.3 菜单及基础性接口
在微信的二次开发中,需要定义及设计,一些接口,用于实现菜单、获取用户基本的信息等,为进一步开发实现功能。
4.3.1 获取access_token
为了获取信息及调用一些微信公众平台的接口,需要获取公众号的accesstoken进行验证,获取的接口https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret},需要用https的reguest进行请求。其中appid为:\,secret为\。具体代码如下:
void function get_token() {
$appid = \
$secret = \
$json
et}\请求接口
$arr = json_decode($json, true);
$access_token = $arr[\
return $access_token; }
=
https_request(\
4.3.2 获取用户信息
在对公众号进行二次开发时,信息中的openid是用户在公众号的身份标识,在需要对用户信息进行获取的时候,需要请求获取用户信息的接口,以获得用户的微信名称等信息。接口如下:https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$openid}&lang=zh_CN,该接口需要在http协议下用request方法进行请求。获取的信息为json格式,需要解析为数组以方便访问。具体的实现如下:
function getUserInfo($openid) {
$access_token=get_token(); //global $access_token; $url
16
=
//$result = https_request($url); $result = httpRequest($url);
$user = json_decode($result, true);
return $user; }
echo $result;
基于微信的辅助教学系统的设计与实现
\
函数首先获取用户的access_token ,,然后根据access_token及appid请求接口,获得 json数据后进行解析。
4.3.3 客服发送
基于关键词的回复往往是一种被动的和按照规则设定的,当我们需要对最近与公众号进行过交互的用户主动发送消息时,需要调用客服接口。用户向服务起发送信息,并不是另一个客户直接收到,而是转发给客服接口,由客服接口转发给相应的用户。客服接口为:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}。客服接口需要用https协议的post方法进行请求。具体实现如下:
function sendtext($openid,$text){
$access_token =get_token();
$url=\$textarr = array('touser'=>$openid,\$jsontext = my_json_encode($textarr,\$result =https_request($url, $jsontext); return $result; }
4.3.4 自定义菜单
自定义菜单是微信公众号为用户提供的一个功能,用户可以定义最多不超过3个一级菜单,一级菜单下可以含有不超过5个二级菜单。建立自定义菜单的接口为https://api.weixin.qq.com/cgi-bin/menu/create?access_token=\;需要用https的post方法请求。在定义二级菜单时,传输的数据必须为接送格式。具体实现如下:
include 'func.inc.php'; $arr = array(
'button' =>array( array(
'name'=>urlencode(\教师\
17
'sub_button'=>array( array(
'name'=>urlencode(\开始签到\ 'type'=>'click', 'key'=>'startqiandao' ), array(
'name'=>urlencode(\结束签到\ 'type'=>'click', 'key'=>'stopqiandao' ) ,
array(
'name'=>urlencode(\教师绑定\ 'type'=>'click',
'key'=>'teacherbangding' ) ,
array(
'name'=>urlencode(\作业与出题\ 'type'=>'click', 'key'=>'work' ) ,
array(
'name'=>urlencode(\在线答疑\ 'type'=>'click', 'key'=>'jieda' ) ,
基于微信的辅助教学系统的设计与实现
) ), array(
'name'=>urlencode(\学生\ 'sub_button'=>array( array(
'name'=>urlencode(\签到\ 'type'=>'click', 'key'=>'qiandao' ), array(
'name'=>urlencode(\在线答题\ 'type'=>'click', 'key'=>'dati' ) ,
18
array(
基于微信的辅助教学系统的设计与实现
'name'=>urlencode(\在线提问\ 'type'=>'click', 'key'=>'tiwen' ) ,
array(
'name'=>urlencode(\学生绑定\ 'type'=>'click',
'key'=>'studentbangding' ) ,
array(
'name'=>urlencode(\查看作业\ 'type'=>'click', 'key'=>'viewwork' ) ,
) ), array(
'name'=>urlencode(\我的\ 'sub_button'=>array( array(
'name'=>urlencode(\关键词帮助\ 'type'=>'view',
'url'=>'http://1.mywxfzjxxt.applinzi.com/html/keywordhelp.html' ), array(
'name'=>urlencode(\校历\ 'type'=>'view',
'url'=>'http://202.195.67.106/AppCalendar/Home/?nsukey=c1QQ9RxX0eDQY1QW+eCg2Umk7PPrLvC9MxEaCANTyqI2tvv/c/xa3MLhyKJJOHmO9QHJHmD8C+HSg+01P1ujSg==' ) ) ) ) );
$jsonmenu = my_json_encode($arr,'text');
//转换为json数据 echo $jsonmenu; // echo $jsonmenu;
19
// $jsonmenu = urldecode($jsonmenu);
$access_token = get_token();
$url = \//调用创建自定义菜单的接口 $result = https_request($url, $jsonmenu); echo $result;
基于微信的辅助教学系统的设计与实现
我在定义自定义菜单时,为了方便书写,首先将菜单写为了层次的数组格式,然后调用my_json_encode函数将数组转化为json格式,传送那个给服务器接口,完成自定义菜单创建。外层的数组定义了一级菜单,内层数组定义了二级菜单。菜单的种类包括链接及模拟关键词。定义type为view时菜单为链接,当定义菜单属性为click时,代表了菜单为模拟关键词,key定义了关键词的值。如:
array(
'name'=>urlencode(\查看作业\ 'type'=>'click', 'key'=>'viewwork' ) ,
定义了一个类型为模拟关键词,关键词为viewwork,显示的名称为查看作业的二级菜单。定义了教师、学生、我的,三个一级菜单,定义了其中的二级2菜单。如图4-4所示。
图 4-4自定义菜单
4.3.5 基本的框架和消息处理接口
微信公众账号的直接交互是通过消息的相应和处理来完成的。主要通过responseMsg(),receviveText(),receiveEvent(),等函数来实现对信息或事件的处理相应以及对点击菜单的相应。主要的实现如下:
public function responseMsg() {//echo \
//接收微新传过来的xml消息数据
$postStr = $GLOBALS[\TA\
//如果接收到了就处理并回复
20
if (!empty($postStr)){
//将接收到的XML字符串写入日志, 用R标记表示接收消息 $this->logger(\ //将接收的消息处理返回?
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//从消息对象中获取消息的类text image location voice vodeo link $RX_TYPE = trim($postObj->MsgType);
//消息类型分离, 通过RX_TYPE类型作为判断每个方法都需要将对象$postObj传入 switch ($RX_TYPE) {
case \消息为事件类型
$result = $this->receiveEvent($postObj); break;
基于微信的辅助教学系统的设计与实现
case \消息为文本类型
$result = $this->receiveText($postObj); //接收文本消息 break;
case \消息为链接类型
$result = $this->receiveLink($postObj); //接收链接消息 break; default:
$result = \ //未知的消息类型 break; }
//输出消息给微信 echo $result; }else {
//如果没有消息则输出空,并推出 echo \ exit; } }
//接收事件消息
private function receiveEvent($object) { //包含函数
//include \
//临时定义1个变量, 不同的事件发生给用户反馈不同的内容
21
$content = \ $p = 1;
//通过用户发过来的不同事件做处 switch ($object->Event) {
//用户添加关注 触发的事件,关注回复?
break;
//取消关注时触发的事件 case \
case \
//进行菜单处理
//处理菜单发过来的模拟关键词
switch ($object->EventKey) {
case \教师回复\开始签到+签到码\开始签到。示例:开始签到+aa'; break;
//签到菜单返回
case \ $openid = $object->FromUserName;
$content = $content = stopqd($openid);break; //停止签到菜单返回
case \教师回复“教师+工号+密码”绑定账号!示例:教 //教师绑定返回
case \教师回复\教师解答+学生学号+答案\进行解答。示例:教师解
22
break;
$content = \取消关注\ //取消关注时,调用函数
$openid = $object->FromUserName; deluser($openid);
$content = '欢迎关注微信辅助教学系统,请回复“绑定”绑定账号!'
;
case \
基于微信的辅助教学系统的设计与实现
师+123+111';break;
答+12268014+12333';break;
//教师解答返回
case \学生回复\学生签到+签到密码\开始签到。示例:学生签 //学生签到返回
case \$content = '学生回复\答题+题号+答案\开始签到。示例:答题 //学生答题返回
case \$content = '学生回复\提问+问题\开始提问。示例:提问+线程是什 //学生提问返回
case \学生回复“学号+学号”绑定账号!示例:学号 //学生回复返回
case \$content = '学生回复\提问+问题\开始提问。示例:提问+线程是什
//学生查看作业
case \='请回复“布置作业+作业内容”布置作业,示例:布置作业+请回复”出题+题号+客观题答案“进行出题,示例:出题+1+A'; //教师出题及作业返回
基于微信的辅助教学系统的设计与实现
到+aa';break;
+100';break;
么?';break;
+12268014';break;
么?';break;
case \
完成一篇论文;
} break;
case \
//处理链接
$content = \跳转链接 \ break;
case \
$content = \链接消息msgID:\,发送结果:\,成功发送:\,发送失败:\
break; default:
$content = \接收到一个事件: \ break; }
//事件消息的处理 if(is_array($content)){
if (isset($content[0])){//存在content[0]
$result = $this->transmitNews($object, $content);
23
}else{
$result = $this->transmitText($object, $content);//发送文本消息
基于微信的辅助教学系统的设计与实现
}
return $result; }
//接收文本消息
private function receiveText($object) {
//从接收到的消息中获取用户输入的文本内容, 作为查询的关键字, $keyword = trim($object->Content);
//
//自动回复模式 //进行学生绑定的接口 if (strstr($keyword, \学号+\
{
// $openid = $object->FromUserName; $openid = $object->FromUserName;
$bd=adduser($openid,$keyword);
//$bd = bangding($openid,$keyword); // $bd =1; if ($bd === '1')
{
$content = \绑定或修改成功!\ } else {
$content = \绑定失败或学号已被绑定!\
}
} //绑定关键词
else if(strstr($keyword, \绑定\ {
$this->logger(\
24
使用trim()函数去两边的空格
}
//签到关键词
else if(strstr($keyword, \签到\ {
$to = $object->FromUserName;
$content='学生回复\学生签到+签到密码\进行签到。示例:学生签到+aa; 教师回复\开始签到+签到码\开始签到。示例:开始签到+aa; }
25
教师回复\结束签到\结束签到并获取签到信息。';
}
//教师结束签到,获取签到的结果信息的接口 else if(strstr($keyword, \结束签到\
$openid = $object->FromUserName; $content = stopqd($openid); }
//学生进行签到接口
else if(strstr($keyword, \学生签到+\ {
$openid = $object->FromUserName; $content = studentqd($openid,$keyword);
基于微信的辅助教学系统的设计与实现
$content = '学生请回复学号+学号”绑定账号!示例:学号+12268014 教师请回复“教师+工号+密码”绑定账号!示例:教师+123+111'; }
//教师进行绑定的接口
else if(strstr($keyword, \教师+\ {
$openid = $object->FromUserName; $bd = tecbangding($openid,$keyword);
$content = $bd; }
//教师开始并设置签到的接口 else if(strstr($keyword, \开始签到+\ {
$openid = $object->FromUserName; $content = startqd($openid,$keyword);
}
//教师进行解答或回复留言的接口 else if(strstr($keyword, \教师解答+\ {
$openid = $object->FromUserName; $content= teacheranswer( $openid ,$keyword); }
//教师进行布置作业或者作业的更新的借口 else if(strstr($keyword, \布置作业+\ {
$openid = $object->FromUserName; $content= addwork( $openid ,$keyword); }
//布置作业关键词接口
else if(strstr($keyword, \布置作业\ {
$content= '请回复“布置作业+作业内容”布置作业,示例:布置作业+完成一篇论文';
26
}
//学生进行提问或留言的接口 else if(strstr($keyword, \提问+\ {
$openid = $object->FromUserName;
$to = getteacher();
$content = studentask($to,$openid,$keyword);
//$content = getteacher() ;
//学生进行答题的接口
else if(strstr($keyword, \答题+\ {
$openid = $object->FromUserName;
$to = getteacher();
$content = answerquestion($to,$openid,$keyword);
//$content = getteacher() ;
基于微信的辅助教学系统的设计与实现
}
//出提关键词
else if(strstr($keyword, \出题\ {
$content= '请回复”出题+题号+客观题答案“进行出题,示例:出题+1+A'; }
//获取答题情况的接口
else if(strstr($keyword, \答题情况+\ {
$openid = $object->FromUserName;
$content= questioncondition( $openid ,$keyword); }
else if(strstr($keyword, \答题情况\ {
$content= '请回复”答题情况+题号“进行出题,示例:答题情况+1'; }
27
}
//查看作业的关键词接口 else if(strstr($keyword, \作业\ {
$content= viewwork( ); }
//教师进行出题的接口
else if(strstr($keyword, \出题+\ {
$openid = $object->FromUserName; $content= addquestion( $openid ,$keyword);
基于微信的辅助教学系统的设计与实现
else{
$to = $object->FromUserName;
基于微信的辅助教学系统的设计与实现
$content = \未定义关键词!\ }
if(is_array($content)){//调用处理信息回复
$result = $this->transmitText($object, $content);//回复文本形式的消息 }else{
}
return $result; }
//接收链接消息
private function receiveLink($object) {
$content = \下面是此链接的标题:\;链接中的内容是\;你发送的链接的地址是:\
$result = $this->transmitText($object, $content);//以文本形式回复 return $result; }
//回复文本消息
private function transmitText($object, $content) {
$xmlTpl = \
$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), $content);//打印回复消息
return $result; }
$result = $this->transmitText($object, $content);//回复文本形式的消息
28
基于微信的辅助教学系统的设计与实现
4.3.6 关键词帮助
定义了一个网页实现了关键词查询帮助:
31
-moz-border-radius-bottomright:5px;
-webkit-border-bottom-right-radius:5px; /* Saf3-4 */ -moz-border-radius-bottomleft:5px;
-webkit-border-bottom-left-radius:5px; /* Saf3-4 */ -moz-border-radius-topright:5px;
-webkit-border-top-right-radius:5px; /* Saf3-4 */ -moz-border-radius-topleft:5px;
-webkit-border-top-left-radius:5px; /* Saf3-4 */
background: -moz-linear-gradient(100% 20% 90deg, #e8eaeb, #ededed);
background: -webkit-gradient(linear, 0% 0%, 0% 20%, from(#ededed), to(#e8eaeb)); background: -moz-linear-gradient(100% 25% 90deg, #f6f6f6, #f1f1f1);
background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f1f1f1), to(#f6f6f6));
基于微信的辅助教学系统的设计与实现
background: -moz-linear-gradient(100% 25% 90deg, #fefefe, #f9f9f9);//设置大小及值
background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f9f9f9), to(#fefefe));//设置大小及值
正在阅读:
秋天的颜色07-17
新人教版七年级数学上册 - 第四章 - 几何图形初步单元测试题07-09
大型冶金成套设备项目可行性研究报告(发改立项备案+2013年最新案06-02
我发现乌龟生病了作文200字07-08
我战胜了自己的胆小作文450字07-05
学校秋季运动会闭幕词11-21
6中国古代家具图片-清朝上12-24
平行四边形的面积--优质课教学设计01-22
民事诉讼法(2009.7新)04-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 辅助
- 基于
- 实现
- 图文
- 教学
- 设计
- 系统
- 机电传动与控制
- “十三五”重点项目-沸石滤料项目可行性研究报告
- 华理 劳动就业法律问题题库
- 郭锡良古代汉语
- 2010年中考试题汇编之记叙文阅读(1)
- 口译教学大纲
- 行政执法考试题库
- 高考专项指导:成语、熟语
- 九年级语文语用题练习
- 矿山救护队
- 2019年河南省开封市高三第一次模拟考试数学(文)试题及答案 -
- 台州市椒江区人民政府文件
- 关于开展抵御和防范宗教向校园渗透主题教育活动实施方案
- FDA人用药品和生物制品包装用容器密封系统指导原则
- K3+Cloud实施初始化 - 安装部署实施篇
- 基于单片机的自动寻位立体车库系统
- 某房地产公司可持续增长条件下财务杠杆应用
- 新欣公司创优质工程实施方案111
- 最新人教版高一英语必修一单元测试题全套带答案
- 2018年高三英语一轮总复习专题25Music(词汇短语)