<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[buaa_sheng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/buaa_sheng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; buaa_sheng]]></copyright><item><title><![CDATA[QT C++开发扫雷游戏]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/144337144</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/144337144</guid><author>buaa_sheng</author><pubDate>Mon, 09 Dec 2024 10:58:57 +0800</pubDate><description><![CDATA[扫雷游戏并不复杂，主要工作在初始化（随机生成雷的位置并计算每个位置周边雷的数量）、打开一片区域、判断胜利和记录存储读取。]]></description><category></category></item><item><title><![CDATA[3.3 后台开发侧记（php+smarty,jQuery,layer）]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/130180605</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/130180605</guid><author>buaa_sheng</author><pubDate>Sun, 16 Apr 2023 12:11:40 +0800</pubDate><description><![CDATA[在本章的开发过程中，我们建立了一个简单的后台系统，一个是希望对人员进行管理（主要完成人员身份的设置）。在前端，不同身份（教师还是学生）可以操作的界面是不同的，教师可以领取教学任务，而学生能够选择已有教师领取任务的课程。我们还对课程进行管理维护，目的是统计可以开课的课程信息。如果有教师领取了该课程的教学任务，同时有学生选择了这门课程，该课程还尚未开课，此时可以对课程进行开课。后台点击开课按钮时，即触发上节提到的轮询向选择了该门课程的同学发送开课模板信息。]]></description><category></category></item><item><title><![CDATA[3.2 模板消息的推送]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176454</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176454</guid><author>buaa_sheng</author><pubDate>Sat, 15 Apr 2023 22:35:24 +0800</pubDate><description><![CDATA[上述说明中，我们需要注意的是：我们必须通过POST方式向微信服务器所提供的网址提交模板消息对应关键字的内容，因此，我们需要通过后台PHP方式开展这个过程；在消息体部分，我们要提供模板消息发送的对象的openid，即“touser”所要求的内容，这就需要我们在数据库中获取全部选择该课程的学员的信息，然后逐一推送；我们可以看到，在详情页面中，有该消息模板的示例和详细内容，详细内容部分正是我们下一步编写程序需要用到的。在下面列出的消息模板中，找到“课程状态变更”消息模板，这正是我们所需要的消息模板格式。]]></description><category></category></item><item><title><![CDATA[3.1 业务流程设计]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176416</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176416</guid><author>buaa_sheng</author><pubDate>Sat, 15 Apr 2023 22:24:31 +0800</pubDate><description><![CDATA[首先我们要增加一个功能，对整个模板消息推送过程进行触发，这里，我们假定领取该课程的教师可以设定课程的开课时间。当然，为了方便教师更好的决定是否开课和设定开课时间，我们需要统计选择该课程的学生人数并向任课教师进行显示。任课教师一旦设置了开课时间，系统后台将从数据库中读取选取该课程的学员的信息（主要是openid），并通过微信服务号的模板消息接口，向所有选取该课程的学员推送模板消息。任课教师也可以根据选课人数，决定取消该课程，系统也会通过上述方式，将课程取消的消息通知学员，并对数据库中选课表的信息进行更新。]]></description><category></category></item><item><title><![CDATA[第三章 跟你互动——微信模板消息推送]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176386</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/130176386</guid><author>buaa_sheng</author><pubDate>Sat, 15 Apr 2023 22:21:30 +0800</pubDate><description><![CDATA[当我们推出新的课程，有新的教师，新的活动等，我们应该使用服务号的图文消息向全体关注服务号的客户推送，因为图文消息篇幅较长、形式丰富，更适合这样推广面大的场景；而当我们向特定的人员（单独的学生或者教师）推送针对他的消息（他选的课要开课了，或者被取消了，他要参加的考试时间定了等），适合采用模板消息，因为模板消息内容简单、针对性强，更适合这样有针对性的消息推送场景。以前，我们可能是通过手机短信的方式来完成主动通知客户的过程，甚至更早的时候，客户需要自己查看订单当前的状态，平台没有一种低成本的主动通知方式。]]></description><category></category></item><item><title><![CDATA[2.4 前端界面实现（VUE）]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/116176826</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/116176826</guid><author>buaa_sheng</author><pubDate>Mon, 26 Apr 2021 23:36:38 +0800</pubDate><description><![CDATA[这里，对我们的选课系统进行一次升级。我们将系统底部调整为导航形式，分为“首页”、“课程”、“我”三个导航。“首页”主要介绍系统中的特色课程、教师风采等，“课程”中主要用来进行学生选课或教师领取教学任务，“我”完成获取用户信息、与课程教学相关的课程学习（将来直播、录播教学时进行扩展）、课程考试、身份切换等操作。

本章系统演示，请微信扫描下面二维码进行访问：





主要界面设计如下：





本小节，我们对该系统的界面设计的主要部分再做以下简单介绍。

说明：本文中所使用的部分图片来自互联网，仅用于..]]></description><category></category></item><item><title><![CDATA[2.3 业务实现（微信获取用户信息详解）]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100627</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100627</guid><author>buaa_sheng</author><pubDate>Sat, 24 Apr 2021 19:35:19 +0800</pubDate><description><![CDATA[在业务实现部分，我们主要介绍微信服务号获取用户信息授权机制以及如何通过该机制进行编程实现用户信息获取。

在微信服务号开发中，常常需要对用户的信息进行获取，以便程序能够识别用户的标识，并有针对性的与用户进行互动。微信服务号中，使用微信开放授权接口进行调用开发，根据微信网页开发文档（访问地址：https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html），我们知道，要实现微信网页授权]]></description><category></category></item><item><title><![CDATA[2.1 注册和登录流程设计+2.2 数据库设计]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100408</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100408</guid><author>buaa_sheng</author><pubDate>Sat, 24 Apr 2021 18:56:30 +0800</pubDate><description><![CDATA[2.1 注册和登录流程设计

总体流程为：程序启动时，查找本地是否存在用户信息缓存，通过缓存获得用户唯一标识，调用接口查询数据库中是否有相应的用户信息，如果有，则将信息读取过来，利用前端进行显示。

如果数据库没有相应的信息，询问用户是否注册，用户同意注册时，打开注册界面完成注册；

如果缓存中没有本地用户信息，调用微信服务号用户信息获取接口，获取用于信息，之后调用接口查询数据库。

该流程可以通过下图描述





上图中，蓝色线为业务流程，红色线为缓存数据流程。

2.2 数据库设计

这里，我们要对.]]></description><category></category></item><item><title><![CDATA[第二章 谁在使用？——微信服务号获取用户信息]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100328</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/116100328</guid><author>buaa_sheng</author><pubDate>Sat, 24 Apr 2021 18:51:06 +0800</pubDate><description><![CDATA[很多场景下，我们需要知道谁在使用我们的服务。了解的程度有多有少，可以是简单记录一下用户的昵称和唯一标识，也可能需要实名制的信息。我们需要记录下用户的登录信息，甚至是用户的使用服务信息，通过数据分析，得出有益结论以便更好的为用户服务。

今年（2021年）3月4部门联合出台的《常见类型移动互联网应用程序必要个人信息范围规定》还明确了收集个人信息的范围，可以说，过度收集个人信息确实让用户深恶痛绝，我们也支持按规定合理收集个人信息，用户信息收集的目的仅用来保证服务或交易的正常运行就够了，希望看到本文的读者，也能遵]]></description><category></category></item><item><title><![CDATA[1.7 调试]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115609169</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115609169</guid><author>buaa_sheng</author><pubDate>Sun, 11 Apr 2021 23:20:20 +0800</pubDate><description><![CDATA[在代码实现的过程中，我们会遇到这样那样的错误，这无疑是不可避免的。有的时候，错误是人为疏忽造成，比如输入代码时，漏录了一个字母或一个符号；有的时候，错误是逻辑上的，即程序编译和执行都没有问题，但是输出的结果与程序设计人员的预期背道而驰。在作者成书的过程中，由于疏忽和时间原因，都有可能打错字，何况在动辄成千上万行的代码编写过程中呢？

那么，有没有什么途径能够让程序设计者和开发者能够定位出错的地方，找到出错的原因，从而及时更正错误呢？答案是肯定的，那就是通过调试程序。

这是一个系统的工程，事实上，有些时候，]]></description><category></category></item><item><title><![CDATA[1.6 前端设计——HTML5+Javascript+CSS基础]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115386523</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115386523</guid><author>buaa_sheng</author><pubDate>Thu, 01 Apr 2021 22:52:07 +0800</pubDate><description><![CDATA[前端设计时，为了兼容微信内置浏览器，我们采用H5页面的方式进行设计，设计界面时，我们必须充分考虑当前界面是要适配手机操作的。

结合前面的介绍，本章结束时，我们能够完成一个简单的小项目（程序）——选课系统，这个项目是可以运行在微信浏览器中的，我们将该项目的演示界面和网址放到下面，读者可以通过微信扫一扫进行访问：





扫描上述二维码后，可以看到下面的界面





读者可以选择一个角色进行模拟操作，例如点选“我是学生”，则出现下面选择你要扮演的学生



点击你要扮演的学生图标，则可以看到学生可以...]]></description><category></category></item><item><title><![CDATA[【1.5 php基础】1.5.4 接口]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115359120</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115359120</guid><author>buaa_sheng</author><pubDate>Wed, 31 Mar 2021 19:59:08 +0800</pubDate><description><![CDATA[我们设计一个业务系统时，往往希望前端的用户界面和后端的业务逻辑之间不要有太大的关联（松散耦合），即，修改前端页面时，不必考虑后端业务逻辑是如何实现的，同样的，升级后端业务逻辑时，也无需考虑前端界面是否会收到影响。因此，很多时候我们需要在前端和后端之间，通过一种方式来进行通信（或信息交换），而不是把业务逻辑代码直接写入前端界面实现中。

（事实上，读者可以将前端html页面代码和php代码写到一起，将文件后缀命名为.php，这样通过本文前面配置的环境是可以运行的，但这样的设计，对于后期代码的维护，无疑是不利的]]></description><category></category></item><item><title><![CDATA[【1.5 php基础】1.5.3 后台业务逻辑]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115357231</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115357231</guid><author>buaa_sheng</author><pubDate>Wed, 31 Mar 2021 18:36:34 +0800</pubDate><description><![CDATA[后台操作的业务主要包括：对课程信息的维护（增加、删除、修改和查询）、对教师信息的维护和对学生信息的维护。

由于上述操作大部分都是类似的，我们只介绍对课程信息的维护，其余的部分请读者自行参考本节的源代码。

这里，为本节的业务先定义一个类（backAction），这个类与上一节的业务逻辑处理类相似，也要继承数据库处理类，类图如下所示





（1）增加课程

这个操作比较简单，我们只需根据课程需要的参数，直接通过SQL语句进行插入数据即可。


function addCourse($c_name,$c.]]></description><category></category></item><item><title><![CDATA[【1.5 php基础】-1.5.2 前端业务逻辑]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115305782</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115305782</guid><author>buaa_sheng</author><pubDate>Mon, 29 Mar 2021 17:08:32 +0800</pubDate><description><![CDATA[根据前面的分析，前端业务逻辑主要实现以下内容：

一是实现教师领取教学任务的操作，即教师能够根据开设课程，自行领取教学课程；二是实现学生选课的操作，学生选课时，系统应能将可供选择的课程（系统中已有的、教师已经领取教学任务的课程）列出，学生从中选取感兴趣的课程；三是支持学生取消选课；四是支持教师取消教学任务（取消时，应注意应同时取消学生选课信息）。

与上小节类似，我们通过一个类来实现前端业务逻辑，并通过php服务提供操作接口，供前端界面调用。

（1）教师领取教学任务。

若实现该操作，首先应提供未分配教学]]></description><category></category></item><item><title><![CDATA[1.5 PHP基础-1.5.1访问数据库]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115283204</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115283204</guid><author>buaa_sheng</author><pubDate>Sun, 28 Mar 2021 16:54:06 +0800</pubDate><description><![CDATA[PHP作为流行的网站开发语言，具有上手简单，运行速度快的特点，它和javascript类似，都是对变量类型进行实时隐式转换的，免去了使用者要定义变量类型和显式转换的烦恼，当然了，这就要求我们要对变量类型时刻进行关注分析。总之，PHP语言使用方便，也是本文所使用的主要语言之一。

在这里，我们仍然延续上一章的案例，并使用PHP对主要业务逻辑进行实现。

第一，我们需要一种高效、便捷、通用的数据库访问方式，能够使PHP和MySQL进行协同；

第二，要分析和实现基本的教学、选课操作，为前台展示提供必要的业务接口]]></description><category></category></item><item><title><![CDATA[1.4 数据库和常用SQL语句]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115264052</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115264052</guid><author>buaa_sheng</author><pubDate>Sat, 27 Mar 2021 14:14:20 +0800</pubDate><description><![CDATA[前面我们介绍了MySQL数据库的安装，本节主要介绍数据库的使用。

我们首先要知道什么是数据库。


数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。MySQL是一款“管理”数据库的软件。


我们通常使用的数据库是关系型数据库，因此，一个数据库中，有若干的“表”，每个“表”代表一个实体或实体与实体之间的关系。

如，在一个简单的教学系统中，我们可以总结实体有“教师”、“学生”、“课程”3个实体。而“教师”与“课程”之间有关系“]]></description><category></category></item><item><title><![CDATA[1.3.3 MySQL及其配置]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115263836</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115263836</guid><author>buaa_sheng</author><pubDate>Sat, 27 Mar 2021 13:52:56 +0800</pubDate><description><![CDATA[MySQL数据库（下载地址：https://dev.mysql.com/downloads/mysql/），是一款优秀的数据库软件，请下载windows(x86,32&amp;64-bit),ZIP Archive即可，下载后得到一个zip压缩文件。





将下载到的mysql-8.0.23-winx64.zip文件解压至服务器中C盘下的mysql-8.0.23文件夹下，并将“C:\mysql-8.0.23\bin”路径加入环境变量，以便能够在windows环境下任意目录执行mysql的可执行程序。..]]></description><category></category></item><item><title><![CDATA[1.3.2 PHP的配置]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115263669</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115263669</guid><author>buaa_sheng</author><pubDate>Sat, 27 Mar 2021 13:29:47 +0800</pubDate><description><![CDATA[PHP的配置相对于apache服务器的配置简单一些，首先下载PHP，我们下载php7.4(VC15)（下载地址：https://windows.php.net/download#php-7.4）。





注意：请下载线程安全的PHP版本，非线程安全的版本应在IIS下使用，而本文使用的apache服务器。





下载文件为zip压缩文件，将该文件放在服务器C盘根目录下，并解压到php7下（即将压缩文件下的全部文件和文件夹解压到C:\php7文件下），形成php7文件夹，如下图所示。





在...]]></description><category></category></item><item><title><![CDATA[1.3.1 apache的配置]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115216248</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115216248</guid><author>buaa_sheng</author><pubDate>Thu, 25 Mar 2021 19:47:42 +0800</pubDate><description><![CDATA[Apache是比较常用的web服务器软件，用来解析HTTP网页。这里需注意，apache本身并不能解析php页面，它是用来配置解析http页面的。当然，作为一款最流行的web服务器软件，apache支持SSL协议，支持虚拟主机等，这些功能我们稍后介绍。

Apache的官方下载地址为：http://httpd.apache.org/download.cgi，目前最新版本为2.4.46（Release 2020-08-07）。但该网站仅提供apache源码下载，不提供编译后的软件下载，我们选择Apache H]]></description><category></category></item><item><title><![CDATA[1.3 PHP+MYSQL+APACHE配置（序）]]></title><link>https://blog.youkuaiyun.com/buaa_sheng/article/details/115216210</link><guid>https://blog.youkuaiyun.com/buaa_sheng/article/details/115216210</guid><author>buaa_sheng</author><pubDate>Thu, 25 Mar 2021 19:13:22 +0800</pubDate><description><![CDATA[本节对服务器端web服务进行配置。事实上，对于配置这个环境（WAMP）网上还是有很多教程的，大家可以通过网上的教程完成配置，也不必拘泥于本文。甚至网上有免费的服务器端软件可以选择，比如著名的phpstudy可以下载（下载地址：https://www.xp.cn/）或者宝塔（下载地址：https://www.bt.cn/download/windows.html），读者可在图形界面中进行配置。本文主要是通过分别配置php、mysql、apache三个环境进行逐个配置，大概描述一下各自作用及配置文件，以便后期出]]></description><category></category></item></channel></rss>