目录
1 引言 2
1.1项目研究背景 4
1.2 项目研究内容 6
1.3 项目研究意义 7
2 技术选型与开发环境 9
2.1 技术选型 9
2.1.1Node.js介绍 9
2.1.2 异步编程介绍 10
2.1.3 阻塞和非阻塞介绍 11
2.1.4 MySQL数据库介绍 12
2.1.5 Nginx服务器介绍 14
2.1.6StrongLoop进程管理器介绍 14
2.1.7微信公众号平台介绍 14
3 需求分析 16
3.1 技术需求 16
3.2 功能需求 18
3.3 系统操作流程 18
3.3.1 关注微信图书借阅平台 18
3.3.2 功能菜单 18
3.3.3 扫码 19
3.3.4 确认操作 19
4.系统设计 20
4.1概要设计 20
4.2详细设计 21
4.2.1 微信公众号设置 21
4.2.2 获取图书信息 21
4.2.3 存储图书信息 22
4.2.4 展示图书信息 23
5数据库设计 25
5.1概念结构设计 25
5.2物理结构设计 25
6.图书借阅平台的实现 28
6.1配置 28
6.2主界面 28
6.2添加图书 29
6.3借阅图书 30
6.4归还图书 31
6.5浏览图书 32
参考文献 34
4.系统设计
概要设计是建立在需求分析的基础上的,概要设计的主要任务是,通过仔细分析软件规格说明,适当的对软件功能进行分解,从而把软件划分为模块,并设计出能完成预订功能的模块结构。
4.1概要设计
概要设计是软件设计具体实施阶段的第一个环节,通过给出核心功能点和设计要素的概括性描述,指导设计开发的方向。在这个阶段的主要任务一方面是概括地描述出整个软件的整体设计。另一方面是将工程概括的拆分出主要的核心模块描述各个模块大致的实现方案。
a)整体设计
1)微信公众号自定义菜单
微信公众号是用户使用该图书分享平台的入口,公众号底部的自定义菜单是引导用户进行功能操作的入口,需要设置简洁直观的入口让用户快速了解菜单对应的功能。
2)前端交互
图书分享和借阅应该是一个非常便捷的操作,不应当涉及过多的交互步骤,使得各个功能一触即达。
3)Node.js中间层
中间层的职责是前端与后端的桥梁,负责从后端获取数据并渲染出页面或进一步处理数据后传递给前端。
b)模块设计
1)借阅图书模块
图书借阅模块实现了图书的借阅操作,读者从书架上拿到图书,通过扫描图书背面的条形码确认借阅完成借书操作,取走图书。
2)归还图书模块
图书归还模块实现了图书的归还操作,当读者阅读完毕后,扫描图书条形码后确认图书归还,然后将图书归回原位。
3)添加图书模块
图书添加模块实现了图书的入库操作,读者拿出自己的图书,扫描图书条形码后确认图书归还,然后将图书放入书架。
4)浏览图书模块
浏览图书模块实现了浏览图书信息的功能,用户可以远程查看书架上的书籍信息,包括书籍名等基本信息、书籍数量、书籍可借阅数量。
4.2详细设计
用户进入微信后,关注公号进入公号界面,通过公众号主页底部的自定义菜单进入相关操作界面。点击“借阅图书”自动弹出二维码让用户扫描书籍自动借阅。点击“归还图书”自动弹出二维码让用户扫面书籍自动归还,点击“添加图书”自动弹出二维码让用户扫描书籍完成添加,点击“浏览图书”跳转到设定的网页浏览当前书库的所有书目。
4.2.1 微信公众号设置
申请个人公众订阅号和商业公众企业号的用户,首先需要首先到微信官网注册账号,个人公众订阅号用户需要提供证件申请实名认证,商业公众企业号用户需要提供商业资质证明。等待申请结果成功后,用户们便可以通过微信搜索功能搜索公众号名字,查看详情后关注该微信公众号。
在微信后台配置微信与自己的服务器之间的连接,从而打通从用户到微信服务器再到个人服务器之间的消息传递,并将处理后的结果回传给微信服务器,最终转发到用户的微信客户端上。
微信图书借阅平台通过企业公众号底部的自定义菜单栏,分别引导用户至不同的功能,与用户完成交互。菜单栏分为一级菜单和二级菜单,本平台使用借阅图书、归还图书、管理图书三个一级菜单,管理图书下有添加图书、浏览图书两个二级菜单。
4.2.2 获取图书信息
实现一个图书数据库的工作量非常庞大,设计到市面上所有已有图书的信息采集入库操作。为了便利地获取图书信息,采用豆瓣开放的公共图书API接口实现图书信息查询功能。用户首先打开微信进入公众号界面,通过公众号底部菜单中的“添加图书”菜单,点击后自动转至图书条形码扫描界面,用户扫描图书背面的条形码后,微信将识别出条形码中包含的ISBN号并回传给前端程序。本文转载自http://www.biyezuopin.vip/onews.asp?id=14549前端程序根据将ISBN回传给Node.js中间层服务器,Node.js向豆瓣开放API服务器发送RESTful请求,附带着图书的ISBN信息,取得图书信息(图书名、图书封面图片链接、图书内容摘要、作者、出版社等)。
4.2.3 存储图书信息
所有图书的信息都通过自豆瓣的开放API接口服务获得,每当采集到一本图书的信息,便会执行一次图书信息的存储任务,将图书信息存入服务器本地数据库中。这样做的原因是,一方面便于再次获取图书信息时,可以快速查询图书结果。另一方面将初次获取后的信息按照关系存入本地数据库有利于信息的统计和变更。
在取得图书信息后,用户点击确认按钮,图书的书名、ISBN号、作者、出版社、封面、摘要等信息会存储到数据库中,并附加与借阅相关的图书信息,比如图书库存量,借阅次数,当前借阅者的信息等等。
4.2.4 展示图书信息
Node.js中间层在取得图书信息后,根据预先定义的Jade模板渲染出图书界面的HTML内容。微信用户内置的Webview控件在收到HTML内容后,渲染内容,加载图书封面等静态资源,经过CSS样式表处理后渲染出图书展示界面。图书信息的展示工作完全由Node.js中间层负责,当用户在图书页面之间跳转时,均直接请求Node.js中间层服务器,交由Node.js选择指定的Jade模板渲染内容。

const express = require('express')
const fetch = require('isomorphic-fetch')
const json = require('../lib/json')
const weutils = require('../lib/weutils')
const router = express.Router()// echo 测试服务
router.get('/echo', (req, res) => {res.send({query: req.query,params: req.params,body: req.body})
})// 进行微信 auth 认证
// 参考微信示例代码:
// @url http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
router.get('/auth', (req, res) => {const { code, state } = req.queryif(!code) {return res.send('user not accepted!')}res.send({ code, state })
})router.get('/signature', (req, res) => {const { signature, timestamp, nonce, echostr } = req.queryweutils.checkSignature(signature, timestamp, nonce).then(data => res.send(echostr)).catch(err => res.send('signature invalid'))
})// 微信 JS-SDK 使用权限签名算法
// 参考微信示例(附录一):
// @url http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html
router.get('/config', (req, res) => {const { url } = req.queryweutils.generateConfig(url).then(data => res.send(data)).catch(err => res.send({status: 500,msg: err.toString()}))
})// 豆瓣图书代理
router.get('/book/:isbn', (req, res) => {const { isbn } = req.paramsfetch(`https://api.douban.com/v2/book/isbn/${isbn}`).then(res => res.json()).then(book => {console.log('获取书籍', book)book.title = book.title || `Book not found (${isbn})`res.send(book)})
})module.exports = router


















基于微信公众号的图书借阅管理系统设计与实现相关推荐

  1. Java开源项目—通用CRM管理系统(微信小程序+微信公众号+H5网页+PC管理后台)

    前言 CRM(客户关系管理)管理系统是一种用于管理客户关系的软件系统,通过收集.组织和分析客户关系数据,帮助企业更好地了解客户,提高客户满意度,提升客户服务水平,建立长期客户关系,提升企业的销售和服务 ...

  2. 微信公众号上云 后台管理更轻松

    微信公众号上云 后台管理更轻松 作为时下热门的通讯工具和社交平台,微信已成为我们使用率最高的App之一.适应碎片化学习.娱乐的需要,大家会关注一些自己喜欢的企业微信公众号,看资讯.学技能.观美图,并在 ...

  3. java识别农作物病虫害源码,一种基于微信公众号的农作物虫害识别方法及其系统与流程...

    本发明涉及农业技术领域,具体涉及一种基于微信公众号的农作物虫害识别方法及其系统. 背景技术: 针对目前我国农作物害虫诊断大多停留在人工阶段,存在着客观性差.效率低.劳动强度大等问题,以及现有的基于图像 ...

  4. Java毕业设计_基于微信公众号的驾校练车预约系统

    基于微信公众号的驾校练车预约系统 基于微信公众号的驾校练车预约系统mysql数据库创建语句 基于微信公众号的驾校练车预约系统oracle数据库创建语句 基于微信公众号的驾校练车预约系统sqlserve ...

  5. 基于微信小程序实现警务活动管理系统设计演示【附项目源码+论文说明】分享

    基于微信小程序实现警务活动管理系统设计演示 摘要 随着我国经济迅速发展,人们对网络管理的需求越来越大,各种系统也越来越多,由于微信的发展,微信的功能越来越齐全,越来越多的人开始使用微信.因此,特开发了 ...

  6. java-net-php-python-java图书借阅管理系统设计演示视频计算机毕业设计程序

    java-net-php-python-java图书借阅管理系统设计演示视频计算机毕业设计程序 java-net-php-python-java图书借阅管理系统设计演示视频计算机毕业设计程序 本源码技 ...

  7. 基于微信小程序的二手车交易管理系统设计与实现

    基于微信小程序的二手车交易管理系统设计与实现 源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 随着科学技术和信息通讯的飞速发展,互联网的丰富内容改变 ...

  8. 【微信开发】基于微信公众号的早起签到程序

    说明:本文讲述基于公众号实现的签到程序的全部开发过程.开发环境:PHP+MySQL. 源码下载地址:敬请期待 关注微信公众号[知行校园汇]可免费下载全部源码. >>点击查看WUTer计算机 ...

  9. 基于微信公众号的答题投票系统——项目开发心得体会记录

    项目背景 项目需求 后台管理功能 用户功能 页面展示 项目信息 开发语言 数据库 项目构想 获取幸运用户 用户答题 项目反思 项目进度的安排 团队合作沟通方面 项目的构建 技术 本地开发和上线的模式区 ...

  10. 微信公众号最新留言评论管理功能怎么开通获取?(内附留言功能开通视频链接)

    腾讯针对公众号留言这一功能经过多次调整,下面为大家详细讲讲其规则,最开始的时候只要长期坚持发原创文章,等拿到腾讯的原创保护邀请后,就可以拥有留言这个功能了,邀请如下图所示: 接下来大概是2017年年底 ...

最新文章

  1. 一问就想不起来的问题,来看看?
  2. C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
  3. 基础数据仓库环境搭建(一)数据仓库概述
  4. 详解:面向对象与面向过程的比较 类之间的关系:泛化、实现、依赖、关联、聚合、组合
  5. SAP Spartacus的pagination$ -默认的分页设置10
  6. JavaFX实际应用程序:AISO HRC-Matic
  7. 从我开发过的Tensorflow、飞桨、无量框架看深度学习这几年
  8. 文档根元素 mapper 必须匹配 DOCTYPE 根 configuration
  9. Qt保存日志调试信息输出文件
  10. 读《Java编程思想第五版》心得体会
  11. 核酸检测小程序实战教程
  12. android模拟器电视,AndroidTV 模拟器的搭建
  13. python-docx处理word文件指定页面批量打印
  14. 【Android】自定义控件实现自动补齐邮箱后缀的输入框
  15. 移动硬盘无法读取是怎么回事?
  16. Java 泛型 <? super T> <? extend T> 的通俗理解
  17. GNU和LINUX到底怎么个发音?
  18. 2108 JAVASE每日复习总结 链接汇总
  19. PARSEC benchmark下载
  20. H(单应矩阵homography),本质矩阵(Essential Matrix)和F(基础矩阵fundamental)

热门文章

  1. 什么是运放的虚短和虚断
  2. 电商后台管理系统技术总结(黑马)
  3. TK mybatis 逆向工程
  4. 群晖nas存储系统原理_一篇看懂黑群晖重装系统
  5. 计算机视觉之基本概论
  6. 调用阿里语音合成接口(文字转语音)
  7. 监测资金流向原来这么简单?
  8. Unity粒子特效出现慢
  9. Axure制作微信APP原型(一)四大模块:消息、通讯录、发现、我
  10. 计算机ppt实验报告总结怎么写,ppt实验报告总结.doc